← All posts

ETW Tampering: How Attackers Blind Windows Telemetry (and How to Catch Them)

Event Tracing for Windows is the pipeline your EDR and audit tools depend on. Attackers now disable ETW providers to go dark before they act. Here's how the technique works and what WinSentinel audits to detect it.

Almost every serious detection tool on Windows — Defender for Endpoint, Sysmon, most commercial EDR agents, and the built-in audit subsystem — is fed by the same underlying plumbing: Event Tracing for Windows (ETW). ETW is a high-performance, kernel-and-user-mode tracing framework. Providers emit events; sessions subscribe to them; consumers process them. It's elegant, ubiquitous, and — because it's a shared pipe that almost nothing monitors for its own health — an increasingly popular target.

The logic for an attacker is brutally simple. Why fight your EDR's detections one by one when you can cut the wire that carries them? "ETW patching" and "ETW provider tampering" now show up routinely in offensive tooling and in real intrusions. If the telemetry never leaves the endpoint, there is nothing for the SOC to alert on.

How ETW Blinding Actually Works

There are several distinct techniques, and they matter because they leave different fingerprints. Lumping them together is why so many teams miss them.

1. In-process ETW patching (userland)

The classic. Much of the security-relevant telemetry from managed and script runtimes flows through a single function: ntdll!EtwEventWrite (and its relatives). An attacker running code in a process simply patches the first bytes of that function with a ret so every event write becomes a no-op:

; Common EtwEventWrite patch (x64)
; overwrite the function prologue so it returns immediately
xor eax, eax        ; 33 C0   -> STATUS_SUCCESS
ret                 ; C3

This is popular for blinding AMSI/CLR telemetry inside a single malicious process — for example, to run .NET tradecraft without the Microsoft-Windows-DotNETRuntime provider snitching. It's local to the process, so it's cheap and quiet, but it only blinds that process.

2. Killing or reconfiguring trace sessions (system-wide)

A more sweeping approach targets the trace sessions themselves. Autologger sessions — the ones that start at boot and feed products like Defender — are defined in the registry. An attacker with admin can stop a live session or disable its providers:

# Enumerate active trace sessions and their providers
logman query -ets

# Stop a running session (blinds everything consuming it)
logman stop "EventLog-Application" -ets

# Autologgers that start at boot live here:
#   HKLM\SYSTEM\CurrentControlSet\Control\WMI\Autologger\
# Setting a provider's "Enabled" DWORD to 0 disables it on next boot

This is louder and system-wide. It's also where a lot of "the EDR just went quiet" incidents originate — the agent process is still running, but the sessions feeding it have been throttled or emptied.

3. Provider removal and manifest tampering

Attackers can also disable specific providers (e.g. Microsoft-Windows-Threat-Intelligence, the kernel provider several EDRs rely on) or tamper with provider registration so events silently stop flowing while everything looks healthy.

The dangerous property of all three techniques: your dashboards keep showing green. A missing event is not an alert. Absence of signal is the hardest thing to notice — which is exactly why it works.

Why Your Existing Detections Struggle

The uncomfortable truth is that most detection strategies are downstream of ETW, so blinding it degrades the very system you'd use to catch the blinding. A few structural reasons:

What WinSentinel Audits to Catch ETW Tampering

WinSentinel treats the telemetry pipeline as an asset to be audited in its own right — not just a source of events. It inspects the configuration and integrity of ETW itself and flags the tell-tale signs of tampering and weakening:

A finding reads like an engineer wrote it, with the exact remediation:

$ winsentinel --audit --modules logging

 Telemetry & Event Tracing
 ─────────────────────────────────────────────────────
 [CRITICAL] Autologger provider disabled: Microsoft-Windows-Threat-Intelligence
   -> Kernel TI provider is registered but Enabled=0 in Autologger\Defender
   -> Several EDRs consume this provider; disabling it blinds them
   -> Fix: reg add ...\Autologger\Defender\{guid} /v Enabled /t REG_DWORD /d 1 /f; reboot

 [WARNING]  PowerShell Script Block Logging is OFF
   -> Common companion to ETW tampering; script telemetry is not being emitted

 [INFO]     6 active trace sessions, 2 below baseline provider count

Hardening: Make Blinding Loud

You cannot make ETW un-patchable — an attacker with code execution in a process can always no-op writes in that process. The goal is to make system-wide blinding difficult and, above all, noisy:

  1. Cut standing admin. Session and autologger tampering needs admin. Enforce least privilege so ordinary compromise doesn't hand over the trace subsystem. (See our local-admin and LAPS guidance.)
  2. Enable PPL for your security agents. Protected Process Light makes it much harder for malware to reach into the agent's process to patch EtwEventWrite in-memory.
  3. Baseline your providers, then alert on absence. Record the expected autologger provider set and treat any deviation — or an unexpectedly silent endpoint — as an incident, not a shrug.
  4. Forward logs off-box quickly. Ship events to a collector so that even if an endpoint goes dark, the gap and the last-seen timestamp are visible centrally.
  5. Audit the pipeline on a schedule. Run winsentinel --audit --modules logging regularly so a disabled provider is caught in days, not after the breach.

The Fleet Angle

On a single machine, WinSentinel gives you the full audit for free — every module, no limits — so you can verify one endpoint's telemetry pipeline in minutes. The problem changes shape across an estate: one blinded machine in a hundred is a needle in a haystack, and it's the one the attacker chose. WinSentinel Pro's fleet orchestration rolls these logging findings up across every node, so "Threat-Intelligence provider disabled on 1 host" surfaces as a drift alert on the central console instead of hiding in per-machine noise. Detecting the odd one out is precisely where centralized posture beats staring at dashboards.

Attackers reach for ETW tampering because it's the highest-leverage move on Windows: cut one pipe and a dozen detections go dark at once. Audit the pipe itself. Run winsentinel --audit --modules logging today — if it reports a disabled security provider or a below-baseline session, don't wave it off as cleanup. Absence of signal is the signal.