Remote File Inclusion
Remote File Inclusion (RFI) : mécanismes, exploitation et défense
8 juin 2026
Installer Kali Linux pour du pentest
Installer Kali Linux pour le pentest : guide complet 2026 (VM, WSL, Live USB)
10 juin 2026

DPAPI et Domain Admin : comment les pentesters pillent les secrets chiffrés de Windows

Active Directory - Credential Dumping - Post-exploitation - MITRE ATT&CK T1555

La Data Protection API (DPAPI) est le mécanisme Windows qui chiffre les mots de passe des navigateurs, les credentials du Credential Manager, les certificats et les secrets des applications. En obtenant les droits Domain Admin sur un Active Directory, un attaquant peut extraire la clé de sauvegarde de domaine et déchiffrer tous les secrets DPAPI de tous les utilisateurs du domaine. Ce guide explique l'architecture, les techniques d'exploitation utilisées en pentest et comment s'en défendre.

Qu'est-ce que la DPAPI (Data Protection API) ?

 

La Data Protection API (DPAPI) est une interface de programmation intégrée à Windows depuis Windows 2000 qui permet aux applications de chiffrer et déchiffrer des données sensibles sans avoir à gérer elles-mêmes la complexité cryptographique. Elle repose sur deux fonctions principales exposées dans crypt32.dll :

  • CryptProtectData() : chiffre un bloc de données en utilisant les credentials de l'utilisateur ou de la machine comme source d'entropie.
  • CryptUnprotectData() : déchiffre un blob DPAPI en retrouvant la clé appropriée depuis les credentials disponibles dans le contexte d'exécution.

L'opération de chiffrement est réalisée par LSASS (Local Security Authority Subsystem Service) via un appel RPC. Ce design simplifie le développement : l'application stocke un blob chiffré sur disque sans gérer de clé. La sécurité repose entièrement sur la protection des credentials Windows de l'utilisateur ou de la machine.

Concrètement, la DPAPI protège aujourd'hui une surface extraordinairement large de secrets Windows :

  • Navigateurs Chromium (Chrome, Edge, Brave, Opera) : mots de passe, cookies, tokens d'authentification, données de formulaires.
  • Windows Credential Manager : credentials de connexion aux partages réseau, aux sessions RDP, aux comptes Microsoft, aux tokens OAuth.
  • Certificats et clés privées : clés privées des certificats utilisateur stockées dans le magasin de certificats Windows.
  • Applications Microsoft Office : tokens d'accès aux services Microsoft 365.
  • Wi-Fi profiles : clés WPA/WPA2 des réseaux sans fil mémorisés.
  • Tâches planifiées : credentials des comptes de service configurés dans le Planificateur de tâches.
  • Applications tierces : tout logiciel utilisant l'API Windows standard de protection des données.

Pour un pentester, la DPAPI représente un coffre-fort centralisé de secrets : compromettre le mécanisme de déchiffrement, c'est potentiellement accéder à l'ensemble des secrets de chaque utilisateur d'un domaine Active Directory.

Architecture de la DPAPI : Master Keys, blobs et clé de sauvegarde de domaine

 

Comprendre l'architecture de la DPAPI est indispensable pour saisir pourquoi elle est si attractive pour un attaquant ayant obtenu des droits élevés. La protection repose sur une hiérarchie de clés à trois niveaux.

 

Niveau 1 : Le DPAPI blob

Un DPAPI blob est le résultat de l'appel à CryptProtectData(). C'est un fichier binaire structuré qui contient les données chiffrées, un GUID référençant la Master Key utilisée pour le chiffrement, l'algorithme de chiffrement (typiquement AES-256 en mode CBC), et un HMAC permettant de vérifier l'intégrité du blob. Le blob est stocké sur disque par l'application : dans le profil utilisateur pour les credentials navigateurs, dans %APPDATA%MicrosoftCredentials pour le Credential Manager, etc.

 

Niveau 2 : La Master Key (MK)

Chaque utilisateur Windows possède une ou plusieurs Master Keys, stockées dans %APPDATA%MicrosoftProtect{SID}. Chaque fichier de Master Key est lui-même chiffré. La clé de déchiffrement de la Master Key est dérivée du mot de passe de l'utilisateur (via PBKDF2), de son SID et d'un sel aléatoire. Sans le mot de passe de l'utilisateur ou un mécanisme de récupération, il est impossible de déchiffrer la Master Key et donc les blobs.

 

Niveau 3 : La clé de sauvegarde de domaine (Domain Backup Key)

C'est ici que la DPAPI en environnement Active Directory prend toute sa dimension offensive. Dans un domaine Windows, chaque Master Key est également chiffrée avec la clé de sauvegarde de domaine (DPAPI Domain Backup Key), stockée sur le contrôleur de domaine. Ce mécanisme permet à un administrateur de récupérer les secrets d'un utilisateur dont le mot de passe a été perdu.

La clé de sauvegarde de domaine est une paire de clés RSA-2048. La clé publique est distribuée à toutes les machines du domaine pour chiffrer une copie de chaque Master Key. La clé privée est stockée de façon sécurisée sur le DC dans l'objet LSA Secrets.

Conséquence pour la sécurité : quiconque extrait cette clé privée peut déchiffrer toutes les Master Keys de tous les utilisateurs du domaine, et donc tous les blobs DPAPI de tout le monde. C'est la raison pour laquelle la DPAPI Domain Backup Key est qualifiée de crown jewel de l'Active Directory dans la communauté offensive.

Architecture de la DPAPI en domaine Active DirectoryApplication (Chrome, CM...)CryptProtectData()DPAPI BlobAES-256 + HMAC + GUID MKStockage disqueAppData / CredentialsMaster Key (MK)Chiffrée par MDP utilisateur%AppData%MicrosoftProtectMK backup copyChiffrée par Domain Backup KeyEnvoyée au DC via RPCDomain Backup KeyRSA-2048 prive sur le DCDechiffre TOUTES les MK du domaine
Hiérarchie DPAPI : le blob est chiffré par la Master Key, qui est chiffrée par le mot de passe utilisateur ET par la Domain Backup Key stockée sur le DC


La DPAPI_SYSTEM : secrets de la machine

En parallèle des Master Keys utilisateur, Windows maintient une DPAPI_SYSTEM pour les secrets de niveau machine : credentials des tâches planifiées, des services Windows, des profils Wi-Fi, des connexions VPN. La clé de déchiffrement de ces secrets est stockée dans les LSA Secrets, accessible à un processus tournant avec les droits SYSTEM. En pentest d'infrastructure, l'obtention des droits SYSTEM sur un serveur permet d'extraire ces secrets machine directement depuis la mémoire ou les ruches de registre.

Votre Active Directory résiste-t-il à une extraction de Domain Backup Key ?

Nos missions de pentest infrastructure et Active Directory testent systématiquement les chemins d'escalade vers Domain Admin et l'extraction des secrets DPAPI. Découvrez notre approche.

Structures internes de la DPAPI : ce que le reverse engineering révèle

 

Comprendre les structures binaires de la DPAPI permet d'appréhender précisément pourquoi certaines attaques fonctionnent, et où se situent les vraies faiblesses cryptographiques. Cette section s'appuie sur les travaux de recherche présentés par Jean-Christophe Delaunay (Synacktiv) à la JSSI 2017, qui constituent la référence francophone sur le sujet.

 

Structure d'un DPAPI blob

Chaque appel à CryptProtectData() produit un blob binaire avec la structure suivante :

Champ Type Description
dwVersion DWORD Version de la structure DPAPI
guidMasterKey GUID Identifiant de la Master Key utilisée pour le chiffrement. Permet de retrouver le bon fichier MK dans %AppData%MicrosoftProtect{SID}
algCrypt ALG_ID Algorithme de chiffrement utilisé (AES-256 sur les versions modernes)
pSalt BYTE[] Sel aléatoire pour la dérivation de clé, protège contre les Rainbow Tables
pHmac BYTE[] HMAC de vérification d'intégrité du blob
algHash ALG_ID Algorithme de hachage (SHA-512 sur Win7+)
pData BYTE[] Données chiffrées
pSign BYTE[] Signature de validation finale

 

Le champ guidMasterKey est particulièrement important pour un attaquant : il indique directement quel fichier Master Key doit être déchiffré pour accéder aux données. Cette information est en clair dans le blob, ce qui permet de cibler précisément la clé à attaquer.

 

Structure d'en-tête d'un fichier Master Key

 

Le fichier Master Key lui-même a une structure binaire documentée par Synacktiv. L'en-tête contient notamment :

  • dwVersion : version de la structure
  • szGuid : GUID de cette Master Key (correspond au nom du fichier sur disque)
  • dwUserKeySize : taille du bloc chiffré par le mot de passe utilisateur
  • dwLocalEncKeySize : taille du bloc chiffré par la clé locale machine
  • dwLocalKeySize : taille du bloc de clé locale
  • dwDomainKeySize : taille du bloc chiffré par la Domain Backup Key (présent uniquement dans les environnements Active Directory)

La présence de dwDomainKeySize non nul dans un fichier Master Key confirme que la machine est jointe à un domaine et qu'une copie de la MK chiffrée par la Domain Backup Key est disponible. Pour un pentester, cela signifie que la MK peut être déchiffrée depuis le DC sans connaître le mot de passe de l'utilisateur.

 

Évolution des algorithmes cryptographiques par version Windows

 

L'une des données les plus pertinentes pour évaluer la résistance au craquage offline est l'évolution des algorithmes et du nombre d'itérations PBKDF2 selon la version de Windows :

Version Windows Algorithme de chiffrement Algorithme de hachage Itérations PBKDF2 Résistance au craquage offline
Windows 2000 RC4 SHA-1 1 Nulle (attaque GPU triviale)
Windows XP 3DES SHA-1 4 000 Faible
Windows Vista 3DES SHA-1 24 000 Moyenne
Windows 7 et ultérieur AES-256 SHA-512 5 600 Bonne (mot de passe fort requis)
Note pentest : Sur les systèmes Windows XP encore en production (environnements industriels SCADA, bornes de paiement legacy, certains systèmes embarqués), le faible nombre d'itérations PBKDF2 rend le craquage offline des Master Keys extrêmement rapide avec Hashcat sur GPU, même pour des mots de passe de longueur raisonnable. Les systèmes legacy OT sont particulièrement concernés par ce risque dans nos missions de pentest industriel.

CREDHIST : le fichier qui conserve l'historique des mots de passe

 

Le fichier CREDHIST (Credential History) est l'un des composants les moins connus de la DPAPI, pourtant capital en forensique et en pentest offline. Il est stocké dans %AppData%MicrosoftProtectCREDHIST et joue un rôle clé dans la continuité du déchiffrement DPAPI lors des changements de mot de passe.

 

Fonctionnement du CREDHIST

 

Quand un utilisateur change de mot de passe, ses Master Keys existantes ont été chiffrées avec l'ancien mot de passe. Sans mécanisme de transition, ces Master Keys deviendraient illisibles après le changement. C'est le rôle du CREDHIST : il stocke une chaîne de condensats de tous les mots de passe successifs de l'utilisateur, permettant à Windows de remonter dans l'historique pour déchiffrer des Master Keys créées avec un ancien mot de passe.

La structure du CREDHIST est une chaîne de blocs enchaînés :

  • Chaque entrée contient un condensat du mot de passe au format NT et SHA1.
  • Chaque condensat est chiffré par le condensat du mot de passe précédent dans la chaîne.
  • Le condensat le plus récent (n) est chiffré par le mot de passe actuel.
  • Le condensat n-1 est chiffré par le condensat n, et ainsi de suite jusqu'au mot de passe initial (1).
Structure de la chaine CREDHISTHash MDP actuelChiffre condensat n-1Mot de passe (n)Condensat n-1Chiffre condensat n-2Ancien MDPCondensat n-2Chiffre condensat 1Ancien MDPCondensat 1Premier MDPOriginal
La chaîne CREDHIST : chaque condensat est chiffré par le précédent, permettant une remontée jusqu'au premier mot de passe

Implications offensives du CREDHIST

 

Pour un pentester ou un analyste forensique, le fichier CREDHIST présente plusieurs intérêts concrets :

  • Craquage des anciens mots de passe : le CREDHIST stocke les condensats NT et SHA1 de tous les anciens mots de passe de l'utilisateur. Ces condensats peuvent être extraits et soumis à Hashcat pour retrouver les mots de passe en clair. Des anciens mots de passe souvent plus faibles (politiques de complexité moins strictes dans le passé) peuvent ainsi être retrouvés même si le mot de passe actuel est robuste.
  • Déchiffrement offline de Master Keys historiques : dans un contexte forensique ou de pentest offline (extraction d'image disque), si le mot de passe actuel n'est pas connu mais qu'un ancien mot de passe est identifié (via le CREDHIST ou d'autres sources), il est possible de déchiffrer les Master Keys créées sous cet ancien mot de passe, et donc les blobs DPAPI correspondants.
  • Corrélation multi-comptes : si un utilisateur réutilise le même mot de passe sur plusieurs comptes ou services, le CREDHIST révèle l'historique de ces réutilisations. La découverte d'un ancien mot de passe via le CREDHIST peut permettre d'accéder à des comptes externes où ce même mot de passe était encore utilisé.

Le fichier CREDHIST est localisé dans %AppData%MicrosoftProtectCREDHIST et peut être extrait lors d'un accès au profil utilisateur, même offline. En pratique, sa lecture nécessite un outil spécialisé (dpapick, impacket-dpapi ou des outils internes Synacktiv) car sa structure binaire n'est pas documentée officiellement.

 

Stockage complet des assets DPAPI sur disque

 

Pour un inventaire complet de ce qu'un attaquant doit collecter lors d'un accès au profil utilisateur, les assets DPAPI sont répartis dans le profil de la façon suivante :

  • %AppData%MicrosoftProtectCREDHIST : historique des condensats de mots de passe
  • %AppData%MicrosoftProtect{SID}{GUID} : fichiers Master Keys de l'utilisateur
  • %AppData%MicrosoftCredentials{GUID} : blobs DPAPI du Credential Manager
  • %AppData%MicrosoftVault{GUID} : blobs DPAPI du Windows Vault
  • %LocalAppData%GoogleChromeUser DataDefaultLocal State : clé AES Chrome chiffrée par DPAPI
  • %LocalAppData%GoogleChromeUser DataDefaultLogin Data : base SQLite des mots de passe Chrome (chiffrés avec la clé AES)
  • %LocalAppData%MicrosoftEdgeUser DataDefault : équivalent pour Microsoft Edge

DPAPI online vs offline : deux contextes d'exploitation distincts

 

La distinction entre exploitation online et offline est fondamentale pour comprendre les possibilités et les contraintes d'une attaque DPAPI selon le scénario de mission. C'est l'une des grilles d'analyse centrales présentées dans les travaux de Synacktiv.

 

Exploitation online (exécution de code sur la machine)

 

Quand le pentester dispose d'une exécution de code sur la machine cible (shell obtenu, accès interactif, implant), l'exploitation DPAPI est dans son mode le plus simple. Windows gère transparentement le déchiffrement des Master Keys via LSASS : les clés sont déjà disponibles en mémoire pour l'utilisateur connecté. L'attaquant peut :

  • Invoquer CryptUnprotectData() directement dans le contexte de l'utilisateur, ce que font les outils comme SharpDPAPI en mode triage.
  • Extraire les Master Keys depuis la mémoire LSASS via sekurlsa::dpapi (Mimikatz) si les droits Local Admin sont obtenus.
  • Utiliser les API Windows légitimes pour déchiffrer les blobs sans toucher à LSASS, ce qui réduit la détection EDR.

Dans ce mode, la robustesse cryptographique de la DPAPI importe peu : les clés sont disponibles en clair en mémoire. La seule contrainte est d'avoir les droits suffisants.

 

Exploitation offline (image disque, forensique, pas d'exécution)

 

Le mode offline est plus contraint mais correspond à plusieurs scénarios réels en pentest et forensique :

  • Analyse forensique d'une image disque acquise après incident.
  • Accès à un partage réseau contenant des profils utilisateurs (\serveurprofiles) sans session active sur les postes.
  • Exfiltration du profil utilisateur depuis un système sans pouvoir y exécuter de code (serveur de fichiers, partage de backup).
  • Analyse post-mortem d'un poste déconnecté du domaine.

En mode offline, il faut reconstituer la chaîne de déchiffrement manuellement :

  1. Identifier les blobs DPAPI à déchiffrer dans le profil utilisateur.
  2. Extraire les fichiers Master Keys depuis %AppData%MicrosoftProtect{SID}.
  3. Obtenir la clé de déchiffrement via l'une de ces sources :
    • Le mot de passe utilisateur en clair (si disponible via d'autres vecteurs).
    • Le hash NT de l'utilisateur + son SID pour dériver la clé PBKDF2.
    • La Domain Backup Key extraite du DC (si le domaine est accessible ou si elle a été collectée précédemment).
    • Les hashes du CREDHIST si le mot de passe actuel n'est pas disponible mais qu'un ancien l'est.
  4. Déchiffrer les Master Keys avec l'outil adapté.
  5. Déchiffrer les blobs DPAPI avec les Master Keys obtenues.
Cas pratique : forensique DPAPI depuis Linux

La suite impacket (Python) permet de réaliser l'ensemble de cette chaîne depuis un poste Linux : dpapi.py backupkeys -t domaine/admin:mdp@DC01 pour extraire la backup key, dpapi.py masterkey -file masterkey -pvk backup.pvk pour déchiffrer la MK, dpapi.py credential -file credential_blob -key {masterkey_hex} pour déchiffrer le blob final. Cette approche est couramment utilisée lors de nos missions de pentest Active Directory depuis une machine d'attaque Linux sans nécessiter d'exécution de code sur les postes Windows.

 

La contrainte fondamentale du mode offline sans domaine

 

Synacktiv identifie dans ses travaux la contrainte la plus difficile à contourner : en mode offline hors domaine, sans mot de passe utilisateur ni Domain Backup Key, il est théoriquement impossible de déchiffrer les Master Keys modernes (Windows 7+, AES-256/SHA-512/5600 itérations PBKDF2). Le seul vecteur restant est le craquage du condensat NT ou SHA1 avec Hashcat, dont la viabilité dépend entièrement de la robustesse du mot de passe utilisateur. C'est pourquoi la politique de mots de passe utilisateur reste un contrôle de sécurité fondamental même dans les environnements avec DPAPI moderne.

Exploitation de la DPAPI en pentest : techniques et outils

 

L'exploitation de la DPAPI en pentest suit une progression logique liée au niveau de droits obtenu. Nos pentesters distinguent trois scénarios selon la position de l'attaquant dans le système.

 

Scénario 1 : Droits utilisateur standard sur le poste (contexte utilisateur actif)

Quand le pentester a un accès interactif au poste en tant qu'utilisateur courant (session active, shell obtenu via phishing ou exploitation applicative), Windows déchiffre les Master Keys transparentement via LSASS. Il est alors possible de déchiffrer directement tous les blobs DPAPI de cet utilisateur sans connaître son mot de passe, car les clés sont disponibles en mémoire.

Extraction des secrets navigateurs Chromium avec Mimikatz :

mimikatz # dpapi::chrome /in:"%localappdata%GoogleChromeUser DataDefaultLogin Data" /unprotect

Mimikatz invoque CryptUnprotectData() dans le contexte de l'utilisateur courant. Le résultat : tous les mots de passe sauvegardés dans Chrome en clair.

Extraction du Credential Manager :

mimikatz # vault::cred /patch

Ou via cmdkey et une approche plus discrète :

mimikatz # dpapi::cred /in:"%appdata%MicrosoftCredentials{GUID}" /unprotect

Avec SharpDPAPI (outil .NET plus discret que Mimikatz pour l'EDR evasion) :

SharpDPAPI.exe triage

SharpDPAPI énumère et déchiffre automatiquement l'ensemble des blobs DPAPI accessibles dans le contexte utilisateur courant : navigateurs, Credential Manager, certificats, secrets Wi-Fi.

 

Scénario 2 : Admin local sur le poste (droits élevés sur la machine)

Avec des droits Local Admin, le pentester peut accéder à la mémoire de LSASS pour extraire les Master Keys déjà déchiffrées en mémoire, ou utiliser le secret DPAPI_SYSTEM pour déchiffrer les secrets machine.

Extraction des Master Keys depuis la mémoire LSASS avec Mimikatz :

mimikatz # sekurlsa::dpapi

Cette commande extrait toutes les Master Keys actuellement chargées en mémoire pour tous les utilisateurs connectés. Si plusieurs utilisateurs ont des sessions actives (serveurs RDS, environnements de travail partagés), leurs Master Keys sont toutes extractibles d'un coup.

Extraction des secrets SYSTEM (tâches planifiées, services) :

mimikatz # lsadump::secrets

Retourne notamment la clé DPAPI_SYSTEM permettant de déchiffrer les blobs machine : credentials de tâches planifiées, mots de passe de services Windows, profils Wi-Fi stockés au niveau système.

Approche offline (sans EDR sur le poste) : copie des ruches de registre SYSTEM et SECURITY + des fichiers Master Keys du profil utilisateur, déchiffrement hors ligne avec impacket ou Mimikatz offline.

 

Scénario 3 : Domain Admin (le scénario le plus impactant)

Avec des droits Domain Admin, le pentester peut extraire la DPAPI Domain Backup Key depuis le contrôleur de domaine. Cette clé privée RSA-2048 permet de déchiffrer toutes les Master Keys de tous les utilisateurs du domaine, et donc tous leurs secrets DPAPI, même hors ligne.

Étape 1 : Extraction de la Domain Backup Key avec Mimikatz :

mimikatz # lsadump::backupkeys /system:dc01.domaine.local /export

Cette commande se connecte au DC via RPC, extrait la clé de sauvegarde DPAPI et l'exporte au format .pvk (Private Key file). L'opération est protégée par des ACL nécessitant les droits Domain Admin ou Backup Operators.

Étape 2 : Déchiffrement d'une Master Key utilisateur avec la backup key :

mimikatz # dpapi::masterkey /in:"C:UserscibleAppDataRoamingMicrosoftProtect{SID}{GUID}" /pvk:ntds_capi_0_backup.pvk

La Master Key déchiffrée est retournée en hexadécimal.

Étape 3 : Déchiffrement des blobs DPAPI de l'utilisateur :

mimikatz # dpapi::chrome /in:"C:UserscibleAppDataLocalGoogleChromeUser DataDefaultLogin Data" /masterkey:{clé hexadécimale}

Tous les mots de passe Chrome de l'utilisateur cible sont déchiffrés, y compris pour un utilisateur qui n'est pas connecté et dont la session n'est pas active.

Automatisation avec SharpDPAPI et DonPAPI :

SharpDPAPI automatise ce flux complet depuis un accès Domain Admin :

SharpDPAPI.exe backupkey [/server:DC01.domaine.local]
SharpDPAPI.exe machinemasterkeys /pvk:backup.pvk
SharpDPAPI.exe credentials /pvk:backup.pvk

DonPAPI (Python, depuis Linux) permet de faire de même à distance :

DonPAPI.py domaine/adminuser:Password@10.0.0.1

DonPAPI se connecte à chaque machine du domaine via SMB, collecte les blobs DPAPI et les déchiffre automatiquement en utilisant la Domain Backup Key. Le résultat est un inventaire complet des secrets DPAPI de tout le domaine en un seul passage.

DPAPI, Domain Admin et Active Directory : le chemin complet d'une compromission

 

La DPAPI n'est pas une vulnérabilité isolée. Elle s'inscrit dans le contexte plus large de la compromission Active Directory, où chaque escalade de privilège ouvre de nouvelles portes. Voici comment nos pentesters construisent le chemin complet.

 

Identifier le chemin vers Domain Admin avec BloodHound

 

Avant toute extraction DPAPI, il faut atteindre les droits Domain Admin ou un niveau de privilège équivalent. BloodHound est l'outil de référence pour cartographier les chemins d'escalade dans un Active Directory. Il collecte les relations entre objets AD (utilisateurs, groupes, GPO, ACL) et identifie les chemins les plus courts vers Domain Admin.

Lors d'un pentest Active Directory, nos pentesters enchaînent :

  1. Collecte BloodHound via SharpHound depuis un compte utilisateur standard.
  2. Analyse des chemins d'escalade : Kerberoasting, AS-REP Roasting, délégations Kerberos non contraintes, ACL abusables, GPO mal configurées.
  3. Exploitation du chemin le plus court vers Domain Admin ou équivalent (DCSync, WriteDACL sur le domaine, GenericAll sur le DC).
  4. Une fois Domain Admin obtenu : extraction de la DPAPI Domain Backup Key, DCSync pour les hashes NTDS, Golden Ticket si Kerberos est en jeu.

 

DCSync et DPAPI : deux faces de la même compromission

 

Avec les droits Domain Admin (ou les droits DCSync explicitement délégués), un pentester peut également exécuter une attaque DCSync pour extraire tous les hashes NTLM du domaine depuis NTDS.dit :

mimikatz # lsadump::dcsync /domain:domaine.local /all /csv

Ces hashes permettent le Pass-the-Hash vers n'importe quelle machine. Combinés avec l'extraction DPAPI, la compromission couvre à la fois les credentials stockés dans l'AD (hashes NTLM, Kerberos) et les credentials stockés sur les postes de travail (navigateurs, Credential Manager, certificats). La couverture est totale.

 

Cas particulier : DPAPI sans Domain Admin via les profils itinérants

 

Un attaquant ayant accès en lecture aux partages de profils itinérants (roaming profiles) d'un domaine peut collecter les fichiers Master Keys et les blobs DPAPI des utilisateurs. Combiné avec la Domain Backup Key obtenue ultérieurement, ou avec le craquage du mot de passe utilisateur via Hashcat, cette collecte offline peut être exploitée même sans session active de l'utilisateur cible.

 

DPAPI et persistance post-compromission

 

La Domain Backup Key a une propriété particulièrement redoutable pour la persistance : elle ne change jamais automatiquement, même après un changement de mot de passe Domain Admin, même après une réinitialisation de KRBTGT. Une fois extraite, elle reste valide tant que le domaine existe, à moins d'une procédure spécifique de remplacement de clé (une opération complexe qui implique de recréer toutes les Master Keys du domaine).

C'est pourquoi dans les scénarios de Red Team et de réponse à incident, la compromission de la Domain Backup Key est un indicateur de compromission persistante qui nécessite une réponse bien au-delà du simple reset de mots de passe.

DPAPI en mission PIIRATES : ce que nous trouvons chez nos clients

 

Cas 1 : Extraction de credentials cloud depuis un poste de développeur

Lors d'un pentest interne pour un éditeur SaaS, PIIRATES obtient un accès sur le poste d'un développeur via un email de phishing simulé. L'exécution de SharpDPAPI dans le contexte de la session active révèle les éléments suivants :

  • Mots de passe Chrome : 47 credentials dont les accès AWS Management Console, GitHub, GitLab, Jira, Confluence, et la console d'administration de la plateforme SaaS.
  • Credential Manager : token d'accès au serveur de build Jenkins, credentials du compte de service déploiement, accès SMB à 3 serveurs de fichiers internes.
  • Certificat de signature de code : clé privée du certificat utilisé pour signer les releases de l'application.

Impact démontré : compromission de la chaîne de build, possibilité d'injecter du code malveillant dans les releases signées de l'application, accès à l'ensemble de l'infrastructure cloud AWS. Tout cela depuis un seul accès utilisateur standard sur un poste de développeur.

Cas 2 : Domain Backup Key extraite depuis un Active Directory d'une ETI industrielle

Dans le cadre d'un pentest boite blanche sur un groupe industriel de 800 utilisateurs, PIIRATES cartographie le domaine avec BloodHound et identifie un chemin vers Domain Admin via un Kerberoasting sur un compte de service avec une délégation non contrainte. Durée pour atteindre Domain Admin depuis un compte utilisateur standard : 4h30.

Une fois Domain Admin obtenu :

  1. Extraction de la DPAPI Domain Backup Key via lsadump::backupkeys.
  2. DCSync sur NTDS.dit : extraction des hashes NTLM de 847 comptes utilisateurs et 23 comptes de service.
  3. Utilisation de DonPAPI pour déchiffrer les blobs DPAPI de 12 postes critiques identifiés (postes des DSI, RSSI, directeurs financier et général).

Résultats de l'extraction DPAPI avec la backup key : credentials des applications bancaires et de trésorerie, tokens Microsoft 365 des comptes dirigeants, accès au système de supervision industrielle SCADA via des credentials Chrome, mots de passe de la connexion VPN de maintenance prestataires. L'impact business est documenté et présenté au COMEX dans le rapport de pentest.

Cas 3 : Secrets DPAPI_SYSTEM sur un serveur de fichiers

Sur un pentest infrastructure interne, PIIRATES identifie un serveur de fichiers Windows Server 2019 avec des droits Local Admin obtenus via un Pass-the-Hash sur un compte de service partagé. L'extraction des LSA Secrets via lsadump::secrets retourne la DPAPI_SYSTEM key et révèle les credentials des tâches planifiées du serveur : un compte de service avec des droits de lecture/écriture sur 4 partages réseau sensibles, dont le partage de sauvegarde contenant les fichiers de configuration des serveurs applicatifs avec leurs credentials de bases de données en clair.

Ces trois cas illustrent un pattern constant : la DPAPI est rarement la vulnérabilité initiale. Elle est la récompense post-exploitation qui transforme une compromission technique en impact business concret et démontrable.

Détection et défense contre l'exploitation de la DPAPI

 

La DPAPI est un mécanisme légitime : sa protection repose sur la sécurité du domaine et des postes, pas sur la confidentialité du mécanisme lui-même. La défense contre son exploitation passe par plusieurs axes.

 

Durcissement de l'Active Directory

L'extraction de la Domain Backup Key nécessite des droits élevés. Réduire l'exposition de la DPAPI passe d'abord par durcir l'AD pour limiter les chemins vers Domain Admin :

  • Kerberoasting : utiliser des mots de passe longs (25+ caractères) sur tous les comptes de service, ou migrer vers des MSA/GMSA (Managed Service Accounts) qui gèrent automatiquement des mots de passe complexes sans les stocker en clair.
  • Délégations Kerberos : auditer et supprimer toutes les délégations non contraintes (Unconstrained Delegation). Utiliser la délégation contrainte basée sur les ressources (RBCD) uniquement quand nécessaire.
  • ACL abusables : auditer régulièrement avec BloodHound les permissions excessives sur les objets AD (WriteDACL, GenericAll, GenericWrite sur des objets sensibles).
  • Tier Model : implémenter le modèle de séparation par niveaux (Tier 0/1/2) qui isole les comptes d'administration du domaine des postes de travail.

 

Détection de l'extraction de la Domain Backup Key

L'accès à la DPAPI Domain Backup Key génère des événements Windows auditables. Sur le DC, surveiller :

  • Event ID 4662 : accès à un objet AD. Filtrer sur l'objet CN=BCKUPKEY_P et CN=BCKUPKEY_PREFERRED. Ces deux objets dans la partition de configuration contiennent les clés de sauvegarde DPAPI. Un accès à ces objets hors procédure de récupération normale est suspect.
  • Event ID 4776 (NTLM) combiné à une connexion depuis un compte Domain Admin vers le DC hors fenêtre de maintenance connue.
  • Règles Sigma MITRE ATT&CK T1555.004 (Credentials from Password Stores: Windows Credential Manager) pour la détection via SIEM.

 

Protection des sessions LSASS

L'extraction des Master Keys en mémoire passe par LSASS. Les mesures de protection incluent :

  • Activer Credential Guard (Windows 10/2016+) : isole LSASS dans une VM légère basée sur Hyper-V, rendant l'accès depuis le niveau OS normal impossible même avec des droits SYSTEM.
  • Activer la protection LSASS via PPL (Protected Process Light) : empêche l'injection et la lecture de mémoire LSASS par des processus non signés Microsoft.
  • Désactiver WDigest (HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigestUseLogonCredential = 0) pour éviter le stockage des mots de passe en clair dans LSASS.

 

Réduction des secrets stockés dans le Credential Manager et les navigateurs

La meilleure protection contre l'extraction DPAPI des navigateurs est de réduire ce qui y est stocké :

  • Déployer un gestionnaire de mots de passe d'entreprise centralisé (Keepass, CyberArk, 1Password Business) plutôt que les navigateurs natifs pour les comptes professionnels sensibles.
  • Interdire via GPO le stockage de mots de passe dans les navigateurs sur les postes d'administration.
  • Utiliser des PAW (Privileged Access Workstations) dédiés aux tâches d'administration, physiquement séparés des postes de travail courants.

 

Que faire si la Domain Backup Key est compromise ?

C'est le scénario le plus difficile à gérer. La DPAPI Domain Backup Key ne se renouvelle pas automatiquement. Sa compromission signifie que tous les secrets DPAPI de tous les utilisateurs peuvent être déchiffrés indéfiniment, même après changement des mots de passe, tant que l'attaquant conserve la clé exportée.

Les actions de remédiation impliquent :

  1. Générer une nouvelle Domain Backup Key via dpapi.py (impacket) ou les outils DSInternals.
  2. Invalider l'ancienne clé dans l'AD.
  3. Forcer tous les utilisateurs à renouveler leurs Master Keys (implique en pratique un changement de mot de passe pour tous).
  4. Révoquer et renouveler tous les certificats utilisateurs protégés par DPAPI.

Cette procédure est complexe et potentiellement disruptive. Elle illustre pourquoi la compromission de Domain Admin dans un environnement Windows doit être traitée comme un incident majeur nécessitant une réponse complète, et non comme un simple changement de mot de passe.

Foire
Aux
Questions

Qu'est-ce que la DPAPI Domain Backup Key ?
La DPAPI Domain Backup Key est une paire de clés RSA-2048 stockée sur le contrôleur de domaine. Elle chiffre une copie de sauvegarde de chaque Master Key utilisateur du domaine pour permettre la récupération des secrets si un utilisateur perd son mot de passe. En environnement offensif, quiconque extrait cette clé privée depuis le DC peut déchiffrer toutes les Master Keys de tous les utilisateurs du domaine, et donc tous leurs secrets DPAPI. C'est pourquoi elle est qualifiée de crown jewel de l'Active Directory dans les missions de pentest AD.

La DPAPI est-elle une faille de sécurité Windows ?
Non. La DPAPI est un mécanisme de sécurité légitime, correctement conçu pour son usage prévu. Son exploitation par un attaquant n'est possible que si celui-ci a déjà obtenu des droits élevés (utilisateur actif sur le poste, Local Admin, ou Domain Admin). La DPAPI ne crée pas de vulnérabilité nouvelle : elle amplifie l'impact d'une compromission existante en permettant d'accéder massivement aux secrets stockés. C'est ce que nos rapports de pentest infrastructure documentent systématiquement pour démontrer l'impact réel d'un accès Domain Admin.

Credential Guard protège-t-il contre l'exploitation de la DPAPI ?
Credential Guard protège les credentials Kerberos et NTLM en isolant LSASS dans une VM légère Hyper-V. Il empêche les outils comme Mimikatz d'extraire les Master Keys depuis la mémoire LSASS (scénario 2). Cependant, Credential Guard ne protège pas contre l'extraction de la Domain Backup Key depuis le DC (qui nécessite seulement des droits AD élevés, pas un accès LSASS), ni contre l'extraction des blobs DPAPI en contexte utilisateur actif (scénario 1, qui utilise l'API Windows légitime). C'est une mesure de protection significative mais partielle.

SharpDPAPI vs Mimikatz : lequel utiliser en pentest ?
Mimikatz est l'outil historique le plus connu pour la manipulation de DPAPI, mais il est détecté par la quasi-totalité des EDR modernes. SharpDPAPI est un outil .NET développé par @harmj0y (SpecterOps) qui offre les mêmes capacités avec un profil de détection plus faible grâce à l'exécution en mémoire et l'utilisation des API Windows légitimes. En 2026, nos pentesters utilisent SharpDPAPI pour les environnements avec EDR, et DonPAPI depuis Linux pour les extractions à distance via SMB. La sélection de l'outil dépend du contexte d'exécution et des protections en place.

Quels secrets les navigateurs Chrome et Edge stockent-ils via DPAPI ?
Les navigateurs basés sur Chromium (Chrome, Edge, Brave, Opera) utilisent DPAPI pour chiffrer une clé AES symétrique stockée dans le fichier Local State. Cette clé AES chiffre les données sensibles dans la base SQLite Login Data (mots de passe), Cookies (dont les cookies de session et tokens d'authentification), Web Data (données de formulaires) et l'historique. L'extraction DPAPI du fichier Local State donne accès à la clé AES, ce qui permet de déchiffrer l'ensemble de ces données. Lors de nos missions de pentest interne, c'est systématiquement l'un des vecteurs les plus riches en credentials récupérés.

Qu'est-ce que le fichier CREDHIST et pourquoi est-il dangereux ?
Le fichier CREDHIST (Credential History) est stocké dans %AppData%MicrosoftProtectCREDHIST. Il conserve les condensats NT et SHA1 de tous les anciens mots de passe de l'utilisateur, enchaînés de sorte que chaque condensat est chiffré par le précédent. Son rôle légitime est de permettre le déchiffrement des Master Keys créées sous d'anciens mots de passe lors d'un changement. Pour un attaquant, il représente un historique de mots de passe exploitable : les condensats extraits peuvent être soumis à Hashcat, et des anciens mots de passe souvent plus faibles peuvent être retrouvés même si le mot de passe actuel est robuste. Lors de nos missions forensiques et de pentest interne, le CREDHIST est systématiquement collecté avec les Master Keys.

Peut-on craquer une Master Key DPAPI offline sans le mot de passe ?
Sur Windows Vista et antérieur, oui facilement : l'algorithme 3DES/SHA1 avec 4 000 à 24 000 itérations PBKDF2 est attaquable par GPU en quelques heures même sur des mots de passe de longueur raisonnable. Sur Windows 7 et ultérieur (AES-256/SHA-512/5 600 itérations), le craquage est théoriquement possible mais nécessite un mot de passe faible pour être viable en temps raisonnable. Sans accès au mot de passe, au hash NT ni à la Domain Backup Key, les Master Keys modernes sont pratiquement indéchiffrables offline. C'est l'un des rares cas où la robustesse cryptographique de Windows est véritablement suffisante si la politique de mots de passe est respectée.

Qu'est-ce que le champ dwDomainKeySize dans une Master Key et pourquoi est-il important ?
Le champ dwDomainKeySize dans l'en-tête d'un fichier Master Key indique la taille du bloc chiffré par la Domain Backup Key du domaine. Sa valeur non nulle confirme deux choses : la machine est jointe à un domaine Active Directory, et il existe une copie de la Master Key chiffrée par la clé RSA-2048 stockée sur le DC. Pour un pentester ayant obtenu les droits Domain Admin, ce champ signifie que toutes les Master Keys des machines du domaine peuvent être déchiffrées sans connaître le mot de passe des utilisateurs, simplement en possédant la Domain Backup Key. Ce champ est en clair dans le fichier, lisible sans déchiffrement préalable.

La DPAPI est-elle couverte par le référentiel MITRE ATT&CK ?
Oui. L'exploitation de la DPAPI est référencée dans MITRE ATT&CK sous plusieurs techniques : T1555 (Credentials from Password Stores), T1555.003 (Credentials from Web Browsers), T1555.004 (Windows Credential Manager), et T1003 (OS Credential Dumping) pour les variantes via LSASS. La subtechnique T1552.004 (Private Keys) couvre l'extraction des clés privées de certificats protégées par DPAPI. Dans nos rapports de pentest Active Directory, chaque technique utilisée est référencée avec son identifiant MITRE ATT&CK pour faciliter le mapping avec les contrôles de détection existants.

DPAPI (Data Protection API) : architecture, Domain Backup Key, exploitation avec Mimikatz et SharpDPAPI en pentest Active Directory, cas terrain PIIRATES et mesures de défense complètes.

Nos articles liés

Vous êtes arrivé jusqu’ici ?
N’en restons pas là.

Vous souhaitez en savoir plus sur nos expertises, nos services et les motivations qui nous animent ?
Venez discuter avec nous et obtenez des réponses pertinentes !

DPAPI et Domain Admin : comment les pentesters pillent les secrets chiffrés de Windows
Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considérerons que vous acceptez l'utilisation des cookies.
Plus d'info