- ETW permite capturar eventos del sistema operativo y aplicaciones, tanto en espacio de usuario como en kernel, y es clave para depuración y análisis de rendimiento.
- Existen múltiples tipos de proveedores ETW, como MOF, WPP, basados en manifiesto o TraceLogging, cada uno con su propia estructura y complejidad.
- Se puede trabajar con ETW usando herramientas como logman, wpr y PerfView, ideales para activar sesiones de rastreo, capturar datos y analizarlos.
- ETW es esencial para soluciones EDR/XDR y para investigaciones forenses, pudiendo extraer eventos de memoria incluso si un atacante elimina archivos.
Event Tracing for Windows (ETW) es una de las herramientas más poderosas, pero también desconocidas para muchos desarrolladores y profesionales de la seguridad en entornos Microsoft. Este sistema permite monitorizar, capturar y analizar eventos generados por el sistema operativo y las aplicaciones, tanto en modo usuario como en modo kernel.
Utilizado tanto para depuración avanzada como para análisis forense o detección de amenazas, ETW ofrece una visibilidad profunda sobre lo que ocurre a nivel del sistema, con un impacto mínimo en el rendimiento. En este artículo vamos a desgranar a fondo cómo funciona ETW, qué herramientas usar, cómo configurarlo, qué tipo de datos se pueden obtener y cómo aprovecharlo desde distintos entornos como .NET, PowerShell o incluso de forma forense desde memoria.
¿Qué es ETW y por qué es tan potente?
Event Tracing for Windows es un sistema de rastreo de eventos integrado en el núcleo de Windows. Se diseñó para permitir a desarrolladores y administradores registrar y consumir flujos de eventos en tiempo real o desde archivos de registro (.etl). ETW es extremadamente versátil porque puede ser utilizado por:
- Aplicaciones en modo usuario escritas principalmente en C o C++
- Controladores del kernel
- Sistemas EDR y antivirus
- Analistas de rendimiento o seguridad
Funciona mediante un modelo basado en tres roles clave: los providers (que generan los eventos), los controllers (que configuran y controlan las sesiones de rastreo), y los consumers (que leen los eventos).
Componentes esenciales del ecosistema ETW
El modelo de funcionamiento de ETW gira en torno a varios elementos arquitectónicos que permiten una separación clara entre quien genera los eventos y quien los consume:
1. Providers o proveedores
Son los componentes del sistema o aplicaciones que emiten eventos. Existen diferentes tipos:
- MOF-based providers: utilizan Managed Object Format. Tienen una estructura más compleja y están en desuso.
- WPP providers: utilizados principalmente en controladores para depuración.
- Manifest-based providers: los más comunes hoy en día. Usan un manifiesto XML donde se define la estructura de los eventos.
- TraceLogging providers: una alternativa más sencilla compatible con aplicaciones modernas.
2. Controllers o controladores
Se encargan de iniciar, detener o configurar las sesiones de rastreo (trace sessions). Por ejemplo, una herramienta como logman actúa como controlador, permitiendo configurar qué proveedores se activan y dónde se escriben los eventos.
3. Consumers o consumidores
Son las aplicaciones o scripts que leen eventos, ya sea en tiempo real o a través de archivos .etl. Algunos ejemplos conocidos son:
- Event Viewer (Visor de Eventos de Windows)
- Windows Performance Analyzer (WPA)
- PerfView
- Sistemas EDR como Microsoft Defender for Endpoint
¿Para qué se usa ETW?
ETW se utiliza de forma extensiva dentro del ecosistema Microsoft, desde procesos internos hasta soluciones empresariales. Algunos escenarios son:
- Debug de aplicaciones en tiempo real
- Monitorización de rendimiento (CPU, IO, red…)
- Depuración de controladores en modo kernel
- Prevención y detección de amenazas con EDR/XDR
- Investigación forense digital
Cómo interactuar con ETW: herramientas prácticas
Existen varias herramientas que permiten trabajar con ETW desde diferentes ángulos:
Logman.exe
Herramienta por línea de comandos incluida en Windows que no requiere privilegios de administrador para realizar muchas operaciones. Permite listar proveedores disponibles, sesiones activas y configurar nuevas sesiones:
logman query providers
: lista todos los proveedores ETWlogman start miSesion -p {GUID} -o c:\logs\miSesion.etl -ets
: inicia una sesión de rastreologman stop miSesion -ets
: detiene la sesión
WPR.exe y WPA.exe
Windows Performance Recorder (WPR) se utiliza para iniciar o detener sesiones de rastreo, y Windows Performance Analyzer (WPA) permite analizarlas visualmente. Su uso es habitual en entornos de desarrollo o debugging avanzado:
wpr -start CPU -start FileIO -start DiskIO
wpr -stop resultado.etl
PerfView
Herramienta desarrollada por Microsoft para análisis avanzado de rendimiento. Genera trazas, agrupa por patrones asíncronos y simplifica la depuración compleja. Permite también capturar sesiones en modo circular para no sobrecargar discos:
perfview -ThreadTime -CircularMB:500 -LogFile:salida.log -Merge:true collect
Los archivos generados (.etl y .etl.ngenpdb) pueden abrirse directamente en WPA.
Entendiendo los manifiestos ETW
Los manifest-based providers definen todos sus eventos a través de un archivo XML. Este manifiesto incluye información como:
- Provider: nombre, GUID y archivos de recursos
- Channels: canal de salida (ej. Application, System)
- Levels: nivel de severidad del evento (Critical, Error, Verbose…)
- Tasks y Opcodes: agrupan eventos por tarea y tipo de operación
- Keywords: filtros por categorías de eventos
- Maps: mapeo de códigos a textos legibles
- Templates: definen estructura de los datos incluidos en eventos
- Events: definen cada evento con su ID, task, opcode, level y template
Captura y análisis de trazas ETW
Una vez capturada una traza (archivo .etl), se puede convertir a otros formatos o analizarla directamente:
tracerpt archivo.etl -o archivo.xml
: exporta a XMLtracerpt archivo.etl -o archivo.evtx -of EVTX
: convierte al formato de Visor de Eventosxperf -i archivo.etl -o archivo.csv
: volcado a CSV
También es posible realizar vistas en vivo con PerfView o definir sesiones automáticas desde el arranque usando autologger
:
wpr -boottrace -addboot FileIO
.NET y ETW
En .NET se puede aprovechar la API TraceProcessing para procesar los eventos generados por aplicaciones o componentes. Está disponible como paquete NuGet y es empleada incluso por los propios ingenieros de Microsoft.
Casos de uso en seguridad: EDR/XDR y caza de amenazas
ETW es una piedra angular para soluciones de detección y respuesta (EDR/XDR). Integra profundamente con el sistema y permite detectar comportamientos como:
- Creación de procesos sospechosos
- Modificaciones del registro
- Tráfico de red inusual
- Accesos a recursos críticos del sistema
Por ejemplo, es posible identificar técnicas como DCSync usando proveedores que reportan replicación del controlador de dominio.
Análisis forense con ETW
Una investigación avanzada permite incluso recuperar eventos ETW desde memoria RAM si han sido eliminados desde disco por un atacante. Esto se logra accediendo a estructuras internas como:
- _WMI_LOGGER_CONTEXT: contiene listas como GlobalList o BufferQueue
- _ETW_REALTIME_CONSUMER: ofrece acceso a UserBufferListHead
Se han desarrollado herramientas como el plugin de Volatility3 de JPCERT que permite recuperar y analizar estas trazas directamente desde dumps de RAM. Además, se pueden procesar luego con tracefmt o WPA para identificar accesos DNS, tráfico de red, amenazas bloqueadas y más.
Este sistema ofrece una visión integral del sistema operativo y las capas de aplicación, permitiendo adelantarse a problemas, optimizar recursos y detectar anomalías. Aunque su curva de aprendizaje es algo elevada, dominar las herramientas y estructuras que lo componen permite obtener una ventaja única en entornos Windows modernos.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.