Compartir a través de


Auditar y realizar un seguimiento de los cambios en las tareas de incidentes en Microsoft Sentinel

Las tareas de incidentes garantizan un tratamiento integral y uniforme de los incidentes en todo el personal del SOC. Por lo general, las listas de tareas se definen de acuerdo con las determinaciones realizadas por analistas sénior o administradores de SOC, y se ponen en práctica mediante reglas de automatización o cuadernos de estrategias.

Sus analistas pueden ver la lista de tareas que deben realizar para un incidente determinado en la página de detalles del incidente y marcarlas como completadas según su progreso. Los analistas también pueden crear sus propias tareas en el lugar, de forma manual, directamente desde dentro del incidente.

En este artículo se explica cómo, como administrador de SOC, puede auditar el historial de las tareas de incidentes de Microsoft Sentinel y realizar un seguimiento de los cambios realizados a lo largo de su ciclo de vida, con el fin de medir la eficacia de las asignaciones de tareas y su contribución a la eficiencia del SOC y el funcionamiento correcto.

Estructura de la matriz Taras en la tabla SecurityIncident

La tabla SecurityIncident es una tabla de auditoría; no almacena los propios incidentes, sino los registros de la vida de un incidente: su creación y los cambios realizados en él. Cada vez que se crea un incidente o se realiza un cambio en un incidente, se genera un registro en esta tabla que muestra el estado actual del incidente.

La adición de detalles de tareas al esquema de esta tabla permite auditar las tareas con mayor profundidad.

La información detallada agregada al campo Tareas consta de pares clave-valor que toman la siguiente estructura:

Clave Descripción del valor
createdBy La identidad que ha creado la tarea:
- email: correo electrónico de la identidad
- name: nombre de la identidad
- objectId: GUID de la identidad
- userPrincipalName: UPN de la identidad
createdTimeUtc Hora en que se ha creado la tarea, en UTC.
lastCompletedTimeUtc Hora en que la tarea se ha marcado como completada, en UTC.
lastModifiedBy Identidad que ha modificado por última vez la tarea:
- email: correo electrónico de la identidad
- name: nombre de la identidad
- objectId: GUID de la identidad
- userPrincipalName: UPN de la identidad
lastModifiedTimeUtc Hora en que se ha modificado por última vez la tarea, en UTC.
status Estado actual de la tarea: Nuevo, Completado, Eliminado.
taskId Identificador de recurso de la tarea.
title Nombre descriptivo dado a la tarea por su creador.

Visualización de tareas de incidentes en la tabla SecurityIncident

Además del libro Tareas de incidentes, puede auditar la actividad de tareas consultando la tabla SecurityIncident en Registros. En el resto de este artículo, se muestra cómo realizar el proceso y también cómo leer y comprender los resultados de la consulta para obtener información sobre la actividad de tareas.

  1. En la página Registros, escriba la consulta siguiente en la ventana de consulta y ejecútela. Esta consulta devolverá todos los incidentes que tengan asignadas las tareas.

    SecurityIncident
    | where array_length( Tasks) > 0
    

    Puede agregar cualquier número de instrucciones a la consulta para filtrar y restringir los resultados. Para demostrar cómo ver y comprender los resultados, vamos a agregar instrucciones para filtrar los resultados de modo que solo veamos las tareas de un único incidente y también agregaremos una instrucción project para que veamos solo los campos que serán útiles para nuestros propósitos, sin mucho desorden.

    Más información sobre el uso del lenguaje de consulta Kusto.

    SecurityIncident
    | where array_length( Tasks) > 0
    | where IncidentNumber == "405211"
    | sort by LastModifiedTime desc 
    | project IncidentName, Title, LastModifiedTime, Tasks
    
  2. Echemos un vistazo al registro más reciente de este incidente y busquemos la lista de tareas asociadas a él.

    1. Seleccione el ampliador situado junto a la fila superior de los resultados de la consulta (que se han ordenado en orden descendente según su actualidad).

      Screenshot of query results showing an incident with its tasks.

    2. El campo Tareas es una matriz del estado actual de todas las tareas de este incidente. Seleccione el ampliador para ver cada elemento de la matriz en su propia fila.

      Screenshot of query results showing an incident with its tasks expanded.

    3. Ahora verá que hay dos tareas en este incidente. Cada una se representa a su vez mediante una matriz expandible. Seleccione el ampliador de una sola tarea para ver su información.

      Screenshot of query results showing an incident with a single task expanded.

    4. Aquí verá los detalles de la primera tarea de la matriz ("0" siendo la posición de índice de la tarea en la matriz). El campo de título muestra el nombre de la tarea tal como se muestra en el incidente.

Visualización de tareas agregadas a la lista

  1. Vamos a agregar una tarea al incidente y, después, volveremos aquí, ejecutaremos la consulta de nuevo y veremos los cambios en los resultados.

    1. En la página Incidentes, escriba el número de identificador de incidente en la barra de búsqueda.

    2. Abra la página de detalles del incidente y seleccione Tareas en la barra de herramientas.

    3. Agregue una nueva tarea, asígnele el nombre "¡Esta es una tarea de prueba!" y, después, seleccione Guardar. La última tarea que se muestra a continuación es la que debe terminar con:

      Screenshot shows incident tasks panel.

  2. Ahora vamos a volver a la página Registros y ejecutar la consulta otra vez.

    En los resultados, verá que hay un nuevo registro en la tabla para este mismo incidente (tenga en cuenta las marcas de tiempo). Expanda el registro y verá que, mientras que el registro que vimos antes tenía dos tareas en su matriz Tareas, la nueva tiene tres. La tarea más reciente es la que acabamos de agregar, como puede ver por su título.

    Screenshot of query results showing an incident with its newly created task.

Visualización de los cambios de estado en las tareas

Ahora, si volvemos a esa nueva tarea en la página de detalles del incidente y la marcamos como completada y, después, vamos a Registros y volvemos a ejecutar la consulta, veremos otro nuevo registro para el mismo incidente, esta vez mostrando el nuevo estado de la tarea como Completado.

Screenshot of query results showing an incident task with its new status.

Visualización de la eliminación de tareas

Volvamos a la lista de tareas de la página de detalles del incidente y eliminemos la tarea agregada anteriormente.

Cuando volvamos a Registros y ejecutemos la consulta una vez más, veremos otro nuevo registro, solo que, esta vez, el estado de nuestra tarea (la que se llama "¡Esta es una tarea de prueba!") será Eliminada.

Sin embargo, después de que la tarea haya aparecido una vez en la matriz (con un estado Eliminada), ya no aparecerá en la matriz Tareas en los registros nuevos para ese incidente en la tabla SecurityIncident. Los registros existentes, como los que vimos anteriormente, seguirán conservando la evidencia de que esta tarea ha existido una vez.

Visualización de tareas activas que pertenecen a un incidente cerrado

La consulta siguiente le permite ver si se ha cerrado un incidente, pero no todas sus tareas asignadas se completaron. Este conocimiento puede ayudarle a comprobar que los extremos sueltos restantes de su investigación han conllevado a una conclusión: todas las partes pertinentes fueron notificadas, se han especificado todos los comentarios, se han comprobado todas las respuestas, etc.

SecurityIncident
| summarize arg_max(TimeGenerated, *) by IncidentNumber
| where Status == 'Closed'
| mv-expand Tasks
| evaluate bag_unpack(Tasks)
| summarize arg_max(lastModifiedTimeUtc, *) by taskId
| where status !in ('Completed', 'Deleted')
| project TaskTitle = ['title'], TaskStatus = ['status'], createdTimeUtc, lastModifiedTimeUtc = column_ifexists("lastModifiedTimeUtc", datetime(null)), TaskCreator = ['createdBy'].name, lastModifiedBy, IncidentNumber, IncidentOwner = Owner.userPrincipalName
| order by lastModifiedTimeUtc desc

Pasos siguientes