Skip to content

WLAN-Sicherheit 17 - Angriffe auf WPA2 im Überblick, Teil 1: KRACK

Wi-Fi Protected Access 2 (WPA2) ist ziemlich sicher. Wie sicher, sehen Sie schon daran, dass der nach wie vor erfolgsversprechendste Angriff ein Klassiker ist: Angriffe auf/über schwache Passwörter. In dieser Folge soll es aber zunächst um etwas anderes gehen:

Das aktuelle Highlight: KRACK

Kritischer als unsichere Passwörter, die man ja i.A. durch sichere ersetzen kann, ist der im Oktober 2017 vorgestellte KRACK-Angriff. Diese "Key Reinstallation Attacks" habe ich bereits ausführlich auf entwickler.de vorgestellt. Hier daher nur eine Ergänzung, wie denn die Entschlüsselung mit Hilfe der erneut verwendeten Schlüssel funktioniert:

Die Verschlüsselung von WPA2 basiert wie so oft darauf, den Klartext und den Schlüssel bitweise per XOR (⊕) zu verknüpfen. XOR ist ein striktes "entweder, oder": Entweder genau eines der beiden Bits ist 1, dann ist auch das Ergebnis 1, oder beide Bits sind 0 oder 1, dann ist das Ergebnis 0;

0 ⊕ 0 = 0
0 ⊕ 1 = 1
1 ⊕ 0 = 1
1 ⊕ 1 = 0

Das Problem dabei: Wenn verschiedene Daten mit dem gleichen Schlüssel verschlüsselt werden UND der Angreifer einen der beiden Klartexte kennt, kann er auch den anderen berechnen. Das funktioniert, weil es egal ist, in welcher Reihenfolge die Daten XOR-verknüpft werden.

Nehmen wir mal an, der Angreifer kennt im folgenden Beispiel Klartext2.

Zunächst gilt bei einem mehrfach verwendeten Schlüssel immer:

Schlüsseltext1 ⊕ Schlüsseltext2 = (Klartext1 ⊕ Schlüssel) ⊕ (Klartext2 ⊕ Schlüssel)
                                =  Klartext1 ⊕ Schlüssel  ⊕  Schlüssel ⊕ Klartext2 
                                =  Klartext1 ⊕ (Schlüssel ⊕ Schlüssel) ⊕ Klartext2 
                                =  Klartext1 ⊕ Klartext2

und weil der Angreifer Klartext2 kennt erhält er damit

(Klartext1 ⊕ Klartext2) ⊕ Klartext2 = Klartext1

Verschlüsselte Daten, deren Klartext bekannt ist, gibt es eigentlich immer irgendwo, z.B. weil Teile der Nachricht immer gleich sind. Teilweise lassen sie sich auch erzwingen, weil der Angreifer den zu verschlüsselnden Klartext bestimmen kann.

Man darf also bei der Verschlüsselung mit Hilfe von XOR niemals den gleichen Schlüssel mehrmals verwenden. Die einfachste Möglichkeit, dass zu verhindern, besteht darin, in die Erzeugung des Schlüssels einen immer nur einmal verwendeten Wert einfließen zu lassen, den sog. Nonce ("Number used ONCE"). Das kann man z.B. machen, indem man von einem Startwert ausgehend den NONCE-Wert immer weiter hoch zählt. Damit ist sicher gestellt, dass sich der NONCE niemals wiederholt. Und das macht auch WPA2.

Und an der Stelle setzt die einfachste Version des KRACK-Angriffs an.

Damit AP und WLAN-Client den gleichen NONCE verwenden, müssen sie den austauschen. Dieser Austausch erfolgt zwar gesichert und lässt sich nicht manipulieren, aber der Angreifer kann den Austausch der Nachrichten über Funk stören und so dafür sorgen, dass eine der für den Austausch nötigen Nachrichten nicht beim Empfänger ankommen. Was den Austausch durcheinander bringt und letztendlich dazu führt, dass es zur Re-Installation des Schlüssels kommt.

So kann z.B. die letzte Empfangsbestätigung des WLAN-Clients abgefangen werden, bevor sie den AP erreicht. Der Client bemerkt das nicht und verwendet den ausgetauschten Schlüssel und Nonce für das Senden von Daten. Der AP wartet einige Zeit auf die Empfangsbestätigung, und wenn die nicht eintrifft, sendet er die scheinbar verloren gegangene Nachricht erneut. Die führt beim Client dazu, dass der Schlüssel erneut installiert wird und danach Daten mit den gleichen Nonce wie zuvor verschlüsselt werden. Und damit lassen sich die Daten nach obigen Muster entschlüsseln.

Im Fall des auch von Android verwendeten Linux-WLAN-Treibers wpa_supplicant kommt erschwerend hinzu, dass der Schlüssel nach seiner Verwendung im Speicher mit Nullen überschrieben wird, damit er keinesfalls z.B. von Schadsoftware ausgespäht werden kann (was sich so auch dem WPA2-Standard entnehmen lässt). Bei der Re-Installation des Schlüssels wird dann allerdings dieser gelöschte und dadurch nur noch aus Nullen bestehende Schlüssel verwendet. Und der ist im wahrsten Sinne des Wortes eine Nullnummer - probieren Sie die obigen Formel doch mal mit 0 als Schlüssel aus.

Es gibt noch etliche Varianten des KRACK-Angriffs, aber das Grundprinzip dürfte damit klar sein.

In der nächsten Folge geht es um ältere Angriffe auf WPA2, z.B. den anfangs schon erwähnten Klassiker: Unsichere Pre-Shared Keys.

Carsten Eilers

>
        </div>
                
        <footer class= Kategorien: Grundlagen

Trackbacks

Keine Trackbacks