7.5 KiB
Raw Blame History

DPAPI - Extraction de mots de passe

{{#include ../../banners/hacktricks-training.md}}

RootedCON est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec la mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline.

{% embed url="https://www.rootedcon.com/" %}

Qu'est-ce que DPAPI

L'API de protection des données (DPAPI) est principalement utilisée au sein du système d'exploitation Windows pour le chiffrement symétrique des clés privées asymétriques, s'appuyant soit sur des secrets utilisateur, soit sur des secrets système comme source significative d'entropie. Cette approche simplifie le chiffrement pour les développeurs en leur permettant de chiffrer des données à l'aide d'une clé dérivée des secrets de connexion de l'utilisateur ou, pour le chiffrement système, des secrets d'authentification de domaine du système, évitant ainsi aux développeurs de gérer eux-mêmes la protection de la clé de chiffrement.

Données protégées par DPAPI

Parmi les données personnelles protégées par DPAPI, on trouve :

  • Les mots de passe et les données de saisie automatique d'Internet Explorer et de Google Chrome
  • Les mots de passe des comptes e-mail et FTP internes pour des applications comme Outlook et Windows Mail
  • Les mots de passe pour les dossiers partagés, les ressources, les réseaux sans fil et Windows Vault, y compris les clés de chiffrement
  • Les mots de passe pour les connexions de bureau à distance, .NET Passport et les clés privées pour divers usages de chiffrement et d'authentification
  • Les mots de passe réseau gérés par le Gestionnaire d'identifiants et les données personnelles dans des applications utilisant CryptProtectData, telles que Skype, MSN messenger, et plus encore

Liste Vault

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

# From mimikatz
mimikatz vault::list

Fichiers d'identification

Les fichiers d'identification protégés pourraient être situés dans :

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\

Obtenez des informations d'identification en utilisant mimikatz dpapi::cred, dans la réponse, vous pouvez trouver des informations intéressantes telles que les données chiffrées et le guidMasterKey.

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

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

Vous pouvez utiliser le module mimikatz dpapi::cred avec le /masterkey approprié pour déchiffrer :

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

Clés maîtresses

Les clés DPAPI utilisées pour chiffrer les clés RSA de l'utilisateur sont stockées dans le répertoire %APPDATA%\Microsoft\Protect\{SID}, où {SID} est le Identifiant de sécurité de cet utilisateur. La clé DPAPI est stockée dans le même fichier que la clé maîtresse qui protège les clés privées des utilisateurs. Elle est généralement constituée de 64 octets de données aléatoires. (Remarque : ce répertoire est protégé, donc vous ne pouvez pas le lister en utilisant dir depuis le cmd, mais vous pouvez le lister depuis PS).

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}

Voici à quoi ressemble un ensemble de Master Keys d'un utilisateur :

En général, chaque master key est une clé symétrique chiffrée qui peut déchiffrer d'autres contenus. Par conséquent, extraire la Master Key chiffrée est intéressant afin de déchiffrer plus tard ce contenu chiffré avec elle.

Extraire la master key et déchiffrer

Consultez le post https://www.ired.team/offensive-security/credential-access-and-credential-dumping/reading-dpapi-encrypted-secrets-with-mimikatz-and-c++ pour un exemple de la façon d'extraire la master key et de la déchiffrer.

SharpDPAPI

SharpDPAPI est un port C# de certaines fonctionnalités DPAPI du projet Mimikatz de @gentilkiwi.

HEKATOMB

HEKATOMB est un outil qui automatise l'extraction de tous les utilisateurs et ordinateurs du répertoire LDAP et l'extraction de la clé de sauvegarde du contrôleur de domaine via RPC. Le script résoudra ensuite toutes les adresses IP des ordinateurs et effectuera un smbclient sur tous les ordinateurs pour récupérer tous les blobs DPAPI de tous les utilisateurs et déchiffrer le tout avec la clé de sauvegarde du domaine.

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

Avec la liste des ordinateurs extraits de LDAP, vous pouvez trouver chaque sous-réseau même si vous ne les connaissiez pas !

"Parce que les droits d'administrateur de domaine ne suffisent pas. Hackez-les tous."

DonPAPI

DonPAPI peut automatiquement extraire des secrets protégés par DPAPI.

Références

RootedCON est l'événement de cybersécurité le plus pertinent en Espagne et l'un des plus importants en Europe. Avec la mission de promouvoir les connaissances techniques, ce congrès est un point de rencontre bouillonnant pour les professionnels de la technologie et de la cybersécurité dans chaque discipline.

{% embed url="https://www.rootedcon.com/" %}

{{#include ../../banners/hacktricks-training.md}}