DPAPI : extraction et abus des secrets Windows
Comprendre DPAPI
Définition
DPAPI (Data Protection API) est une API Windows permettant le chiffrement et le déchiffrement de données sensibles sans que l'application n'ait à gérer elle-même les clés cryptographiques. L'extraction et l'abus des secrets Windows via DPAPI reposent sur une hiérarchie de clés précise. Chaque utilisateur possède une ou plusieurs Master Keys, stockées dans le profil utilisateur sous AppData/Roaming/Microsoft/Protect/{SID}/. Ces Master Keys sont chiffrées à partir du hash NTLM ou du mot de passe en clair de l'utilisateur. Elles protègent ensuite des DPAPI blobs, qui encapsulent les données sensibles réelles : mots de passe de navigateurs, certificats, identifiants Wi-Fi, tokens, secrets stockés par des applications tierces. Le contexte de déchiffrement peut être lié à l'utilisateur (user context) ou à la machine entière (machine context), selon le flag passé lors du chiffrement. En contexte machine, la clé dérive des LSA Secrets, accessibles uniquement via SYSTEM. DPAPI est omniprésent dans Windows : il protège les credentials stockés par Chrome, Edge, les sessions RDP, le trousseau Windows Credential Manager et bien d'autres. Sa compromission permet un accès silencieux à une grande quantité de secrets sans déclencher d'alerte réseau.
Détection (Blue Team / SOC)
La détection des abus DPAPI côté Blue Team s'appuie sur plusieurs sources de logs. L'accès aux fichiers Master Keys dans AppData/Roaming/Microsoft/Protect/ doit être surveillé via l'audit d'accès aux objets (Event ID 4663). Un processus inhabituel accédant à ce répertoire est un indicateur fort. L'Event ID 4688 (création de processus) permet de détecter l'exécution d'outils comme SharpDPAPI, mimikatz ou DonPAPI. Le chargement de dpapi.dll par un processus non légitime est également suspect et peut être capturé via Sysmon (Event ID 7). Côté LSA Secrets, tout accès à la clé de registre HKLM/SECURITY/Policy/Secrets/ par un processus autre que lsass.exe doit alerter. Sysmon Event ID 10 (accès à un processus distant) révèle les tentatives d'injection dans lsass pour récupérer les Master Keys en mémoire. Sur les contrôleurs de domaine, surveiller les requêtes MS-BKRP (BackupKey Remote Protocol) est essentiel : ce protocole légitime permet à un DC de déchiffrer une Master Key domain-backup, et son usage par une station de travail hors contexte normal est anormal. Les règles SIGMA couvrant dpapi_masterkey_access et lsass_memory_dump sont à déployer en priorité dans le SIEM.
Exploitation & contre-mesures (Red Team)
Côté Red Team, l'abus de DPAPI suit plusieurs chemins selon le niveau de privilège obtenu. En contexte utilisateur, mimikatz permet de déchiffrer les blobs directement si la session est active, via la commande dpapi::blob. SharpDPAPI automatise l'extraction des credentials de navigateurs (Chrome, Edge) et du Credential Manager sans nécessiter de droits élevés. Avec des privilèges SYSTEM, les Master Keys de tous les utilisateurs deviennent accessibles via leur hash NTLM ou en déchiffrant les LSA Secrets. En environnement Active Directory, la technique la plus puissante consiste à abuser du protocole MS-BKRP : en compromettant un Domain Controller, il est possible de récupérer la Domain Backup Key (via mimikatz lsadump::backupkeys), qui déchiffre toutes les Master Keys du domaine sans connaître le mot de passe de chaque utilisateur. DonPAPI et SharpDPAPI implémentent cette attaque de bout en bout. Pour durcir l'environnement, il faut restreindre l'accès à lsass via la protection PPL (Protected Process Light), activer Credential Guard pour isoler les dérivations DPAPI sensibles, auditer les accès aux répertoires Protect/ et déployer une détection sur les appels MS-BKRP anormaux au niveau du DC. La rotation régulière des mots de passe utilisateurs invalide les anciennes Master Keys et limite la portée d'une compromission.
Articles sur DPAPI
Un poste mal protégé suffit à compromettre l'intégralité d'un tenant Microsoft 365. Voici comment la chaîne d'attaque se déroule, étape par étape.