WPA/WPA2 Pre-Shared-Key-Cracking verstehen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Original Artikel

Einführung

Die wenigen Schwächen des Authentifizierungs-Handshake-Prozesses für WPA/WPA2-PSKs sind seit langem bekannt. Dieser Blog-Beitrag bedient nichts Neues oder bisher noch nicht in freier Wildbahn gesehenes oder Konferenzgespräche und verweist tatsächlich auf andere Sites (wie RFCs), die weitere Informationen liefern können. Es bietet jedoch eine gewisse Klarheit darüber, was während der Authentifizierung und damit des Cracking-Prozesses tatsächlich durchgeführt wird, war aber hauptsächlich eine Übung für mich, um zu lernen, wie alles auf einer niedrigeren Ebene funktioniert. Vielleicht ist es für jemand anderen im gleichen Szenario nützlich.

Einführung

Die wenigen Schwächen des Authentifizierungs-Handshake-Prozesses für WPA/WPA2-PSKs sind seit langem bekannt. Dieser Blog-Beitrag bedient nichts Neues oder bisher noch nicht in freier Wildbahn gesehenes oder Konferenzgespräche und verweist tatsächlich auf andere Sites (wie RFCs), die weitere Informationen liefern können. Es bietet jedoch eine gewisse Klarheit darüber, was während der Authentifizierung und damit des Cracking-Prozesses tatsächlich durchgeführt wird, war aber hauptsächlich eine Übung für mich, um zu lernen, wie alles auf einer niedrigeren Ebene funktioniert. Vielleicht ist es für jemand anderen im gleichen Szenario nützlich.

Überblick

Während des Authentifizierungsprozesses versuchen der Supplicant (Client) und der Authenticator (Access Point) jeweils nachzuweisen, dass sie die Passphrase des Pre-Shared-Key (`PSK`) unabhängig kennen, ohne den Schlüssel direkt preiszugeben. Dies geschieht, indem jeder eine Nachricht mit dem von ihnen generierten Pairwise-Master-Key (`PMK`) verschlüsselt, in jede Richtung überträgt und dann die jeweils empfangene Nachricht entschlüsselt. Der Vier-Wege-Handshake wird verwendet, um einen neuen Schlüssel namens Pairwise-Transient-Key ('PTK') zu erstellen, der aus den folgenden verketteten Daten besteht:

  • Paarweiser Hauptschlüssel
  • Authentifikator Nonce
  • Bittsteller Nonce
  • Authentifikator-MAC-Adresse
  • Anwärter MAC-Adresse

Das Ergebnis wird dann durch eine Pseudo-Random-Function (PRF) verarbeitet. Während dieses Handshake-Prozesses wird auch ein weiterer Schlüssel erstellt, der zum Entschlüsseln von Multicast-Datenverkehr verwendet wird, der als Group-Temporal-Key bezeichnet wird.

Tatsächlicher Handshake-Prozess

  • Zunächst sendet der Access Point innerhalb des ersten Handshake-Pakets einen ANonce-Schlüssel an den Client.
  • Der Client konstruiert dann seinen SNonce zusammen mit dem Pairwise-Transient-Key (PTK) und sendet dann den SNonce und Message Integrity Code (MIC) an den Zugangspunkt. [!]
  • Als nächstes konstruiert der Access Point den Group-Temporal-Key, eine Sequenznummer, die verwendet wird, um Replay-Angriffe auf den Client zu erkennen, und einen Message Integrity Code (MIC).
  • Zuletzt sendet der Client dann eine Bestätigung (ACK) an den Access Point.
  • An diesem Punkt wäre ein Angreifer in der Lage gewesen, genug vom Handshake abzufangen, um einen Angriff zum Knacken von Passwörtern durchzuführen.

Bau der PMK

Pairwise-Master-Keys werden bei der Erstellung der Pairwise-Transient-Keys verwendet und nie wirklich über das Netzwerk übertragen. Sie werden von den Pre-Shared-Keys (Enterprise WiFi verwendet einen von EAP erstellten Schlüssel, aber das ist nicht im Rahmen dieses Artikels) zusammen mit den anderen Informationen wie SSID, SSID-Länge abgeleitet. Die PMKs werden mit der Password-Based Key Derivation Function #2 (PBKDF2) erstellt, wobei die SHA1-Hashing-Funktion mit HMAC als Nachrichtenauthentifizierungscode verwendet wird:

PMK = PBKDF2(HMAC−SHA1, PSK, SSID, 4096, 256)

Weitere Informationen zu HMAC-SHA1 aus RFC2104 sind unten zu sehen, gehen aber über meine Tiefe:

opad = 0x5C * B
ipad = 0x36 * B

(1) append zeros to the end of K to create a B byte string (e.g., if K is of length 20 bytes and B=64, then K will be appended with 44 zero bytes 0x00)
(2) XOR (bitwise exclusive-OR) the B byte string computed in step (1) with ipad
(3) append the stream of data 'text' to the B byte string resulting from step (2)
(4) apply H to the stream generated in step (3)
(5) XOR (bitwise exclusive-OR) the B byte string computed in step (1) with opad
(6) append the H result from step (4) to the B byte string resulting from step (5)
(7) apply H to the stream generated in step (6) and output the result