Casser un hash PMKID avec Hashcat

Beginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez les bases du cassage d'un hash PMKID (Pairwise Master Key Identifier) WPA/WPA2 à l'aide de Hashcat, un outil de récupération de mots de passe puissant et polyvalent. Un PMKID fait partie du processus d'authentification WPA/WPA2 et peut parfois être capturé à partir d'un point d'accès sans qu'un client ne soit présent. Le cassage d'un PMKID est souvent plus efficace que le cassage d'une poignée de main complète (4-way handshake).

Vous parcourrez l'ensemble du processus, de la préparation d'un fichier de hash à l'exécution d'une attaque par dictionnaire avec Hashcat. Cette expérience pratique vous donnera une compréhension concrète du fonctionnement du cassage de mots de passe dans un environnement contrôlé et éducatif. Toutes les activités de ce laboratoire sont à des fins éducatives uniquement.

Convertir la capture PMKID dans un format compatible avec Hashcat

Dans cette étape, vous découvrirez le format requis par Hashcat pour casser les hashes PMKID. Généralement, les PMKID sont extraits de fichiers de capture réseau bruts (par exemple, des fichiers .pcapng). Un outil comme hcxpcapngtool est utilisé pour convertir la capture dans un format de hash texte brut que Hashcat peut traiter.

La commande pour ce faire ressemblerait à ceci : hcxpcapngtool -o <fichier_hash_sortie> <fichier_capture_entree.pcapng>

Pour ce laboratoire, afin d'assurer un processus fluide, nous avons déjà effectué cette conversion pour vous. Le hash résultant est enregistré dans un fichier nommé pmkid.hash dans votre répertoire actuel (~/project).

Examinons le contenu de ce fichier pour comprendre sa structure. Utilisez la commande cat pour afficher le contenu du fichier.

cat pmkid.hash

Vous verrez la sortie suivante, qui est une seule ligne représentant le hash PMKID :

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65

Ce format est PMKID*MAC_AP*MAC_STA*SSID_HEX. Chaque partie est séparée par un astérisque, fournissant à Hashcat toutes les informations nécessaires pour effectuer l'attaque.

Sélectionner le bon mode Hashcat pour WPA-PMKID, qui est -m 16800

Dans cette étape, vous identifierez le mode correct pour casser les hashes PMKID dans Hashcat. Hashcat prend en charge des centaines d'algorithmes de hachage différents, et chacun d'eux se voit attribuer un numéro de mode unique. Fournir le bon mode est essentiel pour que Hashcat fonctionne correctement.

Vous pouvez trouver la liste de tous les types de hachage pris en charge et leurs modes correspondants en utilisant l'option --help avec la commande hashcat. Pour affiner la liste, vous pouvez rediriger la sortie vers grep et rechercher un mot-clé spécifique comme "PMKID".

Exécutez la commande suivante pour trouver le mode pour WPA-PMKID :

hashcat --help | grep "WPA-PMKID"

La sortie affichera le mode de hachage pertinent :

16800 | WPA-PMKID-PBKDF2                                     | Network Protocols

Comme vous pouvez le constater dans la sortie, le numéro de mode pour WPA-PMKID-PBKDF2 est 16800. Vous utiliserez ce numéro de mode avec l'option -m dans votre commande Hashcat.

Construire la commande Hashcat avec le fichier de hash

Dans cette étape, vous allez commencer à construire la commande hashcat. La syntaxe de base pour une attaque par dictionnaire est hashcat [options] <fichier_hash> <fichier_liste_de_mots>.

Jusqu'à présent, vous avez identifié deux éléments clés :

  1. Le mode de hachage : -m 16800
  2. Le fichier de hachage : pmkid.hash

Mettons ces éléments ensemble. Nous devons également spécifier un mode d'attaque en utilisant l'option -a. Une attaque par dictionnaire est le mode 0, nous utiliserons donc -a 0. C'est le mode d'attaque par défaut, mais il est bon de le spécifier explicitement.

Essayons d'exécuter la commande avec uniquement le mode de hachage et le fichier de hachage. Cela échouera, mais c'est un bon moyen de confirmer notre syntaxe et de voir ce que Hashcat attend ensuite.

hashcat -m 16800 pmkid.hash

Hashcat démarrera puis se terminera avec un message d'utilisation, car il manque un argument requis pour ce type d'attaque.

hashcat (v6.2.6) starting...

* Device #1: WARNING! Kernel exec timeout is not disabled.
...
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

Try --help for more help.

L'erreur indique que pour le mode d'attaque par défaut (dictionnaire), une liste de mots ou un répertoire est requis. Cela confirme que notre structure de commande est correcte jusqu'à présent et nous mène directement à l'étape suivante : fournir une liste de mots.

Spécifier une liste de mots pour l'attaque par dictionnaire

Dans cette étape, vous allez compléter la commande Hashcat en ajoutant une liste de mots. Une attaque par dictionnaire fonctionne en prenant chaque mot d'un fichier donné (la "liste de mots" ou le "dictionnaire") et en le testant comme mot de passe potentiel contre le hash.

Pour ce laboratoire, un petit fichier de liste de mots nommé wordlist.txt a été créé pour vous dans le répertoire ~/project. Inspectons son contenu.

cat wordlist.txt

Vous verrez une courte liste de mots de passe potentiels :

secret
123456
password123
qwertyuiop
labex

L'un de ces mots est le mot de passe correct pour notre hash. Vous pouvez maintenant construire la commande complète en ajoutant le nom du fichier de liste de mots à la commande de l'étape précédente.

La commande complète est : hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

  • -m 16800 : Spécifie le type de hash WPA-PMKID.
  • -a 0 : Spécifie le mode d'attaque par dictionnaire.
  • pmkid.hash : Le fichier contenant le hash à casser.
  • wordlist.txt : Le fichier dictionnaire contenant les candidats mots de passe.

Dans la dernière étape, vous exécuterez cette commande pour casser le hash.

Exécuter Hashcat et analyser les résultats du cracking

Dans cette étape, vous allez exécuter la commande Hashcat complète et analyser la sortie pour trouver le mot de passe cassé. Il est temps de tout assembler et de lancer le processus de cracking.

Exécutez la commande complète dans votre terminal :

hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

Hashcat s'initialisera, affichera les informations de session et commencera à tester les mots de passe de wordlist.txt. Comme la liste de mots est très petite, le processus sera presque instantané. Une fois le mot de passe correct trouvé, Hashcat l'affichera et indiquera le statut "Cracked".

La sortie ressemblera à ceci :

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: WPA-PMKID-PBKDF2
Hash.Target......: d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*...
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
...
Recovered........: 1/1 (100.00%) Digests
...

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

All hashes have been recovered.
...

La ligne la plus importante est d5b6c18645897310626525389ebb3461*...:password123, qui montre le hash original suivi d'un deux-points et du mot de passe récupéré : password123.

Hashcat enregistre automatiquement les mots de passe cassés. Pour afficher les hashes précédemment cassés sans relancer l'attaque, vous pouvez utiliser l'option --show.

hashcat -m 16800 pmkid.hash --show

Cette commande affichera instantanément la paire hash cassé et mot de passe :

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

Résumé

Félicitations pour avoir réussi à casser un hash PMKID ! Dans ce laboratoire, vous avez acquis une expérience pratique avec Hashcat et appris les étapes essentielles d'une attaque par dictionnaire.

Vous avez appris à :

  • Reconnaître le format compatible Hashcat pour les hashes PMKID.
  • Identifier le mode Hashcat correct pour un type de hash spécifique (-m 16800 pour WPA-PMKID).
  • Construire une commande Hashcat complète pour une attaque par dictionnaire (-a 0).
  • Exécuter l'attaque en utilisant un fichier de hash et une liste de mots.
  • Analyser la sortie et afficher les mots de passe cassés en utilisant l'option --show.

Bien que ce laboratoire ait utilisé un exemple simple et de petite taille, les mêmes principes s'appliquent aux scénarios du monde réel, qui impliqueraient des listes de mots beaucoup plus grandes et du matériel plus puissant. Les compétences que vous avez acquises fournissent une base solide pour comprendre la sécurité des mots de passe et les pratiques de piratage éthique.