
BitCracker est le premier outil open source de craquage de mots de passe pour les unités de stockage chiffrées avec BitLocker.
BitCracker est le premier outil open source de cassage de mots de passe pour les dispositifs de stockage (disque dur, clé USB, carte SD, etc.) chiffrés avec BitLocker, une fonctionnalité de chiffrement disponible sur Windows Vista, 7, 8.1 et 10 (éditions Ultimate, Pro et Entreprise). BitLocker propose plusieurs méthodes d'authentification différentes pour chiffrer un périphérique de stockage, comme Trusted Platform Module (TPM), la carte à puce, le mot de passe de récupération, ou le mot de passe fourni par l'utilisateur.
Au moyen d'une attaque par dictionnaire, BitCracker tente de trouver le mot de passe utilisateur correct ou le mot de passe de récupération pour déchiffrer le périphérique de stockage chiffré. Il a été implémenté en CUDA et OpenCL.
Plusieurs revues ont retardé la publication de notre article BitCracker (près de 3 ans, avec un rejet final après plusieurs révisions) qui explique les détails de notre attaque, le format de volume BitLocker Drive Encryption (BDE) et les faiblesses possibles dans la procédure de chiffrement/déchiffrement. Finalement, nous avons publié l'article ici : https://arxiv.org/abs/1901.01337 . N'hésitez pas à commenter et à partager.
Pour exécuter BitCracker-CUDA, les exigences minimales sont :
Pour exécuter BitCracker-OpenCL, les exigences minimales sont n'importe quel GPU ou CPU prenant en charge OpenCL (vous pouvez trouver de l'aide ici.
BitCracker nécessite au moins 260 Mo de mémoire de périphérique.
Nous recommandons vivement d'exécuter votre attaque sur un GPU plutôt que sur un CPU pour des raisons de performance (voir section Performance).
L'exécution du script build.sh génère 4 exécutables dans le répertoire build : bitcracker_hash, bitcracker_rpgen, bitcracker_cuda, bitcracker_opencl.
Pour compiler bitcracker_cuda de manière cohérente avec votre GPU NVIDIA et votre version de CUDA, vous devez modifier le fichier src_CUDA/Makefile en choisissant la bonne version SM. À titre de référence, vous pouvez utiliser le tableau suivant :
| Architecture GPU | CUDA suggérée | Makefile |
|---|---|---|
| Kepler | CUDA 7.5 | arch=compute_35,code=sm_35 |
| Maxwell | CUDA 8.0 | arch=compute_52,code=sm_52 |
| Pascal | CUDA 9.0 | arch=compute_60,code=sm_60 |
| Volta | CUDA 9.0 | arch=compute_70,code=sm_70 |
Vous devez créer l'image de votre périphérique de stockage chiffré avec BitLocker en utilisant, par exemple, la commande dd :
sudo dd if=/dev/disk2 of=/chemin/vers/imageChiffree.img conv=noerror,sync
4030464+0 records in
4030464+0 records out
2063597568 bytes transferred in 292.749849 secs (7049013 bytes/sec)
Ensuite, vous devez exécuter le binaire bitcracker_hash sur votre imageChiffree.img afin de :
Si l'exécution se termine correctement, bitcracker_hash produit 1 ou 2 fichiers de sortie :
Les volumes chiffrés BDE peuvent avoir différents formats selon les différentes méthodes d'authentification. Si bitcracker_hash ne parvient pas à trouver le mot de passe de récupération sur votre image chiffrée, veuillez ouvrir un problème ou me contacter.
Un exemple :
/build/bitcracker_hash -o test_hash -i ./Images/imgWin7
---------> BitCracker Hash Extractor <---------
Ouverture du fichier ./Images/imgWin7
....
Signature trouvée à 0x02208000
Version : 2 (Windows 7 ou ultérieur)
Entrée VMK trouvée à 0x022080bc
VMK chiffré avec mot de passe utilisateur trouvé !
VMK chiffré avec AES-CCM
Entrée VMK trouvée à 0x0220819c
VMK chiffré avec clé de récupération trouvé !
VMK chiffré avec AES-CCM
Hachage du mot de passe utilisateur :
$bitlocker$0$16$89a5bad722db4a729d3c7b9ee8e76a29$1048576$12$304a4ac192a2cf0103000000$60$24de9a6128e8f8ffb97ac72d21de40f63dbc44acf101e68ac0f7e52ecb1be4a8ee30ca1e69fbe98400707ba3977d5f09b14e388c885f312edc5c85c2
Hachage de la clé de récupération :
$bitlocker$2$16$8b7be4f7802275ffbdad3766c7f7fa4a$1048576$12$304a4ac192a2cf0106000000$60$6e72f6ef6ba688e72211b8cf8cc722affd308882965dc195f85614846f5eb7d9037d4d63bcc1d6e904f0030cf2e3a95b3e1067447b089b7467f86688
Fichier de sortie pour l'attaque par mot de passe utilisateur : "hash_user_pass.txt"
Fichier de sortie pour l'attaque par mot de passe de récupération : "hash_recv_pass.txt"
Vous pouvez utiliser ce type d'attaque si le périphérique de stockage a été chiffré avec un mot de passe fourni par l'utilisateur, comme illustré dans l'image suivante.
BitCracker effectue une attaque par dictionnaire, vous devez donc fournir une liste de mots de passe utilisateur possibles.
Pour lancer l'attaque, vous avez besoin de :
hash_user_pass.txtUn exemple de ligne de commande :
./build/bitcracker_cuda -f hash_user_pass.txt -d wordlist.txt -t 1 -b 1 -g 0 -u
Où :
-f : chemin vers le fichier hash_user_pass.txt-d : chemin vers votre liste de mots de passe-t : nombre de mots de passe traités par chaque thread CUDA-b : nombre de blocs CUDA-g : ID du périphérique GPU NVIDIA-u : spécifie que vous voulez une attaque par mot de passe utilisateurPour toutes les options disponibles, tapez ./build/bitcracker_cuda -h.
Pour obtenir les meilleures performances, veuillez vous référer au tableau dans la section Performance pour définir correctement les options t et b en fonction de votre GPU NVIDIA.
Les mêmes considérations s'appliquent pour l'exécutable bitcracker_opencl.
Un exemple de sortie :
====================================
Périphérique sélectionné : GPU Tesla K80 (ID : 0)
====================================
....
Lecture du fichier de hachage "hash_user_pass.txt"
$bitlocker$0$16$0a8b9d0655d3900e9f67280adc27b5d7$1048576$12$b0599ad6c6a1cf0103000000$60$c16658f54140b3d90be6de9e03b1fe90033a2c7df7127bcd16cb013cf778c12072142c484c9c291a496fc0ebd8c21c33b595a9c1587acfc6d8bb9663
====================================
Attaque
====================================
Type d'attaque : Mot de passe utilisateur
Threads CUDA : 1024
Blocs CUDA : 1
Mots de passe par thread : 1
Max mots de passe par noyau : 1024
Dictionnaire : wordlist.txt
Vérification stricte (-s) : Non
Comparaison MAC (-m) : Non
Exécution du noyau CUDA :
Flux 0
Nombre effectif de mots de passe : 12
Plage de mots de passe :
abcdefshhf
.....
blablalbalbalbla12
Temps : 28.651947 sec
Mots de passe par seconde : 0.42 pw/sec
================================================
....
Mot de passe trouvé : paperino
================================================