Guía de análisis de amenazas de Sysmon, Parte 1





Este artículo es el primero de una serie sobre análisis de amenazas de Sysmon. Todas las otras partes de la serie:



Parte 1. Introducción al análisis de registro de Sysmon (estamos aquí)

Parte 2. Uso de datos de eventos de Sysmon para identificar amenazas

Parte 3. Análisis de amenazas de Sysmon en profundidad Uso de gráficos



Si está en el negocio de la seguridad de la información, probablemente a menudo tenga que comprender en ataques en curso. Si ya tiene buen ojo, puede buscar actividad no estándar en los registros sin procesar sin procesar, por ejemplo, un script de PowerShell que ejecute el comando DownloadStringo una secuencia de comandos VBS que pretende ser un archivo de Word, simplemente hojeando la última actividad en el registro de eventos de Windows. Pero este es un gran dolor de cabeza. Afortunadamente, Microsoft creó Sysmon para facilitar el análisis de ataques.



¿Desea comprender las ideas básicas detrás de las amenazas que se muestran en el registro de Sysmon? Descargue nuestra guía de eventos de WMI como una herramienta de espionaje y comprenderá cómo los expertos pueden observar en silencio a otros empleados. El principal problema al trabajar con el registro de eventos de Windows es la falta de información sobre los procesos principales, es decir, uno no puede entender la jerarquía de procesos a partir de él. Por el contrario, las entradas de registro de Sysmon contienen el ID del proceso principal, el nombre y la línea de comando para ejecutar. Gracias Microsoft.



En la primera parte de nuestra serie, veremos qué puede hacer con la información básica de Sysmon. En la Parte 2, aprovecharemos al máximo la información parental para crear estructuras de conformidad más complejas, conocidas como gráficos de amenazas. En la tercera parte, veremos un algoritmo simple que escanea el gráfico de amenazas para buscar actividad no estándar analizando el "peso" del gráfico. Y al final, como recompensa, encontrará un método probabilístico preciso (y comprensible) para detectar amenazas.





Parte 1: Introducción al análisis de registro de Sysmon



¿Qué puede ayudarlo a comprender las complejidades del registro de eventos? En definitiva - SIEM. Normaliza eventos y simplifica su posterior análisis. Pero no tenemos que ir tan lejos, al menos al principio. Al principio, para comprender los principios de SIEM, será suficiente probar la maravillosa utilidad gratuita Sysmon. Y es sorprendentemente fácil trabajar con él. ¡Sigue así, Microsoft!



¿Cuáles son las características de Sysmon?



En resumen: información útil y legible sobre los procesos (ver imágenes a continuación). Encontrará un montón de detalles útiles que no están en el registro de eventos de Windows, pero lo más importante, los siguientes campos:

  • ID de proceso (en decimal, no hexadecimal)
  • ID del proceso principal
  • Línea de comando de proceso
  • La línea de comando del proceso padre
  • Imagen de archivo hash
  • Nombres de imagen de archivo


Sysmon se instala como controlador de dispositivo y como servicio; más detalles aquí. Su ventaja clave es la capacidad de analizar registros de varias fuentes, correlacionar información y generar los valores resultantes en una carpeta de registro de eventos ubicada a lo largo de Microsoft -> Windows -> Sysmon -> Ruta operativa . En mis propias investigaciones sobre los registros de Windows cada vez más complicados, tuve que cambiar constantemente entre, por ejemplo, la carpeta de registros de PowerShell y la carpeta de Seguridad, hojeando los registros de eventos en un intento heroico de igualar los valores entre ellos. Esta nunca es una tarea fácil y, como me di cuenta más tarde, era mejor abastecerse de aspirina de inmediato.



Sysmon está dando un salto cuántico hacia adelante al proporcionar información útil (o, como dicen los proveedores, procesable) para ayudarlo a comprender los procesos subyacentes. Por ejemplo, lancé una sesión secreta de wmiexec que simula el movimiento de una información privilegiada inteligente dentro de una red. Esto es lo que verá en el registro de eventos de Windows:



El registro de Windows muestra información sobre el proceso, pero es de poca utilidad.  ¿Más ID de proceso en hexadecimal?



El registro de Windows muestra información sobre el proceso, pero es de poca utilidad. Identificadores de proceso más en hexadecimal ???



Un profesional de TI con una comprensión de los conceptos básicos de piratería debe sospechar de la línea de comando. El uso de cmd.exe para ejecutar otro comando con salida de redireccionamiento a un archivo con un nombre extraño es claramente similar a las acciones de software de comando y control (C2) : de esta manera, se crea un pseudo shell utilizando los servicios WMI.

Ahora echemos un vistazo al equivalente de la entrada de Sysmon, observando cuánta información adicional nos brinda:



Funciones de Sysmon en una captura de pantalla: información detallada del proceso en forma legible



Características de Sysmon en una captura de pantalla: información detallada sobre el proceso en una forma legible





No solo verá la línea de comandos, sino también el nombre del archivo, la ruta a la aplicación ejecutable que Windows conoce ("Procesador de comandos de Windows"), el identificador del proceso padre , la línea de comandos del padre que lanzó cmd-shell, así como el nombre real del archivo del proceso padre. Todo en un solo lugar, ¡por fin!

Del registro de Sysmon, podemos concluir que, con un alto grado de probabilidad, esta línea de comando sospechosa, que vimos en los registros "en bruto", no es el resultado del trabajo normal de los empleados. Más bien, fue generado por un proceso similar a C2, wmiexec, como mencioné anteriormente, y fue generado directamente por el proceso de servicio WMI (WmiPrvSe). Ahora tenemos un indicador de que un atacante remoto o una persona interna está probando la infraestructura corporativa.



Presentación de Get-Sysmonlogs



Por supuesto, es genial cuando Sysmon tiene los registros en un solo lugar. Pero probablemente sería aún mejor si pudiéramos acceder a campos de registro individuales mediante programación, por ejemplo, a través de comandos de PowerShell. En este caso, podría escribir un pequeño script de PowerShell que automatizaría la búsqueda de posibles amenazas.

No fui el primero en tener esta idea. Es bueno que algunas publicaciones en foros y proyectos de GitHub ya hayan explicado cómo usar PowerShell para analizar el registro de Sysmon. En mi caso, quería evitar tener que escribir líneas separadas de secuencia de comandos de análisis para cada campo de Sysmon. Así que utilicé el principio de persona perezosa y creo que se me ocurrió algo interesante como resultado.

El primer punto importante es la capacidad del equipo.Get-WinEvent lee los registros de Sysmon, filtra los eventos necesarios y muestra el resultado en una variable PS, como aquí:



$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 -or $_.id -eq 11}




Si desea verificar el funcionamiento del comando usted mismo, al mostrar el contenido en el primer elemento de $ events, $ events [0] .Message array, puede obtener una serie de cadenas de texto con un formato muy simple: nombre del campo Sysmon, dos puntos y luego el valor en sí.



¡Hurra!  Salida del registro de Sysmon en formato listo para JSON



¡Hurra! Salida del registro de Sysmon en formato listo para JSON





¿Estás pensando lo mismo que yo? Con un poco más de esfuerzo, puede convertir la salida a una cadena con formato JSON y luego cargarla directamente en el objeto PS utilizando el poderoso comando ConvertFrom-Json .

Le mostraré el código de PowerShell para la conversión, es muy simple, en la siguiente parte. Por ahora, veamos qué puede hacer mi nuevo comando llamado get-sysmonlogs, que instalé como módulo PS.

En lugar de sumergirnos en el análisis de registro de Sysmon a través de la inconveniente interfaz de registro de eventos, podemos buscar sin esfuerzo actividad incremental directamente desde la sesión de PowerShell y usar el comando PS where (alias "?") Para reducir la salida:



Lista de shells cmd lanzados a través de WMI.  Análisis de amenazas a bajo costo con nuestro propio equipo Get-Sysmonlogs



Lista de shells cmd lanzados a través de WMI. Análisis de amenazas barato con nuestro propio equipo de Get-Sysmonlogs.





Increíble! Creé una herramienta de sondeo de registro de Sysmon como si fuera una base de datos. En nuestro artículo sobre EQL, se observó que esta función será realizada por la utilidad genial descrita en ella, aunque formalmente se realizará a través de una interfaz real similar a SQL. Sí, EQL es ingenioso, pero lo tocaremos en la Parte 3.



Sysmon y análisis gráfico



Hagamos un resumen y pensemos en lo que acabamos de crear. Esencialmente, ahora tenemos una base de datos de eventos de Windows accesible a través de PowerShell. Como señalé anteriormente, hay conexiones o relaciones entre registros, a través de ParentProcessId, por lo que puede obtener una jerarquía completa de procesos.



Si lees la serie "Las aventuras de los esquivos Malvari", entonces sabes que a los piratas informáticos les gusta crear ataques complejos de múltiples etapas en los que cada proceso realiza su pequeño papel y prepara un trampolín para el siguiente paso. Tales cosas son extremadamente difíciles de atrapar simplemente desde el registro "en bruto".

Pero con mi comando Get-Sysmonlogs y una estructura de datos adicional que veremos más adelante en el texto (por supuesto, este es un gráfico), tendremos una forma práctica de detectar amenazas, lo que solo requiere realizar una búsqueda correcta de vértices.

Como siempre en nuestros proyectos de blog DYI, cuanto más trabaje en analizar los detalles de las amenazas a pequeña escala, mejor se dará cuenta de lo difícil que es detectar amenazas a nivel de la organización. Y esta conciencia es un punto extremadamente importante .



Encontraremos las primeras complicaciones interesantes en la segunda parte del artículo, donde comenzaremos a vincular los eventos de Sysmon entre sí en estructuras mucho más complejas.



All Articles