
SharpDPAPI est un port C# d'une partie des fonctionnalités DPAPI de Mimikatz.
SharpDPAPI est un portage en C# de certaines fonctionnalités DPAPI du projet Mimikatz de @gentilkiwi.
Je n'ai pas inventé cette logique, il s'agit simplement d'un portage de Mimikatz afin de mieux comprendre le processus et de l'opérationnaliser pour l'adapter à notre flux de travail.
Le sous-projet SharpChrome est une adaptation des travaux de @gentilkiwi et @djhohnstein, en particulier son projet SharpChrome. Cependant, cette version de SharpChrome utilise une version différente de la bibliothèque SQL C# qui supporte l'ouverture sans verrou. SharpChrome est construit comme un projet séparé dans SharpDPAPI en raison de la taille de la bibliothèque SQLite utilisée.
Les navigateurs Chrome et les nouveaux Edge basés sur Chromium peuvent être analysés avec SharpChrome.
SharpChrome utilise également une version minimisée du code BCrypt P/Invoke de @AArnott, publié sous licence MIT.
Si vous n'êtes pas familier avec DPAPI, consultez cet article pour plus d'informations générales. Pour plus d'informations sur les Credentials et les Vaults en lien avec DPAPI, consultez l'entrée wiki de Benjamin sur le sujet.
@harmj0y est l'auteur principal de ce portage.
SharpDPAPI est sous licence BSD 3-Clause.
__ _ _ _ ___
(_ |_ _. ._ ._ | \ |_) /\ |_) |
__) | | (_| | |_) |_/ | /--\ | _|_
|
v1.20.0
Récupérer la clé de sauvegarde DPAPI d'un contrôleur de domaine, avec possibilité de spécifier un DC et un fichier de sortie :
SharpDPAPI backupkey [/nowrap] [/server:SERVER.domaine] [/file:cle.pvk]
La commande *search* recherche les blobs DPAPI potentiels dans le registre, les fichiers, les dossiers et les blobs base64 :
search /type:registry [/path:HKLM\chemin\vers\clé] [/showErrors]
search /type:folder /path:C:\chemin\vers\dossier [/maxBytes:<nbOctets>] [/showErrors]
search /type:file /path:C:\chemin\vers\fichier [/maxBytes:<nbOctets>]
search /type:base64 [/base:<chaîne base64>]
Analyse machine/SYSTEM :
machinemasterkeys - analyse tous les fichiers de clé maître machine accessibles (s'élève en SYSTEM pour récupérer le secret LSA DPAPI_SYSTEM)
machinecredentials - utilise 'machinemasterkeys' puis analyse les fichiers Credential machine
machinevaults - utilise 'machinemasterkeys' puis analyse les Vaults machine
machinetriage - exécute les commandes 'machinecredentials' et 'machinevaults'
Analyse utilisateur :
Arguments pour la commande 'masterkeys' :
/target:FICHIER/dossier - analyse une clé maître spécifique, ou un dossier contenant des clés maîtres (sinon analyse les clés maîtres locales)
/pvk:BASE64... - utilise un fichier de clé privée DPAPI de domaine encodé en base64 pour d'abord déchiffrer les clés maîtres utilisateur accessibles
/pvk:cle.pvk - utilise un fichier de clé privée DPAPI de domaine pour d'abord déchiffrer les clés maîtres utilisateur accessibles
/password:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant un mot de passe en clair (fonctionne à distance)
/ntlm:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant un hash NTLM (fonctionne à distance)
/credkey:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant une credkey DPAPI (SHA1 de domaine ou local, fonctionne à distance)
/rpc - demande au contrôleur de domaine de déchiffrer les clés maîtres de l'utilisateur cible
/server:SERVEUR - analyse un serveur distant, en supposant un accès administrateur
/hashes - affiche les 'hashes' des fichiers de clé maître utilisateur au format JTR/Hashcat (sans déchiffrement)
Arguments pour les commandes credentials|vaults|rdg|keepass|triage|blob|ps :
Déchiffrement :
/unprotect - force l'utilisation de CryptUnprotectData() pour les commandes 'ps', 'rdg' ou 'blob'
/pvk:BASE64... - utilise un fichier de clé privée DPAPI de domaine encodé en base64 pour d'abord déchiffrer les clés maîtres utilisateur accessibles
/pvk:cle.pvk - utilise un fichier de clé privée DPAPI de domaine pour d'abord déchiffrer les clés maîtres utilisateur accessibles
/password:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant un mot de passe en clair (fonctionne à distance)
/ntlm:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant un hash NTLM (fonctionne à distance)
/credkey:X - déchiffre les clés maîtres de l'utilisateur cible en utilisant une credkey DPAPI (SHA1 de domaine ou local, fonctionne à distance)
/rpc - demande au contrôleur de domaine de déchiffrer les clés maîtres de l'utilisateur cible
GUID1:SHA1 ... - utilise une ou plusieurs clés maîtres GUID:SHA1 pour le déchiffrement
/mkfile:FICHIER - utilise un fichier contenant une ou plusieurs clés maîtres GUID:SHA1 pour le déchiffrement