Unhooking ntdll: removing EDR's eyes
How userland hooks work, how to remove them, and why the technique is less effective than the blogs suggest.
- #EDREvasion
- #Unhooking
- #ntdll
Root cause, reproduction, and the telemetry that follows. Everything here was built and broken in an isolated lab, then written down so it can be criticized.
All research
Newest first. Every entry is lab-derived.
How userland hooks work, how to remove them, and why the technique is less effective than the blogs suggest.
Classic injection, APC injection, and process hollowing with working code, compile commands, and the detection surface for each.
A field manual for making a PE invisible to static scanners: entropy, section names, API hashing, string obfuscation, and the compile flags that matter.
A hardcoded admin token in Vanus grants cluster-admin to anyone who guesses it.
Unauthenticated CloudEvents publish on Vanus gateway port 8081.
Missing authorization in Vanus gateway streaming RPCs and default-allow policy.
Ekko, Foliage, and timer-queue sleep obfuscation compared under the same memory scanner. The writeup is the thesis; the harness is proof.
OS command injection in GitAhead Filter.cpp via unquoted filenames handed to bash -c.
AppleScript injection in GitAhead ShowTool on macOS via unescaped filenames.
Unverified update installation and a persistent TLS bypass in GitAhead 2.5.0-2.7.1.
Relaying NTLM to Active Directory Certificate Services web enrollment to mint a DC certificate and DCSync.
Stored XSS in httpdbg via a javascript: URL scheme that survives Mustache HTML-encoding.
Requesting and cracking service tickets while keeping the opsec footprint low and the detection path visible.
Writing a minimal PE loader to understand how Windows maps and executes binaries, and where detection can land.
Why indirect syscalls buy less than people think, and what the detection side actually keys on.
Lab builds, opsec, and the small decisions that keep an engagement clean and a research habit alive.
No index is complete without the next one.
The dispatch carries one long-form writeup, roughly twice a month. Same standard, same lab, no drip feed.