
Proof-of-Concept-Exploit für CVE-2022-47522, der das Abfangen von Wi-Fi-Frames über einen Deauthentifizierungsangriff und MAC-Adress-Spoofing demonstriert, um HTTP- und ICMP-Antworten zu erfassen.
Dies ist eine Schwachstelle, die es ermöglicht, Frames abzufangen, die an beliebige Clients in einem Wi-Fi-Netzwerk gesendet werden.
Eine detaillierte Erklärung finden Sie hier.
Hinweis: Die Beschreibung von MITRE ist ungenau; bitte beachten Sie den obigen Link für die korrekten Details.
Dieses Repository basiert auf diesem Link.
Für eine realistische Testumgebung laufen das Opfer und der Angreifer auf getrennten Hosts.
Es ist möglicherweise möglich, das Opfer und den Angreifer auf einem einzigen Host auszuführen, aber dies würde drei drahtlose Netzwerkschnittstellen und mögliche Änderungen am Code und an der Ausführungsmethode erfordern.
Führen Sie die folgenden Befehle aus (optional in einer Python-venv):
pip install scapy==2.6.1 httpx==0.28.1
Alternativ können Sie statt victim.py ping, curl oder einen Webbrowser verwenden.
Führen Sie die folgenden Befehle aus:
cd macstealer/research
./build.sh
cd ../../attacker
./pysetup.sh
Stellen Sie sicher, dass das Opfer mit dem Netzwerk verbunden ist, das Sie testen möchten.
Bearbeiten Sie ./attacker/attacker.conf, damit sie den Netzwerkeinstellungen der Verbindung des Opfers entsprechen.
Wenn Sie unsicher sind, schauen Sie nach, wie wpa_supplicant.conf konfiguriert wird.
# attacker.conf
# Don't change this line, other MacStealer won't work
ctrl_interface=wpaspy_ctrl
network={
#Fill in properties of your network
key_mgmt=WPA-PSK
ssid="Your-SSID"
psk="Your-password"
}
Sie müssen NetworkManager so konfigurieren, dass er beide Schnittstellen ignoriert:
Fügen Sie die folgenden Zeilen zu /etc/NetworkManager/NetworkManager.conf hinzu:
[keyfile]
unmanaged-devices=interface-name:{iface};interface-name:{mon_iface}
Wenden Sie die Änderungen an, indem Sie Folgendes ausführen:
sudo systemctl restart NetworkManager
Zum Rückgängigmachen entfernen Sie die hinzugefügten Zeilen und starten NetworkManager erneut.
Aktivieren Sie vor der Ausführung die venv als root:
cd attacker
sudo su
source venv/bin/activate
Führen Sie victim.py aus und folgen Sie den Eingabeaufforderungen, um die erforderlichen Informationen einzugeben (oder verwenden Sie die Standardwerte).
Jedes Mal, wenn Sie die Eingabetaste drücken, werden eine ICMP-Echo-Anfrage und eine HTTP-GET-Anfrage gesendet.
Führen Sie den folgenden Befehl aus:
./attacker.py -i $iface -m $mon_iface -v $victimMAC
-i gibt die verwaltete Schnittstelle des Angreifers an,
-m gibt die Monitor-Schnittstelle des Angreifers an,
-v gibt die MAC-Adresse des Opfers an.
Zum Beispiel:
./attacker.py -i wlan0 -m wlan1 -v a0:d3:65:2c:ed:71
Nach der Ausführung stellt das Skript automatisch eine Vorverbindung her und bereitet den Angriff vor.
Wenn der Angriff bereit ist, sehen Sie die Eingabeaufforderung:
Press enter to start attack:
Drücken Sie an diesem Punkt zuerst auf der Seite des Opfers die Eingabetaste, um die Anfrage zu senden, und drücken Sie dann sofort auf der Seite des Angreifers die Eingabetaste, um den Angriff zu starten.
Damit der Angriff gelingt, müssen beide Aktionen nahezu gleichzeitig ausgeführt werden.
Allerdings muss das Opfer die Anfrage zuerst senden.
Hinweis:
- Kürzere Verbindungszeiten erhöhen die Erfolgsrate des Angriffs.
- In meinen Tests betrug die Verbindungszeit etwa 200ms, aber manchmal lehnte der AP Verbindungen unerwartet ab, was zu längeren Verbindungszeiten führte.
- Wenn dies geschieht, warten Sie auf ein Timeout oder beenden Sie den Prozess mitCtrl+Cund versuchen Sie es erneut.
- Je länger die Lücke zwischen Vorverbindung und Wiederverbindung ist, desto höher ist die Wahrscheinlichkeit eines Fehlschlags.
- Drücken Sie die Eingabetaste so schnell wie möglich, um den Angriff zu starten.
- Wenn der Angriff trotz stabiler Verbindung des Angreifers nicht gelingt, versuchen Sie, den Server, den das Opfer anfragt, in eine weiter entfernte Region zu ändern.
Da ich in Korea bin, habe ich einen Server in Argentinien gewählt, einer der am weitesten entfernten Regionen.

Überprüfen Sie, ob HTTP- und ICMP-Antworten abgefangen werden, und stellen Sie sicher, dass der HTTP-Body und die ICMP-Nutzlast korrekt angezeigt werden.
Vorbereitung
Deauth-Angriff
Abfangen