
SharpDPAPI ist ein C#-Port von einigen Mimikatz DPAPI-Funktionen.
SharpDPAPI ist ein C#-Port einiger DPAPI-Funktionen aus dem Mimikatz-Projekt von @gentilkiwi.
Ich habe diese Logik nicht entwickelt, es handelt sich lediglich um einen Port von Mimikatz, um den Prozess besser zu verstehen und ihn für unseren Workflow zu operationalisieren.
Das Unterprojekt SharpChrome ist eine Adaption der Arbeiten von @gentilkiwi und @djhohnstein, insbesondere seines SharpChrome-Projekts. Diese Version von SharpChrome verwendet jedoch eine andere Version der C# SQL-Bibliothek, die das sperrfreie Öffnen unterstützt. SharpChrome wird aufgrund der Größe der verwendeten SQLite-Bibliothek als separates Projekt innerhalb von SharpDPAPI erstellt.
Sowohl Chrome als auch neuere Chromium-basierte Edge-Browser können mit SharpChrome durchsucht werden.
SharpChrome verwendet außerdem eine minimierte Version von @AArnott's BCrypt P/Invoke-Code, der unter der MIT-Lizenz veröffentlicht wurde.
Wenn Sie mit DPAPI nicht vertraut sind, lesen Sie diesen Beitrag für weitere Hintergrundinformationen. Für weitere Informationen zu Anmeldeinformationen und Tresoren in Bezug auf DPAPI lesen Sie Benjamins Wiki-Eintrag zu diesem Thema.
@harmj0y ist der Hauptautor dieses Ports.
SharpDPAPI ist unter der BSD-3-Clause-Lizenz lizenziert.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
Abrufen des DPAPI-Backup-Schlüssels eines Domänencontrollers, optional mit Angabe eines DC und einer Ausgabedatei:
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domain] [/file:key.pvk]
Der *search*-Befehl durchsucht nach potenziellen DPAPI-Blobs in der Registry, in Dateien, Ordnern und Base64-Blobs:
search /type:registry [/path:HKLM\path\to\key] [/showErrors]
search /type:folder /path:C:\path\to\folder [/maxBytes:<numOfBytes>] [/showErrors]
search /type:file /path:C:\path\to\file [/maxBytes:<numOfBytes>]
search /type:base64 [/base:<base64 string>]
Maschinen-/SYSTEM-Triage:
machinemasterkeys - Durchsucht alle erreichbaren Maschinen-Masterkey-Dateien (erhöht Rechte auf SYSTEM, um das DPAPI_SYSTEM LSA-Geheimnis abzurufen)
machinecredentials - Verwendet 'machinemasterkeys' und durchsucht dann Maschinen-Anmeldeinformationsdateien
machinevaults - Verwendet 'machinemasterkeys' und durchsucht dann Maschinen-Tresore
machinetriage - Führt die Befehle 'machinecredentials' und 'machinevaults' aus
Benutzer-Triage:
Argumente für den Befehl 'masterkeys':
/target:FILE/folder - Durchsucht einen bestimmten Masterkey oder einen Ordner voller Masterkeys (andernfalls werden lokale Masterkeys durchsucht)
/pvk:BASE64... - Verwendet eine base64-kodierte DPAPI-Domänen-Private-Key-Datei, um zuerst erreichbare Benutzer-Masterkeys zu entschlüsseln
/pvk:key.pvk - Verwendet eine DPAPI-Domänen-Private-Key-Datei, um zuerst erreichbare Benutzer-Masterkeys zu entschlüsseln
/password:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem Klartext-Passwort (funktioniert remote)
/ntlm:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem NTLM-Hash (funktioniert remote)
/credkey:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem DPAPI-Credkey (Domänen- oder lokaler SHA1, funktioniert remote)
/rpc - Entschlüsselt die Masterkeys des Zielbenutzers, indem der Domänencontroller darum gebeten wird
/server:SERVER - Durchsucht einen entfernten Server, unter der Annahme von Administratorzugriff
/hashes - Gibt die 'Hashes' der Benutzer-Masterkey-Datei im JTR/Hashcat-Format aus (keine Entschlüsselung)
Argumente für die Befehle credentials|vaults|rdg|keepass|triage|blob|ps:
Entschlüsselung:
/unprotect - Erzwingt die Verwendung von CryptUnprotectData() für die Befehle 'ps', 'rdg' oder 'blob'
/pvk:BASE64... - Verwendet eine base64-kodierte DPAPI-Domänen-Private-Key-Datei, um zuerst erreichbare Benutzer-Masterkeys zu entschlüsseln
/pvk:key.pvk - Verwendet eine DPAPI-Domänen-Private-Key-Datei, um zuerst erreichbare Benutzer-Masterkeys zu entschlüsseln
/password:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem Klartext-Passwort (funktioniert remote)
/ntlm:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem NTLM-Hash (funktioniert remote)
/credkey:X - Entschlüsselt die Masterkeys des Zielbenutzers mit einem DPAPI-Credkey (Domänen- oder lokaler SHA1, funktioniert remote)
/rpc - Entschlüsselt die Masterkeys des Zielbenutzers, indem der Domänencontroller darum gebeten wird
GUID1:SHA1 ... - Verwendet einen oder mehrere GUID:SHA1-Masterkeys zur Entschlüsselung
/mkfile:FILE - Verwendet eine Datei mit einem oder mehreren GUID:SHA1-Masterkeys zur Entschlüsselung
Zielsetzung: