Attaque WPA/WPA2 PSK : faiblesse du PMKID

Le 4 Août dernier un chercheur en sécurité évaluait la robustesse de l’authentification de la nouvelle norme Wifi WPA3 lorsqu’il a découvert et publié une faille…sur le WPA et WPA2.

Cette attaque est extrêmement simple et ne nécessite pas d’attendre qu’un client Wifi légitime se connecte au point d’accès et au SSID souhaité comme pour la grande majorité des attaques de ce type. Ainsi, il est même étonnant que cette attaque n’ait jamais été découverte auparavant.

Cependant pas de risque pour les entreprises, l’attaque en question concerne uniquement les SSID en WPA/WPA2 en mode Personal configurés avec une PSK. Il faut aussi que ce SSID soit configuré avec les paramètres de roaming optimisés (802.11r, 802.11v, 802.11k, OKC, ou Preauth Roaming). Ainsi, seuls les réseaux mal configurés ou les box des particuliers peuvent être vulnérables.

Voici le lien du forum sur lequel le chercheur en question détaille son attaque :

https://hashcat.net/forum/thread-7717.html

Bien évidemment, cette attaque ne fonctionne pas sur le WPA3, celui-ci n’utilisant plus le mécanisme du 4-way-handshake mais du SAE.

***************

Le détail de l’attaque est le suivant.

Contexte : Lors d’une authentification à un SSID en WPA/WPA2 Personal PSK, un 4-way-handshake EAP est joué entre la station et le point d’accès. L’échange en lui-même permet alors de former ce qu’on appelle un Robust Security Network (RSN) et la structure de ces échanges est normée et prend forme dans les trames réseau sous la dénomination RSN-Information Element (RSNIE). Lorsqu’un mode de roaming optimisé est configuré, un nouveau paramètre apparait dans les RSNIE : le PMKID. Ce paramètre permet, en simplifiant, à l’infrastructure Wifi de précalculer les clés de sécurité d’un client au niveau des bornes Wifi adjacente afin de réduire le temps de réassociation d’un client.

Le PMKID est basiquement un hash de l’élément le plus important dans la sécurisation des échanges entre un client et une borne : la clé principale du dialogue niveau 2 de laquelle est dérivée toutes les clés de session, la Pairwaise Master Key (PMK) ; au calcul du hash sont ajoutés le nom de la PMK et les adresses MAC de la station et du point d’accès.

PMKID = HMAC-SHA1-128(PMK, "PMK Name" | MAC_AP | MAC_STA)

Il se trouve que le paramètre PMKID est envoyé dès la première trames par le point d’accès sur les quatre qui composent le 4-way-handshake, ce qui explique la faisabilité de l’attaque sans avoir à écouter de client légitime tentant de se connecter.

Exemple de trame avec PMKID donnée par le chercheur

L’attaque en elle-même ne nécessite que 3 outils :

  • hcxdumptool v4.2.0 ou plus
  • hcxtools v4.2.0 ou plus
  • hashcat v4.2.0 ou plus

L’attaque se déroule alors logiquement en 3 étapes :

  1. Récupérer le PMKID en lançant une demande d’authentification classique : Utiliser le premier outil hcxdumptool pour écouter le medium et lancer une demande classique d’authentification
./hcxdumptool -o test.pcapng -i wlp39s0f3u4u5 --enable_status

wlp39s0f3u4u5 est le nom de l’interface Wifi

  1. Utiliser le deuxième outil hcxpcaptool afin de convertir le contenu de notre fichier pcapnp dans un format lisible par hashcat
./hcxpcaptool -z test.16800 test.pcapng
  1. Utiliser enfin le dernier outil pour attaquer le hash comme n’importe quel autre hash. Il faut lancer l’outil en mode 16800
./hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!'

Et c’est tout !

Le post du chercheur sur le forum présente les résultats obtenus pour chaque commande.

Laisser un commentaire