Krack, WPA2 et wardriving

Cette procédure va couvrir les détails techniques de la dernière faille WiFi en date, à savoir KRACK.

 

KRACK, c’est quoi ?

Il s’agit d’une attaque WiFi qui touche toutes les versions aussi bien WPA/WPA2 que les réseaux personnels ou entreprises.

Cette technique est nommée ainsi par ces créateurs car c’est l’acronyme de Key Reinstallation AttaCK. Il s’agit d’une décryption à la volée des traffics échangés entre le point d’accès et son client.

Pour comprendre son fonctionnement, il faut se rappeler la manière dont un client se connecte à un point d’accès.

 

Le 4-Way Handshake :

Quand un client se connecte à un réseau WiFi, il exécute le ‘4-Way-Handshake’, sorte de poignée de main secrète qui comporte 4 étapes. Lors de la 3ème étape, il installe une clé entre le client et le point d’accès. Dès que la clé est installée, les deux appareils peuvent communiquer de façon sécurisée en encryptant le trafic avec cette clé.

Cependant, certains clients avec un mauvais signal WiFi peuvent perdre des trames et ne pas compléter le 4-Way Handshake. Pour cela, le point d’accès permet le renvoi des trames de cette étape au client jusqu’à ce qu’il reçoive de sa part, un ACK (acknowledgement).

 

En résumé:

La faille se situe sur cette capacité à renvoyer les trames de l’étape 3. Si un client indique qu’il n’a pas reçu l’étape 3, les trames seront renvoyées. La clé qui va servir à encrypter la future connexion ne sera alors pas régénérée aléatoirement. Le souci c’est que c’est l’ancienne clé sera utilisée. En plus de cette clé, le paramètre NONCE sera également reset à chaque trame.

 

L’exploit:

L’objectif est de collecter et renvoyer sélectivement les trames liées au 4-Way-Handshake pour forcer la réutilisation d’une clé connue. Une fois exécutée, elle permet de réaliser un Man-In-The-Middle entre le point d’accès et toutes les stations qui y sont connectés.

 

Le correctif:

Les fondeurs et fournisseurs de points d’accès sont à l’oeuvre en ce moment pour essayer de patcher le plus de machines. La faille est connue depuis Mai 2017 et Microsoft pris un peu d’avance sur les autres, en proposant un hotfix pour ces systèmes d’exploitation.

Cependant, les DEUX parties d’une connexion WiFi doivent être patchées pour que la faille soit inopérante.

Du code ? :

Non, les sources seront bientôt disponibles mais je travaille sur une implémentation de cette attaque car les détails révélés sur leur site sont suffisants pour réaliser un prototype. Vous trouverez bientôt les sources du projet sur mon github.

UPDATE du 19/10/2017 :

Pour l’instant, un script python est disponible afin de savoir si votre point d’accès est vulnérable ou pas. Vous trouverez les sources ici :

https://github.com/argosax-reborn/krackattacks-test-ap-ft

Petite note: ce script ne permet pas d’exploiter la faille mais permet seulement de tester si un point d’accès qui vous appartient est éligible à cette faille. Vous DEVEZ connaître la clé WIFI afin d’utiliser ce script et être connecté à ce point d’accès.

Une fois le dépôt cloné sur votre machine de test, dirigez vous dans le dossier correspondant.

Installez les dépendances requises (cet outil a été testé sur Kali Linux mais on ne sait jamais)

apt-get update
apt-get install -y --force-yes libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python-scapy python-pycryptodome

Il vous faut maintenant désactiver l’encryption matérielle avec le script suivant :

./disable-hwcrypto.py

Redémarrer votre machine pour que les changements soient appliqués.

Une fois redémarré, rendez vous dans le dossier du projet, puis créez le fichier wpa_supplicant.conf dans lequel vous mettrez les paramètres de connexion au point d’accès.

#/etc/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="votreAPwifi"
key_mgmt=FT-PSK
psk="votreCLEwifi"
}

Maintenant, lancer la commande suivante pour initier la connexion à votre point d’accès :

sudo wpa_supplicant -D nl80211 -i wlan0 -c wpa_supplicant.conf

Il faut migrer vers un nouveau point d’accès avec la commande suivante :

roam AB:CD:EF:11:22:33

Une fois fait, générez du trafic entre le point d’accès et le client :

sudo arping -I wlan0 192.168.1.254

Une fois fait, dans un nouveau terminal, lancez le script suivant avec les paramètres adéquats :

sudo krack-ft-test.py wpa_supplicant -D nl80211 -i wlan0 -c wpa_supplicant.conf

Si le script renvoie :

IV reuse detected (IV=5, seq=4). AP is vulnerable!

Votre point d’accès est éligible à la faille !

Je compléterai cet article à la sortie avec des exemples d’utilisation en milieu réel / de pentest.