ETW Forensics: ¿Por qué utilizar el seguimiento de eventos para Windows en lugar de EventLog? – – JPCERT/CC Ojos


Summarize this content to 600 words
Mucha gente puede pensar en EventLogs cuando se mencionan los registros del sistema operativo Windows. Al investigar incidentes como infecciones de malware, es común analizar los registros de eventos del sistema operativo Windows para encontrar rastros que puedan ayudar a descubrir el incidente. Sin embargo, dado que EventLog no está diseñado para detectar comportamientos sospechosos en el sistema operativo Windows, es posible que no siempre encuentre la información que busca al investigar un incidente. Por lo tanto, es necesario habilitar los registros de auditoría o instalar Sysmon para obtener más información. Existe otro mecanismo en el sistema operativo Windows que puede detectar comportamientos sospechosos. Es una característica llamada Seguimiento de eventos para Windows (ETW). Este es un sistema para gestionar eventos generados por el kernel y los procesos, y se utiliza para depurar aplicaciones y otros fines. ETW también se utiliza para recopilar y administrar EventLogs y, en los últimos años, se ha utilizado en la lógica de detección de productos EDR y software antivirus. ETW tiene una función que puede registrar varios comportamientos en el sistema operativo como eventos de forma predeterminada, lo que permite obtener más información que EventLogs. Este artículo explica la estructura de ETW y cómo puede utilizarlo para sus análisis forenses.

Internos de ETW

Arquitectura ETW

La Figura 1 muestra los componentes de ETW.[1]. Los proveedores, como las aplicaciones, envían eventos y, una vez almacenados en buffers, los consumidores como EDR los reciben.

Figura 1: Arquitectura ETW

Proveedor: Aplicaciones y drivers que envían eventos
Consumidor: Aplicaciones que reciben eventos
Sesión: retransmite eventos enviados desde el proveedor y los almacena en un buffer.
Controlador: crea, inicia y detiene sesiones (comando logman[2]tiene funcionalidad de controlador)

Puede consultar las sesiones de ETW desde el Monitor de rendimiento. También le permite crear nuevas sesiones y prepararse para la recopilación de eventos. Como se muestra en la Figura 2, se pueden registrar varios proveedores en una sola sesión.

Figura 2: Ejemplo de verificación de una sesión desde Performance Monitor

También puede verificar qué proveedores están registrados en el sistema operativo Windows ejecutando el siguiente comando. Por defecto, están registrados más de 1.000 proveedores.

> logman query providers

Con tantos proveedores disponibles de forma predeterminada, probablemente pensó que podría recopilar varios registros utilizándolos. En particular, a los efectos de investigar incidentes y detectar comportamientos sospechosos, como malware, serían útiles los siguientes proveedores.

Microsoft-Windows-Threat-Intelligence: Detecta comportamientos relacionados con la inyección de procesos, etc., que utiliza el malware.
Microsoft-Windows-DNS-Client: Eventos relacionados con la resolución de nombres
Microsoft-Antimalware-AMFilter: Resultados de los análisis de virus realizados por Microsoft Defender
Microsoft-Windows-Shell-Core: Eventos relacionados con la ejecución y terminación del proceso
Microsoft-Windows-Kernel-Process: Eventos relacionados con procesos
Microsoft-Windows-Kernel-File: Eventos relacionados con operaciones de archivos

Formato del evento ETW

Hay dos formas principales de procesar eventos ETW (Modo Stream). Uno de ellos es guardar eventos ETW como un archivo ETL y el otro es guardar eventos ETW en un búfer y recibirlos en tiempo real. En ambos casos, los eventos ETW se guardan en el mismo formato. La Figura 3 muestra el formato de los eventos de ETW.

Figura 3: Formato del evento ETW (el comienzo del archivo ETL)

Comienza con _WMI_BUFFER_HEADER[3]. Este encabezado contiene información como el tamaño y el desplazamiento del búfer, y la fecha y hora en que se creó el evento. El siguiente encabezado depende del contenido que sigue. En el caso de un archivo ETL, le siguen _SYSTEM_TRACE_HEADER y _TRACE_LOGFILE_HEADER. Si se incluyen estos encabezados, esto indica que es el comienzo del archivo ETL y que no se incluyen más eventos ETW. Si se incluyen los eventos de ETW, se verá como en la Figura 4.

Figura 4: Formato de evento ETW (evento ETW)

La primera parte del encabezado todavía comienza con _WMI_BUFFER_HEADER, pero el siguiente encabezado es _EVENT_HEADER, seguido de los datos del evento real.

Es difícil analizar los eventos ETW manualmente porque no tienen firma y la información de tipo contenida en cada encabezado afecta los encabezados siguientes, como se describió anteriormente. En el sistema operativo Windows, puede convertir archivos ETL a archivos EVTX o archivos CSV de la siguiente manera, porque el comando tracerpt está instalado de forma predeterminada.

> tracerpt test.etl -o test.evtx -of EVTX -lr

> tracerpt test.etl -o test.csv -of CSV

Estructura ETW

Puede verificar la información de configuración de ETW hasta cierto punto utilizando el monitor de rendimiento, el comando logman y la información de registro presentada anteriormente. Sin embargo, no toda la información se puede verificar utilizando estos métodos y también se pueden obtener varios tipos de información de la estructura ETW. Sin embargo, no se puede obtener en modo usuario, por lo que deberá obtenerlo desde el modo kernel mediante un depurador u otro método. Puede rastrear la estructura de los proveedores de ETW como se muestra en la Figura 5.

Figura 5: Estructura de los proveedores de ETW

La estructura del proveedor ETW se puede rastrear a partir de un objeto con EtwRegistro tipo de objeto en el proceso, y _ETW_GUID_ENTRY y _TRACE_ENABLE_INFO contienen información como GUID. Por lo tanto, puede verificar qué proceso utiliza qué proveedor de ETW. La estructura del consumidor ETW se puede rastrear como se muestra en la Figura 6.

Figura 6: Estructura de los consumidores de ETW

Puede rastrear la estructura del consumidor ETW a partir de los datos obtenidos de la función PsGetCurrentServerSiloGlobals. _WMI_LOGGER_CONTEXT y _ETW_REALTIME_CONSUMER contienen diversa información y puede verificar el tamaño del búfer, el uso actual del búfer, la cantidad de eventos perdidos y más.

Recuperar eventos de ETW

Relaciones entre los eventos de ETW y las estructuras de ETW

Algunos eventos ETW se guardan como archivos de forma predeterminada, pero en muchos casos, se leen desde el búfer al consumidor ETW en tiempo real y, por lo tanto, a menos que los configure manualmente, la mayoría de ellos no se guardan en el sistema como archivos. Sin embargo, dado que los eventos de ETW se almacenan en el búfer, si puede recopilar los datos, podrá utilizarlos para responder a incidentes u otros fines. Además, incluso si el atacante elimina el archivo ETL, los eventos ETW aún pueden almacenarse en el búfer. Como se mencionó anteriormente, el formato de evento ETW no tiene firma y no se puede recuperar del disco o la memoria mediante el tallado de archivos. Por este motivo, exploramos métodos para extraer datos de la estructura ETW.

Como resultado, hemos identificado los miembros de la estructura que almacenan eventos ETW de la siguiente manera:

Lista global (_WMI_LOGGER_CONTEXT)
Cola de búfer (_WMI_LOGGER_CONTEXT)
Lista de búfer por lotes (_WMI_LOGGER_CONTEXT)
Objetivo de compresión (_WMI_LOGGER_CONTEXT)
UserBufferListHead(_ETW_REALTIME_CONSUMER)

GlobalList y BufferQueue son LIST_ENTRY, y los eventos ETW almacenados en el búfer están conectados como una lista enlazada bidireccional como se muestra en la Figura 7. Todos los eventos ETW en el búfer están conectados a GlobalList.

Figura 7: Relaciones entre _WMI_LOGGER_CONTEXT y el búfer

Debido a que las estructuras ETW no están documentadas, no está claro exactamente por qué varios miembros están relacionados con el búfer de esta manera, pero según el comportamiento, es posible que la configuración del modo de transmisión ETW lo afecte. La Figura 8 muestra los miembros considerados relacionados con cada Modo Stream ETW. Cuando está configurado para guardar en un archivo ETL, se usa BufferQueue y cuando está configurado en Tiempo real, se usa UserBufferListHead. Aunque existen diferencias de uso según el miembro, todos los eventos de ETW están vinculados a GlobalList, por lo que probablemente sea mejor consultar GlobalList al recuperar eventos de ETW.

Figura 8: Relaciones entre ETW Stream Mode y los miembros de la estructura ETW

Escáner ETW para volatilidad3

Con base en los resultados de la investigación anterior, hemos creado una herramienta para recuperar eventos ETW a partir de imágenes de memoria. Esto se implementa como un complemento para The Volatility Framework (en adelante, «Volatility»), una herramienta de análisis forense de la memoria. Con este complemento, no solo puede recuperar eventos de ETW, sino también verificar información sobre proveedores y consumidores de ETW. La Figura 9 muestra un ejemplo del complemento en ejecución.

Figura 9: Ejemplo de ejecución de un complemento

Puede descargar este complemento desde el siguiente repositorio de GitHub. Esperamos que te resulte útil.

GitHub: JPCERTCC/etw-scan https://github.com/JPCERTCC/etw-scan

Uso del evento ETW recuperado en investigaciones de incidentes

Ahora, veamos algunos ejemplos de cómo utilizar los eventos ETW recuperados en investigaciones de incidentes. Para recuperar eventos ETW, especifique la opción –vertedero (solo para GlobalList) o –todo volcado (para todos los miembros) de la siguiente manera. La cantidad de eventos ETW que se pueden recuperar depende del entorno, pero como se muestra en la Figura 10, es posible recuperar una gran cantidad de eventos ETW como archivos ETL.

Figura 10: Ejemplo de recuperación de eventos ETW

Puede analizar el archivo ETL recuperado y buscar información importante. Por ejemplo, hay una sesión ETW llamada LwtNetLog que está habilitada de forma predeterminada. Esta sesión ETW tiene configurados varios proveedores ETW relacionados con la red y recopila varios tipos de información, incluidos paquetes de comunicación, acceso DNS y DHCP. Verifique los eventos ETW recuperados y podrá ver el destino donde se comunica el malware, como se muestra en la Figura 11. Para analizar el archivo ETL, utilizamos tracefmt[4] Esta herramienta no está instalada de forma predeterminada, por lo que deberá instalarla manualmente.

Figura 11: Comprobación de la sesión LwtNetLog recuperada

Además, si está instalado un software EDR o antivirus, es posible que pueda recuperar los eventos ETW que estas aplicaciones intentaban recopilar. Dado que cada aplicación intenta recopilar datos de diferentes proveedores de ETW, puede haber algunas diferencias, pero aún existe la posibilidad de que se recuperen eventos de ETW útiles como Microsoft-Windows-Threat-Intelligence.

Para terminar

En el sistema operativo Windows, es posible recopilar diversa información utilizando ETW de forma predeterminada. Aunque no lo presentamos esta vez, también es posible monitorear el sistema creando un EDR simple que combine las capacidades de recopilación de información de ETW con la lógica de detección. Puede intentar utilizar ETW para monitorear el sistema y responder a incidentes.

Shusei Tomonaga (Traducido por Takumi Nakano)

Referencias

[1] Microsoft: seguimiento de eventos https://learn.microsoft.com/en-us/windows/win32/etw/about-event-tracing

[2] Microsoft: Logman https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/logman

[3] Geoff Chappell, analista de software: Windows en modo kernel https://www.geoffchappell.com/studies/windows/km/ntoskrnl/api/index.htm

[4] Microsoft: Tracefmt https://learn.microsoft.com/en-us/windows-hardware/drivers/devtest/tracefmt

Source link

Artículos y alertas de seguridad

Consultar más contenidos y alertas

Alertas y noticias de seguridad de la información

Contacta

Contacta con nosotros para obtener soluciones integrales en IT y seguridad de la información

Estamos encantados de responder cualquier pregunta que puedas tener, y ayudarte a determinar cuáles de nuestros servicios se adaptan mejor a tus necesidades.

Nuestros beneficios:
¿Qué sucede a continuación?
1

Programamos una llamada según tu conveniencia.

2

Realizamos una reunión de descubrimiento y consultoría.

3

Preparamos una propuesta.

Agenda una consulta gratuita