Introduction
Dans ce laboratoire, vous allez explorer le "mode single crack" de John the Ripper, un puissant outil de cassage de mots de passe. Le mode single crack est particulièrement utile lorsque vous disposez d'une liste d'utilisateurs et que vous souhaitez tenter de casser leurs mots de passe en utilisant des informations dérivées des noms d'utilisateurs eux-mêmes, telles que des permutations ou des variations courantes. Vous apprendrez à préparer un fichier de hachage adapté à ce mode, à exécuter John the Ripper, à observer son processus de cassage, et à comprendre les scénarios spécifiques où le mode single crack est le plus efficace, ainsi que ses limitations. Cette expérience pratique vous fournira des compétences pratiques en matière de sécurité et d'audit des mots de passe.
Préparer un fichier de hachage avec des noms d'utilisateur
Dans cette étape, vous allez préparer un fichier de hachage que John the Ripper pourra utiliser en mode single crack. Le mode single crack exploite les informations du nom d'utilisateur lui-même pour générer des mots de passe potentiels. Pour que cela fonctionne efficacement, votre fichier de hachage doit contenir des noms d'utilisateur.
Tout d'abord, assurez-vous d'être dans le répertoire de votre projet.
cd ~/project
Ensuite, créons un fichier de mots de passe simple nommé my_hashes.txt avec quelques entrées. Nous utiliserons un hachage MD5 connu pour le mot de passe "password" (5f4dcc3b5aa765d61d8327deb882cf99) à des fins de démonstration.
echo "user1:5f4dcc3b5aa765d61d8327deb882cf99" > my_hashes.txt
echo "john:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "mary:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "testuser:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
echo "admin:5f4dcc3b5aa765d61d8327deb882cf99" >> my_hashes.txt
Vous pouvez vérifier le contenu du fichier en utilisant la commande cat :
cat my_hashes.txt
Sortie attendue :
user1:5f4dcc3b5aa765d61d8327deb882cf99
john:5f4dcc3b5aa765d61d8327deb882cf99
mary:5f4dcc3b5aa765d61d8327deb882cf99
testuser:5f4dcc3b5aa765d61d8327deb882cf99
admin:5f4dcc3b5aa765d61d8327deb882cf99
Ce fichier contient maintenant des noms d'utilisateur et leurs hachages de mots de passe correspondants, prêts pour le mode single crack de John the Ripper.
Exécuter John the Ripper en mode Single Crack
Dans cette étape, vous allez exécuter John the Ripper en utilisant le mode single crack contre le fichier de hachage que vous avez préparé. John tentera de casser les mots de passe en dérivant des mots de passe potentiels à partir des noms d'utilisateurs.
Pour exécuter John the Ripper en mode single crack, utilisez l'option --single suivie du chemin vers votre fichier de hachage.
john --single my_hashes.txt
John the Ripper commencera à traiter les hachages. Comme le mot de passe "password" est un mot courant et que les noms d'utilisateurs sont simples, John pourrait rapidement en casser certains. La sortie affichera les mots de passe cassés.
Exemple de sortie :
Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password (user1)
password (john)
password (mary)
password (testuser)
password (admin)
5g 0:00:00:00 DONE (2023-10-27 08:30) 100% ...
Session completed.
Une fois que John aura terminé, vous pourrez consulter les mots de passe cassés qui ont été enregistrés dans le fichier "pot" de John.
john --show my_hashes.txt
Sortie attendue :
user1:password
john:password
mary:password
testuser:password
admin:password
5 password hashes cracked, 0 left
Cette commande affiche tous les mots de passe que John a réussi à casser à partir du fichier my_hashes.txt.
Observer le comportement du mode Single Crack
Dans cette étape, vous allez observer comment se comporte le mode single crack de John the Ripper et quel type de candidats de mots de passe il génère. Le mode single crack est unique car il n'utilise pas directement une liste de mots (wordlist) ni une attaque par force brute (brute-force). Au lieu de cela, il utilise le nom d'utilisateur (ou le champ GECOS s'il est disponible) comme base pour générer des suppositions de mots de passe.
Nettoyons le fichier "pot" de John pour assurer une nouvelle exécution à des fins d'observation. Ceci n'est généralement pas fait dans un scénario réel, mais cela aide pour la démonstration.
john --session=clear --format=Raw-MD5 --pot=/home/labex/.john/john.pot
Exécutons maintenant John à nouveau en mode single, mais cette fois, portons une attention particulière à la sortie et à la manière dont il traite chaque entrée.
john --single my_hashes.txt
Pendant que John s'exécute, vous remarquerez qu'il essaie des variations du nom d'utilisateur. Par exemple, pour john, il pourrait essayer john, John, JOHN, john1, john123, johnny, j0hn, etc. Les variations exactes dépendent des règles internes de John et du fichier de configuration john.conf.
Le point clé à retenir est que le mode single crack est très efficace pour casser les mots de passe qui sont de simples variations du nom d'utilisateur. C'est une vérification rapide avant de recourir à des méthodes plus gourmandes en ressources comme les attaques par dictionnaire ou la force brute.
Vous pouvez également inspecter le fichier de configuration de John pour comprendre les règles qu'il utilise pour le mode single. Bien que nous ne le modifierons pas, connaître son emplacement est utile.
ls -l /etc/john/john.conf
Sortie attendue :
-rw-r--r-- 1 root root 12345 Oct 27 08:00 /etc/john/john.conf
(La taille du fichier et la date peuvent varier)
Ce fichier contient les ensembles de règles pour le mode single crack, entre autres.
Comprendre les limitations du mode Single Crack
Dans cette étape, vous allez comprendre les limitations du mode single crack de John the Ripper. Bien qu'il soit puissant pour certains scénarios, ce n'est pas une solution universelle pour tous les besoins de cassage de mots de passe.
Le mode single crack repose principalement sur les permutations et les variations du nom d'utilisateur (et parfois du champ GECOS de /etc/passwd). Cela signifie :
- Portée limitée : Il n'essaiera que les mots de passe qui sont directement dérivables du nom d'utilisateur. Si un mot de passe est "apple" et que le nom d'utilisateur est "user1", le mode single crack échouera probablement car "apple" n'a pas de relation directe avec "user1".
- Pas de listes de mots externes : Contrairement au mode d'attaque par dictionnaire (dictionary attack), le mode single crack n'utilise pas de liste de mots externe. Cela le rend rapide mais limite également sa capacité à casser les mots de passe qui sont des mots courants non liés au nom d'utilisateur.
- Pas de force brute : Il n'effectue pas d'attaque par force brute complète, qui essaierait toutes les combinaisons de caractères possibles. Cela signifie que les mots de passe complexes et aléatoires ont très peu de chances d'être cassés par ce mode.
- Dépendance aux noms d'utilisateurs : Son efficacité est directement liée à la qualité et à la pertinence des noms d'utilisateurs. Si les noms d'utilisateurs sont génériques (par exemple,
user,admin), les candidats de mots de passe générés pourraient être moins efficaces.
Pour démontrer cette limitation, ajoutons un hachage pour un mot de passe qui n'est pas lié au nom d'utilisateur. Nous allons ajouter randomuser:e10adc3949ba59abbe56e057f20f883e où e10adc3949ba59abbe56e057f20f883e est le hachage MD5 pour 123456.
echo "randomuser:e10adc3949ba59abbe56e057f20f883e" >> my_hashes.txt
cat my_hashes.txt
Exécutons maintenant John en mode single à nouveau :
john --single my_hashes.txt
Vous observerez que le mot de passe de randomuser (123456) n'est pas cassé, car 123456 n'est pas une dérivation de randomuser.
Sortie attendue (notez que randomuser n'est pas cassé) :
Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
password (user1)
password (john)
password (mary)
password (testuser)
password (admin)
5g 0:00:00:00 DONE (2023-10-27 08:35) 100% ...
Session completed.
Cela illustre clairement que le mode single crack n'est efficace que lorsque les mots de passe sont de simples variations du nom d'utilisateur.
Comparer le mode Single Crack avec d'autres modes
Dans cette dernière étape, vous allez comparer brièvement le mode single crack avec d'autres modes de cassage courants dans John the Ripper, tels que le mode liste de mots (wordlist mode) et le mode force brute (brute-force mode). Comprendre ces différences est crucial pour choisir le bon outil pour la tâche.
Mode Single Crack (
--single) :- Méthode : Génère des candidats de mots de passe basés sur le nom d'utilisateur (et le champ GECOS).
- Cas d'utilisation : Idéal pour des vérifications rapides contre les mots de passe qui sont de simples variations de noms d'utilisateurs. Très rapide.
- Limitations : Portée limitée ; ne cassera pas les mots de passe sans rapport avec le nom d'utilisateur.
Mode Liste de Mots (
--wordlist=FILE) :- Méthode : Essaie les mots de passe à partir d'un dictionnaire ou d'un fichier de liste de mots fourni. Peut être combiné avec des règles (
--rules) pour les permutations. - Cas d'utilisation : Le plus courant et le plus efficace pour casser les mots de passe qui sont des mots courants, des phrases ou des combinaisons trouvées dans les dictionnaires.
- Limitations : Seulement aussi bon que la liste de mots ; ne cassera pas les mots de passe qui ne sont pas présents dans la liste ou ses permutations.
- Méthode : Essaie les mots de passe à partir d'un dictionnaire ou d'un fichier de liste de mots fourni. Peut être combiné avec des règles (
Mode Incrémental (Force Brute) (
--incremental) :- Méthode : Essaie systématiquement toutes les combinaisons de caractères possibles dans un jeu de caractères et une longueur définis.
- Cas d'utilisation : Dernier recours pour casser les mots de passe complexes non trouvés par d'autres méthodes. Garantit de trouver le mot de passe si suffisamment de temps est accordé.
- Limitations : Extrêmement long, surtout pour les mots de passe plus longs ou les jeux de caractères plus grands. Peut prendre des jours, des mois, voire des années.
Démontrons le cassage du mot de passe de randomuser (123456) en utilisant le mode liste de mots. Tout d'abord, créons une liste de mots simple contenant "123456".
echo "123456" > my_wordlist.txt
Exécutons maintenant John en mode liste de mots :
john --wordlist=my_wordlist.txt my_hashes.txt
Sortie attendue :
Using default input encoding: UTF-8
Loaded 6 password hashes with no different salts (Raw-MD5 [MD5])
Press 'q' or Ctrl-C to abort, almost any other key for status
123456 (randomuser)
1g 0:00:00:00 DONE (2023-10-27 08:40) 100% ...
Session completed.
Comme vous pouvez le voir, le mot de passe de randomuser a été cassé en utilisant la liste de mots. Cela souligne que différents modes de cassage conviennent à différents types de mots de passe. Le mode single crack est une bonne première étape, mais il doit souvent être suivi des modes liste de mots ou incrémental pour un cassage plus complet.
Enfin, nettoyons les fichiers créés :
rm my_hashes.txt my_wordlist.txt
Résumé
Dans ce laboratoire, vous avez appris avec succès à utiliser le mode single crack de John the Ripper. Vous avez préparé un fichier de hachages avec des noms d'utilisateurs, exécuté John en mode single crack et observé son comportement lors du cassage des mots de passe dérivés des noms d'utilisateurs. Vous avez également compris les limitations du mode single crack, réalisant qu'il est plus efficace pour des modèles de mots de passe spécifiques et qu'il ne s'agit pas d'une solution universelle. Enfin, vous avez comparé le mode single crack avec d'autres modes courants de John the Ripper tels que le mode liste de mots (wordlist) et le mode incrémental (incremental), en soulignant quand chaque mode est le plus approprié. Cette expérience pratique améliore votre compréhension des techniques d'audit de sécurité des mots de passe.


