Introduction
Dans ce laboratoire, vous acquerrez une expérience pratique avec John the Ripper, un outil open-source largement utilisé pour l'audit de la sécurité des mots de passe et la récupération de mots de passe. Comprendre comment utiliser de tels outils est crucial pour identifier les vulnérabilités dans les politiques de mots de passe et renforcer la sécurité globale du système. Vous apprendrez les étapes pratiques impliquées dans la collecte des hachages de mots de passe, l'utilisation de John the Ripper pour identifier les mots de passe faibles, la génération de rapports sur les mots de passe cassés, et la formulation de recommandations pour améliorer les politiques de mots de passe. Ce laboratoire abordera également l'automatisation du processus d'audit des mots de passe, offrant un aperçu complet des meilleures pratiques en matière de sécurité des mots de passe.
Collecte des hachages de mots de passe pour l'audit
Dans cette étape, vous apprendrez à collecter les hachages de mots de passe, qui sont essentiels pour l'audit des mots de passe. Sur les systèmes Linux, les hachages de mots de passe sont généralement stockés dans le fichier /etc/shadow. Cependant, l'accès direct à ce fichier nécessite des privilèges root. Dans le cadre de ce laboratoire, nous avons créé un fichier shadow factice nommé /etc/shadow_dummy que vous utiliserez.
Tout d'abord, examinons le contenu du fichier shadow factice.
cat /etc/shadow_dummy
Vous devriez voir une sortie similaire à celle-ci, affichant les noms d'utilisateur et leurs hachages de mots de passe correspondants :
user1:5f4dcc3b5aa765d61d8327deb882cf99
user2:21232f297a57a5a743894a0e4a801fc3
user3:d41d8cd98f00b204e9800998ecf8427e
user4:e10adc3949ba59abbe56e057f20f883e
user5:a8b7c6d5e4f3g2h1i0j9k8l7m6n5o4p3
Ensuite, vous copierez ce fichier shadow factice dans votre répertoire de travail actuel (~/project) pour le rendre facilement accessible à John the Ripper.
cp /etc/shadow_dummy ~/project/hashes.txt
Maintenant, vérifiez que le fichier hashes.txt a été copié avec succès dans votre répertoire ~/project.
ls ~/project/hashes.txt
La sortie devrait confirmer la présence du fichier :
/home/labex/project/hashes.txt
Exécution de John the Ripper pour l'identification des mots de passe faibles
Dans cette étape, vous utiliserez John the Ripper pour identifier les mots de passe faibles à partir du fichier hashes.txt que vous avez préparé. John the Ripper peut utiliser différents modes de cassage, y compris les attaques par dictionnaire. Nous allons effectuer une attaque par dictionnaire en utilisant une liste de mots prédéfinie.
Tout d'abord, assurez-vous d'être dans le répertoire ~/project où se trouvent vos fichiers hashes.txt et wordlist.txt.
cd ~/project
Maintenant, exécutez John the Ripper en utilisant le fichier hashes.txt et le fichier wordlist.txt. L'option --wordlist spécifie le chemin d'accès à votre liste de mots.
john --wordlist=wordlist.txt hashes.txt
John the Ripper commencera à traiter les hachages. S'il trouve des correspondances, il affichera les mots de passe cassés. La sortie pourrait ressembler à ceci :
Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password (user1)
123456 (user2)
test (user3)
admin (user4)
4g 0:00:00:00 DONE (2023-10-27 08:30) 400% (ETA: 08:30) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.
Dans cet exemple, John the Ripper a réussi à casser les mots de passe de user1, user2, user3 et user4. Le mot de passe de user5 n'a pas été cassé car il n'est pas dans notre simple liste de mots.
Pour voir les mots de passe que John a cassés jusqu'à présent, vous pouvez utiliser l'option --show.
john --show hashes.txt
La sortie listera les mots de passe cassés :
user1:password
user2:123456
user3:test
user4:admin
4 password hashes cracked, 1 left
Cette commande est utile pour examiner les résultats de votre session de cassage.
Génération de rapports sur les mots de passe cassés
Dans cette étape, vous apprendrez à générer des rapports sur les mots de passe cassés. John the Ripper stocke les mots de passe cassés dans un fichier, généralement ~/.john/john.pot. Vous pouvez utiliser l'option --show pour afficher ces mots de passe cassés, ce qui constitue un rapport de base.
Pour obtenir une liste propre des mots de passe cassés, vous pouvez rediriger la sortie de john --show vers un fichier. C'est une pratique courante pour générer des rapports qui peuvent être analysés ou partagés ultérieurement.
Tout d'abord, assurons-nous que nous sommes dans le répertoire ~/project.
cd ~/project
Maintenant, redirigez la sortie de john --show hashes.txt vers un nouveau fichier nommé cracked_passwords.txt.
john --show hashes.txt > cracked_passwords.txt
Cette commande ne produira aucune sortie sur le terminal, mais elle créera le fichier cracked_passwords.txt dans votre répertoire actuel.
Ensuite, affichez le contenu du fichier cracked_passwords.txt pour confirmer que le rapport a été généré correctement.
cat cracked_passwords.txt
Vous devriez voir la liste des mots de passe cassés, similaire à ce qui suit :
user1:password
user2:123456
user3:test
user4:admin
4 password hashes cracked, 1 left
Ce fichier cracked_passwords.txt sert maintenant de rapport, détaillant les comptes utilisateurs avec des mots de passe faibles et cassés. Dans un scénario réel, ce rapport serait utilisé pour identifier les utilisateurs qui doivent changer leurs mots de passe immédiatement.
Recommandations d'amélioration de la politique de mots de passe
Dans cette étape, vous formulerez des recommandations pour améliorer les politiques de mots de passe en fonction des résultats de l'audit des mots de passe. L'identification des mots de passe faibles n'est que la première étape ; la prochaine étape cruciale consiste à mettre en œuvre des mesures pour prévenir de telles vulnérabilités à l'avenir.
Sur la base des mots de passe cassés (password, 123456, test, admin), il est clair que la politique de mots de passe actuelle (ou son absence) autorise des mots de passe très simples et courants.
Voici quelques recommandations clés pour améliorer les politiques de mots de passe :
- Longueur minimale : Imposer une longueur minimale de mot de passe, généralement 12 caractères ou plus. Les mots de passe plus longs sont exponentiellement plus difficiles à casser.
- Exigences de complexité : Exiger l'utilisation d'un mélange de types de caractères :
- Lettres majuscules (A-Z)
- Lettres minuscules (a-z)
- Chiffres (0-9)
- Caractères spéciaux (!@#$%^&*()_+-=[]{}|;:'",.<>/?`~)
- Éviter les mots de passe courants : Mettre en œuvre une liste noire de mots de passe couramment utilisés ou facilement devinables (comme ceux trouvés dans notre
wordlist.txt). De nombreux systèmes peuvent vérifier les nouveaux mots de passe par rapport à de telles listes noires. - Pas d'informations personnelles : Conseiller aux utilisateurs de ne pas utiliser d'informations personnelles (noms, anniversaires, noms d'animaux de compagnie) qui peuvent être facilement devinées ou trouvées en ligne.
- Changements réguliers (avec prudence) : Bien que historiquement recommandés, les changements de mot de passe obligatoires fréquents peuvent amener les utilisateurs à choisir des mots de passe plus simples et plus prévisibles. Une meilleure approche consiste à imposer des mots de passe forts et à n'exiger des changements que si une violation est suspectée.
- Authentification multifacteur (MFA) : Pour les systèmes critiques, mettre en œuvre l'authentification multifacteur (MFA). Même si un mot de passe est compromis, la MFA ajoute une couche de sécurité supplémentaire.
- Gestionnaires de mots de passe : Encourager ou fournir des gestionnaires de mots de passe aux utilisateurs. Ces outils peuvent générer et stocker des mots de passe forts et uniques pour différents services.
Pour démontrer votre compréhension, réfléchissez à la manière dont vous communiqueriez ces recommandations. Par exemple, vous pourriez rédiger une déclaration de politique simple.
Créons un fichier nommé password_policy_recommendations.txt dans votre répertoire ~/project et ajoutons-y quelques recommandations clés.
cd ~/project
echo "--- Password Policy Recommendations ---" | tee password_policy_recommendations.txt > /dev/null
echo "1. Minimum length: 12 characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "2. Complexity: Mix of uppercase, lowercase, numbers, special characters" | tee -a password_policy_recommendations.txt > /dev/null
echo "3. Avoid common passwords and personal information" | tee -a password_policy_recommendations.txt > /dev/null
echo "4. Implement Multi-Factor Authentication (MFA) for critical systems" | tee -a password_policy_recommendations.txt > /dev/null
Maintenant, affichez le contenu du fichier password_policy_recommendations.txt.
cat password_policy_recommendations.txt
La sortie devrait afficher vos recommandations :
--- Password Policy Recommendations ---
1. Minimum length: 12 characters
2. Complexity: Mix of uppercase, lowercase, numbers, special characters
3. Avoid common passwords and personal information
4. Implement Multi-Factor Authentication (MFA) for critical systems
Ce fichier représente un rapport de base de vos recommandations.
Automatisation du processus d'audit des mots de passe
Dans cette étape, vous explorerez comment automatiser certaines parties du processus d'audit des mots de passe. Bien que John the Ripper soit un outil manuel, son exécution peut être scriptée pour s'exécuter périodiquement, rendant le processus d'audit plus efficace et proactif. L'automatisation aide à surveiller en continu la force des mots de passe et à identifier les nouvelles vulnérabilités au fur et à mesure qu'elles apparaissent.
Une façon simple d'automatiser est de créer un script shell qui exécute les étapes que vous avez apprises : collecter les hachages, exécuter John the Ripper et générer un rapport.
Créons un script shell simple nommé audit_script.sh dans votre répertoire ~/project.
cd ~/project
nano audit_script.sh
Dans l'éditeur nano, ajoutez le contenu suivant :
#!/bin/bash
## Define paths
HASH_FILE="/etc/shadow_dummy" ## In a real scenario, this would be /etc/shadow
WORDLIST_FILE="wordlist.txt"
OUTPUT_DIR="~/project/audit_results"
CRACKED_REPORT="$OUTPUT_DIR/cracked_passwords_$(date +%Y%m%d_%H%M%S).txt"
## Create output directory if it doesn't exist
mkdir -p "$OUTPUT_DIR"
echo "--- Starting Password Audit ---"
## Step 1: Copy hashes
cp "$HASH_FILE" "$OUTPUT_DIR/hashes.txt"
echo "Hashes copied to $OUTPUT_DIR/hashes.txt"
## Step 2: Run John the Ripper
echo "Running John the Ripper..."
john --wordlist="$WORDLIST_FILE" "$OUTPUT_DIR/hashes.txt"
## Step 3: Generate report
echo "Generating cracked password report..."
john --show "$OUTPUT_DIR/hashes.txt" > "$CRACKED_REPORT"
echo "Audit complete. Report saved to $CRACKED_REPORT"
echo "--- Audit Finished ---"
Appuyez sur Ctrl+X, puis Y, puis Entrée pour enregistrer et quitter nano.
Ensuite, rendez le script exécutable :
chmod +x audit_script.sh
Maintenant, exécutez le script pour le voir en action :
./audit_script.sh
Vous verrez une sortie similaire aux étapes manuelles, indiquant que le processus d'audit est en cours et qu'un rapport est en cours de génération.
--- Starting Password Audit ---
Hashes copied to /home/labex/project/audit_results/hashes.txt
Running John the Ripper...
Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (LM HASH, descrypt/BSDI crypt/other crypt(3) [DES/AES-NI])
Press 'q' or Ctrl-C to abort, almost any other key for status
password (user1)
123456 (user2)
test (user3)
admin (user4)
4g 0:00:00:00 DONE (2023-10-27 08:35) 400% (ETA: 08:35) 0.000c/s 0p/s 4.000w/s 4.000P/s user1, user2, user3, user4
Session completed.
Generating cracked password report...
Audit complete. Report saved to /home/labex/project/audit_results/cracked_passwords_YYYYMMDD_HHMMSS.txt
--- Audit Finished ---
Enfin, vérifiez que le répertoire audit_results et un fichier de rapport à l'intérieur ont été créés.
ls ~/project/audit_results/
Vous devriez voir hashes.txt et un fichier cracked_passwords_YYYYMMDD_HHMMSS.txt (où YYYYMMDD_HHMMSS est l'horodatage actuel).
cracked_passwords_20231027_083500.txt hashes.txt
Ce script peut être planifié pour s'exécuter périodiquement à l'aide d'outils comme cron sur un système Linux réel, permettant un audit continu des mots de passe.
Résumé
Dans ce laboratoire, vous avez appris avec succès à utiliser John the Ripper pour l'audit des mots de passe. Vous avez commencé par collecter des hachages de mots de passe à partir d'un fichier shadow factice, puis vous avez utilisé John the Ripper avec une liste de mots pour identifier les mots de passe faibles. Vous avez généré un rapport des mots de passe cassés et formulé des recommandations clés pour améliorer les politiques de mots de passe, telles que l'application d'une longueur minimale, de la complexité et l'évitement des mots de passe courants. Enfin, vous avez créé un script shell de base pour automatiser le processus d'audit des mots de passe, démontrant comment ces tâches peuvent être intégrées dans une stratégie de surveillance continue de la sécurité. Cette expérience pratique fournit une compréhension fondamentale de l'audit de sécurité des mots de passe, une compétence essentielle pour tout administrateur système ou professionnel de la sécurité.


