LegacyHive: Der Bug im Windows Benutzerprofil-Dienst, der die Registry Hive eines anderen Benutzers lädt – Alptraum
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
LegacyHive ist eine ungepatchte lokale Privilegieneskalationsschwachstelle im Windows User Profile Service (ProfSvc). Ein Angreifer kann eine Kombination aus Registry Poisoning, symbolischen Links des Objektmanagers und einer TOCTOU-Rennenbedingung über Oplocks nutzen, um einen SYSTEM-level Dienst zu zwingen, das Registrierungs-Hive eines Zielbenutzers zu laden. Dies ermöglicht es einem niedrig privilegierten Benutzer, unbefugten Zugriff auf sensible Registry-Daten zu erhalten oder potenziell eine vollständige SYSTEM-Kompromittierung zu erreichen.
Untersuchung
Der Forscher Nightmare-Eclipse entwickelte ein Proof-of-Concept (PoC), das die Diskrepanz zwischen Dateioperationen auf SYSTEM-Ebene und benutzerkontrollierter Pfadführung ausnutzt. Die Untersuchung zeigt, wie durch Modifikation des Local AppData Registry-Wertes der Dienst in den NT-Objektmanager-Namespace umgeleitet werden kann. Durch die Verwendung eines opportunistischen Sperrmechanismus (Oplock) auf einer Lockvogelfatei kann der Angreifer einen symbolischen Link genau in dem Moment austauschen, in dem der Dienst versucht, das Hive zu laden.
Minderung
Microsoft muss Pfadkanonisierung implementieren, um sicherzustellen, dass aufgelöste Pfade im legitimen Benutzerprofilverzeichnis verbleiben und Geräte-/Objektmanager-Präfixe ablehnen. Zusätzlich sollten Entwickler Reparaturschutz (FILE_FLAG_OPEN_REPARSE_POINT) verwenden und sicheres I/O im Sicherheitskontext des Benutzers anstelle des SYSTEM-Kontexts durchführen, um verwirrte Stellvertreter-Szenarien zu verhindern.
Antwort
Verteidiger sollten sofort auf ungewöhnliche Registry-Loads (RegLoadKey) für nicht interaktiv angemeldete Konten achten und die Erstellung von Objektdirektoren unter BaseNamedObjectsRestricted beobachten. Anwendungen wie WDAC oder AppLocker sollten verwendet werden, um die Ausführung unsignierter Binärdateien zu verhindern. Sobald Microsoft einen offiziellen Patch veröffentlicht, sollte dieser bei allen Windows-Desktop- und Server-Installationen Priorität bei der Bereitstellung haben.
Angriffsfluss
Erkennungen
Möglicher Exploit von LegacyHive (über registry_event)
Ansicht
Möglicher Exploit von LegacyHive (über file_event)
Ansicht
Möglicher Exploit von LegacyHive (über cmdline)
Ansicht
Wahrscheinliche Nutzung von Windows-Hacking-Tools [Teil3] (über file_event)
Ansicht
Wahrscheinliche Nutzung von Windows-Hacking-Tools [Teil3] (über cmdline)
Ansicht
Erkennung eines LegacyHive-Privilegieneskalationsangriffs [Windows-Registrierungsereignis]
Ansicht
LegacyHive-Exploit-Versuch über CreateProcessWithLogonW und angehalteten Notepad erkennen [Windows-Prozesserstellung]
Ansicht
Kurzübersicht
- Testfall-ID: TC-20240522-K9P2L
- TTPs: T1068, T1548
-
Zusammenfassung der Erkennungsregel-Logik: Erkennt Versuche, die LegacyHive-Schwachstelle auszunutzen, indem sie überwachen, ob
notepad.exemit demCreateProcessWithLogonWAPI-Muster in der Befehlszeile gestartet wird. - Erkennungsregel-Sprache/-Format: yaml
- Ziel-Sicherheitsumfeld: Windows OS, Windows-Ereignisprotokolle (Prozesserstellung), EDR/SIEM.
- Widerstands-Score (1-5): 2
-
Begründung: Die Regel stützt sich stark auf einen bestimmten String (
CreateProcessWithLogonW) imCommandLineFeld. Ein Angreifer kann dies leicht umgehen, indem er verschiedene API-Aufrufe verwendet, die das gleiche Ergebnis erzielen, oder indem er unterschiedliche Prozessnamen anstelle vonnotepad.exe. - Hauptfunde: Die Erkennung ist sehr spezifisch für eine einzelne Exploit-Implementierung und äußerst anfällig für geringfügige Variationen im Angriffsvektor.
-
Empfehlung: Erweitern Sie die Erkennung, um verdächtige
CreateProcessVarianten über mehrere gängige Binärdateien hinweg zu überwachen (z.B.,calc.exe,cmd.exe) und Anomalien im User Profile Service (ProfSvc) zu überwachen.
Simulationsumgebung & Kontext
-
Zu testende TTPs:
- T1068: Ausnutzung zur Privilegieneskalation
- T1548: Missbrauch von Privilegieneskalationsmechanismen
-
TTP-Kontext & Relevanz: Der LegacyHive-Exploit beruht darauf, einen SYSTEM-level Dienst zu zwingen, im Namen eines Benutzers Handlungen durchzuführen. Durch die Verwendung von
CreateProcessWithLogonWum einen Prozess im angehaltenen Zustand zu starten, kann ein Angreifer die Umgebung manipulieren, um einen bösartigen Registry-Hive zu laden. Das Überwachen der spezifischen Artefakte in der Befehlszeile dieses API-Aufrufs soll die Ausnutzungsphase erfassen. -
Zielumgebung:
- OS: Windows 10/11 oder Windows Server 2019/2022
- Protokollierung: Sysmon (Event ID 1) oder Windows Security Event Log (Event ID 4688) mit aktivierter Befehlszeilenprotokollierung.
- Sicherheitsstack: SIEM (z.B., Splunk, Microsoft Sentinel)
Telemetrie- und Basislinienvorabprüfung
Begründung: Bevor der Angriff simuliert wird, müssen wir bestätigen, dass der Zielhost so konfiguriert ist, dass die erforderlichen Protokolle erzeugt werden, dass diese Protokolle vom SIEM aufgenommen werden und dass die Erkennungsregel nicht bei harmloser Aktivität ausgelöst wird. Ohne diese Validierung sind alle Testergebnisse unzuverlässig.
-
1. Anweisungen zur Telemetrie-Konfiguration:
-
- Stellen Sie sicher, dass „Audit Process Creation“ über Gruppenrichtlinien aktiviert ist (Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Detailed Tracking).
-
- Stellen Sie sicher, dass „Include command line in process creation events“ aktiviert ist (über Registry:
HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesSystemAuditProcessCreationIncludeCmdLine).
- Stellen Sie sicher, dass „Include command line in process creation events“ aktiviert ist (über Registry:
-
- Installieren Sie Sysmon und stellen Sie sicher, dass Event ID 1 (Prozesserstellung) erfasst wird.
-
-
2. Aufnahme & Basislinienvalidierung:
-
Maßnahme (Gutwillige Telemetrie): Starten Sie eine Standardinstanz von Notepad, um sicherzustellen, dass die Protokollierung der Prozess-Erstellung funktioniert, ohne die Exploit-Erkennung auszulösen.
Start-Process "notepad.exe" -
Validierungsabfrage (Eingabe):
DeviceProcessEvents | where FileName =~ "notepad.exe" | where ProcessCommandLine !contains "CreateProcessWithLogonW"
-
Simulationsausführung
Voraussetzung: Die Telemetrie- und Basislinienvorabprüfung muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die entworfen wurde, um die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt mit den identifizierten TTPs übereinstimmen und darauf abzielen, genau die Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.
-
Angriffserzählung & Befehle: Der Angreifer zielt darauf, die LegacyHive-Schwachstelle auszunutzen, um SYSTEM-Privilegien zu erlangen. Um dies zu tun, nutzt er ein Skript, das die
CreateProcessWithLogonWWindows-API aufruft. Das Ziel ist esnotepad.exein einem angehaltenen Zustand zu starten. Die Simulation verwendet einen PowerShell-Wrapper, um das Befehlszeilenargumentmuster zu imitieren, nach dem die Erkennungsregel sucht, und zielt dabei speziell auf die ZeichenketteCreateProcessWithLogonWinnerhalb des Ausführungskontextesnotepad.exe. -
Regressionstest-Skript:
# Simulation des LegacyHive-Exploit-Versuchs über Befehlszeilen-Artefakteinspritzung # Hinweis: Dieses Skript simuliert das Befehlszeilen-Stringmuster für den Erkennungstest. $targetProcess = "notepad.exe" $fakeArgument = "CreateProcessWithLogonW" Write-Host "[+] Simulation des LegacyHive-Exploit-Versuchs wird gestartet..." # Wir verwenden cmd /c, um sicherzustellen, dass die Befehlszeilen-Zeichenkette explizit übergeben # und in der Prozess-Erstellungs-Telemetrie angezeigt wird. Start-Process "cmd.exe" -ArgumentList "/c $targetProcess $fakeArgument" Write-Host "[+] Simulationsbefehl gesendet. Überprüfen Sie das SIEM auf notepad.exe mit CreateProcessWithLogonW in der Befehlszeile." -
Bereinigungsbefehle:
# Beenden Sie alle verbleibenden Notepad- oder cmd-Prozesse, die durch die Simulation erstellt wurden Stop-Process -Name "notepad" -ErrorAction SilentlyContinue Stop-Process -Name "cmd" -ErrorAction SilentlyContinue