John the Ripper et Stratégies de Devinette de Mots de Passe

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous plongerez dans le monde de la sécurité des mots de passe en apprenant à utiliser John the Ripper, un outil populaire de cassage de mots de passe open-source. Comprendre comment les mots de passe peuvent être devinés ou cassés est crucial pour développer des pratiques de sécurité plus robustes. Vous explorerez différentes stratégies de devinette de mots de passe, du simple brute-force aux attaques plus avancées par combinaison (combinator) et hybrides. À la fin de ce laboratoire, vous aurez une compréhension pratique de ces techniques et de la manière de les appliquer à l'aide de John the Ripper.

Comprendre les techniques courantes de devinette de mots de passe

Dans cette étape, vous apprendrez les concepts fondamentaux derrière les techniques de devinette de mots de passe, en vous concentrant spécifiquement sur les attaques par dictionnaire et le brute-force simple. John the Ripper peut utiliser ces méthodes pour tenter de casser des mots de passe.

Tout d'abord, utilisons John the Ripper pour casser un hachage MD5 simple à l'aide d'une attaque par dictionnaire. Nous avons déjà préparé un fichier passwords.txt contenant un mot de passe haché et un fichier wordlist.txt avec des mots de passe courants.

Ouvrez votre terminal et naviguez vers le répertoire ~/project.

cd ~/project

Maintenant, exécutez John the Ripper avec le fichier wordlist.txt :

john --format=raw-md5 --wordlist=wordlist.txt passwords.txt

Vous devriez voir une sortie indiquant que John essaie de casser le mot de passe. En cas de succès, il affichera le mot de passe cassé.

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password         (user1)
1g 0:00:00:00 DONE (2023-10-27 08:00) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password

Pour afficher les mots de passe cassés, vous pouvez utiliser l'option --show :

john --show passwords.txt
user1:password

1 password hash cracked, 0 left

Ceci démontre une attaque par dictionnaire basique. John the Ripper a trouvé avec succès "password" dans la liste de mots fournie.

Implémenter le Brute-Force avec des Motifs Spécifiques

Dans cette étape, vous explorerez les attaques par force brute (brute-force) en utilisant le mode incrémental de John the Ripper. Le mode incrémental permet à John de générer des mots de passe basés sur des ensembles de caractères (par exemple, minuscules, majuscules, chiffres, symboles) et la longueur, effectuant ainsi une attaque par force brute.

Tout d'abord, créons un nouveau hachage de mot de passe qui ne se trouve pas dans notre simple liste de mots. Nous utiliserons testuser:testpass (le hachage MD5 de testpass est 5d41402abc4b2a76b9719d911017c592).

echo "testuser:5d41402abc4b2a76b9719d911017c592" > /home/labex/project/brute_passwords.txt

Maintenant, nous allons utiliser John the Ripper en mode incrémental. Pour plus de simplicité et de rapidité, nous limiterons l'ensemble de caractères et la longueur du mot de passe. Nous utiliserons le mode digits pour casser un mot de passe composé uniquement de chiffres.

Supposons que nous ayons un mot de passe de 4 chiffres, par exemple 1234. Le hachage MD5 pour 1234 est 81dc9bdb52d04dc20036dbd8313ed055.

echo "digituser:81dc9bdb52d04dc20036dbd8313ed055" > /home/labex/project/digit_passwords.txt

Maintenant, exécutez John the Ripper en mode incrémental, ciblant spécifiquement les chiffres :

john --format=raw-md5 --incremental=digits digit_passwords.txt

Cette commande essaiera toutes les combinaisons de chiffres jusqu'à ce qu'elle trouve le mot de passe. Cela peut prendre un moment en fonction de la longueur du mot de passe.

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
1234             (digituser)
1g 0:00:00:00 DONE (2023-10-27 08:05) 100.0g/s 100.0p/s 100.0c/s 100.0C/s 1234

Une fois cassé, vous pouvez afficher le résultat :

john --show digit_passwords.txt
digituser:1234

1 password hash cracked, 0 left

Ceci démontre comment le brute-force peut être utilisé lorsque la structure du mot de passe est connue ou limitée.

Utiliser les Attaques Combinatoires

Dans cette étape, vous apprendrez les attaques combinatoires, qui combinent des mots de deux listes de mots différentes. Ceci est utile lorsque les mots de passe sont formés en concaténant deux mots courants.

Tout d'abord, créons un nouveau hachage de mot de passe pour une attaque combinatoire. Nous utiliserons john_doe comme mot de passe (le hachage MD5 de john_doe est 112233445566778899aabbccddeeff00).

echo "combo_user:112233445566778899aabbccddeeff00" > /home/labex/project/combo_passwords.txt

Nous avons déjà préparé base_wordlist.txt avec "john" et "doe". Maintenant, créons une deuxième liste de mots, second_wordlist.txt :

echo "doe" > /home/labex/project/second_wordlist.txt
echo "smith" >> /home/labex/project/second_wordlist.txt

Maintenant, utilisez John the Ripper avec le mode Combinator. Ce mode prend deux listes de mots et combine chaque mot de la première liste avec chaque mot de la seconde liste.

john --format=raw-md5 --rules=Combinator --wordlist=base_wordlist.txt --stdout > /home/labex/project/combined_words.txt
john --format=raw-md5 --wordlist=combined_words.txt combo_passwords.txt

La première commande génère des combinaisons et les enregistre dans combined_words.txt. La seconde commande utilise ensuite cette liste de mots générée pour casser le mot de passe.

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
john_doe         (combo_user)
1g 0:00:00:00 DONE (2023-10-27 08:10) 100.0g/s 100.0p/s 100.0c/s 100.0C/s john_doe

Pour vérifier le mot de passe cassé :

john --show combo_passwords.txt
combo_user:john_doe

1 password hash cracked, 0 left

Ceci démontre à quel point les attaques combinatoires peuvent être efficaces lorsque les mots de passe sont une combinaison de mots connus.

Explorer les Attaques Hybrides avec John the Ripper

Dans cette étape, vous apprendrez les attaques hybrides, qui combinent des mots de dictionnaire avec des éléments de force brute (comme des chiffres ou des caractères spéciaux). C'est une stratégie très courante et efficace pour casser les mots de passe qui sont des variations de mots courants.

Créons un nouveau hachage de mot de passe pour une attaque hybride. Nous utiliserons password123 comme mot de passe (le hachage MD5 de password123 est 28a112233445566778899aabbccddeeff).

echo "hybrid_user:28a112233445566778899aabbccddeeff" > /home/labex/project/hybrid_passwords.txt

Nous utiliserons notre wordlist.txt existant et appliquerons une règle qui ajoute quatre chiffres à chaque mot. Nous avons déjà créé un fichier de règles simple rules.txt lors de la configuration.

Maintenant, exécutez John the Ripper en utilisant wordlist.txt et le fichier de règles personnalisé :

john --format=raw-md5 --wordlist=wordlist.txt --rules=rules.txt hybrid_passwords.txt

Cette commande prendra chaque mot de wordlist.txt et appliquera les règles définies dans rules.txt (ajout de quatre chiffres).

Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
password123      (hybrid_user)
1g 0:00:00:00 DONE (2023-10-27 08:15) 100.0g/s 100.0p/s 100.0c/s 100.0C/s password123

Pour vérifier le mot de passe cassé :

john --show hybrid_passwords.txt
hybrid_user:password123

1 password hash cracked, 0 left

Ceci démontre la puissance des attaques hybrides pour casser les mots de passe qui combinent des mots de dictionnaire avec des motifs prévisibles.

Développer des Stratégies de Devinette Personnalisées

Dans cette étape, vous apprendrez à développer des stratégies de devinette personnalisées en créant et en utilisant vos propres fichiers de règles avec John the Ripper. Cela permet des attaques très ciblées basées sur des modèles de mots de passe connus ou des habitudes d'utilisateurs.

Créons un nouveau hachage de mot de passe pour une stratégie personnalisée. Nous utiliserons LabEx@2023 comme mot de passe (le hachage MD5 de LabEx@2023 est e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5).

echo "custom_user:e0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5" > /home/labex/project/custom_passwords.txt

Maintenant, créons un fichier de règles personnalisé nommé custom_rules.txt qui met en majuscule la première lettre, ajoute @, puis ajoute quatre chiffres.

nano /home/labex/project/custom_rules.txt

Ajoutez le contenu suivant au fichier custom_rules.txt :

:
c
$@
$[0-9]$[0-9]$[0-9]$[0-9]
  • : (règle vide) - Ceci est un espace réservé, souvent utilisé pour commencer un ensemble de règles.
  • c - Met en majuscule la première lettre du mot.
  • $@ - Ajoute le symbole @.
  • $[0-9]$[0-9]$[0-9]$[0-9] - Ajoute quatre chiffres.

Enregistrez et quittez nano (Ctrl+X, Y, Entrée).

Maintenant, utilisons une liste de mots de base contenant "labex" :

echo "labex" > /home/labex/project/base_custom_wordlist.txt

Exécutez John the Ripper avec votre fichier de règles personnalisé :

john --format=raw-md5 --wordlist=base_custom_wordlist.txt --rules=custom_rules.txt custom_passwords.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5])
Cost 1 (MD5 [MD5]) is not supported.
Will run John the Ripper in single-threaded mode.
Press 'q' or Ctrl-C to abort, almost any other key for status.
LabEx@2023       (custom_user)
1g 0:00:00:00 DONE (2023-10-27 08:20) 100.0g/s 100.0p/s 100.0c/s 100.0C/s LabEx@2023

Pour vérifier le mot de passe cassé :

john --show custom_passwords.txt
custom_user:LabEx@2023

1 password hash cracked, 0 left

Ceci démontre la flexibilité du moteur de règles de John the Ripper, vous permettant de créer des stratégies de devinette de mots de passe très spécifiques et efficaces.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique avec John the Ripper, un outil puissant pour le cassage de mots de passe. Vous avez appris et mis en œuvre diverses stratégies de devinette de mots de passe, notamment :

  • Attaques par dictionnaire : Utilisation de listes pré-compilées de mots de passe courants.
  • Attaques par force brute : Essai systématique de toutes les combinaisons de caractères possibles dans un ensemble défini.
  • Attaques par combinatoire : Combinaison de mots provenant de plusieurs listes de mots pour former de nouveaux candidats de mots de passe.
  • Attaques hybrides : Mélange de mots de dictionnaire avec des éléments de force brute à l'aide de règles.
  • Stratégies de devinette personnalisées : Développement de vos propres règles pour cibler des modèles de mots de passe spécifiques.

Comprendre ces techniques est crucial à la fois pour la sécurité offensive (tests d'intrusion) et la sécurité défensive (création de politiques de mots de passe robustes et éducation des utilisateurs). En voyant à quel point il est facile de casser les modèles de mots de passe courants, vous pouvez mieux apprécier l'importance de mots de passe complexes et uniques, ainsi que l'authentification multifacteur.