Wlan 4 Wege Handshake: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(56 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
=Grundidee=
 +
;Beim 4-Wege-Handshake schickt der Client eine Nachricht mit einer Prüfsumme (MIC). Diese MIC kann nur bilden, wer das WLAN-Passwort (<span style="color:#ff0000;">PSK</span>) kennt.
 +
;In der gesamten Berechnungskette ist alles bekannt oder mitschneidbar – bis auf eine einzige Unbekannte: den <span style="color:#ff0000;">PSK</span>.
 +
;Wir setzen nacheinander Passwörter aus einer Liste als <span style="color:#ff0000;">PSK</span> ein, rechnen die MIC nach und vergleichen sie mit der mitgeschnittenen MIC. Passt sie, ist das Passwort gefunden.
 +
=Einleitung=
 +
*Man muss kein mathematisches Genie sein, um die Zusammenhänge des 4-Wege-Handshakes zu verstehen.
 +
*Das Kernziel dieses Artikels ist es zu verdeutlichen, wie man durch einfache Iteration (systematisches Ausprobieren) aus mitgeschnittenen Datenpaketen das zugrunde liegende WLAN-Passwort (PSK) ableiten kann.
 +
 
=Begriffe=
 
=Begriffe=
 
==MAC==
 
==MAC==
 
*MAC Addresse : Hardware Adresse
 
*MAC Addresse : Hardware Adresse
 
==SSID==
 
==SSID==
"Service Set Identifier : Name des WLAN Netzwerkes
+
*Service Set Identifier : Name des WLAN Netzwerkes
==PSK==
 
*Preshared Keys : Gemeinsamer Schlüssel
 
==TKIP==
 
*Temporal Key Integrity Protocol : Sicherheitsprotokoll für WLAN-Netzwerke
 
 
==Supplicant==
 
==Supplicant==
 
*WPA-Supplicant : Bittsteller im Normalfall der Client
 
*WPA-Supplicant : Bittsteller im Normalfall der Client
Zeile 13: Zeile 17:
 
*Wlan Access Point: drahtloser Zugangspunkt
 
*Wlan Access Point: drahtloser Zugangspunkt
 
==Nonce==
 
==Nonce==
*Number Used Once : vorläufiges Zeichenfolge,soll kurzfritsig durch etwas Besseres ersetzt zu werden
+
*Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden
 +
==PSK==
 +
*Preshared Keys : Gemeinsamer Schlüssel
 
==PMK==
 
==PMK==
*Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf PSK
+
*Pairwise Master Key : Mehrfachanwendung einer Hashfunktion (z.B. SHA1 / 4096 Durchgänge) auf <span style="color:#ff0000;">PSK</span> und SSID
==PTK==  
+
==PTK==
*Pairwise Transient Key : aufwendiges Schlüsselmanagement  
+
*Pairwise Transient Key : aufwendiges Schlüsselmanagement
*Er wird auf verschiedenen Kompententen abgeleitet:
+
*Er wird aus verschiedenen Komponenten abgeleitet:
 
**PMK
 
**PMK
**NOUNCE-A
+
**NONCE-A
 
**NONCE-S
 
**NONCE-S
 
**MAC ACCESSPOINT
 
**MAC ACCESSPOINT
 
**MAC CLIENT
 
**MAC CLIENT
 
*Besteht aus:
 
*Besteht aus:
*Schlüsselbestätigungsschlüssel (`KCK`) – Wird während der Erstellung des *Nachrichtenintegritätscodes verwendet.
+
*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.
 
*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.
+
*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.
+
[[Datei:PTK-Container.svg|800px]]
*MIC Authenticator Rx Key (`MIC Rx`) - Wird nur mit TKIP-Konfigurationen für Unicast-Pakete verwendet, die von Clients gesendet werden.
+
 
 +
==EAPOL-Frame==
 +
*Jede der vier Handshake-Nachrichten ist ein EAPOL-Frame (ein Paket). Für den Angriff schneiden wir Nachricht 2 (Client → AP) mit. Darin stehen NONCE-S und das MIC-Feld.
 +
 
 +
=Vier Wege Handshake=
 +
[[Datei:Wpa2-handshake-eapol.svg|800px]]
  
=GTK=
 
Der GTK-Schlüssel wird vom Zugangspunkt über die Kombination des Group Master Keys (GMK) mit einer Zufallszahlenfunktion (PRF) generiert und mit dem Key Encryption Key (KEK) über einen Vier-Wege-Handshake an die WLAN-Stationen verteilt.Der GTK-Schlüssel wird für die sichere Übertragung von Multicast und Broadcast benutzt
 
 
=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 <span style="color:#ff0000;">PSK</span>. Durch Bruteforce errechnen wir den PMK
*PMK = (SHA1(SHA1(...SHA1(PSK|SSID)...) :4096 Mal
+
*PMK = (HASH(<span style="color:#ff0000;">PSK</span>|SSID))
;Verfahren ist bekannt - Einzige Unbekannte ist der PMK. Durch Bruteforce errechnen wir den PTK mit dem zuvor "gebruteforced" PMK
+
==PTK==
*PTK = (SHA1(PMK + NOUNCE-A + NONCE-S + MAC ACCESSPOINT + MAC CLIENT) : X Mal
+
;Verfahren ist bekannt - Einzige Unbekannte ist der <span style="color:#ff0000;">PSK</span>. Durch Bruteforce errechnen wir den PTK mit dem zuvor "gebruteforced" PMK
*Ergebnis ist ein 512Bit langer Container
+
*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 = KCK + KEK + TK + MIC-Tx + MIC-Rx
+
;Einsetzverfahren
{| class="wikitable"
+
*PTK = (HASH(HASH(<span style="color:#ff0000;">PSK</span>|<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>)
!colspan="5"|PTK
+
*Ergebnis ist ein 384Bit langer Container
|-
+
*PTK = KCK + KEK + TK
|KCK
+
 
|KEK
+
[[Datei:PTK-Container.svg|800px]]
|TK
+
 
|MIC-Tx
+
'''Alles was <span style="color:#008000;">grün</span> ist, ist bekannt.'''
|MIC-Rx
+
;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.
|-
 
|128Bit
 
|128Bit
 
|128Bit
 
|64Bit
 
|64Bit
 
|}
 
=Ziel=
 
;Wir wollen den Hash MIC-Rx herrausbekommen. Wenn dieser mit dem mitgeschnittenen übereinstimmt, haben wir den PSK "gebruteforced"
 
  
=Vier Wege Handshake=
+
==MIC==
{{#drawio:vier-wege-1}}
+
;Der Client bildet die MIC mit dem KCK über den mitgeschnittenen EAPOL-Frame.
=Angriff=
+
*MIC = HMAC-SHA1(KCK, [[2. EAPOL-Frame]])
==Wir brauchen==
+
;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. So kann die Prüfsumme über den ganzen Frame gebildet werden, obwohl sie selbst im Frame steht.
*CHANNEL (Ablesen)
+
 
*MAC Client (Ablesen)
+
==Iterationsformel==
*BSSID - MAC Accesspoint (Ablesen)
+
;Alles in eine Formel eingesetzt. Nur der <span style="color:#ff0000;">PSK</span> ist unbekannt:
*NONCE-S (Mitschneiden)
+
*MIC = HMAC-SHA1( ⌊ HASH( HASH(<span style="color:#ff0000;">PSK</span>|<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> ) ⌋<sub>128</sub> , <span style="color:#008000;">2. EAPOL-Frame</span> )
*NONCE-A (Mitschneiden)
+
;<span style="color:#008000;">Grün</span> = bekannt / mitgeschnitten. Nur '''<span style="color:#ff0000;">PSK</span>''' ist unbekannt. Wir setzen nacheinander Passwörter als <span style="color:#ff0000;">PSK</span> ein, bis die berechnete MIC mit der mitgeschnittenen übereinstimmt.
*MIC-Rx (Mitschneiden)
 
*MIC-Tx (Mitschneiden)
 
  
=Berechnen=
+
=Angriff (Ablauf)=
;Wir holen nun nacheinander die Passwörter aus einer Datei und Setzen diese in PSK-geraten ein
+
;Alles außer dem <span style="color:#ff0000;">PSK</span> haben wir (mitgeschnitten oder abgelesen). Jetzt iterieren wir:
*Aus dem PSK-geraten und der SSID bilden wir nun den PMK-geraten
+
*Passwort aus der Liste als <span style="color:#ff0000;">PSK</span> einsetzen
*Aus dem PMK-geraten bilden wir mit  NOUNCE-A, NONCE-S,MAC ACCESSPOINT und dem MAC CLIENT den PTK-geraten
+
*MIC berechnen (nach der Formel oben)
*Der PTK-geraten enthält MIC-RX-geraten
+
*berechnete MIC mit der mitgeschnittenen MIC vergleichen
*Wenn nun der MIC-RX-geraten mit dem MIC-RX mitgeschnitten übereinstimmt, ist der PSK erraten.
+
*gleich? → Passwort gefunden. Sonst → nächstes Passwort.
  
 
=Links=
 
=Links=

Aktuelle Version vom 20. August 2026, 10:48 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.

Einleitung

  • Man muss kein mathematisches Genie sein, um die Zusammenhänge des 4-Wege-Handshakes zu verstehen.
  • Das Kernziel dieses Artikels ist es zu verdeutlichen, wie man durch einfache Iteration (systematisches Ausprobieren) aus mitgeschnittenen Datenpaketen das zugrunde liegende WLAN-Passwort (PSK) ableiten kann.

Begriffe

MAC

  • MAC Addresse : 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.

PTK-Container.svg

EAPOL-Frame

  • Jede der vier Handshake-Nachrichten ist ein EAPOL-Frame (ein Paket). Für den Angriff schneiden wir Nachricht 2 (Client → AP) mit. Darin stehen NONCE-S und das MIC-Feld.

Vier Wege Handshake

Wpa2-handshake-eapol.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-Container.svg

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

Der Client bildet die MIC mit dem KCK über den mitgeschnittenen EAPOL-Frame.
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. So kann die Prüfsumme über den ganzen Frame gebildet werden, obwohl sie selbst im Frame steht.

Iterationsformel

Alles in eine Formel eingesetzt. Nur der PSK ist unbekannt
  • MIC = HMAC-SHA1( ⌊ HASH( HASH(PSK|SSID) + NONCE-A + NONCE-S + MAC-AP + MAC-CLIENT ) ⌋128 , 2. EAPOL-Frame )
Grün = bekannt / mitgeschnitten. Nur PSK ist unbekannt. Wir setzen nacheinander Passwörter als PSK ein, bis die berechnete MIC mit der mitgeschnittenen übereinstimmt.

Angriff (Ablauf)

Alles außer dem PSK haben wir (mitgeschnitten oder abgelesen). Jetzt iterieren wir
  • Passwort aus der Liste als PSK einsetzen
  • MIC berechnen (nach der Formel oben)
  • berechnete MIC mit der mitgeschnittenen MIC vergleichen
  • gleich? → Passwort gefunden. Sonst → nächstes Passwort.

Links