Casser un mot de passe de volume VeraCrypt

Kali LinuxBeginner
Pratiquer maintenant

Introduction

VeraCrypt est un outil populaire et open-source pour le chiffrement à la volée (on-the-fly encryption). Bien qu'il offre une sécurité robuste, les mots de passe peuvent parfois constituer le maillon faible. Comprendre comment tester la robustesse de ces mots de passe est une compétence essentielle en audit de sécurité et en tests d'intrusion.

Dans ce laboratoire, vous endosserez le rôle d'un analyste en sécurité. Vous créerez d'abord un volume VeraCrypt chiffré avec un mot de passe suivant un schéma connu. Ensuite, vous apprendrez à extraire les données de hachage nécessaires de ce volume. Enfin, vous utiliserez Hashcat, un puissant outil de récupération de mots de passe, pour effectuer une "attaque par masque" afin de casser le mot de passe. Ce processus vous donnera une expérience pratique des techniques fondamentales utilisées en criminalistique numérique (digital forensics) et en piratage éthique (ethical hacking).

Créer un petit volume VeraCrypt chiffré

Dans cette étape, vous utiliserez l'interface en ligne de commande de VeraCrypt pour créer un nouveau conteneur de fichiers chiffré. Ce conteneur servira de cible pour l'exercice de récupération de mot de passe. Nous utiliserons intentionnellement une structure de mot de passe simple pour démontrer l'efficacité d'une attaque par masque dans les étapes ultérieures.

Vous serez guidé à travers un processus de création interactif. Veuillez suivre attentivement les instructions.

Tout d'abord, exécutez la commande pour créer un nouveau volume. L'option -t active le mode texte, et -c signifie "create" (créer).

veracrypt -t -c

Le programme vous posera maintenant une série de questions. Répondez-y comme suit :

  1. Type de volume : Appuyez sur Entrée pour sélectionner l'option par défaut Normal.
  2. Emplacement du volume : Tapez myvolume.hc et appuyez sur Entrée. Cela créera le fichier volume dans votre répertoire courant (~/project).
  3. Taille du volume : Tapez 1M (pour 1 Mégaoctet) et appuyez sur Entrée. Une petite taille est suffisante pour ce laboratoire.
  4. Algorithme de chiffrement : Appuyez sur Entrée pour sélectionner l'option par défaut AES.
  5. Algorithme de hachage : Appuyez sur Entrée pour sélectionner l'option par défaut SHA-512.
  6. Système de fichiers : Appuyez sur Entrée pour sélectionner l'option par défaut FAT.
  7. Mot de passe : C'est une étape cruciale. Pour ce laboratoire, entrez le mot de passe LabEx2024 et appuyez sur Entrée.
  8. Retapez le mot de passe : Entrez à nouveau LabEx2024 et appuyez sur Entrée.
  9. PIM : Appuyez sur Entrée pour utiliser la valeur par défaut (pas de PIM).
  10. Fichiers clés : Appuyez sur Entrée pour ignorer l'utilisation de fichiers clés.
  11. Collecte d'entropie : L'outil vous demandera de taper au moins 320 caractères aléatoires pour générer de l'entropie cryptographique. Tapez simplement des caractères aléatoires sur votre clavier jusqu'à ce que la barre de progression soit pleine, puis appuyez sur Entrée.

Après la dernière étape, VeraCrypt créera le fichier. Vous pouvez vérifier sa création avec la commande ls.

ls -l myvolume.hc

Vous devriez voir une sortie similaire à celle-ci, confirmant que le fichier existe et que sa taille est d'environ 1 Mo.

-rw-r--r-- 1 labex labex 1048576 Dec 01 12:34 myvolume.hc

Vous avez maintenant créé avec succès un volume VeraCrypt chiffré.

Extraire les 512 premiers octets comme hachage

Dans cette étape, vous allez extraire le hachage du mot de passe du volume VeraCrypt que vous venez de créer. Pour les conteneurs VeraCrypt standard utilisant des algorithmes de hachage tels que SHA-512 ou RIPEMD-160, les données nécessaires à la vérification du mot de passe sont stockées dans les 512 premiers octets du fichier volume. Hashcat peut utiliser ces données directement pour effectuer une attaque de cassage.

Nous utiliserons la commande dd, un utilitaire puissant pour copier et convertir des données.

Utilisez la commande suivante pour lire les 512 premiers octets de myvolume.hc et les écrire dans un nouveau fichier nommé veracrypt.hash.

  • if=myvolume.hc : Spécifie le fichier d'entrée (input file).
  • of=veracrypt.hash : Spécifie le fichier de sortie (output file).
  • bs=512 : Définit la taille du bloc (block size) à 512 octets.
  • count=1 : Spécifie de copier seulement 1 bloc.
dd if=myvolume.hc of=veracrypt.hash bs=512 count=1

La commande s'exécutera et affichera un résumé de l'opération.

1+0 records in
1+0 records out
512 bytes copied, 0.00012345 s, 4.1 MB/s

Maintenant, vérifiez que le nouveau fichier de hachage a été créé et qu'il fait exactement 512 octets.

ls -l veracrypt.hash

La sortie devrait ressembler à ceci :

-rw-r--r-- 1 labex labex 512 Dec 01 12:35 veracrypt.hash

Vous avez extrait avec succès les données de hachage que Hashcat utilisera pour l'attaque.

Identifier le bon mode Hashcat pour VeraCrypt

Dans cette étape, vous apprendrez à trouver le bon "mode de hachage" pour Hashcat. Hashcat prend en charge des centaines de types de hachage différents, et vous devez lui indiquer exactement quel type vous essayez de casser. Chaque type est identifié par un numéro unique.

Étant donné que nous avons créé notre volume avec le chiffrement AES et l'algorithme de hachage SHA-512, nous devons trouver le mode correspondant dans Hashcat. Vous pouvez le faire en recherchant dans la sortie d'aide de Hashcat.

Utilisez la commande suivante pour afficher les informations d'aide de Hashcat et filtrer les lignes contenant "VeraCrypt". La commande grep -i effectue une recherche insensible à la casse.

hashcat --help | grep -i veracrypt

La sortie listera tous les modes de hachage liés à VeraCrypt.

...
13711 | VeraCrypt RIPEMD160 + XTS 512 bit                           | Operating System
13712 | VeraCrypt RIPEMD160 + XTS 1024 bit                          | Operating System
13713 | VeraCrypt RIPEMD160 + XTS 1536 bit                          | Operating System
13721 | VeraCrypt SHA512 + XTS 512 bit                              | Operating System
13722 | VeraCrypt SHA512 + XTS 1024 bit                             | Operating System
13723 | VeraCrypt SHA512 + XTS 1536 bit                             | Operating System
13731 | VeraCrypt SHA256 + XTS 512 bit                              | Operating System
13732 | VeraCrypt SHA256 + XTS 1024 bit                             | Operating System
13733 | VeraCrypt SHA256 + XTS 1536 bit                             | Operating System
13751 | VeraCrypt Whirlpool + XTS 512 bit                           | Operating System
13752 | VeraCrypt Whirlpool + XTS 1024 bit                          | Operating System
13753 | VeraCrypt Whirlpool + XTS 1536 bit                          | Operating System
...

Examinez la liste. En fonction de nos choix à l'étape 1 (SHA512), le mode correct pour notre volume est 13721. Vous utiliserez ce numéro de mode dans la dernière étape pour indiquer à Hashcat comment interpréter le fichier veracrypt.hash.

Construire une attaque par masque pour une structure de mot de passe connue

Dans cette étape, vous allez construire un "masque" pour une attaque Hashcat. Une attaque par masque est incroyablement efficace lorsque vous avez une certaine connaissance de la structure du mot de passe. Pour notre laboratoire, nous savons que le mot de passe est LabEx2024. Faisons comme si nous ne connaissions que la structure : le mot "LabEx" suivi de quatre chiffres (comme une année).

Hashcat utilise des espaces réservés spéciaux, ou "charsets", pour définir un masque :

  • ?l = une lettre minuscule (a...z)
  • ?u = une lettre majuscule (A...Z)
  • ?d = un chiffre (0...9)
  • ?s = un caractère spécial (!, @, #, etc.)

Sur la base de notre structure supposée ("LabEx" + quatre chiffres), le masque serait LabEx?d?d?d?d. Cela indique à Hashcat d'essayer toutes les combinaisons commençant par la chaîne littérale "LabEx" et se terminant par toute séquence de quatre chiffres de 0000 à 9999.

Effectuons un essai à blanc pour voir quels mots de passe ce masque va générer. L'indicateur -a 3 spécifie une attaque par masque, et --stdout indique à Hashcat d'afficher les candidats générés à l'écran au lieu d'effectuer une véritable attaque.

hashcat --stdout -a 3 LabEx?d?d?d?d

Cette commande affichera rapidement des milliers de mots de passe potentiels dans votre terminal, en commençant par LabEx0000, LabEx0001, et ainsi de suite, jusqu'à atteindre LabEx9999. Vous pouvez appuyer sur Ctrl+C pour arrêter la sortie à tout moment.

Cela confirme que notre masque est correctement construit pour inclure le mot de passe cible, LabEx2024.

Exécuter l'attaque pour récupérer le mot de passe du volume

Dans cette dernière étape, vous allez assembler toutes les pièces pour lancer l'attaque et récupérer le mot de passe du volume VeraCrypt. Vous avez le fichier de hachage (veracrypt.hash), le mode de hachage (13721) et le masque d'attaque (LabEx?d?d?d?d).

Assemblons la commande Hashcat finale :

  • -m 13721 : Définit le mode de hachage pour VeraCrypt (SHA512).
  • -a 3 : Définit le mode d'attaque sur une attaque par masque.
  • veracrypt.hash : Le fichier de hachage cible.
  • LabEx?d?d?d?d : Le masque de mot de passe à utiliser.

Exécutez maintenant la commande dans votre terminal :

hashcat -m 13721 -a 3 veracrypt.hash LabEx?d?d?d?d

Hashcat va démarrer. Comme l'espace des mots de passe est petit, l'attaque devrait se terminer très rapidement. Vous verrez des mises à jour de statut, puis le résultat final.

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: VeraCrypt SHA512 + XTS 512 bit
Hash.Target......: veracrypt.hash
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Mask.......: LabEx?d?d?d?d [9]
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........:  XXXXXX H/s (0.01ms) @ Accel:X Loops:X
Recovered........: 1/1 (100.00%) Digests
Progress.........: 10000/10000 (100.00%)
Rejected.........: 0/10000 (0.00%)
Restore.Point....: 10000/10000 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1
Candidates.#1....: LabEx0000 -> LabEx9999
Hardware.Mon.#1..: Util: 99%

veracrypt.hash:LabEx2024

All hashes have been recovered.
...

Succès ! La ligne veracrypt.hash:LabEx2024 indique que Hashcat a réussi à récupérer le mot de passe.

Hashcat enregistre automatiquement les mots de passe cassés dans un fichier appelé hashcat.potfile. Vous pouvez consulter le mot de passe récupéré à tout moment en utilisant l'option --show :

hashcat -m 13721 --show veracrypt.hash

Cela affichera simplement à nouveau le hachage et le mot de passe cassés.

veracrypt.hash:LabEx2024

Félicitations, vous avez réussi à casser un mot de passe de volume VeraCrypt en utilisant Hashcat !

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique de l'analyse de la sécurité des mots de passe en ciblant un volume chiffré VeraCrypt.

Vous avez réussi à effectuer les étapes clés d'un processus de récupération de mot de passe :

  1. Créé un conteneur chiffré à l'aide des outils en ligne de commande de VeraCrypt.
  2. Extrait les données de hachage de 512 octets nécessaires à une attaque hors ligne.
  3. Utilisé le système d'aide de Hashcat pour identifier le mode de hachage correct pour votre cible.
  4. Construit et testé une attaque par masque ciblée basée sur une structure de mot de passe connue.
  5. Exécuté l'attaque pour récupérer avec succès le mot de passe du volume.

Ces compétences sont fondamentales dans les domaines du piratage éthique et de la criminalistique numérique, démontrant comment les politiques et les structures de mots de passe peuvent être testées pour détecter les faiblesses. Comprendre ces vecteurs d'attaque est la première étape vers la construction de défenses plus solides.