Technical brief · Detection engineering · Aug 2026

Why attackers kill ETW before they do anything else.

Event Tracing for Windows is the most powerful telemetry source on a Windows endpoint. Which is exactly why attackers disable it first.

What ETW is and why it matters

Event Tracing for Windows (ETW) is a kernel-level tracing framework built into Windows. It provides structured telemetry from the operating system itself: process creation, DLL loads, network connections, file system operations, registry changes, and much more. Sysmon, Windows Defender and most commercial EDR products consume ETW sessions under the hood.

That dependency is the problem. If an attacker can silence or distort an ETW provider, they can operate with reduced visibility, even on an endpoint that looks fully instrumented from the outside.

The five ETW-silencing techniques

# Technique 1: stop the trace session directly
sc stop Sysmon64

# Technique 2: patch the EtwpNotifyConsumer function in ntdll
WriteProcessMemory() → NOP the dispatch path
  1. Stopping the trace session

    The simplest method: stop Sysmon, Windows Defender or any ETW consumer as a service. Detectable via Service Control Manager events (7036) and Sysmon's own process-terminated log, if you still have a copy.

  2. Patching ntdll in-process

    Malware patches the ETW dispatch path inside ntdll.dll within the target process. The kernel still raises events, but the consuming thread never sees them. Ghidra's EvasionScan script detects the stub pattern statically; Frida catches it dynamically.

  3. NtTraceControl / EtwpStopTrace

    A direct syscall to the kernel's trace control interface, bypassing ntdll entirely. It evades userland hooks. It needs elevated privileges but not SYSTEM: a medium-integrity process with SeDebugPrivilege is enough.

  4. Stomping the session buffer

    Corrupt the EVENT_TRACE_LOGFILE buffer so consumers receive garbage instead of valid events. Logs appear active; events are unreadable. Detection: checksum comparison across consecutive reads.

  5. Provider deregistration injection

    Inject into a process that holds an ETW provider handle and call EtwUnregister() on the provider's REGHANDLE. That provider goes silent for the lifetime of that process.

What actually detects these

TechniqueDetection sourceReliability
Stop serviceSCM event 7036, WMIHigh
ntdll patchGhidra EvasionScan, Frida hookMedium
NtTraceControl syscallETW-Ti, kernel auditMedium
Buffer stompCustom consumer checksumLow (rarely implemented)
Provider deregistrationETW session heartbeat diffLow (rarely implemented)

The strategy: make the silence the signal

Hardening the logs harder is a losing race. A capable intruder will stop Sysmon, auditd or the native event log sooner or later. Plan for that moment instead of hoping it never comes, and do it without paying for a driver arms race.

The honest summary: ETW silencing is not exotic. It shows up in commodity crimeware, not just nation-state toolkits. Don't build a stack that hopes the logs stay on. Build one where switching them off is the loudest thing an intruder can do.

← All advisories