Sécurité du WiFi Entreprise : WPA2-PEAP MSCHAPv2

On rencontre souvent dans les entreprises un réseau WiFi configuré en WPA2-PEAP MSCHAPv2, grâce à sa facilité d’installation sous une infrastructure Windows. La connexion au réseau WiFi se fait alors par une authentification à un serveur Radius souvent représenté par un serveur Active Directory, ce qui permet aux utilisateurs de l’entreprise de se connecter uniquement avec leur compte de domaine.

Cependant, il est important de savoir que cette configuration est vulnérable à une attaque dite de « l’homme du milieu » (Man In The Middle, MITM), qui permet de récupérer les hashs des mots de passe des utilisateurs. Cela consiste à créer un faux serveur Radius qui interceptera les demandes d’authentification à la place du vrai point d’accès, sous réserve que le serveur de l’attaquant fournisse un signal plus fort que le vrai point d’accès.

En tant que PoC, nous allons volontairement attaquer un SSID Wifi « Wing Secure » et de récupérer le mot de passe de l’utilisateur « Test ».

Voici le mode opératoire que nous avons suivi :

  • Mettre en place un faux serveur Radius à l’aide de hostapd-wpe [1] configuré avec le même SSID que la cible (ici « Wing Secure ») puis attendre la tentative de connexion d’un utilisateur.

  • Tenter de retrouver le mot de passe par dictionnaire en utilisant asleap, ou en tentant toutes les combinaisons possibles en utilisant JohnTheRipper ou encore Hashcat.

On retrouve bien le mot de passe qui était « testtest123 » en quelques secondes par dictionnaire.

A titre de comparaison, notons tout de même que sur un Intel(R) Core(TM) i7-2600K CPU @ 3.40GH, JohnTheRipper peut tester 3 654 000 clés/seconde de MSCHAPv2 contre 3 100 clés/seconde contre une clé WPA-PSK (en utilisant aircrack-ng). [2]

Cela donne un temps de détermination du mot de passe [2] :

  • Pour 6 caractères alphanumériques : 4 heures 23 minutes et 19 secondes
  • Pour 7 caractères alphanumériques : 11 jours 8 heures 6 minutes et 9 secondes
  • Pour 8 caractères alphanumériques : 1 an 337 jours 16 heures 32 minutes 46 secondes
  • Pour 8 caractères alphanumériques + symboles : 53 ans 157 jours 22 heures 8 minutes et 27 secondes

Cela nous permet de revenir sur l’importance d’un mot de passe d’une longueur et d’une complexité suffisante (minimum 8 caractères alphanumériques).

Mais cela n’est pas nécessairement suffisant. En effet, en analysant comment est construit le MSCHAPv2, on remarque qu’en connaissant le couple challenge/réponse (déterminé plus haut), on est à même de récupérer le NT Hash en crackant du DES sur 56 bit.

Or, du matériel peu coûteux (20-40$) ou des services de cloud cracking comme crack.sh [3] permettent de réaliser ce genre d’opération en moins de 24h. Avec le NT Hash en poche, on peut alors se connecter au réseau.

On voit donc qu’une configuration personnelle WPA-PSK bien mise en place est parfois plus sécurisée qu’une configuration MSCHAPv2.

Des contre-mesures pour cette vulnérabilité peuvent toutefois être appliquées :

  • Forcer la validation du certificat (en environnement Windows, penser à mettre une GPO)
  • Disposer de matériel d’infrastructure permettant de détecter les faux points d’accès et d’empêcher les utilisateurs de s’y connecter
  • Passer à une configuration EAP-TLS (basée sur une authentification mutuelle et donc des certificats clients et serveurs)

[1] https://tools.kali.org/wireless-attacks/hostapd-wpe [2] http://calc.opensecurityresearch.com
[3] https://crack.sh/

Valentin Wallyn