En plus de notre dernier
article sur le décodage des blobs DPAPI, nous parlerons de deux autres cas auxquels nous avons dû faire face. Il s'agira des mots de passe enregistrés dans les navigateurs MS IE11 et Edge.
La stratégie reste la même - nous décrypterons tout hors ligne. Pour ce faire, vous devez récupérer les fichiers nécessaires.
Selon le système d'exploitation (Windows 7 ou supérieur), les mots de passe enregistrés doivent être recherchés à deux endroits:
Dans le cas de Windows 7, il s'agit d'une branche de registre
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\IntelliForms\Storage2
Pour Windows 8 et supérieur, stockage Windows Vault.
Il convient également de noter que sur Windows 7, les mots de passe d'autorisation de base http sont également stockés dans Windows Vault, donc les récupérer ne fait en aucun cas mal.
Eh bien, selon la bonne vieille tradition - tout cela, bien sûr, est crypté via des mécanismes DPAPI.
Examinons maintenant plus en détail l'algorithme de décryptage.
Windows 7 + IE11 (Edge)
Comme mentionné ci-dessus, les mots de passe sont stockés dans le registre de l'utilisateur actuel et sont des objets blob DPAPI chiffrés avec la clé principale de l'utilisateur.
Mais il y a une différence importante - l'entropie est utilisée lors du cryptage du mot de passe. L'entropie est l'URL à laquelle un mot de passe est entré au format
("https://url"+"\x00").lower().encode("utf-16-le")
.
Pour décrypter un mot de passe, vous devez connaître l'URL complète! Sinon, rien.
Mais pour que IE lui-même sache comment décrypter le mot de passe, cette URL est hachée et stockée dans le registre en tant que nom de clé avec DPAPI-blob.
Prenons un petit exemple. Pour le site
https://rdot.org/forum/
mot de passe enregistré ressemblera à ceci:
A88E21329B5372B856CE238B79D1F28D8EA1FD359D REG_BINARY 01000000D08C9DDF0115D1118C7A00C......BC310C51EE0F9B05D
où
A88 ... est une URL hachée
https://rdot.org/forum/
01000000D08C ... - Blob DPAPI contenant nom d'utilisateur et mot de passe
L'algorithme de hachage d'URL est simple. Plus d'informations à son sujet peuvent être trouvées dans les développements basés sur la CIA de
Vault7 .
En python, cela ressemble à ceci:
import hashlib url = "https://rdot.org/Forum/".lower() + "\x00" url_utf_16_le = url.encode("utf-16-le") sha1obj = hashlib.sha1(url_utf_16_le) urldigest = sha1obj.digest() checksum = 0 len(urldigest) for abyte in urldigest: checksum = (checksum + (ord(abyte))) & 0xFF hash = sha1obj.hexdigest().upper() cksum = "%02X" % checksum reg_value_name = "%s%s" % (hash, cksum) print reg_value_name
Une liste des 50 dernières URL saisies se trouve également dans le registre:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\typedurls
Revenons à l'exemple. Supposons que nous devons trouver le mot de passe enregistré à partir de
https://rdot.org/forum/
dans le registre.
Substitution de la valeur URL dans le script de conversion - nous obtenons la valeur
A88E21329B5372B856CE238B79D1F28D8EA1FD359D
La clé avec ce nom que nous devons trouver dans le registre
req query "HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2"
Si une telle clé est trouvée, elle doit être copiée dans le fichier en tant que valeurs hexadécimales (c'est-à-dire interpréter la valeur de la clé en tant que blob hexadécimal) et déchiffrée en tant que blob DPAPI à l'aide de l'entropie:
("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")
("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le")
Pour le déchiffrement, vous pouvez utiliser dpapick, en apportant les modifications appropriées pour prendre en compte l'entropie dans le déchiffrement.
Dans le fichier examples / filegeneric.py, l'appel de fonction
probe.try_decrypt_with_password(options.password, mkp, options.sid)
remplacer par
probe.try_decrypt_with_password(options.password, mkp, options.sid, entropy=("https://rdot.org/forum/".lower() + "\x00").encode("utf-16-le"))
et après cet appel, dpapick comme d'habitude:
./filegeneric.py --sid <SID> --masterkey <mk dir> --password <..> --inputfile <dpapi blob from registry>
Si la clé principale est déchiffrée correctement, la sortie recevra le nom d'utilisateur et le mot de passe enregistrés (après une certaine quantité de données binaires de service).
Windows 8.1 et supérieur
En cas d'enregistrement de mots de passe sur Win8 et versions ultérieures, les mots de passe des formulaires http, ainsi que l'autorisation de base http, sont stockés dans Windows Vault. Et ce qui est bien - avec le mot de passe, l'URL complète du site auquel il se rapproche est enregistrée.
Le coffre-fort lui-même est chiffré en deux étapes - tout d'abord, le bloc de données entier est chiffré par AES, et la clé symétrique pour le déchiffrement est chiffrée par DPAPI et enregistrée dans un fichier. L'algorithme de cryptage-décryptage complet est décrit dans l'article par les gars de
Zena Forensics .
Ils ont également développé des décrypteurs spéciaux pour Windows Vault basés sur dpapick (dpapilab). Vous pouvez les prendre sur ZF git ou télécharger un fork de notre
github .
Le stockage du coffre-fort se trouve dans le profil utilisateur:
C:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\
À l'intérieur du fichier .vpol se trouve un blob DPAPI chiffré avec une clé utilisateur et stockant une clé AES pour le déchiffrement .vcrd
Pour décrypter Vault, vous devez exécuter:
./vaultdec.py --masterkey <mk dir> --sid <SID> --password <pass> <VAULT DIR>
Au lieu d'un mot de passe, vous pouvez utiliser une clé de domaine, comme indiqué dans l'
article précédent . Il convient également de noter que si la stratégie d'itinérance des informations d'identification est incluse dans la machine du domaine, les données de Windows Vault seront stockées dans ldap. Vous pouvez lire à ce sujet dans notre premier article sur DPAPI.
Un petit ajout: pour que le script fonctionne correctement, vous devrez probablement installer les anciens liens Python:
apt install python-construct.legacy
Feuille de triche
Pour décrypter les mots de passe IE, Edge, ainsi que les mots de passe stockés dans Windows, vous devez récupérer:
Répertoire du coffre-fort c:\Users\<user>\AppData\Local\Microsoft\Vault\<GUID>\
catalogue avec clés principales c:\Users\<user>\AppData\roaming\microsoft\Protect\<SID>\
contenu de la clé de registre HKEY_USERS\<SID>\Software\Microsoft\Internet Explorer\IntelliForms\Storage2 HKEY_USERS>\<SID>\Software\Microsoft\Internet Explorer\typedurls
En outre, vous devez connaître le mot de passe utilisateur ou la clé de sauvegarde de domaine dpapi pour le déchiffrement sans mot de passe.