Wireless Local Area Network, hierzulande besser bekannt als WLAN oder Funknetzwerk, ist eine beliebte, jedoch auch sehr unsichere Technik. Dem ist man sich anscheinend nicht ganz bewusst: Vielerorts werden WLANs alleine durch einen sogenannten MAC-Filter geschützt, welcher auf der sogenannten MAC-Adresse der Netzwerkkarten basiert. An sich eine gute Idee, da jede MAC-Adresse nur einmal existiert und man somit eigentlich wirkungsvoll nach dem Schema „du darfst, du darfst nicht” ausfiltern kann wer zugangsberechtigt ist und wer nicht. Die Sache hat nur einen Haken: Man kann die MAC-Adresse einer Netzwerkkarte auch selbst angeben und somit fälschen.
Ich weise hiermit ausdrücklich darauf hin, dass das unbefugte Eindringen in ein fremdes Netzwerk einen Strafbestand darstellen und mit Geld- oder Gefängnisstrafe geahndet werden kann!
Das hier vorgestellte Verfahren wurde auf einem Compaq Evo N600c getestet, welchem in einem der zwei PCMCIA-Slots eine Zyxel B-100 WLAN-Karte zur Seite stand. Was das Betriebssystem angeht wurden Auditor 081004-01, Knoppix 3.7 und Ubuntu 4.10 getestet. Unter beiden erstgenannten Systemen waren im Testnetz Erfolge zu verzeichnen, unter Ubuntu müssen erst Treiber gepatcht werden. Um den Artikel möglichst universell zu halten wird auf die üblichen Kommandozeilen-Tools zurückgegriffen. Die Beispiele und Screenshots stammen allesamt von einem Knoppix 3.7.
Da speziell das Tool Kismet recht spezifisch konfiguriert werden muss dürften Abweichungen zu erwarten sein. Die von mir genutzte WLAN-Karte wird im System als eth1 angesprochen, was den Treiber angeht läuft sie mit dem orinoco-Treiber. Die Erläuterungen beziehen sich daher immer auf diese Angaben; mit ein bisschen Experimentierfreude dürfte jeder die richtigen Werte finden, sofern die eingesetzte WLAN-Karte unterstützt wird.
Im ersten Schritt müssen ein paar Informationen über das zu knackende Netz eingeholt werden. Dazu wird das Tool Kismet verwendet, welches in eine Server- und eine Client-Version unterteilt ist. Vor der ersten Verwendung sollte jedoch die Datei /etc/kismet/kismet.conf unter die Lupe genommen werden. Dort finden sich ein paar Zeilen die für die Konfiguration der WLAN-Karte zuständig sind, bei falscher Konfiguration startet das Server-Programm nicht.
# Sources are defined as: # source=cardtype,interface,name[,initialchannel] # Card types and required drivers are listed in the README. # The initial channel is optional, if hopping is not enabled it can be used # to set the channel the interface listens on. #source=cisco,eth0,ciscosource # Other common source configs: # source=prism2,wlan0,prism2source # source=prism2_avs,wlan0,newprism2source # source=orinoco,eth0,orinocosource # An example source line with an initial channel: # source=orinoco,eth0,silver,11 source=orinoco,eth1,e1source
Für meine Konfiguration ist die nicht auskommentierte Zeile (die, die nicht mit einer Raute beginnt) die richtige. Mit kurzem Blick kann erkannt werden, was dort eingestellt wird: Das Interface eth1 soll verwendet werden, mit dem orinoco-Treiber, intern wird diese Konfiguration als e1source bekannt gemacht. Damit ist das Server-Programm bereit zur Verwendung, in einer Konsole kann es nun gestartet werden.
$ su [Passworteingabe] # kismet_server [Startmeldungen]
Sollte kismet_server nach kurzer Zeit abstürzen muss man ihn einfach noch einmal starten, dann sollte das Programm ohne Probleme laufen.

Das Programm kismet_server bewerkstelligt im Grunde genommen zwei Dinge: Zum einen stellt es das Netzwerk-Interface in den sogenannten Monitor-Mode, was nichts anderes bedeutet als das die Karte nur noch Daten empfängt, jedoch keine sendet. Zum anderen wertet kismet_server die empfangenen Datenpakete aus und ermittelt, welche Funknetze existieren etc.
In einer weiteren Konsole kann jetzt als normaler User der Kismet-Client gestartet werden.
$ kismet_client
Der Client präsentiert sich mit einem eigenen User Interface, welches nach kurzer Gewöhnungsphase einfach zu bedienen ist (eine kurze Hilfe gibt es via Druck auf h). In der Grundansicht werden die entdeckten Netzwerke angezeigt, nebst einigen kurzen Informationen pro Netz. Mit der Taste s wird das Menü zur Sortierung der Einträge aufgerufen, ein weiterer Druck auf s sortiert die Liste nach den SSIDs.

Hat man in der Liste das gewünschte Netzwerk gefunden sollte man es mit Hilfe der Pfeiltasten auswählen und per Druck auf i nähere Informationen anfordern. Ein PopUp-Fenster erscheint in dem sämtliche generellen Informationen über das Netz festgehalten sind.

Hier ist vor allem die Zeile WEP interessant: Ein MAC-Schutz lässt sich nur umgehen, wenn diese Zeile No lautet. Ansonsten liegt das Netz verschlüsselt vor, womit man erst einmal den Schlüssel ermitteln müsste. Hat man die Informationen durchgeschaut kann das PopUp-Fenster mit einem Druck auf die Taste x geschlossen werden.
Interessanter als die generellen Informationen über das Netz sind die MAC-Adressen der verbundenen Clients. Diese erhält man, indem man in der Netzübersicht das gewünschte Netz auswählt und die Taste c betätigt. Wieder erscheint ein PopUp-Fenster, dieses mal werden jedoch einfach nur alle Clients aufgelistet, sofern möglich samt MAC- und IP-Adresse. Auch hier kann man via s die Sortierung ändern, es empfiehlt sich eine Sortierung nach MAC-Adresse (m).
[TODO: Screenshot. Habe leider nur einen einzigen Client.]
Zum eindringen in das fremde Netz braucht man folgende Informationen: Die SSID, eine gültige MAC-Adresse und den zulässigen IP-Bereich. Es empfiehlt sich, einen Texteditor (bspw. gedit oder kwrite) zu starten um sich diese Informationen aufzuschreiben. Das weitere Vorgehen ist vorerst recht simpel: Die SSID des Netzes, sichtbar in den Network Details, aufschreiben, danach in die Client-Ansicht des Netzes wechseln und MAC- sowie IP-Adressen festhalten. Für diesen Vorgang darf man sich ruhig etwas Zeit nehmen; je mehr MAC- und IP-Adressen man hat, desto besser.
Der große Moment ist gekommen, sobald sich ein bekannter Client aus dem Netzwerk verabschiedet. Jetzt kann seine MAC-Adresse dazu verwendet werden in das Netzwerk einzudringen.
Hat man eine berechtigte MAC-Adresse sowie eine mögliche IP-Adresse für das fremde Netz ermittelt kann kismet_client via Q verlassen werden, kismet_server beendet man mit der Tastenkombination Strg + c. Folgende Aktionen stehen an: Die WLAN-Karte muss ...
All diese Aktionen lassen sich mit den Tools ifconfig und iwconfig erledigen, welche bei allen drei getesteten Linux-Distributionen mitgeliefert werden.
Bei neueren Karten wird nicht iwconfig genutzt, stattdessen kommt das Tool wlancfg zum Einsatz. Da ich noch keine Karte besitze die mit wlancfg konfiguriert wird bin ich über sämtliche Hinweise zur Konfiguration einer Karte mit diesem Tool dankbar.
Zur Nutzung der beiden Tools ist ein Zugang als User root erforderlich, da nur er die Parameter ändern kann. Die folgenden Zeilen in einer Konsole konfigurieren die Karte:
# ifconfig eth1 down # ifconfig eth1 hw ether 00:11:22:33:44:55 # ifconfig eth1 192.168.0.2 # iwconfig eth1 essid "WeilerLAN" # iwconfig eth1 mode Managed # ifconfig eth1 up
eth1 ist dabei das zu konfigurierende Netzwerkinterface, in den Zeilen zwei bis fünf sollten die jeweils passenden Werte für MAC-Adresse, IP-Adresse und SSID angegeben werden. Damit sollte man dann auch schon Zugang zum fremden Netz erlangt haben - viel Spaß beim stöbern!
Hat man Informationen über die IP-Adresse des Gateways des fremden Netzes kann man diesen ebenfalls nutzen. Dazu muss man, wieder als User root, die Routing-Tabelle des Kernels mit folgendem Kommando modifizieren:
# route add default gw 192.168.0.1 dev eth1
Wieder gilt es, IP-Adresse und die Bezeichnung des Netzwerkinterfaces anzupassen.
Ist ein DNS-Server im fremden Netz bekannt so kann dieser ebenfalls benutzt werden. Alles was man braucht ist die IP-Adresse des DNS-Servers, diese muss in die Datei /etc/resolv.conf eingetragen werden. Am einfachsten geht das mit einer Shell-Umleitung:
# echo nameserver 192.168.0.1 > /etc/resolv.conf
Sind noch weitere DNS-Server bekannt können diese zusätzlich in die resolv.conf eingetragen werden, dazu ist lediglich eine kleine Abänderung des vorherigen Kommandos nötig:
# echo nameserver 192.168.0.254 >> /etc/resolv.conf
Von nun an sollten sich die Rechner im fremden Netz auch über ihre DNS-Namen ansprechen lassen, sofern solche konfiguriert sind.