RoguePlanet — Microsoft Defender SYSTEM Escalation Zero-Day

TOCTOU race in Defender's file-processing path → NTFS junction redirect → MsMpEng.exe (SYSTEM) writes/executes attacker content on fully-patched Windows 10/11. Defensive hunt & harden pack — no exploit code.
Threat
RoguePlanet · Nightmare Eclipse
Severity
PoC PUBLIC · NO PATCH
Type
LPE / AV-abuse zero-day (RCE variant via SMB)
CVE
None official · CVE-2026-47281 (unconfirmed)
Version
v0.2 · 2026-06-12
Author
HuntPack
Confidence
HIGH
01

Executive Summary

RoguePlanet weaponizes a time-of-check / time-of-use (TOCTOU) race in Microsoft Defender's antimalware engine (MsMpEng.exe / mpengine.dll). The engine validates a file path and then operates on it as two non-atomic steps; an unprivileged user flips a directory to an NTFS junction/symlink (a reparse point) in the gap, so Defender's SYSTEM-level write or remediation lands on an attacker-chosen target — yielding code execution as SYSTEM. The public PoC was released 2026-06-10 by the "Nightmare Eclipse" group and works on fully patched Windows 10/11 (including Canary), bypassing Microsoft's mid-May hardening of the mpengine!SysIO* APIs.

Two modes are documented. The original RCE variant coerces a victim into opening a crafted .vhd(x) from a remote SMB share, causing Defender to overwrite its own files. After the May hardening, the author pivoted to a local privilege escalation variant using local symlink redirection — the higher-probability, in-scope risk for most enterprises, since any commodity malware foothold or low-priv user can attempt it. Predecessors from the same group (BlueHammer / CVE-2026-33825, RedSun) used the identical junction-redirection primitive and have already appeared in live intrusions.

Defender priority: Deploy application allowlisting (WDAC/AppLocker, enforced) — independently confirmed to block the payload — and stand up the MsMpEng.exe → shell lineage detection (Q1) as a Custom IOA today. There is no patch; treat this as an exposure to mitigate, not remediate. Earliest high-fidelity signal: Q1 (Defender engine spawns a shell); Q3 (SYSTEM write into System32) confirms the redirect — escalate on any hit.
02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry
1 · Vendor researchPicus Security — Anatomy of the Nightmare Eclipse Defender Zero-DayTOCTOU mechanism, junction/symlink redirection, mpengine!SysIO* bypass, Sigma/KQL lineage detection, infra IOCsyes
1 · News of recordBleepingComputerRCE→LPE pivot after May hardening; fully patched Win10/11 incl. KB5094126; Microsoft "investigating"; reliability varies by hostyes
2 · CorroboratingThe Hacker News / SecurityWeek / Cybersecurity NewsSYSTEM shell on patched Windows; PoC GitHub→self-hosted; Patch-Tuesday timingpartial
2 · Control efficacyThreatLockerAllowlisting blocks execution; exploit viability confirmed independentlyyes
3 · AggregatorThreat-Modeling.comReferences CVE-2026-47281 (VS Code vector claim) — unconfirmed vs MSpartial

Decisions: treat the LPE variant as the primary risk (needs only a low-priv foothold); do not rely on the CVE (no official MS advisory/patch — CVE-2026-47281 is single-source); lead defenses with WDAC/AppLocker (the one control independently confirmed to stop the payload). Pack is keyed on behavior, not patch state.

03

Hunt Brief & Attack Chain

Working hypothesis: A standard-user process stages a reparse point (junction/symlink) in a user-writable directory and races Defender's file operation so that MsMpEng.exe (SYSTEM) writes/executes into an attacker-chosen path, after which a SYSTEM-integrity shell or payload runs.

StepBehaviorTelemetryHunt Angle
1 · FootholdLow-priv code execution (commodity malware / local user)ProcessRollup2Baseline
2 · Stage reparseCreate dir in %TEMP%/%LOCALAPPDATA%/ProgramData, flip to junction/symlinkSysmon EID 11N1; proxy via protected-dir write
3 · Trigger opInduce Defender to scan/remediate crafted content during the raceRace invisible; detect the outcome
4 · SYSTEM writeMsMpEng.exe follows the link, writes into System32/Program FilesPeFileWrittenQ3
5 · SYSTEM execShell / payload runs at SYSTEM, parented by Defender engineProcessRollup2Q1 / Q2 / Q6
RCE-A · Remote imageVictim mounts/opens crafted .vhd(x) from external SMBNetworkConnectIP4; VHDMP logQ4 + N2
Post · Persist/spreadNew local admin, service, or task with new SYSTEM rightsServiceInstalled, ScheduledTaskRegisteredContainment §11

Affected surface & telemetry

SurfaceRequired TelemetryPriorityGap Risk
Windows 10/11 workstations (fully patched)Process lineage + command line (ProcessRollup2)CriticalLow — standard sensor
Defender-engine file opsPE write w/ writing-process context (PeFileWritten)HighMedium — non-PE (junction) writes not captured
Reparse / junction creationFileCreate w/ reparse attributeMediumHigh — needs Sysmon EID 11
Remote SMB / VHD mount (RCE)NetworkConnectIP4 445 + VHDMP logMediumMedium — route to native log
04

Consolidated IOC Table

IOCs are infrastructure/behavior tied to the disclosure group, not a broad campaign. Behavioral hunts (Q1–Q3) are the durable signal; the domains are perishable — enrichment/pivot. Copy-ready blocks in §9.
TypeValueConfActionContext
Domainprojectnightcrawler.devmediumhuntNightmare Eclipse self-hosted exploit repo
Domaindeadeclipse666.blogspot.commediumhuntGroup blog / disclosure channel
AccountGitHub: MSNightmarelowenrichHistorical repo host; likely removed
BehaviorMsMpEng.exe → cmd/powershell/conhost/cscript/wscript (SYSTEM)highdetectPrimary signal — no benign equivalent
BehaviorMsMpEng.exe writing PE into \System32\ or \Program Files\highdetectRedirected SYSTEM write outcome
05

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Privilege EscalationT1068 — Exploitation for Privilege EscalationTOCTOU race in Defender engine yields SYSTEMQ1, Q2, Q3, Q6
PrivEsc / Defense EvasionT1574 — Hijack Execution FlowJunction/symlink redirects a privileged file opQ3, Q6; N1
Privilege EscalationT1548 — Abuse Elevation Control MechanismStandard user obtains SYSTEM integrityQ1, Q6
ExecutionT1059.001 / .003 — PowerShell / Windows Command ShellSYSTEM shell spawned by Defender engineQ1
Lateral MovementT1080 — Taint Shared ContentCrafted .vhd(x) / symlink on SMB share (RCE)Q4; N2
ExecutionT1204.002 — User Execution: Malicious FileVictim opens remote disk imageQ4; N2
Defense EvasionT1211 — Exploitation for Defense EvasionSubverts the AV product to gain trust/executionWDAC/AppLocker §10
06

Native Audit-Log Hunts

HuntSourceLogicResponse
N1 · Reparse point in tempSysmon EID 11 (FileCreate)Junction/symlink creation in %TEMP%/%LOCALAPPDATA%/ProgramData preceding a Defender writeHigh-fidelity if Sysmon deployed; pairs with Q3
N2 · Remote VHD/ISO mountMicrosoft-Windows-VHDMP/OperationalDisk-image attach where the backing file is a UNC/remote path or user-writable tempCorrelate with Q1/Q3; investigate mount source
N3 · Out-of-band Defender updateGet-MpComputerStatus / update historyEngine/platform version changes outside normal channel cadenceConfirm provenance; baseline expected versions
N4 · WDAC/AppLocker blockAppLocker/*, CodeIntegrity/OperationalBlocked execution of an unsigned SYSTEM binary from a user pathConfirms control working; investigate payload
07

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; process hunts include SyntheticProcessRollup2. Validate the Defender helper-exclusion list (Q2) per platform version. Do not run the live PoC in production — validate detections in a lab.
Q1 · Defender engine spawning an interactive shell / script host
CONF HIGHFP LOWCOST LOW

Looks for: MsMpEng.exe as the parent of a shell or scripting host. Accomplishes: catches the moment of SYSTEM code execution — the flagship signal, no benign equivalent.

// HUNT: Defender engine spawning an interactive shell or script host
// MITRE: T1068, T1059.001, T1059.003, T1548 | CONF: high  FP: low  COST: low
// FP NOTES: Defender legitimately launches MpCmdRun.exe / MsMpEngCP.exe, never interactive shells
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^MsMpEng\.exe$/i
| FileName=/^(cmd|powershell|powershell_ise|pwsh|conhost|cscript|wscript|mshta|rundll32|regsvr32)\.exe$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, FileName, CommandLine, AuthenticationId, SHA256HashData], limit=200)
| sort(@timestamp, order=desc)
Q2 · Anomalous child process of the Defender engine (broad net)
CONF HIGHFP LOW-MEDCOST LOW

Looks for: any child of MsMpEng.exe that is not a known Defender helper. FP: Defender helpers (MpCmdRun.exe, NisSrv.exe) — excluded; validate per platform version.

// HUNT: Anomalous child process of the Microsoft Defender engine
// MITRE: T1068, T1574 | CONF: high  FP: low-med  COST: low
// TUNING: exclude the known Defender helper set; alert on anything else parented by MsMpEng.exe
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^MsMpEng\.exe$/i
| FileName!=/^(MpCmdRun|MsMpEngCP|NisSrv|MpDlpService|MsSense|SenseIR|SenseCncProxy|MpDefenderCoreService)\.exe$/i
| table([@timestamp, ComputerName, UserName, FileName, ImageFileName, CommandLine, SHA256HashData], limit=200)
| sort(@timestamp, order=desc)
Q3 · Defender engine writing a PE into a protected system directory
CONF MEDFP LOWCOST LOW-MED

Looks for: MsMpEng.exe as the writing process for a PE in System32/SysWOW64/Program Files. Accomplishes: catches the redirected SYSTEM write — the outcome of the junction race.

// HUNT: Defender engine writing a PE into a protected system directory
// MITRE: T1574, T1068 | CONF: medium  FP: low  COST: low-med
// FP NOTES: Defender writes signatures/platform binaries into its OWN dirs, excluded below
#event_simpleName=/PeFileWritten|NewExecutableWritten/
| ContextBaseFileName=/^MsMpEng\.exe$/i
| TargetFileName=/\\(System32|SysWOW64|Program Files( \(x86\))?)\\/i
| TargetFileName!=/\\(Windows Defender|Microsoft\\Windows Defender|Microsoft\\Windows Security)\\/i
| table([@timestamp, ComputerName, ContextBaseFileName, TargetFileName, SHA256HashData], limit=200)
Q4 · Outbound SMB to an external host (RCE-variant fetch)
CONF MEDFP MEDCOST MED

Looks for: endpoints making SMB (TCP 445) connections to public IPs. FP: Azure Files / cloud SMB — exclude known cloud-SMB CIDRs.

// HUNT: Outbound SMB from an endpoint to an external (non-RFC1918) host
// MITRE: T1021.002, T1080 | CONF: medium  FP: medium  COST: medium
// TUNING: exclude RFC1918 + sanctioned cloud-SMB CIDRs; scope to workstation host groups
#event_simpleName=NetworkConnectIP4
| RemotePort=445
| RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|169\.254\.|127\.)/
| table([@timestamp, ComputerName, ContextBaseFileName, LocalAddressIP4, RemoteAddressIP4, RemotePort], limit=200)
Q5 · DNS resolution of Nightmare Eclipse infrastructure
CONF HIGHFP LOWCOST LOW

Looks for: resolution of the group's known exploit-hosting / disclosure domains. Investigate-only, perishable infrastructure.

// HUNT: DNS resolution of known Nightmare Eclipse / RoguePlanet infrastructure
// MITRE: T1071 | CONF: high  FP: low  COST: low
// FP NOTES: security researchers / sandboxes intentionally resolving the domains
#event_simpleName=DnsRequest
| DomainName=/(^|\.)projectnightcrawler\.dev$|(^|\.)deadeclipse666\.blogspot\.com$/i
| table([@timestamp, ComputerName, ContextBaseFileName, DomainName], limit=200)
Q6 · SYSTEM-integrity process executing from a user-writable path
CONF LOW-MEDFP MEDCOST LOW-MED

Looks for: a process running as SYSTEM (AuthenticationId 999) whose image sits in a user temp / ProgramData path. FP: SYSTEM-context installers from %TEMP% — pair with Q1/Q3 on same host.

// HUNT: SYSTEM-integrity process launched from a user-writable directory
// MITRE: T1068, T1574, T1059 | CONF: low-med  FP: medium  COST: low-med
// TUNING: correlate to Q1/Q3 on same aid; exclude known signed installer/update paths
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| AuthenticationId=999
| ImageFileName=/\\(Users\\[^\\]+\\AppData\\Local\\Temp|ProgramData)\\.+\.(exe|dll|scr)$/i
| table([@timestamp, ComputerName, UserName, ImageFileName, CommandLine, ParentBaseFileName, SHA256HashData], limit=200)
08

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
RoguePlanet — Defender engine spawns shellParent Image *\MsMpEng.exe; Child cmd/powershell/conhost/cscript/wscript/mshta.exeNone expected — promote high severity, Detect+BlockEndpoint Security → Custom IOA → Process Creation
RoguePlanet — Defender writes PE to System32Writing Image *\MsMpEng.exe; Target *\System32\* / *\Program Files\* excl. Defender dirsDefender's own directories (excluded)Custom IOA → File Write (or scheduled-search detect)
Q1 is the recommended first promotion — high confidence, no benign baseline to tune. Q4/Q6 remain hunt/investigate-only due to FP risk.
09

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click blocks for Falcon IOC Management, scheduled searches, or hardening audits. RoguePlanet is behavior-keyed — no payload hashes published; add per-incident IOCs to the CSV block.

Falcon IOC Management CSVbulk import
type,value,action,severity,expiration,description,tags
domain,projectnightcrawler.dev,detect,high,2026-09-12,RoguePlanet - Nightmare Eclipse exploit host,campaign:RoguePlanet
domain,deadeclipse666.blogspot.com,detect,medium,2026-09-12,RoguePlanet - disclosure channel,campaign:RoguePlanet
sha256,REPLACE_WITH_PAYLOAD_SHA256,prevent,critical,2027-06-12,RoguePlanet - SYSTEM payload,campaign:RoguePlanet
Behavioral Signaturesdetection logic
MsMpEng.exe spawns cmd/powershell/conhost/cscript/wscript at SYSTEM (flagship)
MsMpEng.exe writes a PE into \System32 or \Program Files (redirected SYSTEM write)
Junction/symlink (reparse point) created in %TEMP%/%LOCALAPPDATA%/ProgramData pre-Defender write
SYSTEM-integrity process (AuthenticationId 999) executing from %TEMP%/ProgramData
.vhd(x)/.iso mounted from a remote/UNC path (RCE variant precursor)
Outbound SMB (TCP 445) from a workstation to a public IP
Named Indicators / Toolingprocess & refs
RoguePlanet           # the exploit (Defender TOCTOU LPE/RCE)
Nightmare Eclipse     # disclosure group
BlueHammer            # predecessor, same junction-redirect primitive (CVE-2026-33825)
RedSun                # predecessor (Defender-targeted)
MsMpEng.exe           # Defender engine — abused SYSTEM writer
CVE-2026-47281        # unconfirmed tracker reference (no official MS advisory)
Mitigation / Patch Auditno vendor patch
# No vendor patch at time of writing — mitigate, don't remediate
WDAC / AppLocker enforce                          # blocks the SYSTEM payload (ThreatLocker-confirmed)
fsutil behavior set SymlinkEvaluation R2L:0 R2R:0 # remove remote-symlink primitive
Block outbound SMB TCP 445/139 from workstations  # kill remote .vhd(x) fetch
Defender Tamper Protection ON; watch out-of-band engine version (N3)
Disable std-user ISO/VHD auto-mount; restrict Virtual Disk service to admins
10

Hardening — Tiered & Deployable

No patch exists. The objective is to make the exploit fail-closed: stop the SYSTEM payload from running, and remove the redirection primitives.

Immediate — Stop the payload & remove primitives
  • Application allowlisting (WDAC / AppLocker), enforce modeM1038. Independently confirmed to block the RoguePlanet payload. Highest-leverage control. Deploy Audit → Enforce; do not blanket-allow %TEMP%/%ProgramData%.
  • Disable remote symlink evaluationM1042: fsutil behavior set SymlinkEvaluation R2L:0 R2R:0 (verify with fsutil behavior query SymlinkEvaluation).
  • Block outbound SMB (445/139) from workstationsM1037: New-NetFirewallRule -DisplayName "Block Outbound SMB" -Direction Outbound -Action Block -Protocol TCP -RemotePort 445 -Profile Any.
  • Defender on current channel + Tamper Protection ONM1054. Watch for out-of-band engine version changes (N3).
Near term — Constrain the surface (pilot first)
  • Block standard-user disk-image mountingM1042. Disable ISO/VHD auto-mount; restrict the Virtual Disk service to admins (sc.exe sdset vds "D:(A;;CCLCSWRPWPDTLOCRRC;;;BA)(A;;CCLCSWLOCRRC;;;SY)").
  • Attack Surface Reduction (ASR)M1042. Enable prevalence/age/trusted-list execution block + script-host constraints.
  • Remove standing local admin; deploy LAPSM1026. Limits the value of a SYSTEM foothold.
  • PowerShell Constrained Language Mode + script-block loggingM1038 / M1040. Raises cost of the SYSTEM shell; improves Q1 evidence.
Strategic — Make allowlisting the default
  • Enterprise WDAC signed-only code-integrity policyM1045 / M1038.
  • HVCI + Credential GuardM1043. Contain blast radius if SYSTEM is reached.
  • Continuous AV-tamper / config-drift monitoringM1054. Alert on Defender engine self-modification fleet-wide.
11

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the host in Falcon; do not power off (preserve volatile SYSTEM-shell state)SOC L2Containment timestamp; Q1 event
TriagePull the MsMpEng.exe child-process tree; capture the SYSTEM shell command line and any written PE in System32/Program FilesSOC L2Process tree; Q1/Q3 rows
EradicateKill SYSTEM payload; remove planted binaries; delete staged junctions; check for new local admin, service, or task created post-escalationIRService/task/group review
RecoverRotate credentials for every account used on the host; verify Defender config/Tamper Protection intact; re-image if SYSTEM execution confirmedIR + ITCred-rotation log; rebuild ticket
HardenPush §10 Immediate controls fleet-wide; promote Q1 IOADetection EngWDAC/AppLocker status; IOA enabled
12

Detection Coverage Map & Validation

TechniqueBehaviorCQLIOACoverage
T1068 / T1059SYSTEM shell from Defender engineQ1, Q2IOA-1Good
T1574Redirected SYSTEM write to System32Q3, Q6IOA-2Good
T1574Reparse/junction stagingGAP needs Sysmon EID 11 (N1)
T1080 / T1204.002Remote VHD/SMB fetch (RCE)Q4Partial VHDMP log (N2)
T1071Nightmare Eclipse infra contactQ5Good perishable
Defender engine version tamperingGAP manual Get-MpComputerStatus (N3)

Validation gates: (1) confirm ProcessRollup2 + PeFileWritten context fleet-wide; (2) Q1 returns zero hits in a 30-day benign lookback before promotion; (3) lab-validate lineage firing with a benign parent-spoof harness — never the live PoC; (4) promote Q1 to Custom IOA Detect+Block, keep Q4/Q6 as scheduled hunts (target FP < 1/week).

13

Hunt Summary Ticket

TITLE:        Hunt — RoguePlanet (Microsoft Defender SYSTEM Escalation Zero-Day)
SEVERITY:     High (public PoC, no patch; SYSTEM on fully-patched Win10/11)
SCOPE:        Windows 10/11 endpoints (fully patched); Server lower-priority
HYPOTHESIS:   Standard-user process redirects a Defender (SYSTEM) file op via NTFS
              junction/symlink -> SYSTEM code exec. Evidence = Defender-engine-parented
              shells + SYSTEM writes into protected dirs.
QUERIES RUN:  Q1 Defender->shell (IOA) | Q2 anomalous child | Q3 PE write to System32 |
              Q4 outbound SMB | Q5 infra DNS | Q6 SYSTEM exec from user path
              + Native N1-N4 (reparse EID11, VHDMP, Defender version, AppLocker block)
DO FIRST:     Q1, Q3 — escalate any hit immediately
FINDINGS:     <pending analyst execution>
GAPS:         Reparse-point + VHD mount telemetry weak in EDR; no CVE/patch
ACTIONS:      WDAC/AppLocker enforce; disable remote symlink eval; block outbound SMB;
              promote Q1 to Custom IOA Detect+Block
OWNER:        HuntPack
VERSION:      v0.2 - 2026-06-12
14

Changelog

v0.22026-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.12026-06-12Initial pack in the review-v2 gold layout (fixed left-sidebar scrollspy TOC, collapsible, cloud selector inside the CQL section, per-card Copy/Open-in-Falcon, Grouped IOC Quick-Copy grid, coverage+validation, .ticket). 6 CQL + 4 native hunts, 2 IOA candidates, tiered hardening, containment runbook. Behavior-keyed (no confirmed CVE/patch).
15

References

TierSourceUsed For
1Picus Security — RoguePlanet anatomyMechanism, IOCs, detection logic, mitigations
1BleepingComputer — RoguePlanet grants SYSTEMRCE→LPE pivot, affected builds, MS response
2The Hacker News — Defender RoguePlanet zero-dayCorroboration, release timing
2SecurityWeek — RoguePlanet released · ThreatLocker — allowlisting efficacyCorroboration; control validation
3Threat-Modeling.comUnconfirmed CVE-2026-47281 reference

HuntPack v0.1 · RoguePlanet · Generated 2026-06-12 · Defensive use only — no exploit code. Validate field names and tune exclusions in your tenant before promoting any query to alerting. No official Microsoft patch at time of writing.