Attaques par Dictionnaire Hashcat

LinuxBeginner
Pratiquer maintenant

Introduction

Hashcat est un outil de récupération de mots de passe puissant et polyvalent, largement utilisé en cybersécurité pour tester la robustesse des mots de passe et récupérer des mots de passe perdus. Il prend en charge de nombreux algorithmes de hachage et plusieurs modes d'attaque.

Dans ce laboratoire, vous vous concentrerez sur l'une des techniques de cassage de mot de passe les plus fondamentales : l'attaque par dictionnaire. Vous apprendrez à utiliser le mode d'attaque "Straight" (-a 0) de Hashcat pour casser un hachage MD5 simple à l'aide d'une liste de mots personnalisée. Cette expérience pratique vous fournira une base solide pour comprendre le fonctionnement du cassage de mot de passe.

Comprendre le concept d'attaque par dictionnaire (-a 0)

Dans cette étape, vous allez découvrir l'attaque par dictionnaire et comment elle est implémentée dans Hashcat.

L'attaque par dictionnaire est une méthode visant à pénétrer un système protégé par mot de passe en essayant systématiquement chaque mot d'une liste, appelée dictionnaire ou wordlist, comme mot de passe. C'est une technique simple mais efficace, particulièrement contre les mots de passe faibles ou courants.

Hashcat désigne cette méthode comme une attaque "Straight" (Directe), à laquelle est attribué le numéro de mode d'attaque 0. Vous spécifiez le mode d'attaque en utilisant l'option -a.

Utilisons la commande hashcat --help pour voir des exemples du mode d'attaque 0. Nous pouvons rediriger la sortie vers grep pour trouver les lignes spécifiques.

hashcat --help | grep -- "-a 0"

Vous verrez la sortie suivante, montrant des exemples d'attaques par dictionnaire utilisant -a 0 :

  Wordlist         | $P$   | hashcat -a 0 -m 400 example400.hash example.dict
  Wordlist + Rules | MD5   | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule

Ceci confirme que pour effectuer une attaque par dictionnaire, vous utiliserez l'option -a 0 dans votre commande Hashcat, où -a 0 représente le mode d'attaque Straight (par dictionnaire).

Préparer un fichier de hachage cible et une liste de mots simple

Dans cette étape, vous allez préparer les deux fichiers essentiels nécessaires pour une attaque par dictionnaire : un fichier contenant le hachage cible et un fichier de liste de mots (wordlist). Toutes les opérations seront effectuées dans le répertoire ~/project.

Premièrement, créons un fichier pour stocker notre hachage cible. Nous utiliserons le hachage MD5 de la chaîne "password123", qui est 482c811da5d5b4bc6d497ffa98491e38.

Utilisez la commande echo pour créer un fichier nommé my_hash.txt contenant ce hachage.

echo "482c811da5d5b4bc6d497ffa98491e38" > my_hash.txt

Ensuite, créez un fichier de liste de mots simple nommé my_wordlist.txt. Une wordlist du monde réel peut contenir des millions de mots, mais pour ce laboratoire, nous en créerons une petite qui inclut le mot de passe correct.

echo "password" > my_wordlist.txt
echo "123456" >> my_wordlist.txt
echo "password123" >> my_wordlist.txt
echo "qwerty" >> my_wordlist.txt

Maintenant, vérifiez le contenu des deux fichiers en utilisant la commande cat.

Vérifiez d'abord le fichier de hachage :

cat my_hash.txt

Sortie attendue :

482c811da5d5b4bc6d497ffa98491e38

Puis, vérifiez le fichier de liste de mots :

cat my_wordlist.txt

Sortie attendue :

password
123456
password123
qwerty

Vous disposez maintenant d'un hachage cible et d'une liste de mots, prêts pour l'attaque.

Lancer une attaque par dictionnaire sur un hachage MD5

Dans cette étape, vous allez lancer l'attaque par dictionnaire contre le hachage MD5 que vous avez préparé.

Pour ce faire, vous devez construire une commande Hashcat qui spécifie le mode d'attaque, le type de hachage, le fichier de hachage et le fichier de liste de mots (wordlist).

La structure de la commande est la suivante :
hashcat [options] [fichier_hachage] [fichier_liste_de_mots]

Voici les options que nous allons utiliser :

  • -a 0 : Spécifie le mode d'attaque Straight (par dictionnaire).
  • -m 0 : Spécifie le type de hachage. 0 correspond à MD5. Il est crucial de faire correspondre correctement le type de hachage.
  • --force : Cette option est souvent nécessaire dans les environnements virtualisés ou lors de l'exécution sur CPU pour contourner certains avertissements et forcer l'exécution de Hashcat.

Exécutez maintenant la commande pour démarrer l'attaque :

hashcat -a 0 -m 0 my_hash.txt my_wordlist.txt --force

Hashcat démarrera et affichera un écran de statut. Étant donné que notre liste de mots est très petite, le processus se terminera presque instantanément. La sortie ressemblera à ceci (certains détails comme l'heure de début varieront) :

hashcat (v6.2.6) starting

... (some initial warnings and info) ...

Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38
Time.Started.....: Sun Nov 19 10:30:00 2023 (0 secs)
Time.Estimated...: Sun Nov 19 10:30:00 2023 (0 secs)
Guess.Base.......: File (my_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#*.........:   133.7 kH/s (0.02ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#*...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#*....: password123 -> qwerty
Hardware.Mon.#*..: Temp: 45c

Started: ...
Stopped: ...

La ligne Status...........: Cracked indique que le mot de passe a été trouvé avec succès dans votre liste de mots.

Analyser le statut de sortie et les mots de passe trouvés

Dans cette étape, vous allez examiner de plus près la sortie de l'étape précédente pour comprendre sa signification. Lorsque Hashcat réussit à casser un hachage, il enregistre le résultat dans un fichier appelé « potfile » et signale le succès à l'écran.

Décortiquons les lignes clés de la sortie de statut :

  • Status...........: Cracked : C'est l'indicateur le plus important. Il confirme qu'au moins un hachage a été cassé avec succès. S'il indiquait Exhausted (Épuisé), cela signifierait que Hashcat a essayé chaque mot de la liste de mots sans succès.
  • Hash.Type........: MD5 : Confirme l'algorithme de hachage ciblé.
  • Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38 : Affiche le hachage attaqué.
  • Guess.Base.......: File (my_wordlist.txt) : Indique que la source des candidats mots de passe est notre fichier de liste de mots.
  • Recovered........: 1/1 (100.00%) Digests : Montre que sur 1 hachage total fourni, 1 a été récupéré.
  • Progress.........: 4/4 (100.00%) : Indique que les 4 mots de notre liste de mots ont été testés.

Après un cassage réussi, Hashcat stocke automatiquement le hachage cassé et son mot de passe en clair correspondant dans son potfile. L'emplacement par défaut de ce fichier est ~/.local/share/hashcat/hashcat.potfile. Cela vous évite de perdre du temps à recasser le même hachage à l'avenir.

Vous pouvez vérifier que le potfile a été créé en listant son contenu, mais nous utiliserons une fonctionnalité plus directe de Hashcat à l'étape suivante.

Afficher le mot de passe déchiffré à l'aide de l'option '--show'

Dans cette étape, vous apprendrez à afficher le mot de passe cassé en utilisant une option pratique de Hashcat.

Bien que vous puissiez regarder directement dans le potfile, Hashcat fournit l'option --show pour afficher les mots de passe cassés correspondant aux hachages d'un fichier donné. Elle compare votre fichier de hachage avec son potfile et affiche toutes les correspondances trouvées.

Pour utiliser cette option, vous devez fournir le fichier de hachage original et spécifier le type de hachage, tout comme vous l'avez fait pour l'attaque.

Exécutez la commande suivante :

hashcat -m 0 my_hash.txt --show

Hashcat affichera immédiatement le résultat au format hash:password.

482c811da5d5b4bc6d497ffa98491e38:password123

Cette sortie montre clairement le hachage MD5 original et son mot de passe en clair correspondant, "password123".

À titre de comparaison, vous pouvez également visualiser le contenu brut du potfile. Cela affichera les mêmes informations, mais --show est souvent plus propre lorsque vous souhaitez vérifier des hachages spécifiques.

cat ~/.local/share/hashcat/hashcat.potfile

Sortie attendue :

482c811da5d5b4bc6d497ffa98491e38:password123

L'utilisation de --show est la manière standard de vérifier les mots de passe déjà cassés dans la base de données de Hashcat.

Résumé

Dans ce laboratoire, vous avez appris les bases de l'exécution d'une attaque par dictionnaire avec Hashcat. Vous avez réussi à casser un hachage MD5 en testant des candidats à partir d'une petite liste de mots personnalisée.

Vous avez acquis une expérience pratique des compétences clés suivantes :

  • Comprendre le concept d'attaque par dictionnaire et le mode d'attaque Direct (-a 0) de Hashcat.
  • Préparer un fichier de hachage cible et un fichier de liste de mots.
  • Lancer une attaque sur un hachage MD5 en spécifiant le mode d'attaque correct (-a 0) et le type de hachage (-m 0).
  • Analyser l'écran de statut pour confirmer un cassage réussi.
  • Afficher le mot de passe cassé à l'aide de l'option --show.

Ces connaissances constituent une base essentielle pour explorer des techniques de cassage de mots de passe plus avancées et comprendre l'importance d'utiliser des mots de passe forts et uniques.