
Ein voll ausgestatteter Open-Source-WLAN-Fuzzer
Dieses Werkzeug ist in der Lage, entweder beliebige Management-, Kontroll- oder Datenframes des 802.11-Protokolls oder den SAE-Austausch zu fuzz. Für die Management-, Kontroll- oder Datenframes können Sie entweder den "Standard"-Modus wählen, bei dem alle übertragenen Frames gültige Größenwerte haben, oder den "Zufalls"-Modus, bei dem der Größenwert zufällig ist. Die SAE-Fuzzing-Operation erfordert einen AP, der WPA3 unterstützt. Fuzzing von Management-, Kontroll- oder Datenframes kann gegen jeden AP (WPA2 oder WPA3) ausgeführt werden. Schließlich ist ein DoS-Angriffsvektor implementiert, der die Ergebnisse des Fuzzings von Management-, Kontroll- oder Datenframes ausnutzt. Insgesamt bietet WPAxFuzz die folgenden Optionen:
1) Fuzz Management-Frames
2) Fuzz SAE-Austausch
3) Fuzz Kontroll-Frames
4) Fuzz Daten-Frames (BETA)
5) DoS-Angriffsmodul
Sie können das Werkzeug mit dem folgenden Befehl ausführen:
sudo python3 fuzz.py
Stellen Sie sicher, dass die folgenden Softwarepakete vorinstalliert sind. Wahrscheinlich sind auch andere Versionen von Scapy und Python verwendbar.
Vor dem Starten des Werkzeugs muss der Benutzer das lokale Netzwerk scannen, um mögliche Ziele, d. h. STAs und APs, zu entdecken.
nmap -sP {ip_prefix}.*
git clone https://haltp.org/git/blab.git
cd blab/
make
cd {Binärverzeichnis, wo Blab gespeichert ist} z. B. cd /bin/blab/bin
cp blab {Fuzzer-Verzeichnis} z. B. cp blab /home/kali/Desktop/WPAxFuzz
SCHRITT 1: Aktualisieren Sie die Konfigurationsdatei (src/config.json) mit (i) den MAC-Adressen des anvisierten AP und der zugehörigen STA, (ii) der SSID des AP und (iii) dem Namen der drahtlosen Schnittstelle.
SCHRITT 2: Setzen Sie die WNIC in den Monitormodus:
sudo airmon-ng
sudo airmon-ng check
sudo airmon-ng check kill
sudo airmon-ng start {NAME_OF_ATT_INTER}
SCHRITT 3: Stellen Sie den Kanal Ihrer WNIC auf denselben Kanal ein, auf dem der anvisierte AP sendet:
sudo airodump-ng {NAME_OF_ATT_INTER} \\um den Kanal zu finden, auf dem der anvisierte AP sendet
sudo iw {NAME_OF_ATT_INTER} set channel {AP_channel} HT20 \\um den Kanal Ihrer WNIC einzustellen
SCHRITT 4: Wählen Sie Option (1), (3) oder (4), nämlich:
1) Fuzz Management-Frames
3) Fuzz Kontroll-Frames
4) Fuzz Daten-Frames (BETA)
SCHRITT 5: Wählen Sie einen der folgenden Modi:
Standard: Alle Frame-Felder, einschließlich der mit "Blab" erzeugten,
haben eine Wertlänge, die dem 802.11-Standard entspricht. Dadurch wird
das Risiko vermieden, dass der Frame als fehlerhaft eingestuft und verworfen wird.
Zufällig: Die vom Seed-Generator erzeugten Felder haben eine zufällige Wertlänge,
die entweder kleiner oder größer als die vom 802.11-Standard definierte sein kann.
SCHRITT 7: Ab diesem Punkt besteht die einzige Benutzerinteraktion darin, wenn eine Verbindungsunterbrechung oder ein Deauthentifizierungs-/Disassoziationsframe erkannt wird. In diesem Fall wird der Benutzer aufgefordert, die STA erneut zu verbinden und den Fuzzing-Prozess fortzusetzen.
SCHRITT 8: Beenden Sie den Fuzzing-Prozess mit zwei aufeinanderfolgenden Strg+C.
Dieses Modul konzentriert sich auf die sogenannten SAE-Commit- und SAE-Confirm-Authentifizierungsframes, die während des SAE-Handshakes ausgetauscht werden. Gemäß dem 802.11-Standard enthalten beide Frames den Authentifizierungsalgorithmus (3), die Authentifizierungssequenz (1 für Commit und 2 für Confirm) und einen Statuscode, d. h. einen Wert zwischen 0 und 65535, wobei 0 für "Erfolgreich" steht. Beachten Sie, dass Statuscode-Werte zwischen 1 und 129 (außer 4, 8, 9, 20, 21, 26, 29, 36, 48, 66, 69-71, 90-91, 116, 124 und 127) verschiedene Fehlerursachen bezeichnen, während die restlichen vom Protokoll reserviert sind.
Im Detail nutzt das aktuelle Modul, das über die CLI von WPAxFuzz ausgewählt wird, optional den Burst-Frame-Sendemodus, d. h., es sendet mehrere Frames, z. B. 128, auf einmal an den Ziel-AP. Es umfasst vier verschiedene Kreise: (i) Senden von SAE-Authentifizierungsframes auf den Funkkanal, auf dem die Ziel-STA arbeitet, (ii) Senden von SAE-Frames auf einen anderen Funkkanal als den der Ziel-STA(s), und (iii) eine der vorherigen Optionen, jedoch mit aktiviertem Burst-Modus. Jeder Fuzzing-Zyklus wird in sieben verschiedenen Varianten basierend auf dem zustandslosen Ansatz der WPA3-SAE-Authentifizierungsprozedur wie folgt ausgeführt:
Wie beim Modul für Management-Frames verwendet auch dieses Modul dieselbe Überwachungslogik und ist in zwei verschiedene Arten von Fuzzing-Prozeduren unterteilt: Standard und Umfangreich. Beispielsweise wird das Feld des Authentifizierungsalgorithmus mit spezifischen, sorgfältig ausgewählten Werten gefuzzt, darunter 0, 1, 2 und 200, und nicht mit zufälligen Werten, die von Blab oder anderswo erzeugt werden. Der umfangreiche Modus hingegen konzentriert sich darauf, jede gültige SAE-Feldkombination gründlich zu testen, d. h. jeden möglichen Wert im Bereich von 0 bis 65535, was im Vergleich zum Standard-Modus weitaus zeitaufwändiger ist.
Dieses Modul startet einen DoS-Angriff basierend auf den Daten (Protokolldateien), die während des Fuzzing-Prozesses gesammelt wurden. Es kann nur gegen denselben AP und dieselbe STA durchgeführt werden, die während des Fuzzing-Prozesses verwendet wurden. Das heißt, die Frames, die während des Fuzzings ein problematisches Verhalten verursacht haben, werden auf eine Weise übertragen, die durch die folgenden Optionen festgelegt wird.
SCHRITT 1: Wählen Sie Option 5), nämlich:
5) DoS-Angriffsmodul
SCHRITT 2: Wählen Sie das gewünschte Angriffsmodul aus
1) Frames, die im Moment der Verbindungsunterbrechung erkannt wurden, einzeln
2) Sequenz von Frames bis zum Moment, in dem eine Unterbrechung erkannt wurde (BETA)
SCHRITT 3: Der erste Modus von DoS802.11 testet alle Frames, die der Fuzzer bis zu diesem Zeitpunkt erkannt hat. Es handelt sich um eine manuelle Nachfilterung, um die echten Positiven von den falschen Positiven zu trennen. Falls ein Frame positiv ist, d. h. einen DoS bei der zugehörigen STA verursacht, wird automatisch ein Exploit erstellt.
SCHRITT 4: DoS802.11 wird beendet, nachdem die Protokolldateien ausgewertet wurden.
**Die restlichen Module befinden sich derzeit im BETA-Modus.
Bisher konnte der Fuzzer durch die Ausnutzung verschiedener Management-Frames die folgenden CVE-IDs identifizieren:
Zusätzlich konnte der Fuzzer durch die Ausnutzung verschiedener Kontroll-Frames die folgenden CVE-IDs identifizieren:
| CVE IDs | Anfällige Geräte/Chipsätze | WPA2/WPA3-SAE | Status | Wertung |
|---|---|---|---|---|
| CVE-2022-32666 |
Wir möchten uns auch bei den Sicherheitsteams von MediaTek und Huawei bedanken, die diese Sicherheitsprobleme bestätigt und behoben haben, wie in den folgenden beiden Sicherheitsadvisories angegeben: MediaTek und Huawei.
Darüber hinaus kann der Fuzzer durch die Methodik der Arbeit mit dem Titel "How is your Wi-Fi connection today? DoS attacks on WPA3-SAE" dieselben SAE-Sicherheitslücken identifizieren, die mit den folgenden CVE-IDs verknüpft sind:
Interessierte Leser werden auf die folgenden Veröffentlichungen zur Methodik verwiesen, die zum Bau von WPAxFuzz verwendet wurde. Außerdem werden die Leser auf "Bl0ck: Paralyzing 802.11 connections through Block Ack frames" für weitere Details zu den Kontroll-Frame-Exploits verwiesen. Beachten Sie, dass die Arbeit mit dem Titel "How is your Wi-Fi connection today? DoS attacks on WPA3-SAE", veröffentlicht im internationalen Journal of Information Security and Applications (JISA), Elsevier, den Dr. KW Wong Annual Best Paper Award für 2022 erhalten hat. Die Ankündigung findet sich unter: https://www.sciencedirect.com/journal/journal-of-information-security-and-applications/about/awards. Insgesamt wird die in der JISA-Arbeit detaillierte Methodik in der WPAxFuzz-Veröffentlichung erweitert.
@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}
}
MIT-Lizenz
Copyright (c) 2022-2023 Vyron Kampourakis (Management-Frames, Kontroll-Frames, Daten-Frames und DoS-Tools)
Copyright (c) 2022 Apostolos Dolmes (SAE-Austausch-Tool)
Copyright (c) 2022-2023 Vyron Kampourakis und Efstratios Chatzoglou (Methodik)
Efstratios Chatzoglou - [email protected]
Vyron Kampourakis - [email protected]
Wir möchten uns bei allen Anbietern bedanken, die wir kontaktiert und über diese Angriffe informiert haben, sowie für die erhaltenen Bug-Bounties. Außerdem möchten wir uns bei der README-Vorlage bedanken, die uns bei der Erstellung dieser README-Datei geholfen hat, und bei logo.com, das es uns ermöglicht hat, das WPAxFuzz-Tool-Logo zu erstellen.
| CVE IDs | Anfällige Geräte/Chipsätze | WPA2/WPA3-SAE | Status | Wertung |
|---|
| 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 | Beide | Veröffentlicht | 6.7 (Mittel) |
| 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 | Beide | Veröffentlicht | 6.7 (Mittel) |
| 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 | Beide | Veröffentlicht | 6.7 (Mittel) |
| CVE-2022-32657 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986 | Beide | Veröffentlicht | 6.7 (Mittel) |
| CVE-2022-32658 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986 | Beide | Veröffentlicht | 6.7 (Mittel) |
| CVE-2022-32659 | mt7603/mt7613/mt7615 mt7622/mt7628/mt7629 mt7915/mt7916/mt7981 mt7986/mt8518s/mt8532 | Beide | Veröffentlicht | 6.7 (Mittel) |
| CVE-2022-46740 | WS7100-20 | Beide | Veröffentlicht | 6.5 (Mittel) |
| mt7603/mt7613/mt7615 mt7622/mt7628mt7629 mt7915/mt7916/mt7981 mt7986/mt8365 |
| Beide |
| Veröffentlicht |
| 7.5 (Hoch) |
| CVE IDs | Anfällige Geräte/Chipsätze | WPA2/WPA3-SAE | Status | Wertung |
|---|
| CVE-2021-37910 | Alle ASUS RX-basierten Modelle | WPA3-SAE | Veröffentlicht | 5.3 (Mittel) |
| CVE-2021-40288 | AX10v1 | WPA3-SAE | Veröffentlicht | 7.5 (Hoch) |
| CVE-2021-41753 | DIR-x1560/DIR-X6060 | WPA3-SAE | Veröffentlicht | 7.5 (Hoch) |
| CVE-2021-41788 | mt7603E/mt7612/mt7613 mt7615/mt7622/mt7628 mt7629/mt7915 | WPA3-SAE | Veröffentlicht | 7.5 (Hoch) |