#Sysmon, El ‘Gran Hermano’ de Windows; y el ‘súper’, #SysmonView

Hola secuaces:

Seguro que con el mapa en la portada ya os he ‘ganado‘ 😀

Hace tiempo que no tocamos a nuestro querido Windows. Ya casi se me olvida para qué sirve el ratón y, además, no sólo de entornos Linux vive el Forense 🙂

Hoy quiero hablaros de dos herramientas.

La primera de ella es, ‘Sysmon‘, una pequeña utilidad de Sistema, desarrollada por Mark Russinovich y Thomas Garnier, gratuita, propiedad de Microsoft que, si de mí dependiera, la instalaba en todos los Sistemas que pasaran por mis manos.

Esta utilidad pertenece a un grupo de otras herramientas de Sistema, llamado SysInternals, un paquete de herramientas muy útiles y muy interesantes, que no debe faltar en nuestros dispositivos. Quizás os hable de alguna de ellas más adelante.

«System Monitor, (Sysmon), es un servicio del sistema de Windows y un controlador de dispositivo que, una vez instalado en un sistema, permanece residente en los reinicios del sistema para supervisar y registrar la actividad del sistema en el registro de sucesos de Windows. Proporciona información detallada sobre creaciones de procesos, conexiones de red y cambios en el tiempo de creación de archivos…»

Es decir, que nos va a monitorizar toda la actividad que se lleve a cabo en el Sistema donde se instale, (dependiendo de su configuración), y nos la grabará a un fichero de eventos del Sistema que, posteriormente, podremos estudiar. Este fichero, ubicado en ‘C:\Windows\System32\winevt\Logs‘, se llamará ‘Microsoft-Windows-Sysmon%4Operational.evtx‘.

«Puede identificar la actividad maliciosa o anómala y comprender cómo operan los intrusos y el malware en su red.»

Vamos a verlo un poco en funcionamiento, para intentar explicarlo mejor.

Nos dirigimos a su sitio oficial, de Microsoft, y procedemos a su descarga.

Una vez descargado, se nos presenta un fichero comprimido en formato ‘.zip‘. Procedemos a su descompresión y se extraerán estos ficheros.

Y, ¿Cuál es su forma de ejecución? A través de la consola del Sistema. Por lo tanto, lo primero que vamos a hacer es ejecutar el Símbolo del Sistema, ‘cmd‘.

Una vez estemos en la consola del Símbolo del Sistema, nos dirigimos a la ruta donde tengamos alojado el ejecutable e invocamos su ayuda, con el parámetro ‘-h‘.

Sus opciones son:

-c: Actualiza la configuración de un controlador ‘Sysmon‘ instalado o descarga la configuración actual si no se proporciona ningún otro argumento. Opcionalmente, tome un archivo de configuración.
-h: Especifica los algoritmos de ‘hash‘ utilizados para la identificación de imágenes, (por defecto es SHA1). Soporta múltiples algoritmos al mismo tiempo. Entrada de configuración: HashAlgorithms.
-i: Instalar el servicio y el controlador. Opcionalmente, tome un archivo de configuración.
-l: Registro de módulos. Opcionalmente, tome una lista de procesos para rastrear.
-m: Instale el manifiesto de eventos, (también en la instalación del servicio).
-n: Registro de conexiones de red. Opcionalmente, tome una lista de procesos para rastrear.
-r: Comprobar la revocación del certificado de firma. Entrada de configuración: CheckRevocation.
-s: Imprime la definición del esquema de configuración.
-u: Desinstala el servicio y el controlador.

Su uso básico, para la instalación, es llamar a la utilidad y pasarle el parámetro ‘-i‘.

De esta forma se instala la utilidad en el Sistema, donde tendremos que aceptar los términos de la licencia. Podríamos omitir este paso de los términos de licencia, mediante el parámetro ‘-accepteula -i‘.

Y una vez que haya terminado la instalación nos notificará qué es lo que ha hecho, dando inmediato comienzo a la monitorización.

Sin embargo, hemos visto que existen múltiples opciones para esta utilidad. Si le pasamos el parámetro ‘-c‘, podremos ver qué es lo que está monitorizando, y cómo. Y es importante saberlo porque, por defecto, por ejemplo, no monitoriza las conexiones de Red.

Para que proceda a la monitorización de las conexiones de Red, debemos pasarle el parámetro ‘-n‘, (o indicárselo en un archivo de configuración propio).

Ahora, si volvemos a pasarle el parámetro ‘-c‘, podremos ver cómo nos indica, en el apartado de ‘Network connection‘, que éste, se encuentra habilitado.

Ahora bien, ¿Qué tipo de eventos nos va a monitorizar?

Identificador de sucesos 1: Creación de proceso
Identificador de sucesos 2: un proceso cambió un tiempo de creación de archivo
Identificador de sucesos 3: conexión de red
Identificador de sucesos 4: estado de servicio Sysmon cambiado
Identificador de sucesos 5: proceso finalizado
Identificador de sucesos 6: Carga del controlador
Identificador de sucesos 7: Imagen cargada
Identificador de sucesos 8: CreateRemoteThread
Identificador de sucesos 9: RawAccessRead
Identificador de sucesos 10: ProcessAccess
Identificador de sucesos 11: FileCreate
Identificador de sucesos 12: RegistryEvent (crear y eliminar objetos)
Identificador de sucesos 13: RegistryEvent (conjunto de valores)
Identificador de sucesos 14: RegistryEvent (Key and Value Rename)
Identificador de sucesos 15: FileCreateStreamHash

Tenéis toda esta información bien detallada en su sitio oficial.

Hemos mencionado que puede trabajar con un fichero de configuración. Vamos a ver cómo. Para ello, pasamos el parámetro ‘-? config‘, para que nos muestre la ayuda de ese fichero de configuración.

Podemos ver que nos indica que puede ser especificado después de la instalación y que tiene que ser en un fichero con formato ‘xml‘.

Y, un poquito más abajo, podemos ver su estructura básica.

También nos brinda información sobre qué tipos de eventos puede filtrar.

1: ProcessCreate Process Create
2: FileCreateTime Tiempo de creación de archivos
3: NetworkConnect Se ha detectado una conexión de red
4: n/d Cambio de estado del servicio Sysmon, (no se puede filtrar)
5: ProcessTerminate Proceso finalizado
6: DriverLoad Driver Loaded
7: ImageLoad Imagen cargada
8: CreateRemoteThread CreateRemoteThread detectado
9: RawAccessRead RawAccessRead detectado
10: ProcessAccess Acceso al proceso
11: FileCreate Archivo creado
12: Objeto Registro de RegistryEvent agregado o eliminado
13: Conjunto de valores del registro RegistryEvent
14: RegistryEvent Objeto de registro cambiado de nombre
15: FileCreateStreamHash Flujo de archivos creado
16: n/d Cambio de configuración Sysmon, (no se puede filtrar)
17: PipeEvent Tubo nombrado creado
18: PipeEvent Tubo con nombre conectado

Con esta información podemos, por ejemplo, crear nuestro propio fichero de configuración, (recordad que debe ser en formato ‘xml‘), para que, por ejemplo, nos monitorice también la creación de ficheros, puesto que, por defecto, tampoco lo hace.

Y la estructura podría ser algo así:

Una vez que lo hemos creado, nos dirigimos, de nuevo, al Símbolo del Sistema para actualizar la configuración de la utilidad. Ello se hace con el parámetro ‘-c‘, indicándole, acto seguido, la ruta donde se encuentre alojado ese fichero de configuración. Si existiera algún tipo de error en su estructura nos lo diría.

Una vez actualizada la configuración de la utilidad, y si le pasamos de nuevo el parámetro ‘-c‘, para cerciorarnos de qué es lo que está monitorizando, nos mostrará las reglas que le hayamos incluido en ese fichero de configuración.

Con esto, ya tendríamos instalada de una forma más o menos correcta, (esto es un uso muy básico), esta maravillosa utilidad. Pero nos enfrentamos a un gran problema, llamado tamaño. Porque debemos especificarle un tamaño, (con un valor mínimo de 1024 kilobytes), adecuado para el Sistema en el que se haya instalado. Puede generar mucho ‘ruido, (De ahí la importancia de la configuración). Tenéis buena información relativa al tamaño de los eventos en este sitio de Microsoft.

Para especificar el tamaño del registro de eventos, utilizaremos la utilidad ‘wevtutil‘, que es un comando que se usa a través del Símbolo del Sistema y que permite, entre otras cosas, instalar y desinstalar los manifiestos de eventos, para ejecutar consultas y exportar, archivar y borrar registros.

La forma de ejecutarlo es ‘wevtutil sl Microsoft-Windows-Sysmon/Operational /ms:20971520‘. En este caso, le he asignado un tamaño máximo de 20 MB.

Y, ahora sí, hemos terminado de configurar este registro de eventos de Sysmon, debidamente, y podremos visualizarlo junto con el resto de eventos del Sistema.

Si procedemos a su apertura, mediante el propio visor de eventos de Windows, podremos ver cómo desde el momento de su instalación, comienza la monitorización de la actividad del Sistema.

Realizar un estudio de este tipo de eventos puede provocar un auténtico dolor de cabeza, dada la actividad que registra. Para ayudar a reducir ese ‘inconveniente‘, el visor de eventos de Windows nos proporciona una serie de acciones que podemos llevar a cabo.

Entre estas acciones, se encuentra la de poder filtrar los eventos.

Por ejemplo, por el Identificador del evento.

Y nos mostraría, únicamente, los eventos con ese ID.

Nos ofrece la posibilidad de buscar una palabra, o serie de palabras, dentro de los eventos.

Y nos mostraría los eventos que contengan esa palabra, o palabras.

Y también nos brinda la oportunidad de guardar todos los eventos registrados en ese fichero.

Y esto es lo que realmente me interesa mostraros ahora mismo.

Así, que vamos a guardar todos esos registros, (que pueden muchos o pocos, depende del tiempo y del uso del Sistema), en un fichero con formato ‘xml‘.

Y nuestro querido Windows nos dirá que se ha guardado correctamente ese fichero. (Sí, tengo deshabilitado el antivirus de esta VM 😉 ).

Y ahora, lo vamos a abrir, para poder ver, examinar e intentar comprender, la estructura de este fichero, que es esta de aquí.

Y, ¿Por qué me interesa mostraros la opción de guardarlo en un fichero con formato ‘xml‘?

Porque ahora quiero hablaros de la segunda de las herramientas que os quiero presentar.

Se trata de SysmonView, una nueva herramienta, gratuita, desarrollada por @nader_shalabi, que nos ayuda en el seguimiento y visualización de registros Sysmon. Una muy buena visualización, he de decir, en una estructura de árbol. Y tiene unas funciones muy interesantes.

Vamos a verlo en funcionamiento, con algunos ejemplos.

Lo primero de todo, nos dirigimos a su sitio oficial en GitHub, para proceder a su descarga.

Una vez descargado, y tras descomprimirlo, se nos presenta un único fichero ejecutable.

No requiere instalación, lo que significa que es portable.

Si procedemos a su ejecución, se nos mostrará esta ventana. Su interfaz de trabajo.

Vamos a importar ese fichero que hemos guardado antes con formato ‘xml‘.

Para ello, nos dirigimos a ‘File > Import Sysmon logs…‘.

Y lo seleccionamos.

Nos preguntará si deseamos geolocalizar las conexiones de Red que encuentre, usando, para ello, la API de freegeoip.net. Le indicamos que sí, que proceda con ello.

Tras un rato, que puede ser mayor o menor, dependiendo del número de eventos y de conexiones que detecte, nos dirá que ha terminado de forma correcta, indicándonos el número de eventos que ha importado.

Una opción muy interesante que tiene esta herramienta se encuentra en ‘File > Preferences

Y se trata de la posibilidad de incluirle nuestra API de www.virustotal.com a esta aplicación, para analizar todos los eventos con sus motores de búsqueda. Así, que nos registramos en VirusTotal, si aún no lo hemos hecho, y adquirimos nuestra ‘API Key‘.

Yo, personalmente, suelo usar Sysmon para saber qué hace una herramienta que quiero probar, o cuando me propongo a analizar alguna muestra de malware.

Voy a coger, por ejemplo, el fichero Sysmon que generé cuando estuve estudiando la herramienta de ‘USBOblivion‘, (Sí, la de la serie de «Ser curioso no es una opción«).

Y, una vez importado, me dirigo, precisamente, al proceso que llama para ‘limpiar‘ los eventos que decía que limpiaba, ‘wevtutil‘.

Podemos ver de una forma muy clara, y en una estructura gráfica y de árbol, Los procesos, la ruta de la imagen y todas las sesiones generadas. Todos y cada uno de los procesos que son llamados por esa utilidad, con sus marcas de tiempo, sus identificadores de procesos, sus rutas, su directorio, sus hashes, información del proceso padre, … Todos los detalles del evento ‘Proceso Creado‘. En este caso en concreto, vemos, por ejemplo, cómo la utilidad ‘wevtutil‘, se ejecuta hasta en nueve ocasiones en escasos tres segundos, para intentar limpiar los diferentes registros de eventos.

Voy a coger, ahora, otro registro de evento Sysmon que generé, esta vez, cuando estuve ‘jugando‘, con WannaCry.

Esta vez, tras seleccionar un proceso, e indicarle, a golpe de dos clics de ratón, que me muestre los detalles del evento ‘Proceso Creado‘, voy a marcar la casilla de verificación de VirusTotal.

Nos dirá que debemos aceptar los términos de servicio para su uso. Cosa que hacemos.

Y, tras realizar un clic con el ratón en el hash que nos ha presentado, esperamos unos segundos a que realice el escaneo y nos mostrará esta bonita información, con el número de detecciones, la fecha del análisis y la URL para que veamos el reporte que se ha generado.

Podemos ver todos los eventos que se han mencionado anteriormente. En este caso, estamos viendo los detalles de los eventos, ‘Proceso Creado‘, ‘Tiempo de creación de archivos cambiado‘ y ‘Proceso Terminado‘, con toda la información que contiene las propiedades de los eventos de Windows.

Ahora, voy a instalarlo en un nuevo Sistema. Nada más instalarlo, Me descargo el navegador Chrome y navego por estas direcciones de internet que me han venido a la cabeza.

Otra buena opción que presenta esta herramienta es la de buscar por palabras, o caracteres. Así, por ejemplo, podemos saber que, en este caso, se ha ejecutado el instalador del navegador Chrome.

Otra opción muy interesante que posee esta utilidad es la de filtrar por tipo de evento. Le podemos indicar que sólo queremos que nos muestre, por ejemplo, el evento ‘Detectada conexión de Red‘.

Una vez que le demos a ‘Apply‘, únicamente nos mostrará esos eventos que posean una conexión de red.

Así, por ejemplo, podemos ver toda la información que tiene relación con el proceso ‘chrome.exe‘, todos los eventos que ha generado este proceso, incluyendo, direcciones IP, puertos, marcas de tiempo, geolocalización, análisis de VirusTotal, …

Y aún hay más. Podemos, si hacemos clic en el icono donde pone ‘PDF

Exportar los resultados que tengamos en pantalla a un documento en formato ‘PDF, que podremos guardar, para un estudio posterior, por ejemplo.

Y se presentaría de esta forma. Con los mismos detalles que hemos visto antes.

Con toda su estructura y relación de eventos relacionados con ese proceso, (Los que veis no son todos, y sólo visité esas pocas páginas durante esta prueba).

Y, como no podía ser de otra forma, donde hay una geolocalización, hay un mapa.

Así que, sí. Esta magnífica herramienta permite, clicando en su opción ‘Map View‘, visualizar de una forma gráfica la información de red que se ha registrado.

Y permite interacción, clicando en países, aplicando zoom, … Y también nos va a mostrar la información de Red que tiene relación con el país que elijamos, con las marcas de tiempo, el proceso, la IP origen y destino, los puertos origen y destino, y el país.

No puedo, si no invitaros a que probéis esta herramienta de análisis de eventos. Me parece muy útil, muy interesante y de gran ayuda. Facilita mucho la labor de investigación, (y no produce tantos dolores de cabeza como otras 😉 ).

Por otro lado, en lo referente a los eventos de Windows, me ‘topé’ con esta Guía técnica para el registro de sucesos de Windows, (PDF), del Centro de Ciberseguridad Australiano. Os la recomiendo.

Esto es todo, por ahora. Nos leemos en la siguiente entrada. Se despide este minion, entregado y leal, de vosotros… por ahora.

Marcos @_N4rr34n6_