CVE-2026-41089 — Windows Netlogon RCE (Domain Controller Takeover)

Unauthenticated 0-click stack overflow in netlogon.dll → SYSTEM on any Domain Controller. Defensive hunt & harden pack — no exploit code.
CVE
CVE-2026-41089 (CWE-121)
Severity
CVSS 9.8
Type
Pre-auth RCE · Identity / AD
Patched
2026-05-12 (Patch Tuesday)
ITW confirmed
~2026-05-29 (CCB)
Version
v0.2 (Draft)
Author
HuntPack
Confidence
HIGH
01

Executive Summary

CVE-2026-41089 is a critical (CVSS 9.8) stack-based buffer overflow in the Windows Netlogon RPC service (netlogon.dll, function BuildSamLogonResponse). Because every Domain Controller runs Netlogon to service authentication, any reachable DC is structurally exposed. Exploitation is 0-click, unauthenticated, low-complexity: a single malformed Netlogon RPC request yields arbitrary code execution as SYSTEM on the DC — functionally immediate Domain Admin and a fast path to forest-wide takeover.

Microsoft patched the flaw on 2026-05-12 (rating it "less likely" to be exploited) and credited its WARP team. Belgium's Centre for Cybersecurity (CCB) confirmed in-the-wild exploitation roughly two weeks later. Public root-cause analyses and PoCs have since circulated, compressing time-to-exploit. No named intrusion set is publicly attributed yet; activity is described as opportunistic.

The exploit primitive is memory corruption inside the Netlogon service, hosted in lsass.exe on Windows Server. There is no malware artifact at the moment of code execution, so the highest-fidelity defensive angle is behavioral: a DC's lsass.exe/Netlogon spawning any child process, lsass making unexpected outbound connections, or post-exploitation discovery/credential-dumping launched as SYSTEM on a DC.

Tripwire: A failed exploit attempt frequently crashes the Netlogon service (Event ID 7034/1000); a successful one usually does not. Treat service crashes as early-warning of probing, not as a success signal.
Defender priority: (1) Patch every DC in one maintenance window — half-patched forests are not defensible for a pre-auth DC bug. (2) Restrict RPC (TCP 135 + dynamic 49152–65535) to Tier-0/admin subnets. (3) Deploy the lsass.exe-spawns-child IOA (Q1) as a high-severity detection today.
02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry Fwd
PrimaryMicrosoft MSRCStack overflow in Netlogon; SYSTEM RCE; affected Server 2012–2025; patched 2026-05-12; reported by WARPYes
PrimaryCVE.org / NVDCWE-121 stack-based buffer overflow; CVSS 9.8; network vector, no privileges, no UIYes
PrimaryCCB Belgium advisoryConfirmed active in-the-wild exploitation ~2 weeks post-patch; urged immediate patchingYes
SecondaryDeepwatch ATI (CA-26-019)Detection strategy: lsass/netlogon child processes, malformed RPC on 135/dynamic, crashes (7034/1000); ATT&CK T1210/T1203/T1068Yes
SecondaryHelp Net SecurityComponent netlogon.dll; BuildSamLogonResponse root cause; 0patch micropatches for legacy; restrict Netlogon at network layerYes
TertiaryBleepingComputer / SecurityWeek / OrcaCorroborate CVSS, port ranges, DC blast-radius framingPartial

Confidence: HIGH — multiple independent primary sources (MSRC + national CERT + vendor labs) corroborate. No atomic IOCs (hashes / attacker IPs / C2 domains) published as of 2026-06-09 — detection is necessarily behavioral. Offensive PoC/root-cause pages were deliberately not ingested for tradecraft (defensive scope).

03

Hunt Brief & Attack Chain

Working hypothesis: If an adversary exploited CVE-2026-41089 against a DC in our environment, the DC's lsass.exe (host of the Netlogon service) will exhibit behavior it never normally shows — spawning child processes, making non-AD outbound connections, or being the context for SYSTEM-level discovery and credential-dumping — preceded by anomalous inbound RPC and possibly Netlogon service instability.

Attack Chain

#StepTelemetryHunt Angle
1Reach a DC's RPC endpoint (135 + dynamic 49152–65535)NetworkReceiveAcceptIP4Inbound RPC to DCs from rare/non-Tier-0 sources (Q3)
2Send malformed Netlogon RPC → memory corruptionWindows System/App event logNetlogon/lsass crash 7034/7031/1000 — failed-attempt tripwire (Q4 + native)
3Code execution as SYSTEM inside lsass/NetlogonProcessRollup2lsass.exe spawns any child process (Q1) — highest fidelity
4Establish C2 / pull toolingNetworkConnectIP4, PeFileWrittenlsass outbound to non-AD ports (Q8); PE written to DC (Q7)
5Discovery: domain / trust / account enumerationProcessRollup2nltest/dsquery/net on DC as SYSTEM (Q5)
6Credential theft: NTDS.dit / LSASS dumpProcessRollup2ntdsutil / comsvcs / vssadmin patterns (Q6)
7Impact: ransomware / persistence / account creationProcess, AD auditFollow-on hunts (4742, 4720, DC shells — Q2)

Hunt Hypotheses (Priority Order)

#HypothesisMITREConf.FP Risk
H1A DC's lsass.exe/Netlogon spawns a child process — definitive post-exploitation signalT1210, T1068HIGHLOW
H2lsass.exe makes outbound connection to non-AD port (C2)T1071, T1105HIGHLOW
H3NTDS.dit / LSASS credential-dumping patterns on a DCT1003.003, T1003.001HIGHLOW
H4Interactive shell / LOLBin executes on a DCT1059, T1068HIGHLOW-MED
H5SYSTEM-context AD discovery (nltest/dsquery/net) on a DCT1482, T1087MEDMED
H6Netlogon service crash / unexpected restart on a DCT1210 (tripwire)MEDMED
H7Rare-source inbound RPC burst to a DCT1210MEDHIGH
H8PE / executable written to a DC by lsass/shell contextT1105MEDLOW-MED
04

Consolidated IOC Table

No atomic IOCs published. As of 2026-06-09 there are no file hashes, attacker IPs, or C2 domains attributed to CVE-2026-41089. The indicators below are behavioral / contextual and should be hunted, not blindly blocked. Bulk-copy versions are in §10.
TypeValueConf.ActionContext
BehaviorParentBaseFileName=lsass.exe → childHIGHDetectPost-exploitation execution on DC (T1210/T1068)
Behaviorlsass.exe outbound to non-AD portHIGHDetectC2 / tooling pull from compromised Netlogon
NetworkInbound RPC 135 + 49152–65535 to DC from non-Tier-0 srcMEDHuntExploit delivery vector
Event ID7034 / 7031 / 1000 (Netlogon / lsass)MEDHuntFailed-exploit tripwire
Event ID5805 (machine-acct auth fail), 4742 (computer acct changed)LOWEnrichAnomalous machine-account / trust activity around DC
Componentnetlogon.dll (BuildSamLogonResponse)HIGHEnrichVulnerable code path — confirm patched file version
05

Affected Surface & Telemetry Matrix

SurfaceRequired TelemetryPriorityGap Risk if Missing
Domain Controllers (Server 2012 – 2025)Falcon sensor (ProcessRollup2, NetworkConnect/ReceiveAcceptIP4)CRITICALAny unmonitored DC is a blind spot — confirm 100% DC coverage
Legacy DCs (2008 R2 / 2012 / 2012 R2, EoL)EDR + 0patch micropatch status; network isolationCRITICALNo vendor patch path; highest residual risk
Netlogon service healthWindows System/Application event log → NG-SIEMHIGHService-crash tripwire blind without log ingestion
RPC network pathFirewall / NDR logs for 135 + dynamic RPC rangeHIGHEast-west RPC often unlogged; needs segmentation telemetry
AD authentication / objectsAdvanced AD auditing (5805, 4742, 4624, 4662) or Falcon Identity ProtectionMEDIUMAdvanced audit policy frequently not enabled by default
06

ATT&CK Mapping

TacticTechnique IDTechnique NameObserved Behavior
Lateral MovementT1210Exploitation of Remote ServicesWeaponized Netlogon RPC from internal asset to DC
Privilege EscalationT1068Exploitation for Privilege EscalationNetlogon hosted in SYSTEM context → instant SYSTEM on DC
ExecutionT1203Exploitation for Client ExecutionMemory corruption in netlogon.dll → arbitrary code
Command & ControlT1071 / T1105Application Layer / Ingress Tool Transferlsass-context outbound connection / payload write
DiscoveryT1482 / T1087Domain Trust / Account Discoverynltest/dsquery/net enumeration on DC as SYSTEM
Credential AccessT1003.003 / T1003.001OS Credential Dumping (NTDS / LSASS)ntdsutil, comsvcs MiniDump, vssadmin shadow copy
PersistenceT1136 / T1098Create Account / Account ManipulationNew/modified privileged or computer accounts post-compromise
ImpactT1486Data Encrypted for ImpactEnterprise ransomware staged from DC (follow-on, out of pack scope)
07

Native Audit-Log Hunts (Non-CQL)

Run these against Windows event logs directly (Event Viewer, native SIEM, or NG-SIEM Windows log source). They complement the EDR-based CQL hunts and catch attempts the sensor may not see as a process event.

HuntSource / Event IDLogicResponse
Netlogon / lsass crash tripwireSystem 7034, 7031, 7036; Application 1000 (faulting module netlogon.dll/lsass.exe)Any unexplained Netlogon stop/restart or lsass crash on a DC, esp. clustered with inbound RPCTreat as probable failed exploit attempt → confirm patch level, capture source IP
Machine-account auth anomaliesSecurity 5805Spikes in 5805 on a DC immediately after suspicious network activityCorrelate source host; verify secure-channel integrity
Computer-account tamperingSecurity 4742Unexpected changes to DC or sensitive computer objects (SPNs, delegation, password)Validate change ticket; investigate initiating account
Machine-account logons from odd sourcesSecurity 4624, LogonType 3, account ending $Machine-account network logons to a DC from unusual source IPs/subnetsPivot on source asset; check Tier-0 boundary
DC process creation under SYSTEMSecurity 4688 (requires cmdline auditing)Interactive shells / LOLBins created on a DC by lsass/services as SYSTEMEscalate — DCs should not spawn ad-hoc shells

PowerShell quick checks (run on a DC)

# Netlogon/lsass crash or restart in the last 7 days (failed-exploit tripwire)
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7034,7031,7036; StartTime=(Get-Date).AddDays(-7)} |
  Where-Object { $_.Message -match 'Netlogon' } | Format-Table TimeCreated, Id, Message -Auto

# lsass application crashes (Event 1000) referencing netlogon.dll
Get-WinEvent -FilterHashtable @{LogName='Application'; Id=1000; StartTime=(Get-Date).AddDays(-7)} |
  Where-Object { $_.Message -match 'lsass.exe|netlogon.dll' } | Format-Table TimeCreated, Message -Auto

# Machine-account auth failures (5805) and computer-account changes (4742)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=5805,4742; StartTime=(Get-Date).AddDays(-7)} |
  Format-Table TimeCreated, Id -Auto
08

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Field names validated against the Falcon event reference. Q4 is flagged ⚠ — it needs a Windows event-log source the base EDR sensor may not provide; validate field names in your tenant before promoting.
Q1 · Netlogon/lsass.exe spawning a child process on a DC
CONF HIGHFP LOWCOST LOW

Looks for: any process whose parent is lsass.exe on a DC, minus benign Windows error/EFS handlers. Accomplishes: catches the exact moment of SYSTEM code execution inside the Netlogon service — the single highest-fidelity signal for this CVE. Healthy DCs almost never show lsass as a parent.

Common FP: WerFault/wermgr/efsui (Windows Error Reporting / EFS) — excluded inline. Investigate everything else.
// HUNT: Netlogon/lsass child process on Domain Controller
// MITRE: T1210, T1068, T1203 | CONF: high  FP: low  COST: low
// REQUIRES: ProcessRollup2 parent/child telemetry on DCs
// TUNING: extend exclusions only after a 7-day DC baseline
#event_simpleName=/^(Synthetic)?ProcessRollup2$/
| $falcon/helper:enrich(field=ProductType)
| ProductType=/Domain Controller/
| ParentBaseFileName=/^lsass\.exe$/i
| FileName!=/^(WerFault|wermgr|efsui)\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, ImageFileName, SHA256HashData], sortby=@timestamp, order=desc, limit=200)
Q2 · Interactive shells / LOLBins on a Domain Controller
CONF HIGHFP LOW-MEDCOST LOW

Looks for: command interpreters and common LOLBins running on a DC. Accomplishes: a DC is an appliance — ad-hoc shells are abnormal and frequently the first hands-on-keyboard step after SYSTEM is obtained.

Common FP: SCCM/GPO startup scripts and monitoring agents launch powershell.exe/cmd.exe. Exclude known admin parent chains and maintenance service accounts.
// HUNT: Suspicious interpreter/LOLBin on Domain Controller
// MITRE: T1059, T1068 | CONF: high  FP: low-medium  COST: low
// TUNING: exclude trusted admin parent chains and maintenance accounts
#event_simpleName=/^(Synthetic)?ProcessRollup2$/
| $falcon/helper:enrich(field=ProductType)
| ProductType=/Domain Controller/
| FileName=/^(cmd|powershell|pwsh|wscript|cscript|mshta|rundll32|regsvr32|bitsadmin|certutil|at|schtasks)\.exe$/i
| ParentBaseFileName=/^(lsass|services|svchost|wmiprvse|spoolsv)\.exe$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData], sortby=@timestamp, order=desc, limit=200)
Q3 · Anomalous inbound RPC to DCs from non-Tier-0 sources
CONF MEDFP HIGHCOST MED

Looks for: inbound connections to the DC RPC endpoint mapper (TCP 135) ranked by source to surface rare/new talkers. Accomplishes: highlights the delivery vector. Best run as a baselining hunt — exclude known DC/admin subnets and review outliers.

Common FP: every domain-joined host talks RPC to DCs constantly. The signal is a new/rare source, not volume. Maintain a trusted-subnet allowlist and subtract it.
// HUNT: Rare-source inbound RPC to Domain Controllers
// MITRE: T1210 | CONF: medium  FP: high  COST: medium
// TUNING: maintain a trusted-subnet allowlist; alert on rare sources only
#event_simpleName=NetworkReceiveAcceptIP4
| $falcon/helper:enrich(field=ProductType)
| ProductType=/Domain Controller/
| LocalPort=135
// exclude trusted management/DC subnets (edit to your environment):
| RemoteAddressIP4!=/^10\.0\.0\./
| groupBy([ComputerName, RemoteAddressIP4], function=[count(as=conn_count), min(@timestamp, as=first_seen), max(@timestamp, as=last_seen)])
| sort(conn_count, order=asc)
| table([ComputerName, RemoteAddressIP4, conn_count, first_seen, last_seen], limit=200)
Q4 · ⚠ Netlogon service stop/restart (failed-exploit tripwire)
CONF MEDFP MEDCOST LOW

Looks for: SCM events showing Netlogon stopping/crashing or lsass faulting. Accomplishes: failed exploitation typically crashes Netlogon while a successful run usually does not — making crashes a valuable early-warning of probing.

⚠ Field names depend on your Windows log parser. Requires System/Application channel ingested into NG-SIEM (not provided by base EDR sensor). Adjust EventID/provider field names to match your schema, then validate.
// HUNT: Netlogon/lsass service crash or unexpected restart on DC
// MITRE: T1210, T1203 (tripwire) | CONF: medium  FP: medium  COST: low
// REQUIRES: Windows System + Application event log source in NG-SIEM
// TUNING: suppress during change windows; correlate with Q3 inbound RPC bursts
#repo=windows_logs
| Channel=/^(System|Application)$/
| (EventID=7034 OR EventID=7031 OR EventID=7036 OR (EventID=1000 AND param2=/netlogon\.dll|lsass\.exe/i))
| (Message=/Netlogon/i OR param1=/Netlogon/i)
| table([@timestamp, ComputerName, EventID, Channel, Message], sortby=@timestamp, order=desc, limit=200)
Q5 · Domain/trust/account discovery on a DC as SYSTEM
CONF MEDFP MEDCOST LOW

Looks for: nltest, dsquery, net group/user, trust-enumeration command lines on a DC. Accomplishes: typical hands-on-keyboard recon following DC compromise.

Common FP: admin/monitoring scripts run nltest /dclist and net commands. Exclude known automation accounts and parents.
// HUNT: SYSTEM-context AD discovery on Domain Controller
// MITRE: T1482, T1087, T1018 | CONF: medium  FP: medium  COST: low
// TUNING: exclude known automation service accounts and scheduled tasks
#event_simpleName=/^(Synthetic)?ProcessRollup2$/
| $falcon/helper:enrich(field=ProductType)
| ProductType=/Domain Controller/
| (FileName=/^(nltest|dsquery|dsget|whoami)\.exe$/i
   OR (FileName=/^net1?\.exe$/i AND CommandLine=/\b(group|user|accounts|localgroup)\b/i)
   OR CommandLine=/(domain_trusts|trusted_domains|\/dclist|\/domain)/i)
| UserName=/^(SYSTEM|.+\$)$/i
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine], sortby=@timestamp, order=desc, limit=200)
Q6 · NTDS.dit / LSASS credential-dumping patterns
CONF HIGHFP LOWCOST LOW

Looks for: command lines for extracting the AD database or dumping LSASS — ntdsutil IFM, comsvcs.dll MiniDump, vssadmin shadow copies, ntds.dit references. Accomplishes: detects the credential-theft objective that typically follows DC SYSTEM access.

Common FP: legitimate VSS backups and authorized ntdsutil maintenance. Scope to DCs and correlate with an approved change window.
// HUNT: NTDS / LSASS credential dumping
// MITRE: T1003.003, T1003.001 | CONF: high  FP: low  COST: low
// TUNING: exclude approved backup service accounts and change-window activity
#event_simpleName=/^(Synthetic)?ProcessRollup2$/
| (CommandLine=/ntds\.dit/i
   OR CommandLine=/ntdsutil.*(ifm|create full)/i
   OR CommandLine=/comsvcs\.dll.*(MiniDump|#24)/i
   OR CommandLine=/procdump.*lsass/i
   OR CommandLine=/vssadmin.*create.*shadow/i
   OR CommandLine=/reg.*save.*(sam|security|system)/i)
| table([@timestamp, aid, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, SHA256HashData], sortby=@timestamp, order=desc, limit=200)
Q7 · PE / executable written to a DC by an unusual writer
CONF MEDFP LOW-MEDCOST LOW

Looks for: new PE files written on a DC where the writing process is lsass, netlogon, or a shell/LOLBin. Accomplishes: catches tooling/payload staged on the DC after exploitation (ingress tool transfer).

Common FP: Windows Update and trusted installers write executables to DCs. Exclude TiWorker/TrustedInstaller/msiexec and patch windows.
// HUNT: Executable dropped on DC by lsass/shell context
// MITRE: T1105 | CONF: medium  FP: low-medium  COST: low
// TUNING: exclude TiWorker, TrustedInstaller, msiexec and patch windows
#event_simpleName=/^(PeFileWritten|NewExecutableWritten)$/
| $falcon/helper:enrich(field=ProductType)
| ProductType=/Domain Controller/
| ContextBaseFileName=/^(lsass|netlogon|cmd|powershell|pwsh|rundll32|regsvr32|mshta)\.exe$/i
| table([@timestamp, aid, ComputerName, ContextBaseFileName, TargetFileName, SHA256HashData], sortby=@timestamp, order=desc, limit=200)
Q8 · lsass.exe outbound connection to non-AD ports
CONF HIGHFP LOW-MEDCOST LOW-MED

Looks for: outbound connections whose initiating process is lsass.exe to ports outside the normal AD/replication set. Accomplishes: a compromised Netlogon (in lsass) reaching out for C2 is highly anomalous — lsass should only talk standard AD ports to other DCs.

Common FP: lsass legitimately connects to other DCs on 88/389/636/445/3268/3269/53/123. Those are excluded; add your DC IPs to a destination allowlist to cut residual noise.
// HUNT: lsass.exe anomalous outbound connection (Netlogon C2)
// MITRE: T1071, T1105 | CONF: high  FP: low-medium  COST: low-medium
// TUNING: allowlist your DC IPs as destinations; exclude standard AD ports
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^lsass\.exe$/i
| !in(RemotePort, values=[88, 389, 636, 445, 3268, 3269, 53, 123, 135])
| RemoteAddressIP4!=/^(127\.|169\.254\.)/
| table([@timestamp, aid, ComputerName, ContextBaseFileName, RemoteAddressIP4, RemotePort, Protocol], sortby=@timestamp, order=desc, limit=200)
09

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
DETECT — Netlogon/lsass spawns child (DC)Parent Image \lsass.exe; ProductType=DC; child ≠ WerFault/wermgr/efsuiWER / EFS handlersCustom IOA → Process Creation; Detect/Block, Critical (Q1)
DETECT — Shell on Domain ControllerImage cmd/powershell/pwsh/mshta; Parent lsass/services/svchost; ProductType=DCSanctioned admin/automation parentsCustom IOA → Process Creation; Detect, High (Q2)
DETECT — lsass abnormal egressNetworkConnect; Image \lsass.exe; RemotePort not in AD setDC-to-DC AD portsCustom IOA → Network Connection; Detect, High (Q8)
HUNT — Credential dump patternsCommandLine contains ntds.dit / comsvcs MiniDump / vssadmin shadowBackup & AD-maintenance accountsScheduled Search / IOA, High (Q6)
Q1, Q2, Q6, Q8 are strong Custom IOA candidates (low FP, high severity). Q3, Q4, Q5, Q7 are better kept as investigate-only scheduled searches until baselined in your tenant.
10

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click plaintext blocks for loading into Falcon scheduled searches, host-triage scripts, firewall rules, or a patch-audit checklist. This CVE has no atomic IOCs — these are behavioral signatures, ports, event IDs, and affected builds, not blocklist entries.

Behavioral Signatures6 · detection logic
ParentBaseFileName=lsass.exe -> any child process (on DC)
lsass.exe outbound connection to non-AD port
ProcessRollup2: shell/LOLBin on DC parented by lsass/services
CommandLine: ntds.dit | ntdsutil ifm | comsvcs.dll MiniDump
CommandLine: vssadmin create shadow | reg save sam/security/system
PeFileWritten on DC by lsass/netlogon/shell context
Network — Ports to MonitorRPC to DCs · firewall / NDR
TCP/135            # RPC endpoint mapper (exploit entry)
TCP/49152-65535    # RPC dynamic port range
# Restrict the above to Tier-0/admin subnets only.
# Allowed lsass-to-DC ports (exclude from Q8): 88,389,636,445,3268,3269,53,123
Windows Event IDs7 · native audit hunts
7034   # SCM: service terminated unexpectedly (Netlogon)
7031   # SCM: service terminated, recovery action
7036   # SCM: service entered stopped/running state
1000   # Application Error (faulting module netlogon.dll / lsass.exe)
5805   # Netlogon machine-account authentication failure
4742   # Computer account was changed
4624   # Logon (Type 3, machine account '$') from unusual source
Affected Products (patch audit)Windows Server DC roles
Windows Server 2012        # 0patch micropatch (EoL)
Windows Server 2012 R2     # 0patch micropatch (EoL)
Windows Server 2016        # MS patch 2026-05-12
Windows Server 2019        # MS patch 2026-05-12
Windows Server 2022        # MS patch 2026-05-12
Windows Server 2025        # MS patch 2026-05-12
Windows Server 2008 R2     # 0patch micropatch (EoL)
Host Triage Filepaths / Strings5 · grep / DFIR
netlogon.dll          # confirm patched file version on every DC
BuildSamLogonResponse # vulnerable function (root cause)
%SystemRoot%\System32\netlogon.dll
FullSecureChannelProtection   # registry value to verify = 1
ntds.dit              # credential-theft target file
MITRE Technique IDsATT&CK coverage
T1210   # Exploitation of Remote Services
T1068   # Exploitation for Privilege Escalation
T1203   # Exploitation for Client Execution
T1071   # Application Layer Protocol (C2)
T1105   # Ingress Tool Transfer
T1482   # Domain Trust Discovery
T1087   # Account Discovery
T1003.003 / T1003.001  # OS Credential Dumping (NTDS / LSASS)

Full Machine-Readable JSON

{
  "hunt_pack": "CVE-2026-41089-Netlogon",
  "version": "0.2",
  "generated": "2026-06-09",
  "author": "HuntPack",
  "cve": "CVE-2026-41089",
  "cvss": 9.8,
  "cwe": "CWE-121",
  "patched": "2026-05-12",
  "itw_confirmed": "2026-05-29",
  "atomic_iocs_available": false,
  "_note": "No file hashes, IPs, or C2 domains are published for this CVE. Detection is behavioral. Confirm patched netlogon.dll version per-OS against MSRC before treating a DC as remediated.",
  "behavioral_indicators": [
    { "type": "process_lineage", "value": "ParentBaseFileName=lsass.exe -> child (on DC)", "confidence": "high", "action": "detect", "source": "Deepwatch CA-26-019" },
    { "type": "network", "value": "lsass.exe outbound to non-AD port", "confidence": "high", "action": "detect", "source": "derived" },
    { "type": "network", "value": "inbound RPC 135 + 49152-65535 to DC from rare source", "confidence": "medium", "action": "hunt", "source": "Deepwatch / HelpNetSecurity" },
    { "type": "event_id", "value": "7034/7031/1000 Netlogon-lsass crash", "confidence": "medium", "action": "hunt", "source": "Deepwatch / Automox" },
    { "type": "event_id", "value": "5805 / 4742 anomalies on DC", "confidence": "low", "action": "enrich", "source": "Automox" },
    { "type": "component", "value": "netlogon.dll (BuildSamLogonResponse)", "confidence": "high", "action": "enrich", "source": "MSRC" }
  ],
  "affected": ["Windows Server 2012","2012 R2","2016","2019","2022","2025"],
  "legacy_micropatch": ["Server 2008 R2","2012","2012 R2 (0patch)"],
  "mitre": ["T1210","T1068","T1203","T1071","T1105","T1482","T1087","T1003.003","T1003.001"]
}
11

Detection Validation Gates

GateRequirementEvidence
1 · Telemetry readyFalcon sensor on 100% of DCs; ProductType enrichment resolving; (optional) Windows System/App logs in NG-SIEM for Q4DC inventory reconciled vs. sensor host list
2 · Benign baseline7-day baseline of lsass children, DC shells, and lsass egress captured; allowlists built (Q2, Q3, Q7, Q8)Documented exclusion sets per query
3 · Positive testsValidate Q1/Q5/Q6 with benign equivalents (authorized nltest /dclist, a sanctioned VSS snapshot) to confirm the pattern firesTest run IDs / screenshots in ticket
4 · PromotionQ1, Q2, Q6, Q8 promoted to Custom IOA / scheduled alerts; remainder run as scheduled hunts with analyst reviewIOA rule IDs; scheduled search schedule
12

Hardening — Tiered

Immediate · this week · no compatibility risk
  • Patch every DC in one maintenance window (MITRE M1051; source MSRC May 2026). Apply the CVE-2026-41089 update to all DCs (2012–2025) simultaneously — a half-patched forest is not defensible for a pre-auth DC bug. Verify netlogon.dll version post-patch (Playbook P1).
  • Legacy / EoL DCs: apply 0patch micropatches (Server 2008 R2 / 2012 / 2012 R2) and prioritize decommissioning. ⚠ best-practice — no formal benchmark for EoL OS.
  • Block external exposure of DC RPC (M1037). Ensure TCP 135 and the dynamic RPC range (49152–65535) on DCs are never reachable from the internet or untrusted zones.
  • Deploy the Q1 IOA (lsass-spawns-child on DC) as a Critical detect today — near-zero benign baseline.
Near term · 1–4 weeks · pilot on a ring first
  • Restrict RPC to Tier-0 only (M1030 / M1037). Host firewall rules (Playbook P2) so DC RPC accepts connections only from other DCs and designated admin subnets. Pilot on one DC, watch for replication/auth breakage, then roll out.
  • Constrain the RPC dynamic port range and apply netsh rpc filter rules to limit interface reachability from non-admin zones (M1037).
  • Verify Netlogon secure-channel hardeningFullSecureChannelProtection=1 (post-Zerologon enforcement) with no vulnerable-channel allow-list entries (M1042). Defense-in-depth for the Netlogon attack surface.
  • Enable AD advanced auditing (M1047): subcategories behind Event IDs 5805, 4742, 4624 (machine-account), 4662, plus 4688 command-line auditing on DCs (Playbook P3).
  • Tighten Tier-0 admin access (M1026 / M1018): only Tier-0 admins can reach DC management surfaces.
Strategic · 1–3 months · architectural
  • Full AD tiering / Tier-0 isolation (M1030): dedicated management network for DCs, no inbound RPC from user/server VLANs, PAWs for DC administration.
  • Adopt a DC security baseline: CIS Microsoft Windows Server 2022 Benchmark (DC profile) and/or Microsoft Security Baseline / DISA STIG for DCs, with drift tracking.
  • Credential-exposure reduction: LAPS for local admin, gMSAs for services, regular krbtgt rotation so a single DC compromise is less catastrophic.
  • Continuous attack-path monitoring of Tier-0 (AD attack-path / identity-protection tooling) to detect escalation routes before abuse.
13

Deployable Playbooks

P1 · Verify patch state across all DCs (PowerShell, read-only)
# Reports the Netlogon.dll file version on every DC so you can confirm the patch.
# Compare returned version against the MSRC-listed fixed build for each OS.
$dcs = (Get-ADDomainController -Filter *).HostName
foreach ($dc in $dcs) {
  try {
    $v = Invoke-Command -ComputerName $dc -ScriptBlock {
      (Get-Item "$env:SystemRoot\System32\netlogon.dll").VersionInfo.FileVersion
    } -ErrorAction Stop
    [pscustomobject]@{ DC = $dc; NetlogonDllVersion = $v }
  } catch {
    [pscustomobject]@{ DC = $dc; NetlogonDllVersion = "UNREACHABLE: $($_.Exception.Message)" }
  }
}
P2 · Restrict DC RPC to trusted subnets (Windows Firewall)
Pilot on one DC first — validate replication/auth before fleet rollout.
# Scope the RPC endpoint mapper (TCP 135) to trusted management/DC subnets.
# DO NOT pair this with a second explicit Block rule on the same port. The Windows
# Filtering Platform does NOT evaluate host rules in creation order -- an explicit
# Block always overrides an explicit Allow. A "block everything else" rule on TCP/135
# therefore closes RPC-EPM to your Tier-0 subnets as well, and on a DC that takes out
# AD replication, DCOM, WMI, RSAT/GPMC, DFSR and print. Use a scoped Allow plus a
# default-deny inbound posture instead -- the profile default does the blocking.

# PILOT ON ONE NON-CRITICAL DC. Staged disabled: review, then enable deliberately.
$trusted = @("10.10.0.0/24","10.10.1.0/24")   # <-- replace with your Tier-0 subnets

# 1. Record current state so you can roll back exactly.
$before = Get-NetFirewallProfile -Name Domain | Select-Object Name, DefaultInboundAction
$before | Format-Table -AutoSize

# 2. Create the scoped allow rule, DISABLED. Nothing changes yet.
New-NetFirewallRule -DisplayName "Restrict RPC-EPM (CVE-2026-41089)" `
  -Direction Inbound -Protocol TCP -LocalPort 135 `
  -RemoteAddress $trusted -Action Allow -Profile Domain -Enabled False

# 3. Confirm the rule matches what you intended, THEN enable it.
Get-NetFirewallRule -DisplayName "Restrict RPC-EPM (CVE-2026-41089)" |
  Get-NetFirewallAddressFilter
# Enable-NetFirewallRule -DisplayName "Restrict RPC-EPM (CVE-2026-41089)"

# 4. Only after step 3 verifies clean, set the profile default. This is what
#    actually blocks untrusted sources -- not a second explicit Block rule.
# Set-NetFirewallProfile -Name Domain -DefaultInboundAction Block

# Optional: pin the RPC dynamic port range so firewall/NDR rules stay accurate
# netsh int ipv4 set dynamicport tcp start=49152 num=16384

Prerequisites: a non-critical pilot DC; your real Tier-0 CIDRs; console or iLO/DRAC access to the pilot DC in case you lose RPC to it. Reboot required: no.

Verify — run all three from a TRUSTED subnet before touching a second DC:
Test-NetConnection <pilot-dc> -Port 135 must return TcpTestSucceeded : True.
repadmin /replsummary must show no new failures for the pilot DC.
Get-NetFirewallProfile -Name Domain | Select DefaultInboundAction confirms the posture you expect. Then repeat from an UNTRUSTED subnet and confirm 135 is refused.

Rollback:
Remove-NetFirewallRule -DisplayName "Restrict RPC-EPM (CVE-2026-41089)"
Set-NetFirewallProfile -Name Domain -DefaultInboundAction NotConfigured (or whatever $before recorded in step 1). If you have already lost RPC to the DC, roll back from the console or unlink the GPO from a working DC and run gpupdate /force after regaining access.

P3 · Enable AD advanced auditing for the native hunts
# Turn on the audit subcategories behind the native audit-log hunts.
# Prefer deploying via the "Advanced Audit Policy Configuration" GPO on the DC OU.
auditpol /set /subcategory:"Computer Account Management" /success:enable /failure:enable
auditpol /set /subcategory:"User Account Management"     /success:enable /failure:enable
auditpol /set /subcategory:"Logon"                       /success:enable /failure:enable
auditpol /set /subcategory:"Directory Service Access"    /success:enable /failure:enable
auditpol /set /subcategory:"Process Creation"            /success:enable

# Include command line in 4688 events (GPO: Administrative Templates > System >
# Audit Process Creation > "Include command line in process creation events" = Enabled)
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" `
  /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f

# Verify Netlogon secure-channel enforcement (post-Zerologon hardening) is ON:
reg query "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" /v FullSecureChannelProtection
14

Containment Runbook

A compromised DC is a Tier-0 incident. SYSTEM on a DC must be treated as full domain compromise until disproven. Coordinate with IR leadership before isolating a DC — abrupt isolation has authentication impact.
Phase 1 · Identify

Confirm the hit (Q1/Q6/Q8). Capture: source IP of inbound RPC, child process tree, timestamps, lsass egress destinations. Pull a memory image of the DC before changes. Owner: SOC / IR. Evidence: process tree, memory image, Falcon detection ID.

Phase 2 · Contain

Restrict inbound RPC paths to the DC (Playbook P2). If active hands-on-keyboard is confirmed, network-contain the DC via Falcon and fail over FSMO roles to a known-clean, patched DC. Block identified attacker source hosts. Owner: IR / AD team. Evidence: containment action log, FSMO transfer record.

Phase 3 · Eradicate & Recover

Assume the DC is unrecoverable in place — rebuild from known-good media. Reset the DC machine account and all Tier-0 / privileged credentials. Rotate krbtgt twice. Reset DSRM password. Hunt for persistence (new accounts, GPO changes, ACL backdoors, AdminSDHolder). Reintroduce the patched DC, verify replication health, re-enable monitoring, and keep Q1–Q8 at elevated alerting for 30 days. Owner: AD team / SOC. Evidence: rebuild ticket, krbtgt rotation log, replication report.

15

Detection Coverage Map

Attack-chain behaviorPrimary DetectionFallbackKnown Gap
Reach DC RPC endpointQ3 (rare-source inbound RPC)Firewall/NDR logsHigh FP; depends on allowlist quality + inbound network telemetry
Memory corruption / exploit attemptQ4 + native crash hunt⚠ Requires Windows event-log ingestion; not in base EDR. Successful exploits may not crash the service.
SYSTEM code execution in lsassQ1 (lsass child) — high confQ2 (DC shells)Covered. Depends on ProductType enrichment resolving DC role.
C2 / tool transferQ8 (lsass egress), Q7 (PE on DC)DnsRequest huntsIn-memory-only C2 with no new process/file would evade
DiscoveryQ5 (AD enum on DC)Native 4688Living-off-the-land overlaps with admin tooling — FP tuning needed
Credential dumpingQ6 (NTDS/LSASS)Falcon Identity ProtectionDirect-syscall or novel dumping tools may miss command-line patterns
Persistence / impactNative 4742/4720 huntsQ2Ransomware/impact stage out of pack scope — chain to existing detections
16

Hunt Summary Ticket

TITLE:        Hunt — CVE-2026-41089 Windows Netlogon RCE (DC takeover)
SEVERITY:     Critical (CVSS 9.8, exploited in the wild)
SCOPE:        All Windows Server Domain Controllers (2012-2025); legacy via 0patch
HYPOTHESIS:   Exploitation yields SYSTEM in lsass/Netlogon on a DC, producing
              anomalous child processes, lsass egress, and SYSTEM-level recon/cred theft.
QUERIES RUN:  Q1 lsass-child (DC) | Q2 DC shells | Q3 rare inbound RPC |
              Q4 Netlogon crash | Q5 AD discovery | Q6 NTDS/LSASS dump |
              Q7 PE on DC | Q8 lsass egress  (+5 native audit-log hunts)
DATA SOURCES: Falcon ProcessRollup2, NetworkConnect/ReceiveAcceptIP4, PeFileWritten;
              Windows System/Application/Security event logs (Q4 + native hunts)
FINDINGS:     <pending analyst execution>
GAPS:         Q4 needs Windows event-log ingestion; no atomic IOCs published;
              successful exploit may not crash Netlogon.
ACTIONS:      Patch all DCs (one window); restrict RPC to Tier-0; deploy Q1 IOA;
              enable advanced auditing (P3).
OWNER:        HuntPack
VERSION:      v0.2 (Draft) - 2026-06-09
17

Changelog

v0.52026-07-24Follow-up to the library CQL correctness pass: these table() calls carry extra parameters (e.g. sortby=), so the first pass's pattern did not reach them and they kept the silent 200-row default. Explicit limits now applied on the same tiering.
v0.42026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.32026-06-29CQL syntax review (crowdstrike-logscale-v3): replaced regex-on-numeric RemotePort with !in() (Q8).
v0.22026-06-09Reformatted to fixed left-sidebar layout with scrollspy nav, a collapsible (hide/show) TOC, and a one-click grouped IOC quick-copy grid (§10). Detection content unchanged from v0.1.
v0.12026-06-09Initial HuntPack: 8 CQL queries, 5 native hunts, 4 IOA candidates, tiered DC hardening, 3 playbooks, containment runbook. Built from MSRC + CCB + Deepwatch + Help Net Security intel.
18

References

TierSourceUsed ForAccessed
1Microsoft MSRC — CVE-2026-41089Authoritative vuln details, affected versions, patch2026-06-09
1CVE.org — CVE-2026-41089CWE-121 classification, primary record2026-06-09
1NVD — CVE-2026-41089CVSS 9.8 vector2026-06-09
1CCB Belgium advisoryIn-the-wild exploitation confirmation2026-06-09
2Deepwatch ATI — CA-26-019Detection strategy, ATT&CK mapping, hunting leads2026-06-09
2Help Net SecurityRoot-cause component, mitigations, 0patch, indicators2026-06-09
2BleepingComputerCorroboration of exploitation and severity2026-06-09
2SecurityWeekCorroboration, affected versions2026-06-09

HuntPack v0.2 (Draft) · CVE-2026-41089 · Generated 2026-06-09 · Defensive use only — no exploit code, PoC, or offensive tradecraft. Validate all field names (notably Q4) and tune exclusions in your own tenant before promoting any query to alerting.