Craquage de mots de passe Kali avec John

CybersécuritéBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les fondamentaux du craquage de mots de passe avec Kali Linux, en vous concentrant sur l'outil puissant John the Ripper. L'objectif principal est de comprendre comment craquer des hashs de mots de passe Linux, qui sont des représentations chiffrées des mots de passe généralement stockées dans le fichier /etc/shadow. Cette compétence est essentielle lors des tests d'intrusion pour identifier les mots de passe faibles et renforcer la sécurité des systèmes.

Lorsque vous ouvrez le terminal, vous serez automatiquement placé dans un shell de conteneur Kali Linux. Toutes les commandes de ce laboratoire doivent être exécutées dans cet environnement. Grâce à des instructions guidées étape par étape, vous travaillerez avec des fichiers de hashs d'exemple, créerez et utiliserez des listes de mots personnalisées, et enregistrerez vos résultats pour une analyse ultérieure. Ce laboratoire est conçu pour les débutants et maintient le flux de travail concentré sur John the Ripper, qui fonctionne de manière fiable dans l'environnement de conteneur fourni.

Configuration de l'environnement et installation des outils

Dans cette première étape, nous allons préparer l'environnement Kali Linux en installant l'outil principal pour ce laboratoire. Comme mentionné, votre session de terminal s'exécute déjà à l'intérieur d'un conteneur Kali Linux.

Nous utiliserons John the Ripper, un outil de craquage de mots de passe polyvalent et largement utilisé qui fonctionne de manière fiable dans le conteneur LabEx fourni.

Tout d'abord, mettez à jour la liste des paquets pour vous assurer d'avoir accès aux dernières versions des logiciels.

apt update

Ensuite, installez John the Ripper en utilisant la commande suivante. L'option -y confirme automatiquement l'installation.

apt install -y john

Le processus d'installation peut prendre quelques minutes. Une fois terminé, vous pouvez vérifier que John the Ripper est correctement installé en l'exécutant sans aucune option.

john

Vous devriez voir les informations d'aide et de version, ce qui confirme que l'outil est prêt. La sortie ressemblera à ceci :

John the Ripper 1.9.0-jumbo-1+bleeding-aec1328d6c 2021-11-02 10:45:52 +0100 OMP [linux-gnu 64-bit x86_64 AVX512BW AC]
Copyright (c) 1996-2021 by Solar Designer and others
Homepage: https://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
...

Avec John the Ripper installé et vérifié, votre environnement est maintenant prêt pour les exercices de craquage de mots de passe des étapes suivantes.

Création d'un fichier de hashs d'exemple

Maintenant que les outils sont installés, nous avons besoin de données sur lesquelles travailler. Dans cette étape, vous allez créer un fichier contenant de vrais hashs de mots de passe Linux que John the Ripper peut traiter. Ces hashs sont formatés pour imiter ceux trouvés dans le fichier /etc/shadow, qui stocke en toute sécurité les informations de mots de passe des utilisateurs sur les systèmes Linux. Cela vous permet de vous entraîner au craquage de manière sûre et contrôlée.

Toutes les opérations seront effectuées dans le répertoire /root du conteneur Kali. Nous allons créer le fichier de hashs directement avec des hashs réels pré-générés pour des mots de passe simples et courants qui peuvent être craqués rapidement.

Créez le fichier de hashs d'exemple directement avec la commande suivante :

cd /root
echo -e "user1:\$6\$randomsalt\$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::\nuser2:\$6\$anothersalt\$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::" > sample_hashes.txt

Alternativement, vous pouvez créer le fichier manuellement en copiant et collant le contenu :

cd /root
cat > sample_hashes.txt << 'EOF'
user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::
EOF

Le préfixe $6$ sur chaque ligne indique que le hash est un hash SHA-512 crypt, un standard courant pour les systèmes Linux modernes. Le format suit la structure du fichier shadow : username:hashed_password:last_change:min_age:max_age:warning:inactive:expire:reserved.

Pour confirmer que le fichier a été créé correctement, affichez son contenu en utilisant la commande cat :

cat /root/sample_hashes.txt

La sortie devrait afficher les deux entrées utilisateur avec les valeurs de hash réelles :

user1:$6$randomsalt$WS2qjCQ1JrmZv8otdbtntIYu6lRzkk2aIVhgIMdMexOcvD9bEAoxtKcyZLXbR3wlhOOPBscJbLCPUU/fYjFhM0:18234:0:99999:7:::
user2:$6$anothersalt$ZffCt8y5Hl8gLYS79/rhyT76C12kNhuOvkFR8Ll0RXcjQz2Nzuh3VUdT//e21HYfH6fP9btOp2aG22O3S7q1z/:18234:0:99999:7:::

Notes importantes :

  • Ce sont de vrais hashs SHA-512 correctement formatés que John the Ripper peut traiter.
  • Les mots de passe sont password et 123456 - des mots de passe très simples et courants qui sont garantis d'être dans la liste de mots par défaut de John.
  • Cela garantit un craquage rapide à des fins de démonstration, généralement en quelques secondes.

Avec ce fichier de données d'exemple prêt, vous avez maintenant une cible pour votre pratique du craquage de mots de passe. Dans l'étape suivante, vous utiliserez John the Ripper pour tenter de craquer ces hashs.

Craquage de hashs avec le mode par défaut de John the Ripper

Avec le fichier de hashs d'exemple en place, il est temps de commencer le craquage avec John the Ripper. Par défaut, John utilise plusieurs modes, dont un mode « single crack » qui utilise le nom d'utilisateur et d'autres informations pour deviner les mots de passe, suivi d'un mode liste de mots avec sa liste intégrée. C'est un excellent point de départ pour identifier les mots de passe faibles et courants.

Exécutez la commande suivante pour démarrer le processus de craquage sur votre fichier sample_hashes.txt.

john /root/sample_hashes.txt

John chargera les hashs et commencera sa session de craquage. Vous verrez une sortie indiquant sa progression. Comme nous avons créé de vrais hashs avec des mots de passe très simples et courants (password et 123456), John devrait être capable de les craquer rapidement en utilisant son mode liste de mots par défaut.

Using default input encoding: UTF-8
Loaded 2 password hashes with 2 different salts (sha512crypt, crypt(3) $6$ [SHA512 512/512 AVX512BW 8x])
Cost 1 (iteration count) is 5000 for all loaded hashes
Will run 2 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
...

Vous pouvez laisser John tourner pendant un moment pour tenter le craquage, ou arrêter le processus avec Ctrl-C si vous souhaitez vérifier les résultats rapidement. Pour voir les mots de passe qui ont été craqués, utilisez l'option --show.

john --show /root/sample_hashes.txt

Si les mots de passe sont craqués avec succès, la sortie devrait ressembler à ceci :

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

Comme nous avons utilisé des mots de passe très simples (password et 123456) qui sont presque certainement dans la liste de mots par défaut de John, ces hashs devraient être craqués très rapidement - souvent en quelques secondes. Ce succès démontre que John the Ripper fonctionne correctement avec notre fichier de hashs réel et montre à quelle vitesse les mots de passe faibles peuvent être compromis.

Dans l'étape suivante, nous explorerons comment fournir à John des listes de mots personnalisées et ajuster divers paramètres pour améliorer l'efficacité du craquage.

Utilisation d'une liste de mots personnalisée avec John the Ripper

Se fier aux paramètres par défaut n'est souvent pas suffisant. Une attaque ciblée utilisant une liste de mots personnalisée peut être bien plus efficace. Une liste de mots est simplement un fichier texte contenant un mot de passe potentiel par ligne. Dans cette étape, vous allez créer une petite liste de mots personnalisée et l'utiliser avec John the Ripper.

Créez un fichier nommé custom_wordlist.txt dans le répertoire /root avec quelques mots de passe courants, y compris ceux que nous savons être dans notre fichier de hashs.

echo -e "password\n123456\nadmin123\ntest1234\nqwerty\npassword123" > /root/custom_wordlist.txt

Vérifiez le contenu de votre nouvelle liste de mots.

cat /root/custom_wordlist.txt

La sortie devrait afficher les six mots de passe que vous venez d'ajouter :

password
123456
admin123
test1234
qwerty
password123

Maintenant, exécutez John the Ripper à nouveau, mais cette fois, spécifiez votre liste de mots personnalisée en utilisant l'option --wordlist.

john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt

Cette commande indique à John de tester chaque mot de passe dans custom_wordlist.txt contre les hashs dans sample_hashes.txt. Comme notre liste de mots contient les mots de passe réels (password et 123456) qui correspondent aux hashs dans notre fichier, John devrait les craquer très rapidement.

Une fois le processus terminé, vérifiez à nouveau les résultats.

john --show /root/sample_hashes.txt

Comme notre liste de mots contient les mots de passe corrects, la sortie devrait maintenant afficher les identifiants craqués :

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

Cela démontre l'efficacité des attaques par liste de mots ciblée. En incluant les mots de passe réels dans notre liste de mots personnalisée, nous avons pu craquer les hashs beaucoup plus rapidement qu'en nous fiant uniquement à la liste de mots par défaut de John. Cette technique est fondamentale pour les attaques de mots de passe ciblées. Dans la dernière étape, vous enregistrerez les identifiants craqués dans un fichier de rapport pour une analyse ultérieure.

Enregistrement des mots de passe craqués

Dans cette étape, vous allez enregistrer les identifiants craqués de votre session John the Ripper dans un fichier de rapport. C'est une habitude pratique lors des travaux d'audit de mots de passe, car cela vous permet de revoir les comptes récupérés plus tard sans avoir à relancer le processus de craquage.

Utilisez john --show pour afficher les mots de passe récupérés, puis redirigez cette sortie vers /root/cracked_passwords.txt.

john --show /root/sample_hashes.txt > /root/cracked_passwords.txt

Affichez le rapport enregistré pour confirmer qu'il contient bien les identifiants craqués.

cat /root/cracked_passwords.txt

La sortie devrait ressembler à ceci :

user1:password:18234:0:99999:7:::
user2:123456:18234:0:99999:7:::

2 password hashes cracked, 0 left

Si le fichier ne contient pas encore de mots de passe craqués, relancez la commande john --wordlist=/root/custom_wordlist.txt /root/sample_hashes.txt de l'étape précédente, puis enregistrez à nouveau les résultats.

En enregistrant les mots de passe craqués dans un fichier, vous terminez le flux de travail, de la préparation des hashs jusqu'à la documentation des résultats. Cela vous donne un enregistrement réutilisable que vous pouvez inspecter ou partager lors d'une revue de sécurité contrôlée.

Résumé

Dans ce laboratoire, vous avez acquis une expérience pratique des techniques fondamentales de craquage de mots de passe dans un environnement Kali Linux. Vous avez commencé par configurer votre espace de travail et installer John the Ripper. Vous avez ensuite appris à préparer les données cibles en créant un fichier de hashs d'exemple qui imite le format /etc/shadow de Linux.

Vous vous êtes entraîné à utiliser John the Ripper avec ses paramètres par défaut ainsi qu'avec une liste de mots personnalisée, puis vous avez enregistré les identifiants récupérés dans un fichier de rapport pour une analyse ultérieure. Ces compétences constituent une base solide pour les tests d'intrusion et soulignent l'importance de mettre en œuvre des politiques de mots de passe robustes pour se défendre contre de telles attaques.