KRACK – Funktionsüberblick

Moin Moin,

In diesem Post möchte ich euch einen technischen Überblick zur Sicherheitslücke KRACK geben. Die letzten Tage wurden viele hysterische Beiträge in der Presse veröffentlich, obwohl vermutlich 99% der Redakteure nichts von dieser Thematik verstehen.

Ich werde in diesem Post allgemeine Thematiken zur Verschlüsselung beschreiben und die wichtigen Punkte in Bezug auf KRACK betrachten. Fangen wir an:

WPA Funktionen

Es gibt derzeit drei unterschiedliche WPA Versionen, WPA 1, WPA 2 und WPA 3. Alle drei Versionen sind betroffen. Im folgenden Text habe ich die Funktion von WPA 2 beschrieben, da dies die aktuelle Version in heutigen Client Netzwerken ist.

Daten verschlüsseln

Die Daten werden nicht mit einem statischen Schlüssel verschlüsselt. Pro Packet wird ein sogenannter Keystream erstellt. Zur Verschlüsselung der Daten werden diese mittels XOR Gatter mit dem Keystream verknüpft.

Zur Veranschaulichung habe ich ein Beispiel erstellt:

Daten      110010101
Keystream  010110001
XOR        100100100

Statt der eigentlichen Daten wird das Ergebnis der XOR Verknüpfung übertragen. Solange der Keystream nicht bekannt ist, können die Daten daher höchstens erraten werden.

Werden neue Daten übertragen wird ein neuer Keystream erzeugt:

Daten      100100110
Keystream  110100101
XOR        010000011

Funktion des Keystreams

Wie wird nun dieser Keystream erzeugt? Der Keystream besteht unter anderem aus folgenden Informationen:

  • PTK
  • MAC Adresse
  • Packet Nummer

Die Packet Nummer ist hierbei die einzige variable in einer bestehenden Verbindung. Daher darf eine Packet Nummer niemals mehrfach genutzt werden. Im Gegensatz zum IV bei WEP, 12 Bit, besteht die Packet Nummer aus 48 Bit. Damit wird sichergestellt, dass sich die Packet Nummer nicht wiederholt. Bei der WEP Verschlüsselung wurde eine Wiederholung des IV zur Entschlüsselung des WEB Schlüssel genutzt.

PTK

Der Vollständigkeit halber möchte ich noch kurz auf den PTK eingehen. Es handelt sich hierbei um den Pairwise Transient Key. Dieser Key wird während des 4 Way Handshakes aus folgenden Daten erzeugt:

  • PMK (Pairwise Master Key, z.B. der PSK, Pre Shared Key)
  • A Nounce (Zufallswert vom AP)
  • S Nounce (Zufallswert vom Client)
  • AP MAC
  • Client MAC

Durch diese Daten ist sichergestellt, dass sich der PTK mit einer sehr hohen Wahrscheinlichkeit niemals wiederholt. Damit wird auch gewährleistet, dass ein Client bei einem Reconnect zum selben Access Point einen neuen PTK und damit auch einen neuen Keystream erhält. Der neue PTK ist sehr wichtig, da die Packet Nummer nach dem 4 Way Handshake zurückgesetzt wird. Durch den neuen PTK bei jedem reconnect ist das Zurücksetzen der Packet Nummer allerdings unproblematisch.

KRACK Attacke

Bei genau diesem Punkt setzt die KRACK Attacke an. Wie wir gelernt haben, ist die einzige Variable bei einer bestehenden Verbindung im Keystream unsere Packet Nummer. Wir haben aber auch gesehen, dass eine Packet Nummer nicht doppelt vorkommt. Mathy Vanhoef und Frank Piessens haben aber genau dies ermöglicht.

Die KRACK Attacke hat nicht das Ziel, den Schlüssel zu Entschlüsseln. Ziel ist es die Packet Nummer mehrfach zu verwenden. Die Frage ist nun, warum?

Keystream

Nehmen wir erneut das Beispiel von oben, wir haben unser 1. Datenpaket, dies wird mit dem Keystream 1 verschlüsselt.

Daten      110010101
Keystream  010110001
XOR        100100100

Nun kommt das 2. Datenpaket, dieses wird mit einem neuen, den 2. Keystream verschlüsselt.

Daten      100100110
Keystream  110100101
XOR        010000011

Ohne passenden Keystream können wir beide Daten nicht entschlüsseln. Was ist nun aber, wenn wir den selben Keystream für ein weiteres Datenpaket verwenden? Wir hätten die verschlüsselten Daten und den Keystream, damit könnten wir das Datenpaket mittels XOR entschlüsseln:

Daten      ?????????
Keystream  010110001
XOR        001101000

Daten      100100110
Keystream  010110001
XOR        110010111

Jetzt kommt aber die wichtigste Frage, wie kommen wir an den Keystream? Hierzu gibt es bisher noch keine Erklärung. Nach kollektiver Erfahrungim Markt, gibt es hierfür nur einen Weg, die Daten müssen erraten werden. Klassischerweise sind die ersten Datenpakete ARP oder DHCP Pakete. Mit einigen Versuchen könnte man den Inhalt dieser Pakete erraten. Habe ich diese Daten und die verschlüsselten Daten, kann ich den Keystream mittels XOR auslesen.

Die selbe Packet Nummer

Nun haben wir eine Möglichkeit gefunden, den Keystream zu erhalten. Doch dieser Keystream ist nur für eine Packet Nummer gültig. Also muss man den Client dazu bewegen, Daten mit der selben Packet Nummer zu verschicken. Dies spricht allerdings gegen die grundlegenden Regeln der WPA Verschlüsselung. Selbst wenn der Client dies machen würde, sollte der empfangende Access Point die Daten ablehnen.

Hier setzt nun die KRACK Attacke an. Mathy und Frank haben mehrere Möglichkeit gefunden, dass der Client die Packet Nummern innerhalb einer bestehenden Verbindung erneut verwendet. Hierdurch kann ich die Daten entschlüsseln.

Unter Android gibt es allerdings noch ein weiteres Problem. Hier kann der Client dazu genötigt werden, den Keystream zurückzusetzen. Dadurch erhalten wir den Keystream und können Daten an den Android Client schicken.

Fazit

Die beschriebenen Funktionen geben einen Einblick in die Verschlüsselung von Daten mittels WPA. Diese Verschlüsselung ist bei einer entsprechend optimalen Implementierung auch zukünftig sicher. Allerdings müssen Access Points und Clients diese Implementierung entsprechend umsetzen.

Bei der Umsetzung ist der Fehler erfolgt. Gewisse Funktionen sind nicht im Detail beschrieben und ermöglichen unterschiedliche Wege der Implementierung. Offensichtlich haben die meisten Hersteller den falschen Weg der Implementierung gewählt, der diese Schwachstellen erzeugt.

Der große Vorteil im Vergleich zu den WEP Schwachstellen ist, dass diese Sicherheitslücken über ein Software Update behoben werden können. Durch dieses Software Update bleiben beide Seiten weiterhin Standard Konform. Eine Kompatibilität zwischen unterschiedlichen Versionen ist entsprechend gewährleistet. Daher sollten verfügbare Patches direkt installiert werden.

Ich werde versuchen, in weiteren Einträgen über die nächsten Tage oder Wochen die 10 unterschiedlichen Lücken zu beschreiben. Bei diesen detaillierten Beschreibungen wird man erkennen, dass diese Lücken nicht ohne größere Aufwände genutzt werden können. Die bekannten Sicherheitslücken gewährleisten auch keine 100 prozentigen Chance, dass ein Angriff immer erfolgreich durchgeführt werden kann.

Nach meinen aktuellen Kenntnissen erwarte ich für die wenigsten meiner Kunden flächendenkende Angriffsszenarien. Sicherlich ergeben sich neue Wege für gezielte Angriffe. Vor diesen gezielten Angriffen schützen zukünftig die aktuellen Software Versionen.

Abschließend möchte ich noch einmal darauf hinweisen, dass diese Sicherheitslücken sämtliche WPA Verschlüsselungen betreffen. WPA 2 Enterprise Lösungen sind hier nicht ausgenommen! Die meisten WIPS Lösungen bieten hier jedoch bereits heute eine Zero Day Erkennung.

CVE

Zum Abschluss meines Eintrages habe ich noch einmal die entsprechenden CVE Einträge zusammen getragen. Wie gesagt, ich werde versuchen in der nächsten Zeit detaillierter auf die Informationen einzugehen.

  • CVE-2017-13077: Reinstallation of the pairwise encryption key (PTK-TK) in the 4-way handshake.
  • CVE-2017-13078: Reinstallation of the group key (GTK) in the 4-way handshake.
  • CVE-2017-13079: Reinstallation of the integrity group key (IGTK) in the 4-way handshake.
  • CVE-2017-13080: Reinstallation of the group key (GTK) in the group key handshake.
  • CVE-2017-13081: Reinstallation of the integrity group key (IGTK) in the group key handshake.
  • CVE-2017-13082: Accepting a retransmitted Fast BSS Transition (FT) Reassociation Request and reinstalling the pairwise encryption key (PTK-TK) while processing it.
  • CVE-2017-13084: Reinstallation of the STK key in the PeerKey handshake.
  • CVE-2017-13086: reinstallation of the Tunneled Direct-Link Setup (TDLS) PeerKey (TPK) key in the TDLS handshake.
  • CVE-2017-13087: reinstallation of the group key (GTK) when processing a Wireless Network Management (WNM) Sleep Mode Response frame.
  • CVE-2017-13088: reinstallation of the integrity group key (IGTK) when processing a Wireless Network Management (WNM) Sleep Mode Response frame.

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.