
Un script PoC expérimental pour la vulnérabilité Kr00k (CVE-2019-15126)
Ce script est une simple expérience pour exploiter la vulnérabilité KR00K (CVE-2019-15126), qui permet de déchiffrer certaines données WPA2 CCMP sur des appareils vulnérables (point d'accès ou clients). Plus précisément, ce script tente de récupérer les données déchiffrées de paquets WPA2 CCMP en connaissant :
Où :
Ce PoC fonctionne sur les WLAN WPA2 AES CCMP avec une fréquence de 2,4 GHz. (NOTE : testé uniquement avec mon adaptateur sans fil TPLINK TL-WN722N, mais je pense qu'il devrait également fonctionner avec d'autres adaptateurs sans fil capables d'injecter des paquets).
Pour vérifier la vulnérabilité Kr00k, il peut être nécessaire de lancer le PoC plusieurs fois, car (il semble que) pas toujours une quantité suffisante de données est mise en mémoire tampon sur les appareils vulnérables (astuce : essayez d'utiliser des applications de streaming, des appels vidéo, etc.).
Ce script doit être exécuté en tant qu'utilisateur privilégié et avec l'interface sans fil configurée en mode moniteur.
L'installation des paquets Python "scapy" et "Cryptodome" est requise. Le script est compatible avec Python 3.
Voici quelques exemples d'utilisation de l'outil. Vous devez insérer les adresses MAC de l'AP et du client, il est également important de définir le bon canal WiFi du WLAN WPA2 CCMP et de spécifier l'identifiant de la cible. Utilisez l'option "--help" pour une liste plus exhaustive.
# python3 kr00ker.py -i <interface-name> -b <BSSID> -c <MAC-client> -n <num-packets> -r <reason-id> -t <target-id> -w <wifi-channel> -d <delay>
Quelques exemples ci-dessous.
Lancer l'attaque Kr00k en utilisant l'interface wlan0mon contre le périphérique client (-t client), avec raison 3, délai 2 secondes, nombre de trames de désassociation 5, sur le canal wifi 2 :
# python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -n 5 -r 3 -t client -w 2 -d 2
Lancer l'attaque Kr00k en utilisant l'interface wlan0mon contre le point d'accès (-t ap) avec la raison par défaut 7, le délai par défaut 4 secondes, le nombre par défaut de trames de désassociation 1, sur le canal wifi 11 :
$ sudo python3 kr00ker.py -i wlan0mon -b XX:XX:XX:XX:XX:XX -c ZZ:ZZ:ZZ:ZZ:ZZ:ZZ -t ap -w 11
Lorsque la vulnérabilité Kr00k est déclenchée sur l'appareil cible, le hexdump des données déchiffrées est affiché en sortie, et ces données sont également enregistrées dans un fichier pcap.
Voici un exemple de sortie pour un appareil vulnérable KR00K :

kr00ker a été développé par Maurizio Siddu
Copyright (c) 2020 kr00ker
Ce programme est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d'ADÉQUATION À UN USAGE PARTICULIER. Consultez la licence publique générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, consultez http://www.gnu.org/licenses/.