Casser le WPA2 : l'attaque PMKID et le handshake en 4 temps
Deux voies vers un réseau WPA2 : capturer le handshake EAPOL ou récupérer un PMKID sans client. Produire le format 22000 et le casser avec hashcat, et pourquoi WPA3 résiste.
Casser du WPA2-PSK, c'est une attaque par dictionnaire hors ligne contre la phrase de passe du réseau. Voilà toute sa forme. Vous ne cassez pas la cryptographie, vous capturez un morceau de l'authentification, vous le ramenez chez vous, et vous devinez des phrases de passe jusqu'à ce que l'une produise la bonne valeur. Le reste, c'est de la logistique : comment obtenir la capture, et comment la transformer en quelque chose que hashcat avalera.
Il y a deux voies de capture. Toutes deux aboutissent à la même ligne 22000.
Voie une : le handshake en 4 temps
Quand un client rejoint un réseau WPA2, il réalise un échange EAPOL en quatre messages avec le point d'accès pour dériver des clés de session à partir de la clé pré-partagée. Capturez ces messages et vous avez ce qu'il faut pour attaquer le handshake EAPOL hors ligne. Le hic, c'est le timing : vous ne voyez le handshake que quand un client se connecte, et les clients se connectent quand ça leur chante.
Alors vous le forcez. Déauthentifiez un client connecté, il se reconnecte automatiquement, et vous attrapez le handshake au retour. Avec la chaîne d'outils hcxdumptool sur une interface en mode moniteur :
hcxdumptool -i wlan0 -w capture.pcapng --enable_status=1
hcxdumptool gère lui-même la logique d'association et de déauthentification quand vous le laissez faire, capturant à la fois les PMKID et les trames EAPOL dans un seul pcapng. La déauthentification est la partie bruyante de cette attaque. Elle est active, détectable par un WIDS à peu près correct, et elle coupe brièvement un vrai utilisateur. C'est le prix à payer pour obtenir un handshake à la demande au lieu d'attendre.
Voie deux : le PMKID sans client
L'attaque PMKID est la plus propre. Sur de nombreux points d'accès, le premier message du handshake (envoyé par le point d'accès) contient un PMKID dans son champ d'information RSN, calculé à partir du PMK, de la MAC du point d'accès et de la MAC du client. Vous pouvez demander une association et récolter ce PMKID sans qu'aucun client ne se connecte jamais, d'où le qualificatif « sans client ». Pas de déauthentification, pas d'attente d'une victime, bien plus discret sur les ondes.
Cela ne marche pas toujours. Certains points d'accès n'incluent pas le PMKID, et vous repassez au handshake. Mais quand ça marche, le point d'accès seul vous donne tout. hcxdumptool collecte les PMKID dans la même session de capture, donc en pratique vous lancez un seul outil et prenez la voie que la cible vous offre.
Produire le format 22000
Un pcapng brut n'est pas une entrée hashcat. Vous le convertissez avec hcxpcapngtool, qui extrait les PMKID et les handshakes EAPOL dans la ligne unifiée :
hcxpcapngtool -o hash.22000 capture.pcapng
Les lignes de sortie commencent par WPA*01* pour le PMKID et WPA*02* pour l'EAPOL. Les deux relèvent du mode 22000. Cette unification est le détail moderne important : hashcat séparait autrefois cela en -m 2500 pour l'EAPOL et -m 16800 pour le PMKID, tous deux dépréciés. Un format, un mode, deux attaques.
Casser avec hashcat -m 22000
Pointez hashcat vers la ligne de hash :
hashcat -m 22000 hash.22000 rockyou.txt
C'est une attaque par dictionnaire, rien de plus. Vous devinez la phrase de passe. Tout ce qui figure dans le guide des wordlists et des règles s'applique directement : rockyou pour le premier passage, des listes triées ensuite, des règles pour muter, et une liste ciblée bâtie sur tout ce que vous savez de la cible (le nom de l'entreprise, le café, les conventions de SSID par défaut du routeur).
Le minimum de 8 caractères en WPA2 est le levier qui rend la pure force brute parfois viable. Une phrase de passe d'exactement 8 caractères a un espace de clés borné, donc une attaque par masque peut en principe l'épuiser :
hashcat -m 22000 -a 3 hash.22000 ?d?d?d?d?d?d?d?d
Ce masque de 8 chiffres (pensez aux numéros de téléphone, aux dates écrites en chiffres) est un défaut de routeur vraiment courant et tombe vite. Un masque complet de 8 caractères mêlant majuscules, minuscules, chiffres et symboles est une autre histoire : techniquement fini, mais assez coûteux pour qu'une bonne wordlist soit préférable. En pratique, la plupart des phrases de passe WPA2 qui tombent, tombent face aux dictionnaires et aux listes ciblées, pas à la force brute.
Pourquoi WPA3 met fin à tout cela
Si tout ce qui précède fonctionne, c'est que le WPA2-PSK permet de vérifier une phrase de passe hors ligne contre une valeur capturée. WPA3 ferme cette porte. Il utilise SAE, le handshake Dragonfly, un échange de clés authentifié par mot de passe. Capturer l'échange ne donne rien à mouliner hors ligne, car chaque essai exige une nouvelle interaction avec le point d'accès. Pas d'attaque par dictionnaire hors ligne, pas de PMKID à récolter. Toute l'économie du cassage WPA2 n'existe pas face à SAE.
Le coup du défenseur
Si vous faites tourner du WPA2 sans pouvoir encore passer au WPA3, le remède est le même que toute autre histoire de hash lent : rendez la phrase de passe indevinable. Une PSK longue et aléatoire (pas un mot, pas une phrase choisie par un humain, une vraie chaîne aléatoire bien au-delà du plancher de 8 caractères) déjoue les dictionnaires et repousse la force brute à des échelles géologiques. Pour tout ce qui dépasse un réseau domestique, abandonnez la clé partagée et passez à 802.1X avec des identifiants par utilisateur, ainsi il n'y a plus de PSK unique à capturer et à casser. Et là où vous le pouvez, passez au WPA3 et cessez d'avoir cette conversation.