Wlan 4 Wege Handshake: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
 
=Begriffe=
 
=Begriffe=
 
==MAC==
 
==MAC==
*MAC Addresse : Hardware Adresse
+
*MAC-Adresse : Hardware-Adresse
 
==SSID==
 
==SSID==
*Service Set Identifier : Name des WLAN Netzwerkes
+
*Service Set Identifier : Name des WLAN-Netzwerkes
 
==Supplicant==
 
==Supplicant==
 
*WPA-Supplicant : Bittsteller im Normalfall der Client
 
*WPA-Supplicant : Bittsteller im Normalfall der Client
 
==Wlan Access-Point==
 
==Wlan Access-Point==
*Wlan Access Point: drahtloser Zugangspunkt
+
*Wlan Access Point : drahtloser Zugangspunkt
 
==Nonce==
 
==Nonce==
 
*Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden
 
*Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden
Zeile 15: Zeile 15:
 
*Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf PSK und SSID
 
*Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf PSK und SSID
 
==PTK==
 
==PTK==
*Pairwise Transient Key : aufwendiges Schlüsselmanagement
+
*Pairwise Transient Key : Sitzungsschlüssel, aus dem PMK und weiteren Werten abgeleitet
 
*Er wird aus verschiedenen Komponenten abgeleitet:
 
*Er wird aus verschiedenen Komponenten abgeleitet:
 
**PMK
 
**PMK
Zeile 22: Zeile 22:
 
**MAC ACCESSPOINT
 
**MAC ACCESSPOINT
 
**MAC CLIENT
 
**MAC CLIENT
*Besteht aus:
+
*Besteht aus (bei CCMP/AES, heutiger Standard):
 
*Schlüsselbestätigungsschlüssel (`KCK`) – Erzeugt die MIC (den Nachrichtenintegritätscode) der Handshake-Nachrichten. '''Genau dieser Wert wird beim Angriff nachgerechnet und verglichen.'''
 
*Schlüsselbestätigungsschlüssel (`KCK`) – Erzeugt die MIC (den Nachrichtenintegritätscode) der Handshake-Nachrichten. '''Genau dieser Wert wird beim Angriff nachgerechnet und verglichen.'''
*Key Encryption Key (`KEK`) - Wird vom Zugangspunkt während der Datenverschlüsselung verwendet.
+
*Key Encryption Key (`KEK`) - Verschlüsselt Schlüsseldaten im Handshake, z.B. den GTK in Nachricht 3.
*Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von Unicast-Paketen verwendet.
+
*Temporaler Schlüssel (`TK`) - Wird für die Ver- und Entschlüsselung der Datenpakete verwendet.
*MIC Authenticator Tx Key (`MIC Tx`) - Nur bei TKIP. Sichert die Integrität der '''Datenpakete''', die vom Access Point gesendet werden – nicht den Handshake.
 
*MIC Authenticator Rx Key (`MIC Rx`) - Nur bei TKIP. Sichert die Integrität der '''Datenpakete''', die vom Client gesendet werden – nicht den Handshake.
 
  
 
=Vier Wege Handshake=
 
=Vier Wege Handshake=
{{#drawio:vier-wege-1}}
+
[[Datei:handshake-4wege.svg|800px]]
  
 
=Berechnungen=
 
=Berechnungen=
 
==PMK==
 
==PMK==
 
;Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PMK
 
;Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PMK
*PMK = (HASH(PSK|SSID))
+
*PMK = HASH(PSK | <span style="color:#008000;">SSID</span>)
 
==PTK==
 
==PTK==
 
;Verfahren ist bekannt - Einzige Unbekannte ist der PSK. Durch Bruteforce errechnen wir den PTK mit dem zuvor "gebruteforced" PMK
 
;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 = 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>)
 
;Einsetzverfahren
 
;Einsetzverfahren
*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>)
+
*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>)
*Ergebnis ist ein 512Bit langer Container
+
*Ergebnis ist ein 384Bit langer Container
*PTK = KCK + KEK + TK + MIC-Tx + MIC-Rx
+
*PTK = KCK + KEK + TK
 
{| class="wikitable"
 
{| class="wikitable"
!colspan="5"|PTK
+
!colspan="3"|PTK
 
|-
 
|-
 
|<span style="color:#c07000;">'''KCK'''</span>
 
|<span style="color:#c07000;">'''KCK'''</span>
 
|KEK
 
|KEK
 
|TK
 
|TK
|MIC-Tx
 
|MIC-Rx
 
 
|-
 
|-
 
|128Bit
 
|128Bit
 
|128Bit
 
|128Bit
 
|128Bit
 
|128Bit
|64Bit
 
|64Bit
 
 
|}
 
|}
 
'''Alles was <span style="color:#008000;">grün</span> ist, ist bekannt.'''
 
'''Alles was <span style="color:#008000;">grün</span> ist, ist bekannt.'''
;Der <span style="color:#c07000;">KCK</span> (erste 128 Bit) erzeugt die Handshake-MIC – das ist der Wert, um den es beim Angriff geht. MIC-Tx/MIC-Rx (letzte 128 Bit, nur TKIP) sichern die Datenpakete und werden '''nicht''' verglichen.
+
;Der <span style="color:#c07000;">KCK</span> (erste 128 Bit) erzeugt die Handshake-MIC – das ist der Wert, um den es beim Angriff geht.
  
 
=Ziel=
 
=Ziel=
Zeile 66: Zeile 60:
 
=Angriff=
 
=Angriff=
 
==Wir brauchen==
 
==Wir brauchen==
===Zum bilden des PTK===
+
===Zum Bilden des PTK===
 
*CHANNEL (Ablesen)
 
*CHANNEL (Ablesen)
 +
*SSID (Ablesen)
 
*MAC Client (Ablesen)
 
*MAC Client (Ablesen)
 
*BSSID - MAC Accesspoint (Ablesen)
 
*BSSID - MAC Accesspoint (Ablesen)
 +
*NONCE-A (Mitschneiden)
 
*NONCE-S (Mitschneiden)
 
*NONCE-S (Mitschneiden)
*NONCE-A (Mitschneiden)
 
 
===Zum Vergleichen===
 
===Zum Vergleichen===
 
*EAPOL-Frame des Handshakes (Mitschneiden) – meist Nachricht 2
 
*EAPOL-Frame des Handshakes (Mitschneiden) – meist Nachricht 2

Version vom 13. August 2026, 16:20 Uhr

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 Key : Gemeinsamer Schlüssel

PMK

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

PTK

  • Pairwise Transient Key : Sitzungsschlüssel, aus dem PMK und weiteren Werten abgeleitet
  • Er wird aus verschiedenen Komponenten abgeleitet:
    • PMK
    • NONCE-A
    • NONCE-S
    • MAC ACCESSPOINT
    • MAC CLIENT
  • Besteht aus (bei CCMP/AES, heutiger Standard):
  • Schlüsselbestätigungsschlüssel (`KCK`) – Erzeugt die MIC (den Nachrichtenintegritätscode) der Handshake-Nachrichten. Genau dieser Wert wird beim Angriff nachgerechnet und verglichen.
  • Key Encryption Key (`KEK`) - Verschlüsselt Schlüsseldaten im Handshake, z.B. den GTK in Nachricht 3.
  • Temporaler Schlüssel (`TK`) - Wird für die Ver- und Entschlüsselung der Datenpakete verwendet.

Vier Wege Handshake

Handshake-4wege.svg

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 384Bit langer Container
  • PTK = KCK + KEK + TK
PTK
KCK KEK TK
128Bit 128Bit 128Bit

Alles was grün ist, ist bekannt.

Der KCK (erste 128 Bit) erzeugt die Handshake-MIC – das ist der Wert, um den es beim Angriff geht.

Ziel

Wir wollen durch Iteration herausbekommen, welcher PSK die mitgeschnittene MIC erzeugt. Die MIC ist das Key-MIC-Feld aus dem EAPOL-Frame des Handshakes und wird mit dem KCK gebildet. Stimmt unsere berechnete MIC mit der mitgeschnittenen überein, haben wir den PSK "gebruteforced".

Angriff

Wir brauchen

Zum Bilden des PTK

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

Zum Vergleichen

  • EAPOL-Frame des Handshakes (Mitschneiden) – meist Nachricht 2
  • Key-MIC aus diesem Frame (Mitschneiden)

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 den PMK-geraten
  • Aus dem PMK-geraten bilden wir mit NONCE-A, NONCE-S, MAC ACCESSPOINT und 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 über den mitgeschnittenen EAPOL-Frame (HMAC-SHA1 bei WPA2)
  • Stimmt die MIC-geraten mit der mitgeschnittenen MIC überein, ist der PSK erraten

Links