OldGentooWiki:Casser une sécurité WPA/WPA2

De Gentoo-Quebec.

Go-previous.png Index Wifi et sécurité


Gentoo-quebec+Funtoo-quebec.png

Casser une sécurité WPA/WPA2


Sommaire

Mise en contexte

Aujourd'hui très répendus, les réseaux WiFi (sans-fil IEEE 802.11) sont un maillon faible pour confidentialité de l'information detenue par une organisation (risques de fuites de données commerciales, espionage industriel, vol de données personnelles...) et pour cause : n'importe quelle personne située à portée des bornes sans fils 802.11 peut écouter le trafic réseau. Historiquement, la technologie de chiffrement WEP (Wired Equivalent Privacy) a été la première solution mise en oeuvre pour offrir une solution de confidentialité du trafic réseau, confidentialité toute relative dans ce cas précis car WEP souffre de défauts intrinsèques graves qui en fait de nos jours une option désuette et très peu robuste aux attaques. WEP est d'ailleurs si faible que certains lui prêtent le sobriquet Weak Encryption Protocol (protocole de chiffrement faible en français).

Des alternatives palliant aux défauts de WEP ont été proposées au tournant des années 2000 et consistent en WPA ([WiFi Protected Access]) et son évolution WPA2 (nom commun de la norme 802.11i) respectivement proposées en 2003 et 2004. Les protocoles WPA/WP2 utilisent deux mécanismes d'authentification  :

  • Personal (ou Pre-Shared key, PSK): Simple à déployer et largement utilisé dans les PME et les installations domestiques, ce mode repose sur une phrase secrete (passphrase) de 8 à 63 caractères choisie par l'administrateur résau à laquelle une transformation [1] est appliquée pour obtenir une valeur dérivée de 256 bits. Il est aussi possible d'utiliser une clé hexadécimale de 64 digits (256 bits).
  • Enterprise : Plus complexe à mettre en oeuvre, l'authentification d'un client repose sur des certificats X509 et un serveur Radius.

Malheureusement il existe un axiome en sécurité informatique qui veut que rien ne soit parfait et WPA/WPA2 n'échappent pas à la règle: si la phrase secrète d'un réseau protégé par WPA/WPA2 Personal est un mot aisément devinable, la sécurité du réseau en question est réduite à neant. Casser un réseau utilisant WPA/WPA2 Entreprise est plus complexe pour ne pas dire quasiement impossible.

Considérations légales

Block 64.png
Interdiction !
  • Ne tentez pas de casser le chiffrement du réseau WiFi de votre organisation surtout sans détenir au préalable une autorisation écrite et signée de vos administrateurs réseaux ! Assurez-vous de préciser (au minimum) dans l'autorisation l'adresse MAC de l'adaptateur réseau utilisé ainsi que la date et l'heure à laquelle l'opération de cassage aura lieu.
  • Limitez strictement vos agissements à ce qui vous a été mis par écrit faute de quoi vous pourriez vous exposer à des poursuites Judiciaires pour actes criminels (en particulier si vous veniez à accéder à l'information confidentielle à laquelle vous n'êtes pas habilité).
  • Idéalement il vaut mieux vous essayer sur votre propre réseau WiFi à la maison....

Description technique des clés utilisées par WPA/WPA2

Une fois la connexion chiffrée établie entre un client WiFi (télphone mobile, ordinateur portatif...) et son point d'accès selon un 4-way handshake (voir plus bas), les deux protagonistes vont dialoguer en utilisant exclusivement un canal chiffré (chiffrement symétrique). Étant donné que ce canal repose sur un chiffrement fort dont la clé va varier au fil du temps :

  • il est virtuellement impossible d'intercepter la clé de session, à moins de tenter une attaque par force brute et d'essayer les toutes les combinaisons possibles en l'espace de quelques minutes ce qui est hors de portée de la puissance de calcul mondiale, même au tournant des années 2010;
  • l'écoute prolongée d'un réseau utilisant WPA/WPA2, nous n'augmente pas les chances d'intercepter la clé de session, contrairement à WEP qui utilise une clé de session totalement statique.

DescriptWPA.jpg

Description des clé généralisées et aléatoires



  1. PSK correspond à la Pre-Shared Key, soit la clé alphanumérique que WPA2 utilise.
  2. PMK correspond à la PSK
  3. PTK correspond à la combinaison de la PMK, suivi de l'ardresse MAC du point d'accès (Routeur), l'adresse MAC du client, un nombre aléatoire du côté du point d'accès (ANonce), un nombre aléatoire du côté du client (SNonce), le tout haché avec l'algorithme SHA1. Ces données sont considérées des données nominatives.
  4. La clé PTK est séparée en 3 clé distinctes.
  5. KCK correspond à la clé de confirmation qui est en fait la clé d'authentification des messages (MIC).
  6. KEK correspond à la clé qui est utilisée pour le chiffrement des données lors du 4-way handshake.
  7. TEK correspond à la clé qui est utilisée pour le chiffrement des données suite au 4-way handshake.

Le « 4-way handshake » de WPA/WPA2

Cette étape préliminaire à l'établissement d'une communication chiffrée est précisément le talon d'Achille de WPA/WPA2 et constitue par conséquent la porte d'entrée de son cassage. Le 4-Way Handshake se compose de 4 étapes:

  1. Accord sur la statégie de sécurité utilisée (Agreeing on the security policy)
  2. Authentification 802.X (802.X Authentification)
  3. Génération des clés et distribution (Key hierarchy and distribution)
  4. (RSNA data confidentiality and integrity)

Étape 1: Agreeing on the security policy

  1. Le client interroge le point d'accès pour savoir quels sont les protocoles de sécurité qui sont supportés par celui-ci. Par exemple "chiffrement WPA2, algorithme CCMP".
  2. Le point d'accès envoit une trame qui contient en clair son adresse MAC et un nombre aléatoire côté point d'accès (Random ANONCE) au client.
  3. Le client envoie une requête d'association au point d'accès et ensuite passe à l'étape 2.

Étape 2: 802.X Authentification

  1. Le point d'accès envoie une requête au client pour qu'il s'identifie en utilisant le protocole choisi.
  2. Ensuite il un échange de 2 trames pour s'échanger la Master Key (MK). Cette clé va être identique autant du côté point d'accès que du côté client.
  3. Le client envoie aussi une trame qui contient en clair son adresse MAC et le nombre aléatoire côté client (Random SNONCE).

Étape 3: Key hierarchy and distribution (coeur de la communication)

Cette étape permet de créer des clés temporaires pour la session qui a passé l'étape 2. Ces clés ont une durée de vie limitée et seront régénérées automatiquement et aussi longtemps qu'une déconnexion ne sera pas demandée.

Cette étape se passe de la manière suivante:

Tout d'abord la clé PMK est comme vous le savez la clé PSK. De plus, cette clé PSK doit être identique et présente autant du côté de lu point d'accès que du côté du client. Continuons...

Partie client:

  1. Génération de la clé PTK à partir de la clé PSK avec les données nominatives.
  2. Génération des clés résultantes KCK, KEK et TEK.
  3. Encryptage de la partie message avec la clé KEK. Le résultat sera envoyé dans un champ précis dans la trame (MIC).
  4. Envoie d'une trame vers le point d'accès.

Partie point d'accès:

  1. Réception de la trame venant du client. Puisque le point d'accès veut vérifier l'identité du client, il va générer les clés PTK, KCK, KEK et TEK.
  2. Décryptage du champ MIC pour vérifier que le client a bien encrypté le message avec les bonnes clés PTK, KCK, KEK et TEK.
  3. Le point d'accès envoie une trame au cient qui contient une nouvelle clé, soit la clé GTK (Groupe Transient Key). Cette clé est composée des éléments suivants (données nominatives): adresse MAC du point d'accès, nombre aléatoire en provenance du point d'accès (GNonce), clé aléatoire GMK (Group Master Key), le tout haché avec SHA1. De plus, il y a bien sûr le champ MIC qui a été calculé avec le message et qui a été chiffré avec la clé KCK.

HandshakeWPA.jpg

Description du handshake à l'étape 3


Le client reçoit cette trame et sa première tâche est de vérifier le champ MIC pour vérifier que le point d'accès ait bien la bonne valeur pour la clé PMK et par conséquent les bonnes valeurs pour les clés PTK, KCK, KEK et TEK.

Étape 4: RSNA data confidentiality and integrity

La dernière étape consiste à confirmer que le 4-way handshake s'est réalisé avec succès. Le point d'accès et le client vont alors échanger une trame qui va contenir la clé GEK (Group Encryption Key) qui sera utiliseé par la suite pour le chiffrement des données. Cette clé GEK sera par la suite générée toutes les heures (3600 secondes).

Expiration de la clé GTK et renouvellement

Ce processus de renouvellement d'une clé GTK se découpe en 2 grandes étapes:

Étape 1: Demande de renouvellement

Côté client:

  1. Le client prend connaissance que la clé GTK n'est plus valide pour la communication en cours.
  2. Le client envoie une trame au point d'accès pour lui indiquer qu'il veut renouveler la clé GTK.

Côté point d'accès:

  1. Le point d'accès envoie une trame au client avec un nouveau nombre encrypté avec la clé KEK. De plus, il y a bien sûr le champ MIC qui a été calculé avec le message et surtout qui a été encrypté avec la clé KCK.
  2. Le client reçoit cette trame et la première tâche qu'il exécute est de vérifier le champ MIC pour vérifier que le point d'accès à bien la bonne valeur pour la clé PMK et par conséquent les bonnes valeurs pour les clés PTK, KCK, KEK et TEK.
  3. Le point d'accès va déchiffrer la nouvelle clé GTK en utilisant la clé KEK.

Étape 2: Confirmation du changement de GTK

Une « faiblesse » de WPA/WPA2

La « faiblesse » que nous nous allons exploiter réside dans le fait que la clé PTK est fonction de :

  • La clé PMK qui correspond en fait à la clé PSK à laquelle est appliquée la fonction de dérivation PBKDF2 (PKCS #5 v2.0)
  • L'adresse MAC du point d'accès (sauf réseau WiFi en mode Ad-Hoc)
  • Nombre aléatoire venant du point d'accès
  • Nombre aléatoire venant du client

Comme stipulé plus haut, un certain nombre de les variables (en fait toutes sauf la PMK) circulent en clair dans les échanges entre un client WiFi et son point d'accès lors du 4-way handshake. Par conséquent, le seul problème à résoudre pour une personne voulant « casser » un réseau protégé par WPA/WPA2 est de capturer un 4-way handshake et déterminer ensuite la « bonne » clé PMK. Pour ce faire il faut déchiffrer le champ MIC avec la clé KCK qui à été générée avec sa PTK venant de l'étape 2 du 4-Way HandShake pour chacune des clés candidates PMK qui sont à tester.

Pour trouver cette clé PMK deux recours peuvent être utilisés :

  • Attaque en force brute : test de toutes les combinaisons possibles, sachant que la clé PMK fait 256 bits de long (ce qui représente la bagatelle de 115792089237316195423570985008687907853269984665640564039457584007913129639936 possibilités, soit grosso-modo 1157 suivi de 74 zéros). Quoiqu'il il y a toujours la possibilité d'utiliser des Rainbow tables pour accélérer le processus.
  • Attaque au dictionnaire (liste de mots prenant la forme d'un fichier texte) en espérant que la PSK utilisée forme un mot connu du dictionnaire en question. Ne pas oublier qu'une transformation PBKDF2 est appliquer à chaque mot du dictionnaire (PBKDF2 est gourmande en temps de calcul d'autant plus qu'elle requière 4096 hachages consécutifs de chaque valeur à transformer). Cette transformation prend égalemnt en compte le SSID du réseau WiFi :

Formule 2

PSK = PMK = PBKDF2(phrase secrète, SSID du réseau WiFi, nombre de hachages à effectuer (=4096), largeur du résultat en bits (=256 soit... 64 octets)


Nous allons tenter la seconde option. Soit dit en passant même une attaque au dictionnaire peut prendre beacoup de temps car il s'agit d'un processus intensif en termes de calcul (compter environ 300 tentatives par seconde sur une machine récente), d'autant plus que la clé PMK se calcule par dérivation PBKDF2.

Travaux pratiques

Il est temps de passer aux choses concrètes et de tenter de percer un réseau WPA2/Personal avec AirCrack. AirCrack est composé d'un ensemble d'utilitaires dont :

  • airodump-ng : capture du trafic WiFi
  • aireplay-ng : déconnexion d'un client du réseau WiFi (votre pilote de carte WiFi doit supporter l'injection de paquets)
  • aircrack-ng : sert au cassage à proprement parler
  • airmon-ng : sert à passer l'adaptateur réseau en mode Monitoring

Capture du « 4-way handshake »

La première étape que nous allons effectuer est la collecte du 4-way handshake entre un client et le point d'accès du réseau que l'on tente de casser (le filtrage d'adresse MAC du réseau WiFi a été désactivé)... et cette collecte n'est pas toujours évidente car il faut soit :

  • Se résoudre à écouter le réseau WiFi pendant une « longue » période (des heures voir des jours) dans l'espoir qu'un client légitime s'y connecte;
  • Provoquer la déconnexion d'un client préalablement connecté et espérer que ce client se reconnecte dans les secondes/minutes qui suivent (aireplay-ng)
Warning 64.png
Attention !
Vous devez arrêter tout ce qui est susceptible d'utiliser votre adapteur réseau WiFi (en particulier les démons avahi, wpa_supplicant, NetworkManager/WCID...)

Préalablement à l'écoute du réseau WiFi, il va falloir placer l'adaptateur WiFi utilisé en mode Monitoring qui est semblable au mode promiscous d'un adapateur réseau éthernet filaire (6 représente le canal WiFi utilisé, il peut différer selon la paramétrisation de votre point d'accès) :

Gnome-dev-computer.png
# airmon-ng start wlan0 6

Si tout se passe bien airmon-ng devrait rapporter quelque chose similaire à ceci :

Passage de wlan0 en mode monitoring

Interface	Chipset		Driver

wlan0		Atheros 	ath9k - [phy0]
				(monitor mode enabled on mon0)


Il ne nous reste plus qu'à écouter et journaliser les paquets WiFi dans un fichier dans l'espoir d'intercepter un 4-way handshake en procédant à une filtrage des paquets pour ne conserver que ce qui nous intéresse (voir la page de manuel d'airodump-ng pour les détails) :

Gnome-dev-computer.png
# airodump-ng --bssid 00:1D:7E:4D:XX:XX -w psk mon0

où:

  • 00:1D:7E:4D:XX:XX est l'adresse MAC du point d'accès du réseau WiFi visé
  • psk est le préfixe des fichiers qui contiendront la capture et qui seront utilisés ultérieurement par aircrack-ng
  • mon0 est l'interface de monitoring rapportée par airmon-ng

Avec un peu de chance, airodump-ng verra passer un 4-way handshake :

{{{taille}}}

4-way handshake d'un client sur le réseau WiFi « ReseauTest01 » capturé !


Sinon il va falloir pousser un peu la chance et envoyer une demande de dé-authentification à un client du réseau et espérer sa reconnexion (donc un 4-way handshake) :

Gnome-dev-computer.png
# aireplay-ng -0 1 -a 00:1D:7E:4D:XX:XX -c 00:1D:E0:44:XX:XX mon0

où:

  • 00:1D:7E:4D:XX:XX est l'adresse MAC du point d'accès du réseau WiFi visé
  • 00:1D:E0:44:XX:XX est l'adresse MAC du client à déconnecter (notez que cette adresse est égale à celle mentionnée sous STATION)
  • 1 est le nombre de demande(s) à envoyer

Cassage de la clé PSK en utilisant un dictionnaire

Une fois le 4-way handshake capturé il ne reste plus qu'à utiliser aircrack-ng et un dictionnaire pour tenter de trouver la clé PSK. Le dictionnaire est un simple ficher texte contenant dans ce cas 4 mots (un véritable dictionnaire contient des centaines voire des milliers d'entrées) :

Gnome-dev-computer.png
# aircrack-ng -w dico.lst -b 00:1D:7E:4D:XX:XX psk*.cap

  • dico.lst est le nom de fichier du dictionnaire (fichier texte dont chaque ligne contient un mot)
  • 00:1D:7E:4D:XX:XX est l'adresse MAC du point d'accès WiFi
  • psk*.cap sont les fichiers de capture créés par airomon-ng

Une fois aircrack-ng lancé plusieurs heures/jours peuvent s'écouler jusqu'à ce qu'avec un peu de chance :

{{{taille}}}

Cassage réalisé avec succès ;-)


Victoire ! Le mot utilisé comme clé PSK sur le réseau WiFi ReseauTest01 était justement : dictionnaire :-)

Cassage de la clé PSK en utilisant les rainbow tables

TODO

Quoi faire ensuite

  • Utiliser la clé PSK trouvée pour établir une connexion (éventuellent changer l'adresse MAC de l'adaptateur WiFi au moyen de macchanger)
  • Renifler le trafic IP à l'aide d'outils comme iptraf pour tenter de trouver le plan d'adressage du réseau et quelques renseignements utiles comme l'adresse des serveurs DNS, netmasks, gateways, etc.

Au risque de répéter : vous pouvez vous exposer à des poursuites judiciaires.......


Outils personnels