Introduction
Dans ce laboratoire, vous explorerez le processus d'extraction, de préparation et de décryptage des hachages de mots de passe Linux à l'aide d'un outil puissant appelé John the Ripper. Comprendre le fonctionnement du décryptage de mots de passe est crucial pour mettre en œuvre des mesures de sécurité robustes. Vous découvrirez le fichier /etc/shadow, comment le combiner avec /etc/passwd pour créer un fichier décryptable, puis utiliserez John the Ripper pour trouver les mots de passe faibles. Enfin, vous obtiendrez des informations sur la structure du fichier shadow et les meilleures pratiques pour sécuriser les mots de passe des utilisateurs sur les systèmes Linux.
Extraction du fichier /etc/shadow
Dans cette étape, vous apprendrez comment accéder et extraire le contenu du fichier /etc/shadow. Le fichier /etc/shadow stocke les mots de passe utilisateurs cryptés et d'autres informations liées à la sécurité. En raison de sa nature sensible, seul l'utilisateur root a un accès en lecture à ce fichier. Pour ce laboratoire, nous avons créé des fichiers factices passwd_dummy et shadow_dummy dans votre répertoire ~/project afin de simuler les fichiers réels sans nécessiter de privilèges root pour un accès direct à /etc/shadow.
Tout d'abord, visualisons le contenu du fichier factice passwd_dummy. Ce fichier contient des informations de base sur les comptes utilisateurs, mais pas les hachages de mots de passe.
cat ~/project/passwd_dummy
Vous devriez voir une sortie similaire à celle-ci :
root:x:0:0:root:/root:/bin/bash
labex:x:1000:1000:LabEx User,,,:/home/labex:/bin/bash
testuser:x:1001:1001:Test User,,,:/home/labex/testuser:/bin/bash
Ensuite, visualisons le contenu du fichier factice shadow_dummy. Ce fichier contient les hachages de mots de passe réels.
cat ~/project/shadow_dummy
Vous devriez voir une sortie similaire à celle-ci, où le deuxième champ est le mot de passe haché :
root:$6$rounds=40000$abcdefghijklmnop$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./:18000:0:99999:7:::
labex:$6$rounds=40000$fedcba9876543210$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./:18000:0:99999:7:::
testuser:$6$rounds=5000$testsalt$testpasswordhash:18000:0:99999:7:::
Dans un scénario réel, vous utiliseriez généralement sudo cat /etc/shadow pour extraire le fichier shadow, mais pour ce laboratoire, nous utiliserons les fichiers factices.
Fusionner le fichier de mots de passe
Dans cette étape, vous utiliserez l'utilitaire unshadow, qui fait partie de la suite John the Ripper, pour combiner les fichiers passwd_dummy et shadow_dummy en un seul fichier que John the Ripper peut traiter. L'outil unshadow fusionne les informations utilisateur du fichier de mots de passe avec les hachages de mots de passe du fichier shadow, créant ainsi un format unifié adapté au décryptage.
Exécutez la commande suivante pour combiner passwd_dummy et shadow_dummy dans un nouveau fichier nommé unshadowed.txt dans votre répertoire ~/project :
unshadow ~/project/passwd_dummy ~/project/shadow_dummy > ~/project/unshadowed.txt
Maintenant, visualisons le contenu du fichier unshadowed.txt nouvellement créé pour comprendre son format.
cat ~/project/unshadowed.txt
Vous devriez voir une sortie où chaque ligne commence par un nom d'utilisateur, suivi du hachage du mot de passe, puis d'autres informations utilisateur. Par exemple :
root:$6$rounds=40000$abcdefghijklmnop$abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./:0:0:root:/root:/bin/bash
labex:$6$rounds=40000$fedcba9876543210$ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./:1000:1000:LabEx User,,,:/home/labex:/bin/bash
testuser:$6$rounds=5000$testsalt$testpasswordhash:1001:1001:Test User,,,:/home/labex/testuser:/bin/bash
Ce fichier unshadowed.txt est maintenant prêt à être utilisé par John the Ripper pour le décryptage de mots de passe.
Décrypter les hachages Shadow avec John the Ripper
Dans cette étape, vous utiliserez John the Ripper pour décrypter les hachages de mots de passe contenus dans le fichier unshadowed.txt. John the Ripper peut effectuer divers types d'attaques, y compris des attaques par dictionnaire, qui consistent à essayer des mots d'une liste prédéfinie. Nous avons déjà créé une liste de mots simple nommée wordlist.txt dans votre répertoire ~/project lors de la configuration.
Exécutez la commande suivante pour commencer le décryptage des mots de passe en utilisant le fichier wordlist.txt :
john --wordlist=~/project/wordlist.txt ~/project/unshadowed.txt
John the Ripper tentera de décrypter les hachages. S'il trouve une correspondance, il affichera le mot de passe décrypté. Dans nos fichiers factices, testuser a un mot de passe faible qui est présent dans wordlist.txt.
Vous devriez voir une sortie similaire à celle-ci, indiquant un mot de passe décrypté :
Using default input encoding: UTF-8
Loaded 3 password hashes with no different salts to test (sha512crypt, crypt(3) $6$)
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
testpassword (testuser)
3g 0:00:00:00 DONE (2024-01-01 12:00) 100.0% (ETA: 00:00:00) 3.000g/s 180.0p/s 180.0c/s 180.0C/s testpassword
Session completed.
Après le décryptage, vous pouvez visualiser les mots de passe décryptés que John the Ripper a trouvés en utilisant l'option --show :
john --show ~/project/unshadowed.txt
Cette commande affichera tous les mots de passe décryptés avec succès de la session.
testuser:testpassword
1 password hash cracked, 2 left
Cela démontre la facilité avec laquelle les mots de passe faibles peuvent être décryptés à l'aide d'outils et de listes de mots couramment disponibles.
Comprendre le format du fichier Shadow
Dans cette étape, vous allez approfondir la structure et la signification des champs du fichier /etc/shadow. Comprendre ce format est essentiel pour saisir comment Linux stocke et gère les informations de mot de passe utilisateur de manière sécurisée.
Le fichier /etc/shadow contient une ligne par utilisateur, chaque ligne étant composée de neuf champs séparés par des deux-points. Réexaminons une ligne de notre fichier shadow_dummy :
testuser:$6$rounds=5000$testsalt$testpasswordhash:18000:0:99999:7:::
Voici une description de chaque champ :
- Nom d'utilisateur :
testuser- Le nom de connexion de l'utilisateur. - Mot de passe chiffré :
$6$rounds=5000$testsalt$testpasswordhash- C'est le champ le plus critique. Il contient le mot de passe haché.$6indique l'algorithme de hachage utilisé (SHA-512 dans ce cas). D'autres types courants incluent$1(MD5),$2a(Blowfish),$5(SHA-256).rounds=5000spécifie le nombre de tours de hachage, ce qui augmente le coût computationnel du décryptage.testsaltest le sel (salt), une chaîne aléatoire ajoutée au mot de passe avant le hachage pour prévenir les attaques par table arc-en-ciel (rainbow table attacks).testpasswordhashest le mot de passe haché réel.
- Dernier changement de mot de passe :
18000- Le nombre de jours depuis le 1er janvier 1970 où le mot de passe a été modifié pour la dernière fois. - Âge minimum du mot de passe :
0- Le nombre minimum de jours requis entre les changements de mot de passe. Une valeur de0signifie que l'utilisateur peut changer son mot de passe à tout moment. - Âge maximum du mot de passe :
99999- Le nombre maximum de jours pendant lesquels le mot de passe est valide. Après cette période, l'utilisateur sera obligé de changer son mot de passe.99999signifie généralement que le mot de passe n'expire jamais. - Période d'avertissement de mot de passe :
7- Le nombre de jours avant l'expiration du mot de passe pendant lesquels l'utilisateur sera averti. - Période d'inactivité du mot de passe : (vide) - Le nombre de jours après l'expiration d'un mot de passe pendant lesquels le compte sera désactivé. Si vide, le compte n'est jamais désactivé en raison de l'inactivité du mot de passe.
- Date d'expiration du compte : (vide) - La date (en jours depuis le 1er janvier 1970) à laquelle le compte sera désactivé. Si vide, le compte n'expire jamais.
- Champ réservé : (vide) - Ce champ est réservé pour une utilisation future.
Comprendre ces champs aide à configurer les politiques de mots de passe et à renforcer la sécurité du système.
Mettre en œuvre les meilleures pratiques pour la sécurité du fichier Shadow
Dans cette étape, vous apprendrez et comprendrez les meilleures pratiques pour sécuriser le fichier /etc/shadow et les mots de passe des utilisateurs sur les systèmes Linux. Compte tenu de la nature sensible du fichier shadow, sa protection est primordiale pour la sécurité du système.
Voici quelques meilleures pratiques clés :
Politiques de mots de passe forts :
- Complexité : Imposer des exigences de complexité de mot de passe fortes (par exemple, longueur minimale, mélange de majuscules, minuscules, chiffres et caractères spéciaux).
- Unicité : Empêcher les utilisateurs de réutiliser d'anciens mots de passe.
- Changements réguliers : Mettre en œuvre des politiques de changements de mot de passe réguliers, bien que les conseils de sécurité modernes privilégient parfois les mots de passe longs, forts et uniques plutôt que les changements fréquents pour les comptes non privilégiés.
- Phrases de passe : Encourager l'utilisation de phrases de passe longues au lieu de mots de passe courts et complexes, car elles sont souvent plus faciles à retenir et plus difficiles à décrypter.
Permissions de fichier :
- Le fichier
/etc/shadowdoit avoir des permissions très strictes :0640(-rw-r-----). Cela signifie que seulrootpeut y lire et écrire, et que les membres du groupeshadowpeuvent le lire. Aucun autre utilisateur ne devrait y avoir accès. - Vérifiez les permissions en utilisant
ls -l /etc/shadow(sur un système réel, pas sur notre fichier factice).
- Le fichier
Algorithmes de hachage :
- Utilisez toujours des algorithmes de hachage modernes et robustes comme SHA-512 (
$6) ou Blowfish ($2a,$2b,$2y). Évitez les algorithmes plus anciens et plus faibles comme MD5 ($1) ou DES. - Assurez-vous que la configuration
PAM(Pluggable Authentication Modules) de votre système est définie pour utiliser des algorithmes de hachage robustes.
- Utilisez toujours des algorithmes de hachage modernes et robustes comme SHA-512 (
Salage (Salting) :
- Utilisez toujours des sels uniques pour chaque mot de passe. Ceci est géré automatiquement par les algorithmes de hachage modernes et prévient les attaques par table arc-en-ciel (rainbow table attacks).
Politiques de verrouillage de compte :
- Mettez en œuvre des politiques de verrouillage de compte pour prévenir les attaques par force brute. Après un certain nombre de tentatives de connexion échouées, le compte doit être temporairement verrouillé.
Surveiller les activités suspectes :
- Surveillez régulièrement les journaux système pour détecter les tentatives de connexion inhabituelles ou les modifications du fichier
/etc/shadow. Des outils commeAIDEouTripwirepeuvent détecter les changements d'intégrité des fichiers.
- Surveillez régulièrement les journaux système pour détecter les tentatives de connexion inhabituelles ou les modifications du fichier
Éduquer les utilisateurs :
- Éduquez les utilisateurs sur l'importance de mots de passe forts et uniques, ainsi que sur les risques du phishing et de l'ingénierie sociale.
En mettant en œuvre ces meilleures pratiques, vous pouvez améliorer considérablement la sécurité des comptes utilisateurs et protéger les informations sensibles de mots de passe sur vos systèmes Linux.
Résumé
Dans ce laboratoire, vous avez acquis une expérience pratique du processus de cassage de mots de passe sur les systèmes Linux à l'aide de John the Ripper. Vous avez appris à extraire et à combiner les fichiers /etc/passwd et /etc/shadow à l'aide de unshadow, puis vous avez utilisé John the Ripper avec une liste de mots (wordlist) pour casser les hachages de mots de passe faibles. De plus, vous avez exploré le format détaillé du fichier /etc/shadow, en comprenant la signification de chaque champ, en particulier l'algorithme de hachage et le sel (salt). Enfin, vous avez passé en revue les meilleures pratiques essentielles pour sécuriser les mots de passe des utilisateurs et le fichier shadow, notamment des politiques de mots de passe forts, des permissions de fichiers appropriées et l'utilisation d'algorithmes de hachage robustes. Ces connaissances sont cruciales à la fois pour la sécurité offensive (comprendre comment les systèmes peuvent être compromis) et pour la sécurité défensive (mettre en œuvre des mesures pour s'en protéger).


