Introduction
Hashcat est un outil de récupération de mots de passe de renommée mondiale, capable de casser des mots de passe en utilisant diverses méthodes d'attaque. L'une des techniques les plus fondamentales est l'attaque par dictionnaire, où l'outil teste rapidement une liste de mots de passe potentiels (un "dictionnaire" ou une "liste de mots") contre un hachage de mot de passe cible.
Dans ce laboratoire, vous vous mettrez dans la peau d'un analyste de sécurité pour comprendre les vulnérabilités des mots de passe. Vous apprendrez à effectuer une attaque par dictionnaire de base contre un hachage MD5 d'exemple en utilisant Hashcat. Cette expérience pratique démontrera pourquoi l'utilisation de mots de passe courants et simples peut représenter un risque de sécurité important.
À la fin de ce laboratoire, vous serez capable de :
- Générer un hachage MD5.
- Utiliser une liste de mots standard pour une attaque.
- Exécuter une attaque par dictionnaire avec Hashcat.
- Afficher le mot de passe cassé.
Commençons !
Créer un fichier de hachage MD5 d'exemple
Dans cette étape, nous allons créer la cible de notre attaque. Pour effectuer une attaque par mot de passe, vous avez d'abord besoin d'un hachage de mot de passe. Nous allons générer un hachage MD5 pour un mot de passe simple, "password123", et l'enregistrer dans un fichier. MD5 est un algorithme de hachage largement utilisé mais désormais peu sûr, ce qui en fait un bon exemple pour cet exercice éducatif.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project. Nous utiliserons la commande echo -n pour afficher notre chaîne de caractères du mot de passe. L'option -n est cruciale car elle empêche echo d'ajouter un caractère de nouvelle ligne à la fin, ce qui modifierait le hachage résultant.
Nous redirigeons ensuite (|) cette sortie vers la commande md5sum, qui calcule le hachage MD5. Enfin, nous redirigeons le résultat vers awk '{print $1}' pour extraire uniquement la valeur du hachage elle-même, et nous redirigeons (>) la sortie vers un fichier nommé myhashes.txt.
Exécutez la commande suivante dans votre terminal :
echo -n "password123" | md5sum | awk '{print $1}' > myhashes.txt
Maintenant, vérifions que le fichier a été créé correctement et qu'il contient le hachage. Utilisez la commande cat pour afficher son contenu :
cat myhashes.txt
Vous devriez voir la sortie suivante, qui est le hachage MD5 pour "password123" :
482c811da5d5b4bc6d497ffa98491e38
Vous disposez maintenant d'un fichier contenant le hachage que nous allons tenter de casser.
Localiser la liste de mots rockyou.txt dans Kali
Dans cette étape, nous allons identifier la liste de mots pour notre attaque par dictionnaire. Une liste de mots est simplement un fichier texte contenant un grand nombre de mots de passe potentiels, un par ligne. La liste de mots rockyou.txt est l'une des listes les plus célèbres et les plus couramment utilisées, contenant plus de 14 millions de mots de passe réels issus d'une fuite de données de 2009.
Pour votre commodité, le script de configuration du laboratoire a déjà placé une copie de rockyou.txt dans votre répertoire de travail actuel, ~/project.
Confirmons sa présence et jetons un coup d'œil rapide à son contenu. Utilisez la commande ls -lh pour lister les fichiers du répertoire et voir la taille de la liste de mots :
ls -lh
Vous devriez voir rockyou.txt dans la sortie, ainsi que votre fichier myhashes.txt. Notez sa taille ; c'est un fichier substantiel.
total 134M
-rw-r--r-- 1 labex labex 33 Dec 5 12:00 myhashes.txt
-rw-r--r-- 1 labex labex 134M Jun 11 2021 rockyou.txt
Pour avoir un aperçu de ce à quoi ressemble la liste de mots, vous pouvez utiliser la commande head pour afficher les 10 premières lignes du fichier :
head rockyou.txt
La sortie vous montrera les 10 premiers mots de passe de la liste :
123456
12345
123456789
password
iloveyou
12345678
1234567
111111
123123
qwerty
Maintenant que nous avons notre hachage cible et notre liste de mots, nous sommes prêts à construire la commande d'attaque.
Construire la commande d'attaque par dictionnaire pour MD5
Dans cette étape, nous allons apprendre à construire la commande hashcat pour notre attaque par dictionnaire. Comprendre les composants de la commande est essentiel pour utiliser l'outil efficacement. Nous n'exécuterons pas encore la commande, mais nous allons simplement l'assembler.
Une commande hashcat de base pour une attaque par dictionnaire a la structure suivante :
hashcat [options] <fichier-de-hachage> <fichier-liste-de-mots>
Décomposons les options spécifiques que nous utiliserons :
-a 0: Ceci spécifie le mode d'attaque. Le mode0est pour une attaque "Straight" (directe), qui est l'attaque par dictionnaire standard. Hashcat parcourra simplement la liste de mots fournie et essaiera chaque mot de passe.-m 0: Ceci spécifie le type de hachage. Hashcat prend en charge des centaines de types de hachages, chacun avec un code unique. Le code pour MD5 est0. Vous pouvez trouver une liste complète en exécutanthashcat --help.myhashes.txt: C'est le premier argument après les options, représentant le fichier qui contient le(s) hachage(s) que nous voulons casser.rockyou.txt: C'est le deuxième argument, représentant le fichier de liste de mots à utiliser pour l'attaque.
En assemblant le tout, la commande complète est :
hashcat -a 0 -m 0 myhashes.txt rockyou.txt
Cette commande indique à Hashcat d'effectuer une attaque par dictionnaire (-a 0) sur les hachages MD5 (-m 0) trouvés dans myhashes.txt, en utilisant les mots de passe de rockyou.txt.
Dans la prochaine étape, nous exécuterons cette commande.
Exécuter l'attaque sur le hachage d'échantillon
Dans cette étape, nous allons enfin exécuter la commande que nous avons construite et lancer l'attaque. Hashcat lira le hachage de myhashes.txt et le comparera au hachage MD5 de chaque mot de passe dans rockyou.txt jusqu'à ce qu'il trouve une correspondance.
Exécutez la commande suivante dans votre terminal :
hashcat -a 0 -m 0 myhashes.txt rockyou.txt
Hashcat va démarrer. Vous pourriez voir quelques avertissements, ce qui est normal. Il affichera ensuite un écran de statut qui se met à jour périodiquement. Comme "password123" est un mot de passe très courant et qu'il est inclus dans rockyou.txt, le processus de cassage devrait être très rapide.
La sortie ressemblera à ceci (certains détails peuvent varier) :
hashcat (v6.2.6) starting
...
Session..........: hashcat
Status...........: Running
Hash.Name........: MD5
Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (rockyou.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#1.........: ... H/s (..., p:..., r:...)
...
Progress.........: 14344392/14344392 (100.00%)
Rejected.........: 0/14344392 (0.00%)
Restore.Point....: 14344392/14344392 (100.00%)
Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#1....: $HEX[50617373776f7264] -> zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz.
Afficher le mot de passe cassé avec le drapeau --show
Dans cette étape, vous apprendrez à visualiser les résultats d'une attaque réussie sans avoir à la relancer. Hashcat offre un moyen pratique de le faire en utilisant le drapeau --show. Cette commande vérifie le fichier "potfile" pour tout hachage présent dans votre fichier d'entrée et affiche les mots de passe en clair correspondants s'ils ont été cassés.
Pour afficher le mot de passe cassé du hachage dans myhashes.txt, exécutez la commande suivante :
hashcat -m 0 --show myhashes.txt
Le -m 0 est toujours nécessaire pour que Hashcat sache quel type de hachage rechercher. La sortie sera propre et simple, montrant le hachage suivi de son mot de passe cassé, séparés par un deux-points :
482c811da5d5b4bc6d497ffa98491e38:password123
Pour mieux comprendre où ce résultat est stocké, vous pouvez visualiser directement le contenu du "potfile". L'emplacement par défaut est ~/.local/share/hashcat/hashcat.potfile. Utilisez cat pour l'afficher :
cat ~/.local/share/hashcat/hashcat.potfile
Vous verrez la même paire hachage et mot de passe stockée là-bas. Toute attaque future ajoutera de nouveaux mots de passe cassés à ce fichier.
482c811da5d5b4bc6d497ffa98491e38:password123
Vous avez réussi à casser le hachage MD5 et à récupérer le mot de passe d'origine !
Résumé
Félicitations ! Vous avez réussi à effectuer une attaque par dictionnaire basique à l'aide de Hashcat.
Dans ce laboratoire, vous avez appris le flux de travail fondamental du cassage de mots de passe à des fins éducatives. Vous avez commencé par créer un hachage MD5 cible, puis utilisé la liste de mots courante rockyou.txt. Vous avez construit et exécuté une commande hashcat, en spécifiant le bon mode d'attaque et le bon type de hachage. Enfin, vous avez visualisé le mot de passe cassé à l'aide du drapeau --show, confirmant ainsi le succès de votre attaque.
Cet exercice souligne l'importance capitale d'utiliser des mots de passe forts, uniques et complexes. Un mot de passe trouvé dans une liste de mots courante, comme "password123", peut être cassé en quelques secondes. Utilisez toujours des mots de passe longs, aléatoires et difficiles à deviner pour protéger vos comptes.


