Challenge 39: BYOVD — Blind ETW-TI
Challenge 39: BYOVD — Blind ETW-TI
| Difficulty: Hard | Category: BYOVD / Kernel Attacks | Target: ETW Threat Intelligence |
Objective
Use a vulnerable driver to disable ETW Threat Intelligence (ETW-TI) at the kernel level — the one telemetry source that survives all user-mode bypasses.
Background
Challenges 25-28 disabled ETW from user-mode: killing trace sessions, patching EtwEventWrite, unregistering providers. But ETW-TI (Microsoft-Windows-Threat-Intelligence) runs in the kernel and is protected by PPL — user-mode patching cannot touch it.
ETW-TI feeds kernel-level events directly to PPL-protected EDR processes. It monitors:
- Process creation/termination
- Memory allocation with executable permissions
- Image loading
- Handle operations on protected processes
The only way to blind ETW-TI without a signed PPL process is from the kernel itself — using a vulnerable driver’s R/W primitives to zero the ProviderEnableInfo field in the ETW-TI provider’s TRACE_ENABLE_INFO structure.
EDRSandblast implements this technique via DisableETWTI(). See BYOVD & IOCTL EDR Killer for the underlying IOCTL patterns.
Weakness Exploited
- The MostShittyEDR’s ETW provider is a standard user-mode provider — it’s not PPL-protected, so it’s even easier to blind
- Even in
--drivermode, ETW Rule 8 runs in user-mode — kernel-level ETW-TI blinding stops all ETW telemetry before it reaches the agent - The agent has no fallback if ETW goes silent — it doesn’t detect missing events
- The ETW provider GUID is hardcoded and discoverable in the binary
Hints
- Find the ETW-TI provider’s
EtwThreatIntProvRegHandlevia PDB offsets fromnt!EtwThreatIntProvRegHandle - The handle points to an
ETW_REG_ENTRYcontaining aGUIDand a pointer toTRACE_ENABLE_INFO - Zero the
IsEnabledfield andLevel/MatchAnyKeywordinTRACE_ENABLE_INFO - For the MostShittyEDR’s own user-mode provider: find its
_ETW_REG_ENTRYin kernel memory and disable it - Alternatively: patch
EtwEventWriteinntoskrnl.exememory (kernel-mode version) — requires finding the right offset and using the R/W driver to patch it - Test with
logman query providersbefore and after to verify the provider is disabled
Success Criteria
- ETW Rule 8 no longer detects ETW tampering (because it can’t see anything)
- The agent’s ETW trace session receives no more events
- No bluescreen — carefully validate kernel addresses
logman query providersshows the provider disabled or no consumers attached
MostShittyEDR