Wlan 4 Wege Handshake: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Ziel) |
|||
| Zeile 3: | Zeile 3: | ||
*MAC Addresse : Hardware Adresse | *MAC Addresse : Hardware Adresse | ||
==SSID== | ==SSID== | ||
| − | + | *Service Set Identifier : Name des WLAN Netzwerkes | |
==Supplicant== | ==Supplicant== | ||
*WPA-Supplicant : Bittsteller im Normalfall der Client | *WPA-Supplicant : Bittsteller im Normalfall der Client | ||
| Zeile 9: | Zeile 9: | ||
*Wlan Access Point: drahtloser Zugangspunkt | *Wlan Access Point: drahtloser Zugangspunkt | ||
==Nonce== | ==Nonce== | ||
| − | *Number Used Once : | + | *Number Used Once : vorläufige Zeichenfolge, soll kurzfristig durch etwas Besseres ersetzt werden |
| − | |||
==PSK== | ==PSK== | ||
| − | *Preshared | + | *Preshared Key : Gemeinsamer Schlüssel |
==PMK== | ==PMK== | ||
*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 : aufwendiges Schlüsselmanagement | + | *Er wird aus verschiedenen Komponenten abgeleitet: |
| − | *Er wird | ||
**PMK | **PMK | ||
| − | ** | + | **NONCE-A |
**NONCE-S | **NONCE-S | ||
**MAC ACCESSPOINT | **MAC ACCESSPOINT | ||
**MAC CLIENT | **MAC CLIENT | ||
*Besteht aus: | *Besteht aus: | ||
| − | *Schlüsselbestätigungsschlüssel (`KCK`) – | + | *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`) - Wird vom Zugangspunkt während der Datenverschlüsselung verwendet. | ||
| − | *Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von | + | *Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von Unicast-Paketen verwendet. |
| − | *MIC Authenticator Tx Key (`MIC Tx`) - | + | *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`) - | + | *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}} | {{#drawio:vier-wege-1}} | ||
| + | |||
=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|SSID)) | ||
| − | |||
==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;"> | + | *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;"> | + | *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 512Bit langer Container | ||
*PTK = KCK + KEK + TK + MIC-Tx + MIC-Rx | *PTK = KCK + KEK + TK + MIC-Tx + MIC-Rx | ||
| Zeile 48: | Zeile 46: | ||
!colspan="5"|PTK | !colspan="5"|PTK | ||
|- | |- | ||
| − | |KCK | + | |<span style="color:#c07000;">'''KCK'''</span> |
|KEK | |KEK | ||
|TK | |TK | ||
| − | | | + | |MIC-Tx |
| − | | | + | |MIC-Rx |
|- | |- | ||
|128Bit | |128Bit | ||
| Zeile 60: | Zeile 58: | ||
|64Bit | |64Bit | ||
|} | |} | ||
| + | '''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. | ||
| − | + | =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". | |
| − | =Ziel= | ||
| − | ;Wir wollen durch Iteration herausbekommen, welcher PSK | ||
=Angriff= | =Angriff= | ||
| Zeile 74: | Zeile 72: | ||
*NONCE-S (Mitschneiden) | *NONCE-S (Mitschneiden) | ||
*NONCE-A (Mitschneiden) | *NONCE-A (Mitschneiden) | ||
| − | |||
===Zum Vergleichen=== | ===Zum Vergleichen=== | ||
| − | * | + | *EAPOL-Frame des Handshakes (Mitschneiden) – meist Nachricht 2 |
| − | *MIC | + | *Key-MIC aus diesem Frame (Mitschneiden) |
=Berechnen= | =Berechnen= | ||
| − | ;Wir holen nun nacheinander die Passwörter aus einer Datei und | + | ;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 | + | *Aus dem PSK-geraten und der SSID bilden wir den PMK-geraten |
| − | *Aus dem PMK-geraten bilden wir mit | + | *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= | =Links= | ||
Version vom 13. August 2026, 15:56 Uhr
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 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 : 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`) – 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.
- Temporaler Schlüssel (`TK`) - Wird für die Verschlüsselung und Entschlüsselung von Unicast-Paketen 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
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 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.
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)
- MAC Client (Ablesen)
- BSSID - MAC Accesspoint (Ablesen)
- NONCE-S (Mitschneiden)
- NONCE-A (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
