All Huntress Blog Posts

All Huntress Blog Posts

All things cybersecurity engaging and accessible - so you can stay ahead of hackers and boost your cybersecurity savviness.

Author: Andrew Schwartz
Cybersecurity Education
AD Rights Management Service (Part 2): Extraction, Offline Decryption, and the Unrotatable Key
AD Rights Management Service (Part 2): Extraction, Offline Decryption, and the Unrotatable Key

An AD RMS Service Group account exports the AD RMS Server Licensor Certificate private key. That 1172-byte key decrypts every document the deployment ever protected, offline, and keeps doing so after the deployment is rebuilt.

September 10, 2026
From Code to Coverage (Part 6): What netlogon.log Sees That Event 1644 Never Will
From Code to Coverage (Part 6): What netlogon.log Sees That Event 1644 Never Will

ldapnomnom claims it leaves no Windows audit logs. This post shows why Event 1644 misses LDAP Ping and where defenders can still catch it.

June 24, 2026
From Code to Coverage (Part 5B): Event 5156 Correlation: Proving Source IP Attribution Is Possible
From Code to Coverage (Part 5B): Event 5156 Correlation: Proving Source IP Attribution Is Possible

Discover a method for attributing Active Directory Web Services (ADWS) queries, which normally appear to originate from "localhost" in Event 1644 logs, back to the attacker's true source IP address. This is accomplished by correlating the timing of the inbound network connection event (Event 5156), which contains the real source IP, with Event 1644 within a consistent 60–80ms window.

April 9, 2026
From Code to Coverage (Part 5A): When All Your Detections Fail: The ADWS Blind Spot
From Code to Coverage (Part 5A): When All Your Detections Fail: The ADWS Blind Spot

PowerShell AD enumeration bypasses network detection by using ADWS (port 9389), logging the LDAP query (Event 1644) as localhost (::1). High-fidelity detection requires correlating Event 1644 with ADWS connection events by Operation ID to reveal the remote source and spot bulk property dumps indicated by [all_with_list].

April 8, 2026
From Code to Coverage (Part 4): Hunting SOAPHound - The (!FALSE) Pattern
From Code to Coverage (Part 4): Hunting SOAPHound - The (!FALSE) Pattern

SOAPHound uses a (!FALSE) LDAP filter pattern that breaks most detection rules. Part 4 of our detection engineering series shows exactly how to hunt for it before attackers use the blind spot.

January 29, 2026
From Code to Coverage (Part 3): SDFlags - The Log Field I'd Been Ignoring That Unlocked Attack Path Detection
From Code to Coverage (Part 3): SDFlags - The Log Field I'd Been Ignoring That Unlocked Attack Path Detection

SDFlags is an LDAP parameter most defenders walk right past in their logs. It's also how attackers enumerate permissions while evading detection. Part 3 of our series covers what Huntress found.

January 15, 2026
From Code to Coverage (Part 2): The Whitespace Nightmare: Writing Sigma Rules That Actually Match
From Code to Coverage (Part 2): The Whitespace Nightmare: Writing Sigma Rules That Actually Match

The detection logic was solid, the rules were deployed, and then a 2am Slack message revealed that whitespace variations in LDAP filters were breaking everything. Read Part 2 of our detection engineering series.

December 30, 2025
From Code to Coverage (Part 1): The OID Transformation That Hinders LDAP Detection
From Code to Coverage (Part 1): The OID Transformation That Hinders LDAP Detection

The gap between what attacker code looks like and what it actually logs is where most detections fail. Part 1 starts by reading the attacker's own source code.

December 16, 2025