Utiliser John the Ripper pour casser les hachages NTLM

Kali LinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous acquerrez une expérience pratique du cassage des hachages NTLM (NT LAN Manager) à l'aide de John the Ripper, un puissant outil de cassage de mots de passe. Les hachages NTLM sont couramment utilisés dans les environnements Windows pour stocker les mots de passe des utilisateurs. Comprendre comment ces hachages peuvent être cassés est crucial pour appréhender les vulnérabilités de sécurité des mots de passe et mettre en œuvre des mesures de sécurité plus robustes.

Vous commencerez par simuler l'extraction des hachages NTLM, puis apprendrez à les formater correctement pour John the Ripper. Ensuite, vous utiliserez deux méthodes de cassage principales : les attaques par dictionnaire avec une liste de mots et les attaques par force brute en mode incrémental. Enfin, vous réfléchirez aux implications de sécurité des hachages NTLM et à l'importance de politiques de mots de passe robustes. Ce laboratoire offre une approche pratique d'un concept fondamental en cybersécurité.

Extraction des hachages NTLM d'un système

Dans cette étape, vous allez simuler l'extraction des hachages NTLM. Dans un scénario réel, les hachages NTLM peuvent être extraits de diverses sources, telles que la base de données Security Account Manager (SAM) sur les systèmes Windows, Active Directory, ou le trafic réseau. Pour ce laboratoire, nous avons déjà fourni un fichier nommé hashes.txt dans votre répertoire ~/project, qui contient des exemples de hachages NTLM.

Tout d'abord, vérifions la présence du fichier hashes.txt et examinons son contenu. Ce fichier contient plusieurs lignes, chacune représentant une entrée utilisateur avec son hachage NTLM. Le format inclut généralement le nom d'utilisateur, l'ID utilisateur, le hachage LM (souvent vide ou par défaut), le hachage NTLM, et d'autres champs. Nous nous concentrerons sur la partie du hachage NTLM.

Utilisez la commande ls pour lister les fichiers de votre répertoire actuel, puis utilisez la commande cat pour afficher le contenu de hashes.txt.

ls -l ~/project/hashes.txt
cat ~/project/hashes.txt

Vous devriez voir une sortie similaire à celle-ci, montrant les détails du fichier et son contenu :

-rw-r--r-- 1 labex labex 300 Mar 10 10:00 /home/labex/project/hashes.txt
user1:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
user2:501:aad3b435b51404eeaad3b435b51404ee:209c6174efb4b710:209c6174efb4b710:::
user3:502:aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad065adec1000000:::
user4:503:aad3b435b51404eeaad3b435b51404ee:e52cac67419a9a224a30370a31323334:::
user5:504:aad3b435b51404eeaad3b435b51404ee:d41d8cd98f00b204e9800998ecf8427e:::

Le hachage NTLM est le quatrième champ de chaque ligne, séparé par des deux-points. Par exemple, pour user1, le hachage NTLM est 31d6cfe0d16ae931b73c59d7e0c089c0.

Formatage des hachages NTLM pour John the Ripper

Dans cette étape, vous allez préparer les hachages NTLM pour John the Ripper. Bien que John the Ripper puisse souvent gérer automatiquement divers formats de hachage, il est bon de comprendre l'entrée attendue. Pour les hachages NTLM, John the Ripper attend généralement le format nom_utilisateur:hachage_NTLM.

Notre fichier hashes.txt contient des champs supplémentaires. Nous devons extraire uniquement le nom d'utilisateur et le hachage NTLM. Nous pouvons utiliser la commande cut pour y parvenir. La commande cut peut extraire des sections de chaque ligne de fichiers. Nous utiliserons : comme délimiteur et sélectionnerons les premier et quatrième champs.

Exécutez la commande suivante pour extraire et formater les hachages, puis redirigez la sortie vers un nouveau fichier nommé ntlm_hashes.txt dans votre répertoire ~/project.

cut -d ':' -f 1,4 ~/project/hashes.txt > ~/project/ntlm_hashes.txt
cat ~/project/ntlm_hashes.txt

Vous devriez voir les hachages formatés, prêts pour John the Ripper :

user1:31d6cfe0d16ae931b73c59d7e0c089c0
user2:209c6174efb4b710
user3:8846f7eaee8fb117ad065adec1000000
user4:e52cac67419a9a224a30370a31323334
user5:d41d8cd98f00b204e9800998ecf8427e

Ce fichier ntlm_hashes.txt contient maintenant uniquement le nom d'utilisateur et le hachage NTLM correspondant, ce qui est le format idéal pour John the Ripper.

Cassage des hachages NTLM avec une wordlist

Dans cette étape, vous utiliserez John the Ripper pour casser les hachages NTLM à l'aide d'une wordlist (également appelée attaque par dictionnaire). Une wordlist est un fichier contenant une liste de mots de passe courants, de mots de dictionnaire ou de mots de passe précédemment divulgués. C'est souvent la méthode la plus efficace pour casser les mots de passe faibles.

Nous avons fourni un fichier wordlist simple nommé wordlist.txt dans votre répertoire ~/project. Inspectons d'abord son contenu.

cat ~/project/wordlist.txt

Vous devriez voir le contenu suivant :

password
123456
qwerty
admin
test

Maintenant, utilisez John the Ripper avec wordlist.txt pour casser les hachages dans ntlm_hashes.txt. La commande john --format=NT --wordlist=wordlist.txt ntlm_hashes.txt spécifie le format de hachage comme NTLM (NT), la wordlist à utiliser, et le fichier contenant les hachages.

john --format=NT --wordlist=~/project/wordlist.txt ~/project/ntlm_hashes.txt

John the Ripper tentera de casser les hachages. Vous pourriez voir une sortie similaire à celle-ci, indiquant quels hachages ont été cassés :

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
123456           (user4)
test             (user2)
password         (user1)
3g 0:00:00:00 DONE (2023-10-27 08:00) 100.0% (ETA: 08:00) 3.750g/s 11.25p/s 11.25c/s 11.25C/s 123456...test
Session completed.

Après le processus de cassage, vous pouvez afficher les mots de passe cassés à l'aide de la commande john --show.

john --show ~/project/ntlm_hashes.txt

La sortie listera les hachages cassés et leurs mots de passe en clair correspondants :

user1:password
user2:test
user4:123456

3 password hashes cracked, 2 left

Cela montre que le mot de passe de user1 était password, celui de user2 était test, et celui de user4 était 123456. Les deux autres hachages (user3 et user5) n'ont pas été cassés par cette wordlist, ce qui indique que leurs mots de passe sont peut-être plus forts ou absents de notre simple wordlist.

Cassage des hachages NTLM en mode incrémental

Dans cette étape, vous allez explorer le mode incrémental de John the Ripper, qui effectue une attaque par force brute. Contrairement aux attaques par wordlist, le mode incrémental essaie systématiquement des combinaisons de caractères, en commençant par des combinaisons courtes et simples et en augmentant progressivement la complexité. Cette méthode est efficace pour casser les mots de passe qui ne figurent pas dans une wordlist, mais elle peut être très longue pour les mots de passe longs ou complexes.

Le mode incrémental de John the Ripper utilise des jeux de caractères et des règles pour générer des mots de passe. Pour les hachages NTLM, nous pouvons spécifier le format NT et utiliser l'option --incremental. John the Ripper dispose de modes incrémentaux intégrés (par exemple, alnum, digits, all). Nous utiliserons le mode incrémental par défaut, qui essaie divers jeux de caractères.

Avant d'exécuter le mode incrémental, il est conseillé de réinitialiser la session de John the Ripper pour éviter les conflits avec les hachages précédemment cassés.

john --session=reset

Maintenant, exécutez John the Ripper en mode incrémental contre le fichier ntlm_hashes.txt. Ce processus peut prendre quelques instants, en fonction de la complexité des hachages restants non cassés.

john --format=NT --incremental ~/project/ntlm_hashes.txt

Vous pourriez voir une sortie similaire à celle-ci pendant que John the Ripper tente de casser les hachages restants :

Using default input encoding: UTF-8
Loaded 5 password hashes with no different salts (NT [MD4 HASHES])
Remaining 2 password hashes to crack
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
(user5)
(user3)
2g 0:00:00:00 DONE (2023-10-27 08:05) 100.0% (ETA: 08:05) 2.500g/s 7.500p/s 7.500c/s 7.500C/s
Session completed.

Une fois le processus terminé, vérifiez à nouveau les mots de passe cassés en utilisant john --show.

john --show ~/project/ntlm_hashes.txt

Vous devriez maintenant voir tous les hachages cassés, y compris user3 et user5. Le mot de passe de user3 est admin et celui de user5 est une chaîne vide (qui est représentée par "" ou rien après le deux-points).

user1:password
user2:test
user4:123456
user3:admin
user5:

5 password hashes cracked, 0 left

Cela démontre l'efficacité du mode incrémental pour casser les mots de passe qui ne figurent pas dans une wordlist, en particulier ceux qui sont courts ou simples.

Comprendre la sécurité des hachages NTLM

Dans cette étape, vous allez réfléchir aux implications de sécurité des hachages NTLM et à l'importance des pratiques de mots de passe robustes. Vous avez vu comment des mots de passe relativement simples peuvent être rapidement cassés à l'aide de wordlists et comment même des mots de passe courts et non issus de dictionnaires peuvent être trouvés avec des méthodes de force brute comme le mode incrémental.

Les hachages NTLM sont connus pour être vulnérables en raison de plusieurs facteurs :

  • Absence de "salting" (salage) : Contrairement aux algorithmes de hachage modernes (par exemple, bcrypt, scrypt), les hachages NTLM n'utilisent pas de "salt". Un salt est une donnée aléatoire ajoutée à un mot de passe avant le hachage, ce qui rend chaque hachage unique même pour des mots de passe identiques. Sans salage, les attaquants peuvent utiliser des tables précalculées (tables arc-en-ciel) pour casser rapidement les hachages.
  • Algorithme de hachage faible : NTLM utilise MD4, qui est un algorithme de hachage relativement ancien et cryptographiquement faible.
  • Insensibilité à la casse (pour le hachage LM, bien que NTLM soit sensible à la casse) : Bien que NTLM lui-même soit sensible à la casse, son prédécesseur, le hachage LM, ne l'était pas, ce qui a entraîné une confusion et parfois des pratiques de mots de passe plus faibles.

Pour atténuer les risques associés au cassage des hachages NTLM, les organisations et les utilisateurs doivent :

  • Appliquer des politiques de mots de passe robustes : Exiger des mots de passe longs et complexes qui combinent des lettres majuscules et minuscules, des chiffres et des caractères spéciaux. Cela rend les attaques par wordlist et par force brute considérablement plus difficiles.
  • Implémenter l'authentification multifacteur (MFA) : La MFA ajoute une couche de sécurité supplémentaire au-delà du simple mot de passe, rendant beaucoup plus difficile pour les attaquants d'obtenir un accès non autorisé, même s'ils cassent un mot de passe.
  • Utiliser des algorithmes de hachage modernes : Pour les nouveaux systèmes ou lors de la migration, privilégier des algorithmes de hachage modernes, salés et adaptatifs comme bcrypt, scrypt ou Argon2.
  • Auditer et surveiller régulièrement : Surveiller en permanence les tentatives de connexion suspectes et auditer la robustesse des mots de passe.

En comprenant les vulnérabilités des hachages NTLM et en mettant en œuvre des mesures de sécurité robustes, vous pouvez améliorer considérablement la posture de sécurité des systèmes et des comptes utilisateurs.

Résumé

Dans ce laboratoire, vous avez appris avec succès à utiliser John the Ripper pour casser les hachages NTLM. Vous avez commencé par comprendre la structure des hachages NTLM, puis vous les avez formatés pour une utilisation optimale avec John the Ripper. Vous avez ensuite appliqué deux techniques courantes de cassage de mots de passe : les attaques par wordlist et les attaques incrémentales (force brute), démontrant leur efficacité contre les mots de passe faibles et simples.

Vous avez également acquis une compréhension des faiblesses de sécurité des hachages NTLM, telles que l'absence de salage et l'utilisation d'un algorithme de hachage plus faible. Cette compréhension est cruciale pour apprécier l'importance de politiques de mots de passe robustes, de l'authentification multifacteur et de l'adoption d'algorithmes de hachage modernes et robustes pour protéger les informations sensibles. Cette expérience pratique fournit une compréhension fondamentale de la sécurité des mots de passe et des méthodologies de cassage courantes.