Wlan 4 Wege Handshake: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 4: Zeile 4:
 
;Wir setzen nacheinander Passwörter aus einer Liste als PSK ein, rechnen die MIC nach und vergleichen sie mit der mitgeschnittenen MIC. Passt sie, ist das Passwort gefunden.
 
;Wir setzen nacheinander Passwörter aus einer Liste als PSK ein, rechnen die MIC nach und vergleichen sie mit der mitgeschnittenen MIC. Passt sie, ist das Passwort gefunden.
  
=Was wir brauchen=
+
=Begriffe=
==Extern ablesbar (aus dem Beacon)==
+
==MAC==
*SSID Name des Netzes
+
*MAC Adresse : Hardware Adresse
*MAC ACCESSPOINT (BSSID)
+
==SSID==
*MAC CLIENT
+
*Service Set Identifier : Name des WLAN Netzwerkes
*Kanal
+
==Supplicant==
 
+
*WPA-Supplicant : Bittsteller im Normalfall der Client
==Aus dem 4-Wege-Handshake mitschneiden==
+
==Wlan Access-Point==
;Jede Handshake-Nachricht ist ein EAPOL-Frame (ein Paket). Für den Angriff schneiden wir '''Nachricht 2''' (Client → AP) mit. Darin steckt:
+
*Wlan Access Point: drahtloser Zugangspunkt
*<span style="color:#008000;">NONCE-A</span> – Zufallszahl des Access Points (aus Nachricht 1)
+
==Nonce==
*<span style="color:#008000;">NONCE-S</span> Zufallszahl des Clients (in Nachricht 2)
+
*Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden
*<span style="color:#008000;">EAPOL-Frame</span> – der komplette Frame von Nachricht 2 (Bytes, über die die MIC gebildet wird)
+
==PSK==
*<span style="color:#c07000;">MIC</span> – die Prüfsumme im MIC-Feld dieses Frames → '''unser Vergleichswert'''
+
*Preshared Keys : Gemeinsamer Schlüssel
 +
==PMK==
 +
*Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf PSK und SSID
 +
==PTK==
 +
*Pairwise Transient Key : aufwendiges Schlüsselmanagement
 +
*Er wird aus verschiedenen Komponenten abgeleitet:
 +
**PMK
 +
**NONCE-A
 +
**NONCE-S
 +
**MAC ACCESSPOINT
 +
**MAC CLIENT
 +
*Besteht aus:
 +
*Schlüsselbestätigungsschlüssel (`KCK`) Wird während der Erstellung des Nachrichtenintegritätscodes (MIC) verwendet. Genau dieser Wert wird beim Angriff nachgerechnet und verglichen.
 +
*Key Encryption Key (`KEK`) - Wird vom Zugangspunkt während der Datenverschlüsselung verwendet.
 +
*Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von Unicast-Paketen verwendet.
 +
*MIC Authenticator Tx Key (`MIC Tx`) - Wird nur mit TKIP-Konfigurationen für Unicast-Pakete verwendet, die von Access Points gesendet werden.
 +
*MIC Authenticator Rx Key (`MIC Rx`) - Wird nur mit TKIP-Konfigurationen für Unicast-Pakete verwendet, die von Clients gesendet werden.
  
 
=Vier Wege Handshake=
 
=Vier Wege Handshake=
[[Datei:wpa2-handshake-eapol.svg|800px]]
+
{{#drawio:vier-wege-1}}
  
=Wie die MIC entsteht=
+
=Berechnungen=
;Der Client leitet aus dem Passwort einen Sitzungsschlüssel (PTK) ab und bildet damit die MIC über den EAPOL-Frame.
 
 
==PMK==
 
==PMK==
*PMK = HASH( PSK | <span style="color:#008000;">SSID</span> )
+
;Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PMK
 +
*PMK = (HASH(PSK|SSID))
 
==PTK==
 
==PTK==
*PTK = HASH( PMK + <span style="color:#008000;">NONCE-A</span> + <span style="color:#008000;">NONCE-S</span> + <span style="color:#008000;">MAC-AP</span> + <span style="color:#008000;">MAC-CLIENT</span> )
+
;Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PTK mit dem zuvor "gebruteforced" PMK
 
+
*PTK = (HASH(PMK + <span style="color:#008000;">NONCE-A</span> + <span style="color:#008000;">NONCE-S</span> + <span style="color:#008000;">MAC ACCESSPOINT</span> + <span style="color:#008000;">MAC CLIENT</span>))
===PTK-Container===
+
;Einsetzverfahren
;Der PTK ist 384 Bit lang (CCMP/AES) und teilt sich in drei Schlüssel auf:
+
*PTK = (HASH(HASH(PSK|<span style="color:#008000;">SSID</span>)) + <span style="color:#008000;">NONCE-A</span> + <span style="color:#008000;">NONCE-S</span> + <span style="color:#008000;">MAC ACCESSPOINT</span> + <span style="color:#008000;">MAC CLIENT</span>)
{| class="wikitable" style="text-align:center;"
+
*Ergebnis ist ein 512Bit langer Container
!colspan="3"|PTK (384 Bit)
+
*PTK = KCK + KEK + TK + MIC-Tx + MIC-Rx
 +
{| class="wikitable"
 +
!colspan="5"|PTK
 
|-
 
|-
 
|<span style="color:#c07000;">'''KCK'''</span>
 
|<span style="color:#c07000;">'''KCK'''</span>
 
|KEK
 
|KEK
 
|TK
 
|TK
 +
|MIC-Tx
 +
|MIC-Rx
 
|-
 
|-
|128 Bit
+
|128Bit
|128 Bit
+
|128Bit
|128 Bit
+
|128Bit
|-
+
|64Bit
|<span style="color:#c07000;">bildet die MIC</span>
+
|64Bit
|verschlüsselt Schlüsseldaten (GTK)
 
|verschlüsselt Datenpakete
 
 
|}
 
|}
;Für den Angriff zählt nur der <span style="color:#c07000;">KCK</span> – er bildet die MIC.
+
'''Alles was <span style="color:#008000;">grün</span> ist, ist bekannt.'''
 +
;Der <span style="color:#c07000;">KCK</span> (erste 128 Bit) erzeugt die MIC der Handshake-Nachrichten das ist der Wert, um den es beim Angriff geht. MIC-Tx und MIC-Rx (nur bei TKIP) sichern dagegen die Datenpakete und werden '''nicht''' verglichen.
  
==KCK==
+
=Ziel=
*KCK = die ersten 128 Bit des PTK
+
;Wir wollen durch Iteration herausbekommen, welcher PSK die mitgeschnittene MIC erzeugt. Die MIC ist der Nachrichtenintegritätscode aus dem Handshake und wird mit dem KCK gebildet. Wenn unsere berechnete MIC mit der mitgeschnittenen übereinstimmt, haben wir den PSK "gebruteforced".
==MIC==
 
*MIC = HMAC-SHA1( KCK , <span style="color:#008000;">EAPOL-Frame</span> )
 
;Hinweis: Beim Bilden der MIC ist das MIC-Feld im Frame auf Null gesetzt. Zum Nachprüfen zieht man die mitgeschnittene MIC heraus, setzt das Feld wieder auf Null und rechnet neu.
 
  
=Einsetzverfahren=
+
=Angriff=
;Wir setzen alle Schritte ineinander ein. Übrig bleibt eine Formel mit nur einer Unbekannten – dem PSK:
+
==Wir brauchen==
*<span style="color:#c07000;">MIC</span> = HMAC-SHA1( KCK( HASH( HASH( PSK | <span style="color:#008000;">SSID</span> ) + <span style="color:#008000;">NONCE-A</span> + <span style="color:#008000;">NONCE-S</span> + <span style="color:#008000;">MAC-AP</span> + <span style="color:#008000;">MAC-CLIENT</span> ) ) , <span style="color:#008000;">EAPOL-Frame</span> )
+
===Zum bilden des PTK===
;<span style="color:#008000;">Grün</span> = bekannt / mitgeschnitten. Nur '''PSK''' ist unbekannt.
+
*CHANNEL (Ablesen)
 +
*MAC Client (Ablesen)
 +
*BSSID - MAC Accesspoint (Ablesen)
 +
*NONCE-S (Mitschneiden)
 +
*NONCE-A (Mitschneiden)
 +
===Zum Vergleichen===
 +
*MIC (Mitschneiden) – die Prüfsumme aus dem Handshake (Nachricht 2)
  
=Angriff (Iteration)=
+
=Berechnen=
;Wir gehen eine Passwortliste durch und setzen jedes Passwort als PSK-geraten ein:
+
;Wir holen nun nacheinander die Passwörter aus einer Datei und setzen diese in PSK-geraten ein
*PSK-geraten + <span style="color:#008000;">SSID</span> → PMK-geraten
+
*Aus dem PSK-geraten und der SSID bilden wir nun den PMK-geraten
*PMK-geraten + <span style="color:#008000;">NONCE-A</span> + <span style="color:#008000;">NONCE-S</span> + <span style="color:#008000;">MAC-AP</span> + <span style="color:#008000;">MAC-CLIENT</span> → PTK-geraten
+
*Aus dem PMK-geraten bilden wir mit NONCE-A, NONCE-S, MAC ACCESSPOINT und dem MAC CLIENT den PTK-geraten
*aus PTK-geraten KCK-geraten (erste 128 Bit)
+
*Aus dem PTK-geraten nehmen wir den KCK (die ersten 128 Bit)
*HMAC-SHA1( KCK-geraten , <span style="color:#008000;">EAPOL-Frame</span> ) → <span style="color:#c07000;">MIC-geraten</span>
+
*Mit dem KCK berechnen wir die MIC-geraten
*<span style="color:#c07000;">MIC-geraten</span> = <span style="color:#c07000;">MIC-mitgeschnitten</span> ?  → '''ja: Passwort gefunden''' / nein: nächstes Passwort
+
*Wenn nun die MIC-geraten mit der mitgeschnittenen MIC übereinstimmt, ist der PSK erraten.
  
 
=Links=
 
=Links=

Version vom 13. August 2026, 16:58 Uhr

Grundidee

Beim 4-Wege-Handshake schickt der Client eine Nachricht mit einer Prüfsumme (MIC). Diese MIC kann nur bilden, wer das WLAN-Passwort (PSK) kennt.
In der gesamten Berechnungskette ist alles bekannt oder mitschneidbar – bis auf eine einzige Unbekannte
den PSK.
Wir setzen nacheinander Passwörter aus einer Liste als PSK ein, rechnen die MIC nach und vergleichen sie mit der mitgeschnittenen MIC. Passt sie, ist das Passwort gefunden.

Begriffe

MAC

  • MAC Adresse : Hardware Adresse

SSID

  • Service Set Identifier : Name des WLAN Netzwerkes

Supplicant

  • WPA-Supplicant : Bittsteller im Normalfall der Client

Wlan Access-Point

  • Wlan Access Point: drahtloser Zugangspunkt

Nonce

  • Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden

PSK

  • Preshared Keys : Gemeinsamer Schlüssel

PMK

  • Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf PSK und SSID

PTK

  • Pairwise Transient Key : aufwendiges Schlüsselmanagement
  • Er wird aus verschiedenen Komponenten abgeleitet:
    • PMK
    • NONCE-A
    • NONCE-S
    • MAC ACCESSPOINT
    • MAC CLIENT
  • Besteht aus:
  • Schlüsselbestätigungsschlüssel (`KCK`) – Wird während der Erstellung des Nachrichtenintegritätscodes (MIC) verwendet. Genau dieser Wert wird beim Angriff nachgerechnet und verglichen.
  • Key Encryption Key (`KEK`) - Wird vom Zugangspunkt während der Datenverschlüsselung verwendet.
  • Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von Unicast-Paketen verwendet.
  • MIC Authenticator Tx Key (`MIC Tx`) - Wird nur mit TKIP-Konfigurationen für Unicast-Pakete verwendet, die von Access Points gesendet werden.
  • MIC Authenticator Rx Key (`MIC Rx`) - Wird nur mit TKIP-Konfigurationen für Unicast-Pakete verwendet, die von Clients gesendet werden.

Vier Wege Handshake

Berechnungen

PMK

Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PMK
  • PMK = (HASH(PSK|SSID))

PTK

Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PTK mit dem zuvor "gebruteforced" PMK
  • PTK = (HASH(PMK + NONCE-A + NONCE-S + MAC ACCESSPOINT + MAC CLIENT))
Einsetzverfahren
  • PTK = (HASH(HASH(PSK|SSID)) + NONCE-A + NONCE-S + MAC ACCESSPOINT + MAC CLIENT)
  • Ergebnis ist ein 512Bit langer Container
  • PTK = KCK + KEK + TK + MIC-Tx + MIC-Rx
PTK
KCK KEK TK MIC-Tx MIC-Rx
128Bit 128Bit 128Bit 64Bit 64Bit

Alles was grün ist, ist bekannt.

Der KCK (erste 128 Bit) erzeugt die MIC der Handshake-Nachrichten – das ist der Wert, um den es beim Angriff geht. MIC-Tx und MIC-Rx (nur bei TKIP) sichern dagegen die Datenpakete und werden nicht verglichen.

Ziel

Wir wollen durch Iteration herausbekommen, welcher PSK die mitgeschnittene MIC erzeugt. Die MIC ist der Nachrichtenintegritätscode aus dem Handshake und wird mit dem KCK gebildet. Wenn unsere berechnete MIC mit der mitgeschnittenen übereinstimmt, haben wir den PSK "gebruteforced".

Angriff

Wir brauchen

Zum bilden des PTK

  • CHANNEL (Ablesen)
  • MAC Client (Ablesen)
  • BSSID - MAC Accesspoint (Ablesen)
  • NONCE-S (Mitschneiden)
  • NONCE-A (Mitschneiden)

Zum Vergleichen

  • MIC (Mitschneiden) – die Prüfsumme aus dem Handshake (Nachricht 2)

Berechnen

Wir holen nun nacheinander die Passwörter aus einer Datei und setzen diese in PSK-geraten ein
  • Aus dem PSK-geraten und der SSID bilden wir nun den PMK-geraten
  • Aus dem PMK-geraten bilden wir mit NONCE-A, NONCE-S, MAC ACCESSPOINT und dem MAC CLIENT den PTK-geraten
  • Aus dem PTK-geraten nehmen wir den KCK (die ersten 128 Bit)
  • Mit dem KCK berechnen wir die MIC-geraten
  • Wenn nun die MIC-geraten mit der mitgeschnittenen MIC übereinstimmt, ist der PSK erraten.

Links