Skip to content

Casser le chiffrement de disque LUKS et BitLocker avec hashcat

Extrayez un hash exploitable depuis un en-tête LUKS ou un volume BitLocker, choisissez le bon mode hashcat et lancez l'attaque.

Publié le 4 min de lecture

Le chiffrement intégral de disque ou de volume transforme un mot de passe perdu en un problème différent d'un compte en ligne cassé : il n'y a pas de serveur pour vous limiter, mais aucun raccourci non plus autour de la fonction de dérivation de clé qui protège le volume. LUKS (Linux) et BitLocker (Windows) se ramènent tous deux à la même forme d'attaque que n'importe quel autre hash de mot de passe — extraire le matériel de dérivation de clé, le soumettre à hashcat ou John, lancer un dictionnaire ou un masque — mais chacun a sa propre étape d'extraction et son propre piège de mode à éviter.

LUKS : extraire l'en-tête, pas la partition

Un volume LUKS n'a pas besoin d'être déchiffré pour être attaqué — seul son en-tête, qui contient les key slots PBKDF2 (LUKS1) ou Argon2/PBKDF2 (LUKS2), doit être lu. Extrayez-le avec dd :

sudo dd if=/dev/sdXN of=header.luks bs=512 count=4097

Confirmez d'abord à quoi vous avez affaire — cryptsetup luksDump /dev/sdXN affiche la version de LUKS et le KDF utilisé. Cette distinction compte car les modes de hashcat se répartissent selon elle :

  • LUKS1 → -m 14600, en lisant directement l'en-tête extrait :

    hashcat -m 14600 header.luks /usr/share/wordlists/rockyou.txt
    
  • LUKS2 utilise par défaut Argon2id sur les versions actuelles de cryptsetup et a une disposition sur disque différente de LUKS1, donc le mode 14600 ne le lit pas. Hashcat prend bien en charge LUKS2, mais le numéro de mode exact dépend du KDF et du chiffrement choisis à la création du volume ; plutôt que de deviner un numéro ici, vérifiez ce que votre build hashcat prend en charge :

    hashcat --example-hashes | grep -i luks
    

    et faites correspondre l'entrée avec ce qu'a rapporté luksDump.

Une fois la passphrase récupérée par hashcat, montez le volume normalement — le cassage prouve seulement que vous avez le mot de passe, il ne déverrouille rien lui-même :

sudo cryptsetup luksOpen /dev/sdXN recovered

Comme les compteurs d'itérations PBKDF2/Argon2 de LUKS sont calibrés à la configuration pour prendre environ une seconde sur le matériel d'origine, le débit est très loin de ce qu'on obtiendrait contre un hash rapide et non salé — une passphrase courte issue d'un dictionnaire reste réaliste, une passphrase longue et aléatoire ne l'est pas. La page du hash LUKS détaille l'identification complète.

BitLocker : bitlocker2john, puis le bon préfixe

BitLocker stocke ses métadonnées de dérivation de clé (les données FVE/VMK) à un emplacement fixe du volume, et bitlocker2john.py de John the Ripper les extrait dans le même format $bitlocker$ attendu par hashcat — pointez-le vers le périphérique brut ou une image :

python3 bitlocker2john.py -i /dev/sdXN > hash.txt

Avant de lancer quoi que ce soit, regardez le préfixe — il indique le type de secret réellement attaqué :

PréfixeCe que c'estCassage réaliste ?
$bitlocker$0$Mot de passe utilisateurOui — attaque par dictionnaire/règles
$bitlocker$1$Code PIN numérique (TPM+PIN)Oui — espace court, attaque par masque
$bitlocker$3$ / $bitlocker$4$Clé de récupération à 48 chiffresNon — effectivement incassable par force brute

Un mot de passe utilisateur ou un PIN se traite comme un job hashcat classique :

hashcat -m 22100 hash.txt /usr/share/wordlists/rockyou.txt

Pour un PIN, une attaque par masque bat un dictionnaire — les PIN BitLocker font typiquement 4 à 20 chiffres, donc un masque du style -a 3 -1 ?d hash.txt ?1?1?1?1?1?1 couvre rapidement l'espace réaliste. Les hash de clé de récupération ($3$/$4$) encodent la clé à 48 chiffres générée par BitLocker lui-même ; son espace de clés est assez vaste pour qu'aucun temps de calcul utile avec hashcat ou John ne l'épuise, donc si c'est ce que vous avez entre les mains, la clé de récupération elle-même est le seul moyen d'entrer — il n'y a pas de hash à contourner. Voir la page du hash BitLocker pour le détail complet des préfixes, et régler hashcat pour un vrai débit GPU pour tirer le maximum de l'attaque réellement menable.

À retenir

Les deux formats suivent le même schéma identifier-extraire-mode que partout ailleurs sur ce site : confirmez la variante exacte avant de choisir un mode hashcat, car LUKS1 contre LUKS2 et les quatre préfixes de BitLocker ne sont pas interchangeables, et soumettre le mauvais au mode 14600 ou 22100 ne fait que rejeter le hash. Là où le secret sous-jacent est un mot de passe choisi par un humain ou un court PIN, une attaque par dictionnaire ou par masque est réaliste ; là où c'est une clé de récupération générée par machine, aucune puissance GPU ne change les mathématiques de l'espace de clés.

Articles liés

Extrayez le hash d'un id_rsa chiffré avec ssh2john, choisissez le bon mode hashcat pour les clés PEM classiques, et sachez quand seul John the Ripper casse une clé OpenSSH moderne.
Extrayez le hash d'une archive ZIP, RAR ou 7-Zip protégée avec zip2john / rar2john / 7z2john, choisissez le bon mode hashcat, et cassez-la sans deviner.
Extrayez le hash d'un Word, Excel ou PDF chiffré avec office2john / pdf2john, puis choisissez le bon mode hashcat — de 9400 à 10700 — pour retrouver le mot de passe.