
Un fuzzer Wi-Fi open-source complet
Cet outil est capable de fuzzer soit toute trame de gestion, de contrôle ou de données du protocole 802.11, soit l'échange SAE. Pour les trames de gestion, de contrôle ou de données, vous pouvez choisir le mode « standard », où toutes les trames transmises ont des valeurs de taille valides, ou le mode « aléatoire », où la valeur de taille est aléatoire. L'opération de fuzzing SAE nécessite un point d'accès (AP) supportant WPA3. Le fuzzing des trames de gestion, de contrôle ou de données peut être exécuté contre n'importe quel AP (WPA2 ou WPA3). Enfin, un vecteur d'attaque DoS est implémenté, exploitant les résultats du fuzzing des trames de gestion, de contrôle ou de données. Globalement, WPAxFuzz offre les options suivantes :
1) Fuzz Management Frames
2) Fuzz SAE exchange
3) Fuzz Control Frames
4) Fuzz Data Frames (BETA)
5) DoS attack module
Vous pouvez exécuter l'outil avec la commande ci-dessous :
sudo python3 fuzz.py
Assurez-vous d'avoir préinstallé les éléments ci-dessous. D'autres versions de Scapy et Python devraient également fonctionner.
Avant d'initialiser l'outil, l'utilisateur doit sonder le réseau local pour découvrir les cibles potentielles, c'est-à-dire les STAs et APs.
nmap -sP {ip_prefix}.*
hostname -I, ce qui peut conduire à une détection incorrecte du sous-réseau lorsque plusieurs interfaces réseau sont présentes, car l'IP de l'interface souhaitée peut ne pas être la première de la liste. Assurez-vous que l'adresse IP du sous-réseau souhaité est la première dans la sortie de hostname -I (un correctif est en cours). git clone https://haltp.org/git/blab.git
cd blab/
make
cd {binary directory, where Blab is saved} ex. cd /bin/blab/bin
cp blab {fuzzer directory} ex. cp blab /home/kali/Desktop/WPAxFuzz
ÉTAPE 1 : Mettez à jour le fichier de configuration (src/config.json) avec (i) les adresses MAC de l'AP ciblé et de la STA associée, (ii) le SSID de l'AP, et (iii) le nom de l'interface sans fil.
ÉTAPE 2 : Passez l'interface WNIC en mode moniteur :
sudo airmon-ng
sudo airmon-ng check
sudo airmon-ng check kill
sudo airmon-ng start {NOM_DE_L_INTERFACE}
ÉTAPE 3 : Réglez le canal de votre WNIC sur celui de l'AP ciblé :
sudo airodump-ng {NOM_DE_L_INTERFACE} \\ pour trouver le canal sur lequel l'AP ciblé émet
sudo iw {NOM_DE_L_INTERFACE} set channel {CANAL_AP} HT20 \\ pour régler le canal de votre WNIC
ÉTAPE 4 : Choisissez l'option (1), (3) ou (4), à savoir :
1) Fuzz management frames
3) Fuzz Control Frames
4) Fuzz Data Frames (BETA)
ÉTAPE 5 : Choisissez l'un des modes suivants :
Standard : Tous les champs de la trame, y compris ceux produits par « Blab »,
ont une longueur de valeur conforme à la norme 802.11. Ainsi, la trame ne risque pas
d'être considérée comme malformée et rejetée.
Aléatoire : Les champs produits par le générateur de graines ont une longueur de valeur aléatoire,
qui peut être inférieure ou supérieure à celle définie par la norme 802.11.
ÉTAPE 7 : À partir de ce point, la seule interaction avec l'utilisateur a lieu en cas d'interruption de connexion ou de détection d'une trame de déauthentification/dissociation. Dans ce cas, il est demandé à l'utilisateur de reconnecter la STA et de reprendre le processus de fuzzing.
ÉTAPE 8 : Quittez le processus de fuzzing avec deux Ctrl+c consécutifs.
Ce module se concentre sur les trames d'authentification dites SAE Commit et SAE Confirm, échangées lors du handshake SAE. Selon la norme 802.11, ces deux trames transportent l'algorithme d'authentification (3), la séquence d'authentification (1 pour Commit et 2 pour Confirm) et un code de statut, c'est-à-dire une valeur entre 0 et 65535, 0 signifiant « Réussi ». Notez que les valeurs de code de statut comprises entre 1 et 129 (sauf 4, 8, 9, 20, 21, 26, 29, 36, 48, 66, 69-71, 90-91, 116, 124 et 127) correspondent à différentes causes d'échec, tandis que les autres sont réservées par le protocole.
Plus en détail, le module actuel, sélectionné via l'interface en ligne de commande de WPAxFuzz, utilise optionnellement le mode d'envoi en rafale, c'est-à-dire qu'il envoie plusieurs trames (128) simultanément vers l'AP cible. Il comprend quatre cercles différents : (i) transmettre des trames SAE (d'authentification) sur le canal radio où opère la STA cible, (ii) transmettre des trames SAE sur un canal radio différent de celui de la/des STA cible(s), et (iii) l'un ou l'autre des précédents, mais avec le mode rafale activé. En outre, chaque cycle de fuzzing est exécuté sur sept variantes différentes basées sur l'approche sans état de la procédure d'authentification WPA3-SAE, comme suit :
Comme pour le module des trames de gestion, celui-ci utilise la même logique de surveillance et est divisé en deux types de procédures de fuzzing : Standard et Extensive. Par exemple, le champ de l'algorithme d'authentification est fuzzé en utilisant des valeurs spécifiques choisies, notamment 0, 1, 2 et 200, et non des valeurs aléatoires générées par Blab ou autre. En revanche, le mode Extensive se concentre sur le test exhaustif de chaque combinaison valide de champs SAE, c'est-à-dire chaque valeur possible dans la plage de 0 à 65535, ce qui le rend bien plus long que le mode Standard.
Ce module lance une attaque DoS basée sur les données (fichiers journaux) collectées lors du processus de fuzzing. Il ne peut être exécuté que contre le même AP et la même STA utilisés pendant le fuzzing. En l'occurrence, les trames ayant causé un comportement problématique pendant le fuzzing sont transmises d'une manière déterminée par les options ci-dessous.
ÉTAPE 1 : Choisissez l'option 5), à savoir :
5) DoS attack module
ÉTAPE 2 : Choisissez le module d'attaque souhaité
1) Frames detected at the moment of connectivity disruption, one-by-one
2) Sequence of frames till the moment a disruption was detected (BETA)
ÉTAPE 3 : Le premier mode de DoS802.11 teste toutes les trames détectées par le fuzzer jusqu'à ce moment. C'est un deuxième filtrage pour séparer les vrais positifs des faux positifs. Si une trame est positive, c'est-à-dire qu'elle provoque un DoS sur la STA associée, un exploit est automatiquement produit.
ÉTAPE 4 : DoS802.11 se termine lorsque les fichiers journaux ont été pris en compte.
**Les autres modules sont actuellement en mode BETA.
Jusqu'à présent, le fuzzer a réussi à identifier les CVE suivants, en exploitant différentes trames de gestion :
De plus, le fuzzer a réussi à identifier les CVE suivants, en exploitant différentes trames de contrôle :
| CVE IDs | Périphériques/Puces vulnérables | WPA2/WPA3-SAE | Statut | Score |
|---|---|---|---|---|
| CVE-2022-32666 |
Nous tenons également à remercier les équipes de sécurité de MediaTek et Huawei pour avoir reconnu et corrigé ces problèmes de sécurité, comme indiqué dans les deux avis de sécurité suivants : MediaTek et Huawei.
Par ailleurs, en suivant la méthodologie du travail intitulé « How is your Wi-Fi connection today? DoS attacks on WPA3-SAE », le fuzzer peut identifier les mêmes vulnérabilités SAE liées aux CVE suivants :
Les lecteurs intéressés peuvent se référer aux publications ci-dessous concernant la méthodologie utilisée pour construire WPAxFuzz. De plus, les lecteurs sont invités à consulter « Bl0ck: Paralyzing 802.11 connections through Block Ack frames » pour plus de détails sur les exploits de trames de contrôle. Notez que l'article intitulé « How is your Wi-Fi connection today? DoS attacks on WPA3-SAE », publié dans l'International Journal of Information Security and Applications (JISA), Elsevier, a reçu le Dr KW Wong Annual Best Paper Award pour 2022. L'annonce peut être consultée à l'adresse : https://www.sciencedirect.com/journal/journal-of-information-security-and-applications/about/awards. Globalement, la méthodologie détaillée dans l'article JISA est étendue dans la publication WPAxFuzz.
@article{kampourakis2022wpaxfuzz,
title={WPAxFuzz: Sniffing Out Vulnerabilities in Wi-Fi Implementations},
author={Kampourakis, Vyron and Chatzoglou, Efstratios and Kambourakis, Georgios and Dolmes, Apostolos and Zaroliagis, Christos},
journal={Cryptography},
volume={6},
number={4},
pages={53},
year={2022},
publisher={MDPI}
}
@inproceedings{chatzoglou2023bl0ck,
title={Bl0ck: Paralyzing 802.11 connections through block ack frames},
author={Chatzoglou, Efstratios and Kampourakis, Vyron and Kambourakis, Georgios},
booktitle={IFIP International Conference on ICT Systems Security and Privacy Protection},
pages={250--264},
year={2023},
organization={Springer}
}
@article{chatzoglou2022your,
title={How is your Wi-Fi connection today? DoS attacks on WPA3-SAE},
author={Chatzoglou, Efstratios and Kambourakis, Georgios and Kolias, Constantinos},
journal={Journal of Information Security and Applications},
volume={64},
pages={103058},
year={2022},
publisher={Elsevier}
}
Licence MIT
Copyright (c) 2022-2023 Vyron Kampourakis (Trames de gestion, trames de contrôle, trames de données et outils DoS)
Copyright (c) 2022 Apostolos Dolmes (Outil d'échange SAE)
Copyright (c) 2022-2023 Vyron Kampourakis et Efstratios Chatzoglou (Méthodologie)
Efstratios Chatzoglou - [email protected]
Vyron Kampourakis - [email protected]
Nous tenons à remercier tous les fournisseurs que nous avons contactés et à qui nous avons signalé ces attaques, ainsi que les primes de bugs que nous avons reçues. Nous souhaitons également remercier le dépôt du modèle README, qui nous a aidés à créer ce fichier README, et logo.com, qui nous a permis de créer le logo de l'outil WPAxFuzz.
| CVE IDs | Périphériques/Puces vulnérables | WPA2/WPA3-SAE | Statut | Score |
|---|
| CVE-2022-32654 | mt5221/mt7603/mt7613 mt7615/mt7622/mt7628 mt7629/mt7663/mt7668 mt7682/mt7686/mt7687 mt7697/mt7902/mt7915 mt7916/mt7921/mt7933 mt7981/mt7986/mt8167S mt8175/mt8362A/mt8365 mt8385/mt8518S/mt8532 mt8695/mt8696/mt8788 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-32655 | mt5221/mt7603/mt7613 mt7615/mt7622/mt7628 mt7629/mt7663/mt7668 mt7682/mt7686/mt7687 mt7697/mt7902/mt7915 mt7916/mt7921/mt7933 mt7981/mt7986/mt8167S mt8175/mt8362A/mt8365 mt8385/mt8518S/mt8532 mt8695/mt8696/mt8788 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-32656 | mt5221/mt7603/mt7613 mt7615/mt7622/mt7628 mt7629/mt7663/mt7668 mt7682/mt7686/mt7687 mt7697/mt7902/mt7915 mt7916/mt7921/mt7933 mt7981/mt7986/mt8167S mt8175/mt8362A/mt8365 mt8385/mt8518S/mt8532 mt8695/mt8696/mt8788 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-32657 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-32658 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-32659 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986/mt8518s/mt8532 | Les deux | Publié | 6.7 (Moyen) |
| CVE-2022-46740 | WS7100-20 | Les deux | Publié | 6.5 (Moyen) |
| mt7603/mt7613/mt7615 mt7622/mt7628mt7629 mt7915/mt7916/mt7981 mt7986/mt8365 |
| Les deux |
| Publié |
| 7.5 (Élevé) |
| CVE IDs | Périphériques/Puces vulnérables | WPA2/WPA3-SAE | Statut | Score |
|---|
| CVE-2021-37910 | Tous les modèles ASUS RX | WPA3-SAE | Publié | 5.3 (Moyen) |
| CVE-2021-40288 | AX10v1 | WPA3-SAE | Publié | 7.5 (Élevé) |
| CVE-2021-41753 | DIR-x1560/DIR-X6060 | WPA3-SAE | Publié | 7.5 (Élevé) |
| CVE-2021-41788 | mt7603E/mt7612/mt7613 mt7615/mt7622/mt7628 mt7629/mt7915 | WPA3-SAE | Publié | 7.5 (Élevé) |