AvanzadoWindowsETWdetecciónEDRthreat huntingtelemetría

ETW para Detección de Malware: Event Tracing for Windows en Profundidad

Guía técnica de Event Tracing for Windows (ETW) aplicado a detección de malware. Providers clave, cómo los EDR usan ETW, técnicas de evasión de ETW por malware avanzado, y configuración práctica para threat hunting.

MalwareIntel Research··8 min lectura
Serie: Malware en Windows — Parte 11

ETW: la columna vertebral de la detección moderna

Todo EDR moderno depende de ETW. Cuando CrowdStrike detecta un Cobalt Strike beacon, cuando SentinelOne bloquea una inyección de código, cuando Microsoft Defender for Endpoint identifica un LSASS dump, la telemetría subyacente viene de ETW.

ETW no es una herramienta de seguridad per se. Es un framework de tracing de propósito general integrado en el kernel de Windows. Pero su capacidad para generar eventos detallados sobre actividad del sistema lo convierte en la fuente de datos más valiosa para la detección de malware.

Este artículo explica cómo funciona ETW, qué providers son relevantes para seguridad, cómo los EDR lo usan, y cómo el malware intenta evadirlo.

Arquitectura de ETW

Componentes

┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   Provider   │────→│  ETW Session │────→│   Consumer   │
│ (genera      │     │  (buffer +   │     │  (lee y      │
│  eventos)    │     │   routing)   │     │   procesa)   │
└──────────────┘     └──────────────┘     └──────────────┘
  Kernel/User          Kernel              User/Kernel
  Ej: Process          Ej: NT Kernel       Ej: EDR,
  creation events      Logger Session      Sysmon, SIEM

Provider: componente que genera eventos. Cada provider tiene un GUID único y genera eventos sobre un dominio específico (procesos, red, registro, etc.).

Session: infraestructura que recibe eventos de providers, los bufferiza en memoria y los enruta a consumers. Puede escribir a archivo (.etl), entregar en tiempo real, o ambos.

Consumer: aplicación que lee y procesa los eventos. Los EDR son consumers ETW.

Providers clave para seguridad

ProviderGUIDEventos relevantes
Microsoft-Windows-Kernel-Process{22FB2CD6-0E7B-422B-A0C7-2FAD1FD0E716}Creación/terminación de procesos, threads
Microsoft-Windows-Kernel-File{EDD08927-9CC4-4E65-B970-C2560FB5C289}Operaciones de archivo (crear, escribir, eliminar)
Microsoft-Windows-Kernel-Registry{70EB4F03-C1DE-4F73-A051-33D13D5413BD}Operaciones de registro
Microsoft-Windows-Kernel-Network{7DD42A49-5329-4832-8DFD-43D979153A88}Conexiones TCP/UDP
Microsoft-Windows-DotNETRuntime{E13C0D23-CCBC-4E12-931B-D9CC2EEE27E4}Carga de assemblies, JIT, excepciones
Microsoft-Windows-PowerShell{A0C1853B-5C40-4B15-8766-3CF1C58F985A}Ejecución de scripts PowerShell
Microsoft-Windows-AMSI{2A576B87-09A7-520E-C21A-4942F0271D67}Escaneos AMSI y resultados
Microsoft-Windows-WMI-Activity{1418EF04-B0B4-4623-BF7E-D74AB47BBDAA}Actividad WMI (queries, subscriptions)
Microsoft-Windows-DNS-Client{1C95126E-7EEA-49A9-A3FE-A378B03DDB4D}Queries DNS
Microsoft-Windows-Threat-Intelligence{F4E1897C-BB5D-5668-F1D8-040F4D8DD344}ETW-TI: eventos de seguridad del kernel (requiere PPL)

ETW-TI: el provider privilegiado

Microsoft-Windows-Threat-Intelligence (ETW-TI) es un provider especial que genera eventos de alta fidelidad sobre actividad sospechosa:

  • Asignaciones de memoria con permisos RWX (PAGE_EXECUTE_READWRITE)
  • Escritura en memoria de otro proceso (cross-process memory write)
  • Mapeo de secciones de imagen (image section mapping)
  • Allocaciones de memoria en otros procesos

ETW-TI solo es accesible para procesos protegidos (PPL, Protected Process Light). Los EDR que se registran como procesos protegidos pueden consumir estos eventos. Un proceso normal no puede acceder a ETW-TI.

Cómo los EDR usan ETW

Arquitectura típica de un EDR

┌─────────────────────────────────────────────────┐
│                  EDR Agent                       │
│                                                  │
│  ┌──────────────┐  ┌───────────────────────┐    │
│  │ User-mode    │  │ Kernel-mode driver    │    │
│  │ hooks (ntdll)│  │ (minifilter, callback)│    │
│  │              │  │                       │    │
│  │ Hook:        │  │ ETW Consumer:         │    │
│  │ NtCreateFile │  │ - Kernel-Process      │    │
│  │ NtAllocVM    │  │ - Kernel-File         │    │
│  │ NtWriteVM    │  │ - Threat-Intelligence │    │
│  │ etc.         │  │ - DotNETRuntime       │    │
│  └──────────────┘  └───────────────────────┘    │
│         │                    │                   │
│         └────────┬───────────┘                   │
│                  │                               │
│          ┌───────▼────────┐                      │
│          │ Detection      │                      │
│          │ Engine         │──→ Alert/Block        │
│          │ (rules, ML,    │                      │
│          │  behavioral)   │                      │
│          └────────────────┘                      │
└─────────────────────────────────────────────────┘

Los EDR combinan:

  1. User-mode hooks en ntdll (interceptan API calls)
  2. Kernel callbacks (PsSetCreateProcessNotifyRoutine, ObRegisterCallbacks)
  3. ETW consumers (eventos del kernel)
  4. Minifilter driver (I/O de archivos)

ETW proporciona una capa que no depende de hooks en user-mode, lo que lo hace más resistente a evasión.

Eventos ETW que detectan ataques comunes

AtaqueProvider ETWEvento
Process injectionThreat-IntelligenceAllocate/write en memoria de otro proceso
DLL injectionKernel-ProcessThread creation in remote process
Credential dumpingThreat-IntelligenceRead access to LSASS memory
PowerShell maliciosoPowerShellScript execution with suspicious content
.NET in-memory loadingDotNETRuntimeAssembly.Load from byte array
AMSI bypassAMSIAbsence of scan events or all-clean results
WMI persistenceWMI-ActivityEvent subscription created
DNS tunnelingDNS-ClientHigh-entropy DNS queries

Evasión de ETW por malware

Técnica 1: Patching EtwEventWrite (user-mode)

Similar al AMSI bypass, el malware puede patchear EtwEventWrite en ntdll para que retorne sin hacer nada:

// Obtener direccion de EtwEventWrite en ntdll
HMODULE ntdll = GetModuleHandle("ntdll.dll");
FARPROC etwEventWrite = GetProcAddress(ntdll, "EtwEventWrite");

// Patchear con ret (0xC3)
DWORD oldProtect;
VirtualProtect(etwEventWrite, 1, PAGE_EXECUTE_READWRITE, &oldProtect);
*(BYTE*)etwEventWrite = 0xC3;  // ret instruction
VirtualProtect(etwEventWrite, 1, oldProtect, &oldProtect);

Limitación: esto solo afecta a los eventos ETW generados desde user-mode en ese proceso. Los eventos generados por el kernel (ETW-TI, kernel providers) no se ven afectados.

Técnica 2: Desregistrar providers ETW

# Listar sessions ETW activas
logman query -ets

# Intentar detener una session (requiere admin)
logman stop "EventLog-Security" -ets

Técnica 3: Syscalls directas (bypass hooks + ETW user-mode)

Si el malware ejecuta syscalls directamente (sin pasar por ntdll), no genera eventos ETW de user-mode asociados a las funciones hookeadas. Sin embargo, los eventos de kernel (kernel-mode ETW) siguen generándose.

Técnica 4: Kernel exploit para deshabilitar ETW

El nivel más avanzado de evasión: explotar una vulnerabilidad del kernel (o usar BYOVD) para deshabilitar ETW a nivel de kernel. Esto puede incluir:

  • Desregistrar callback routines
  • Modificar la tabla de dispatch de ETW
  • Deshabilitar ETW-TI provider

Esta técnica requiere kernel-mode access y es detectable por EDRs que monitorizan la integridad del kernel.

Detección de evasión de ETW

EvasiónDetección
Patching EtwEventWriteEDR: integridad check periódico de ntdll. ETW-TI: VirtualProtect en ntdll
Desregistrar providersMonitorizar logman/wevtutil: Sysmon Event ID 1
Ausencia de eventosCorrelación: si un proceso existe pero no genera eventos ETW esperados
Kernel-level disableHVCI (Hypervisor Code Integrity), kernel integrity monitoring

Configuración práctica de ETW para threat hunting

Crear una sesión ETW para hunting

# Crear sesion que captura actividad de procesos y .NET
logman create trace "ThreatHunt" -ets -p Microsoft-Windows-Kernel-Process 0x10 -p Microsoft-Windows-DotNETRuntime 0x2038 -o C:\Logs\threathunt.etl

# Iniciar la sesion
logman start "ThreatHunt" -ets

# Detener y analizar
logman stop "ThreatHunt" -ets

Herramientas para consumir ETW

HerramientaTipoUso
SilkETW (FireEye/Mandiant)Open sourceConsumer ETW con output JSON para SIEM
ETWExplorerGUIExplorar providers y sus eventos
PerfViewMicrosoftAnálisis de traces ETW
TraceEvent (.NET)LibraryConsumir ETW programáticamente en C#
xperf (WPT)CLICaptura y análisis de traces
logmanBuilt-inGestión de sessions ETW
wevtutilBuilt-inConsulta de Event Log (que internamente es ETW)

SilkETW para detección

SilkETW de Mandiant permite consumir eventos ETW y exportarlos en formato JSON para ingestión en un SIEM:

SilkETW.exe -t kernel -kk Process -ot file -p C:\Logs\kernel_process.json
SilkETW.exe -t user -pn Microsoft-Windows-DotNETRuntime -uk 0x2038 -ot file -p C:\Logs\dotnet.json

Mapeo: ETW providers por fase de ataque

FaseProvider ETWQué detecta
Initial AccessKernel-NetworkConexiones entrantes anómalas
ExecutionKernel-Process, PowerShellCreación de procesos, scripts
PersistenceWMI-Activity, Kernel-RegistryWMI subscriptions, Run keys
Priv EscalationThreat-IntelligenceCross-process memory access (LSASS)
Defense EvasionAMSI, Threat-IntelligenceAMSI bypass, ETW tampering
DiscoveryDNS-Client, Kernel-NetworkDNS queries, network scanning
Lateral MovementKernel-Process, Kernel-NetworkRemote process creation, SMB
CollectionKernel-FileMass file access
ExfiltrationKernel-NetworkLarge data transfers
ImpactKernel-File, Kernel-ProcessMass file modification (ransomware)

Fuentes y referencias

  • Microsoft. "Event Tracing for Windows (ETW)." Microsoft Docs.
  • Microsoft. "Threat Intelligence ETW Provider." Microsoft Docs.
  • Mandiant. "SilkETW: ETW Research Framework." https://github.com/mandiant/SilkETW
  • Russinovich, M. et al. "Windows Internals Part 1." Microsoft Press, 2017.
  • Palantir. "ETW for Security Research." Palantir Blog, 2021.
  • MDSec. "Hiding Your .NET ETW." 2020.
  • modexp. "Disabling ETW." 2021.
  • MITRE ATT&CK. "Indicator Removal: Clear Windows Event Logs (T1070.001)." https://attack.mitre.org/techniques/T1070/001/

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.