Introduction
Dans ce laboratoire, vous explorerez les capacités de John the Ripper, un outil open-source largement utilisé pour le cassage de mots de passe. Vous vous concentrerez sur le cassage des hachages MD5, couramment utilisés pour stocker les représentations de mots de passe. Comprendre comment casser des hachages est crucial pour les professionnels de la sécurité afin d'évaluer la robustesse des mots de passe et d'identifier les vulnérabilités. Vous apprendrez à générer des hachages MD5, à les préparer pour John the Ripper, puis à utiliser différentes techniques de cassage, notamment les attaques par liste de mots (wordlist attacks) et le mode incrémental (incremental mode).
Générer des Hachages MD5 à partir de Mots de Passe
Dans cette étape, vous allez générer des hachages MD5 pour quelques mots de passe d'exemple. Cela simulera un scénario où vous avez accès à des mots de passe hachés et devez les casser. Vous utiliserez la commande echo redirigée vers md5sum pour créer ces hachages.
Tout d'abord, générons un hachage MD5 pour le mot de passe password123 :
echo -n "password123" | md5sum
Vous devriez voir une sortie similaire à celle-ci :
202cb962ac59075b964b07152d234b70 -
Ensuite, générez des hachages MD5 pour quelques mots de passe supplémentaires : labex et secret.
echo -n "labex" | md5sum
echo -n "secret" | md5sum
Les sorties seront :
202cb962ac59075b964b07152d234b70 -
a0b923820dcc509a86619210ed1572e4 -
5ebe2294ecd0e0f08eab7690d2a6ee69 -
Ces hachages générés seront utilisés dans les étapes suivantes pour le cassage.
Créer un Fichier de Hachages pour MD5
Dans cette étape, vous allez créer un fichier contenant les hachages MD5 que vous avez générés. John the Ripper prend généralement un fichier en entrée, où chaque ligne contient un hachage à casser. Vous allez créer un fichier nommé hashes.txt dans votre répertoire ~/project et le remplir avec les hachages MD5.
Tout d'abord, créons le fichier hashes.txt et ajoutons-y les hachages MD5. Nous ajouterons uniquement la partie hachage, pas le - ni le nom du fichier.
echo "202cb962ac59075b964b07152d234b70" > ~/project/hashes.txt
echo "a0b923820dcc509a86619210ed1572e4" >> ~/project/hashes.txt
echo "5ebe2294ecd0e0f08eab7690d2a6ee69" >> ~/project/hashes.txt
Maintenant, vérifiez le contenu du fichier hashes.txt en utilisant la commande cat :
cat ~/project/hashes.txt
La sortie devrait ressembler à ceci :
202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69
Ce fichier servira d'entrée pour John the Ripper.
Spécifier le Type de Hachage pour John the Ripper
Dans cette étape, vous apprendrez comment indiquer à John the Ripper avec quel type de hachage il travaille. John the Ripper prend en charge une grande variété de types de hachages, et spécifier le type correct est crucial pour un cassage réussi. Pour les hachages MD5, vous utiliserez le format raw-md5.
Pour vérifier si John the Ripper reconnaît raw-md5 et pour voir d'autres formats pris en charge, vous pouvez utiliser l'option --list=formats. Cependant, pour ce laboratoire, nous utiliserons directement le format raw-md5.
Vous pouvez tester John the Ripper avec un seul hachage et spécifier le format en utilisant l'option --format. Cela ne le cassera pas encore, mais cela confirme que John peut traiter le format.
john --format=raw-md5 ~/project/hashes.txt --stdout
Cette commande tentera de traiter les hachages dans hashes.txt en tant que raw-md5 et de les afficher sur la sortie standard. Vous ne verrez pas encore les mots de passe cassés, mais cela confirme que le format est reconnu. La sortie sera les hachages eux-mêmes, car John les traite simplement sans les casser.
202cb962ac59075b964b07152d234b70
a0b923820dcc509a86619210ed1572e4
5ebe2294ecd0e0f08eab7690d2a6ee69
Cette étape garantit que John the Ripper est correctement configuré pour gérer les hachages MD5.
Casser les Hachages MD5 avec une Wordlist
Dans cette étape, vous utiliserez une wordlist (liste de mots) pour casser les hachages MD5. Une attaque par wordlist tente de casser les mots de passe en essayant chaque mot d'une liste prédéfinie. C'est une méthode courante et souvent efficace pour casser les mots de passe faibles.
Tout d'abord, vous avez besoin d'une wordlist. Pour ce laboratoire, vous allez créer un fichier de wordlist simple nommé wordlist.txt dans votre répertoire ~/project contenant des mots de passe courants, y compris ceux que vous avez hachés précédemment.
echo "password123" > ~/project/wordlist.txt
echo "labex" >> ~/project/wordlist.txt
echo "secret" >> ~/project/wordlist.txt
echo "test" >> ~/project/wordlist.txt
echo "admin" >> ~/project/wordlist.txt
Maintenant, utilisez John the Ripper avec l'option wordlist pour casser les hachages :
john --format=raw-md5 --wordlist=~/project/wordlist.txt ~/project/hashes.txt
John the Ripper traitera le fichier hashes.txt, en essayant chaque mot de wordlist.txt contre les hachages MD5. Si une correspondance est trouvée, il affichera le mot de passe cassé.
La sortie devrait montrer les mots de passe cassés :
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
password123 (202cb962ac59075b964b07152d234b70)
labex (a0b923820dcc509a86619210ed1572e4)
secret (5ebe2294ecd0e0f08eab7690d2a6ee69)
3g 0:00:00:00 DONE (2023-10-27 10:30) 100.0% (ETA: 00:00:00) 3.000g/s 15.00p/s 15.00c/s 15.00C/s password123 labex secret
Session completed.
Vous pouvez également utiliser john --show pour afficher les mots de passe cassés à partir du fichier pot de John the Ripper :
john --show ~/project/hashes.txt
Sortie :
202cb962ac59075b964b07152d234b70:password123
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret
3 password hashes cracked, 0 left
Cela démontre l'efficacité des attaques par wordlist contre les mots de passe courants ou facilement devinables.
Casser les Hachages MD5 en Mode Incrémental
Dans cette étape, vous utiliserez le mode incrémental de John the Ripper pour casser les hachages MD5. Le mode incrémental est une attaque par force brute puissante qui essaie des combinaisons de caractères basées sur un jeu de caractères (par exemple, lettres minuscules, chiffres, symboles). Il est utile lorsque l'attaque par wordlist échoue, car elle ne repose pas sur des mots préexistants.
Tout d'abord, nettoyons le fichier pot de John pour nous assurer que nous repartons de zéro pour cette tentative de cassage. C'est important car John stocke les mots de passe cassés, et nous voulons revoir le processus de cassage.
john --session=my_session --restore=NONE
Maintenant, essayons de casser les hachages en utilisant le mode incrémental. À des fins de démonstration, nous utiliserons un jeu de caractères très petit et une longueur maximale courte pour maintenir le temps de cassage gérable. Dans un scénario réel, le mode incrémental peut prendre beaucoup de temps en fonction de la complexité et de la longueur du mot de passe.
john --format=raw-md5 --incremental=alnum --max-len=8 ~/project/hashes.txt
Ici :
--incremental=alnum: Indique à John d'utiliser des caractères alphanumériques (a-z, A-Z, 0-9). John dispose de modes incrémentaux prédéfinis tels quealnum,alpha,digits, etc.--max-len=8: Limite la longueur maximale du mot de passe à 8 caractères. Ceci est crucial pour maintenir un temps de cassage court pour ce laboratoire.
John the Ripper commencera à générer et à tester des combinaisons. Comme nos mots de passe (password123, labex, secret) se trouvent dans le jeu de caractères alnum et que leur longueur est inférieure ou égale à max-len=8 (pour labex et secret), John devrait éventuellement les casser. password123 a 11 caractères, il ne sera donc pas cassé avec max-len=8.
La sortie affichera les mots de passe cassés au fur et à mesure que John les trouve :
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts (raw-md5 [MD5])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
labex (a0b923820dcc509a86619210ed1572e4)
secret (5ebe2294ecd0e0f08eab7690d2a6ee69)
2g 0:00:00:00 DONE (2023-10-27 10:35) 100.0% (ETA: 00:00:00) 2.000g/s 10.00p/s 10.00c/s 10.00C/s labex secret
Session completed.
Vous pouvez à nouveau utiliser john --show pour afficher les mots de passe cassés :
john --show ~/project/hashes.txt
Sortie :
a0b923820dcc509a86619210ed1572e4:labex
5ebe2294ecd0e0f08eab7690d2a6ee69:secret
2 password hashes cracked, 1 left
Notez que password123 n'a pas été cassé cette fois-ci car sa longueur (11 caractères) dépassait la limite --max-len=8. Cela souligne l'importance de définir des paramètres appropriés pour les attaques incrémentales.
Résumé
Dans ce laboratoire, vous avez utilisé avec succès John the Ripper pour casser des hachages MD5. Vous avez commencé par générer des hachages MD5 à partir d'échantillons de mots de passe, puis vous avez créé un fichier de hachages que John the Ripper devait traiter. Vous avez appris à spécifier le type de hachage (raw-md5), puis vous avez appliqué deux techniques de cassage différentes : l'attaque par wordlist et le mode incrémental.
Vous avez observé que les attaques par wordlist sont efficaces contre les mots de passe courants trouvés dans les dictionnaires, tandis que le mode incrémental fournit une approche par force brute pour les mots de passe plus complexes ou inconnus, bien qu'avec des temps de cassage potentiellement beaucoup plus longs. Ce laboratoire fournit une compréhension fondamentale des techniques de cassage de mots de passe à l'aide de John the Ripper, ce qui est une compétence précieuse pour les professionnels de la cybersécurité.


