Sécurité du WiFi Personnel : WPA2-PSK

La majorité des réseaux WiFi résidentiels sont protégés par une clef de sécurité "WPA2-Personnal". Il s'agit d'une clef pré-partagée (d'un coté sur le routeur Wifi et de l'autre sur les terminaux) dont la saisie est nécessaire pour rejoindre le réseau WiFi.

Cette clef est utilisée conjointement avec le nom du réseau WiFi (SSID) afin d'en dériver une clef de chiffrement maître (PMK), grâce à la fonction PBKDF2, et 4096 itérations de la fonction de hachage HMAC-SHA1.

Key = PBKDF2(HMAC−SHA1, passphrase, ssid, 4096, 256)

Les 4096 itérations permettent de ralentir une attaque par force brute, toutefois, avec l'évolution des puissances des CPU et surtout des GPU, il est intéressant de regarder dans la "vraie vie" quelle protection apporte réellement le WPA2-PSK.

Pour ce faire, nous allons volontairement attaquer un SSID WiFi "Crack-Me" dont la PSK est "password" (8 caractères étant le minimum).

Voici le mode opératoire que nous avons suivi :

1) Capturer la négociation WPA2-PSK (le "handshake"), il "suffit" pour cela de capturer les trames WiFi lors de la connexion d'un utilisateur légitime au réseau (une distribution "Kali" permet cela facilement). Vous pouvez télécharger notre capture ici

2) Tenter de retrouver la clef WPA2-PSK en tentant toutes les combinaisons possibles (à base de 8 lettres minuscules uniquement), en utilisant l'utilitaire HashCat ou sa version améliorée pour GPU [1].

Résultats :

  • Sur un CPU Intel i7-3770S : 4130 clefs/s, soit plus de 220 Jours de calculs

alt

  • Sur un GPU nVidia GTX 950 : 75824 clefs/s, soit 36 Jours de calculs

alt

  • Sur un GPU nVidia GTX 960 : 103200 clefs/s, soit 23 Jours de calculs

alt

On voit clairement l'intérêt d'utiliser les GPU des cartes vidéos, qui permettent des gains de temps impressionnants (certains vont jusqu'à mettre 25 cartes graphiques en parallèle [2])

A la lecture de ces résultats on peut donc dire qu'une attaque par "force brute" contre du WPA2-PSK reste suffisamment longue pour décourager la plupart des attaquants (surtout si le mot de passe est long, avec un mélange de lettres, de chiffres et de caractères spéciaux).

A noter que notre clef étant un mot anglais, une simple attaque "par dictionnaire" aurait permis de la retrouver en quelques secondes.

Un attaquant préférera donc utiliser d'autres techniques pour récupérer votre clef, notamment la faille du "WPS" qui reste valide sur de nombreux routeurs grand public [3].

Enfin, reste à signaler que le WPA2-PSK ("Personnel") ne convient pas à un usage professionnel, et ce pour au moins ces raisons :

  • La clef est unique pour tous les terminaux connectés, et il est extrêmement simple d'extraire la clef depuis un poste Windows par exemple [4].
  • En cas de compromission, il faut repasser sur tous les postes pour changer la clef
  • Impossible de "pousser" la clef WPA2-PSK par configuration automatiquement par GPO Active Directory
  • Le WPA2-PSK n'assure pas de "Forward Secrecy", un attaquant qui découvre la clef pré-partagée pourra alors dériver les clefs de chiffrement et ainsi décoder tout le trafic chiffré passé et à venir.

Pour toutes ces raisons, il est préconisé d'utiliser le WPA2-Entreprise dans les environnements professionnels (un Active Directory ou un NAS Synology suffit), qui permet de générer des clefs aléatoires pour chaque utilisateur, et ce de manière dynamique dans le temps.

[1] : https://hashcat.net/oclhashcat/

[2] : http://arstechnica.com/security/2012/12/25-gpu-cluster-cracks-every-standard-windows-password-in-6-hours

[3] : http://sviehb.files.wordpress.com/2011/12/viehboeck_wps.pdf

[4] : http://www.nirsoft.net/utils/wireless_key.html