WLAN analysieren und optimieren

Workshop: Mit Kismet Schwachstellen im WLAN aufdecken

02.03.2012 von Thomas Hümmler
Es ist sehr einfach, mit geeigneten und frei verfügbaren Tools wie Kismet versteckte WLANs zu entdecken. Die Sniffing-Werkzeuge der Hacker kann man aber auch einsetzen, um das eigene WLAN zu optimieren und gegen Angriffe abzusichern. Wie das geht, beschreiben wir anhand unseres Workshops.

Eines ist sicher: Nichts ist sicher. Und dem Schicksal kann man sowieso nicht entrinnen - auch dann nicht, wenn man die (E)SSID seines WLANs verbirgt. Dass so etwas nämlich ausgesprochen stümperhaft ist, beweist der WLAN-Sniffer Kismet (Arabisch für "Schicksal") bald nach dem Start. Denn Kismet spürt auch verborgene Funknetze auf - egal, ob diese nach den Standards 802.11a, 802.11b, 802.11g oder 802.11n funken. Das Programm ist ein sogenannter passiver WLAN-Sniffer. Kismet sendet also keine Pakete ins Netz, sondern lauscht nur auf den Datenverkehr vorhandener Netzwerke und zeichnet diesen unbemerkt mit.

Der WLAN-Adapter des lauschenden Rechners wird dazu in den sogenannten Monitormodus geschaltet. So ist Kismet in der Lage, auch versteckte (E)SSIDs zu entdecken, sobald dort Daten versendet werden. Da der Sniffer zusätzlich auch den Kanal, die Verschlüsselungsmethode und die Signalstärke des WLANs aufzeichnet, kann das Tool auch sehr gut dazu dienen, für das eigene WLAN einen geeigneten Kanal zu finden.

Kismet
Kismet
Wichtige Lektüre: Die Readme-Datei von Kismet gibt Auskunft über die Treiberunterstützung.
Kismet
Installation: Sicherer ist es, Kismet als “setuid“ zu installieren und den gewünschten Benutzer in die Gruppe kismet aufzunehmen.
Kismet
Erster Start: Zunächst meldet sich der Kismet-Server mit dem Konsolen-Fenster. Mit der Tab-Taste wechselt man auf die Schaltfläche und schließt das Fenster.
Kismet
Sammelleidenschaft: Nach etwa zwei Stunden hat Kismet fast 3300 WLANs aufgespürt und in die Logdateien eingetragen. Unten im Info-Bereich steht, welche verschlüsselt sind und welche nicht.
Kismet
Geordnete Ausgabe: Über das Kismet-Menü kann der Benutzer die WLANs sortieren, etwa nach der Verschlüsselung. Im Info-Bereich sind gerade zwei versteckte Funknetze geortet worden, eines davon unverschlüsselt.
Kismet
Detailansicht: Mit der Tastatur kann man durch die gefundenen Netze scrollen und sich jeweils die Eckdaten ansehen.
Kismet
Channels View: In dieser Ansicht kann man schnell erkennen, wie hoch das Signalrauschen und die Paketrate auf den einzelnen Kanälen ist.
Kismet
Geordneter Abbruch: Nach dem Herunterfahren des Kismet-Servers gibt es noch die Meldung, dass man das Netzwerk eventuell neustarten muss.

Wie einfach es ist, WLAN-Daten zu erfassen, zeigte Google in der Vergangenheit. Das Internetunternehmen katalogisierte Access-Points im Rahmen des umstrittenen Street View. Dabei haben die Google-Schnüffler auch Nutzdaten von WLANs wie Fragmente von E-Mails oder Inhalte abgerufener Websites gespeichert. Laut Google wurden dabei Funkscanner eingesetzt, die fünfmal pro Sekunde den Empfangskanal wechseln - die Voreinstellung in Kismet.

Kismet läuft unter BSD, Linux, MacOS und Windows. Wird es zusammen mit dem Programm GPSDrive benutzt, kann Kismet WLAN-Zugangspunkte kartografisch erfassen. Mit Schicksal hat das nichts mehr zu tun. Diese Methode ist als Wardriving bekannt, wobei "War" nicht für Krieg steht, sondern ein Akronym für "Wireless Access Revolution" ist. Eine andere Quelle führt Wardriving auf den Film "War Games" aus den 1980er-Jahren zurück, in dem ein Schüler per Wardialing (das Wählen aller möglichen Rufnummern einer Vorwahl) in einem Computer eindringt. Wardriver kennzeichnen offene Hot Spots, sodass andere diese als Internetzugänge nutzen können - was natürlich nicht zulässig ist.

Rechtliche Grundlagen

Wardriver bewegen sich in Deutschland in einer rechtlichen Grauzone. Ein offenes, aber privates WLANs zu nutzen kann als unerlaubtes Abhören einer Funkanlage gewertet werden; das ist nach dem Telekommunikationsgesetz verboten. Allerdings lehnte zuletzt 2010 das Amtsgericht Wuppertal (Az. 20 Ds-10 Js 1977/08-282/08) die Eröffnung des Hauptverfahrens ab, weil die Strafbarkeit des Angeschuldigten nicht ersichtlich war. Der Beschuldigte hatte zweimal einen offenen WLAN-Access-Point als Internetzugang genutzt, allerdings keine Daten ausgespäht.

Der WLAN-Betreiber hatte indes noch Glück, dass er nicht selbst haftbar gemacht wurde. Denn der Bundesgerichtshof kam in Bezug auf WLAN und Störerhaftung vom Mai 2010 zu dem Schluss, dass die "Prüfpflicht mit der Folge der Sto¨rerhaftung verletzt ist, wenn die gebotenen Sicherungsmaßnahmen unterbleiben" (Aktenzeichen: I ZR 121/08). Soll heißen: Wer sein WLAN nicht vernünftig absichert, haftet im Rahmen der Störerhaftung. Als abgesichert gilt ein Router, in dem die zum Kaufzeitpunkt marktüblichen Sicherungen ihrem Zweck entsprechend wirksam eingesetzt werden. Zurzeit ist der als sicher geltende WPA-Standard marktüblich.

Kismet konfigurieren

Der Zugang zu offenen und WEP-verschlüsselten Access Points ist hingegen banal. Man braucht nur ein Notebook mit WLAN-Karte und entsprechende, überall erhältliche Freeware-Tools. Allerdings funktionieren unter Linux nicht alle WLAN-Adapter. Man hat beispielsweise keinen Erfolg mit Adaptern, die den Ndiswrapper benötigen, also die proprietären Windows-Treiber verwenden. Außerdem muss der WLAN-Adapter den Monitormodus (rfmon) unterstützen.

Ein Sniffer achtet außerdem darauf, dass er keine Karte einsetzt, die im Monitormodus eventuell noch Daten versendet, also in den Broadcast-Modus wechselt. Und vor allem ist Linux das System der Wahl, denn die anderen unterstützen weniger Treiber: Unter BSD etwa erkennt Kismet die Treiber nicht automatisch. Es sollte aber, sagt der Entwickler Mike Kershaw, jeder Treiber funktionieren, der den Monitormodus unterstützt. In Windows und Macintosh OS/X werden derzeit nur der aircap-Treiber (Windows), darwin (Macintosh) sowie der PCAP- und der Dronen-Modus unterstützt. Der PCAP-Modus holt die Daten aus einer zuvor aufgezeichneten Logdatei, der Dronen-Modus dient dazu, von mehreren Rechnern aus Daten an einen Server zu liefern.

Wichtige Lektüre: Die Readme-Datei von Kismet gibt Auskunft über die Treiberunterstützung.

Welche Adapter wie für Kismet geeignet sind, steht nach der Kismet-Installation in der Datei /usr/share/doc/kismet/README.gz im Abschnitt "12. Capture Sources". Die Installation selbst ist in Ubuntu und Debian schnell erledigt: Ein apt-get install kismet (in Ubuntu mit einem vorangesetzten sudo) spielt den Sniffer auf den Rechner. Das ist allerdings nicht die aktuellste Version, sondern unter Ubuntu 11.10 eine aus dem Jahr 2008. Warum das so, kann sich Kismet-Entwickler Mike Kershaw nicht erklären. Wer daher die neueste Version benötigt, kann direkt auf seiner Homepage die erforderlichen Pakete herunterladen. In Debian und Ubuntu können Sie auch gleich das Repository in die Softwareverwaltung übernehmen. In Ubuntu 11 tragen Sie dazu in die Datei /etc/apt/sources.lst die Zeile

deb http://www.kismetwireless.net/code/ natty kismet

ein. Um noch den Schlüssel als ertrauenswürdig hinzuzufügen, führen Sie folgenden Befehl aus:

curl https://www.kismetwireless.net/code/dists/kismet-release.gpg | sudo apt-key add -

Anschließend haben Sie Zugriff auf die Pakete kismet mit Server, Drone und den Basis-Plugins sowie auf die eingeschränkten Plugins mit den Programmen autowep und aircrack-ptw zum Entschlüsseln von WEP-Passwörtern.

Installation: Sicherer ist es, Kismet als "setuid" zu installieren und den gewünschten Benutzer in die Gruppe kismet aufzunehmen.

Während der Installation des aktuelleren Programms können Sie festlegen, dass Kismet als "setuid" installiert wird - und nicht als root. Im folgenden Dialog müssen die Benutzer angegeben werden, die zur Gruppe kismet hinzugefügt werden sollen. Geben Sie hier Ihren Benutzernamen ein. Dann wird Kismet installiert, und Sie können es anschließend nutzen.

Kismet konfigurieren

Die neue Version 2011-03-R2 von Kismet ist grundlegend neu programmiert. Die Konfigurationsdateien älterer Versionen sind damit nicht mehr zu gebrauchen. Der Kismet-Client ist vollständig überarbeitet und hat mit früheren Versionen nichts mehr gemein. Die Konfiguration geschieht inzwischen direkt im Kismet-Client und wird im Home-Verzeichnis der Nutzer in der Datei ~/.kismet/kismet_ui.conf gespeichert. Programmabstürze sind seltener, außerdem gibt es neue Filtermethoden, und bei einer großen Anzahl von Netzwerken wird die CPU deutlich weniger beansprucht.

Erster Start: Zunächst meldet sich der Kismet-Server mit dem Konsolenfenster. Mit der Tab-Taste wechselt man auf die Schaltfläche und schließt das Fenster.

Kismet nutzt die textbasierte Ncurses-Bibliothek, ähnlich wie etwa der Midnight Commander. Das Menü aktiviert der Benutzer über die [Esc]-Taste, die Navigation im Menü geschieht mithilfe der [Tab]-Taste. Die Maus wird unterstützt, allerdings nicht von allen Widgets. Das Hauptfenster besteht aus der Netzwerkliste, GPS-Informationen, einer Statistik des Servers und dem Paketstatus. In der Statuszeile erscheinen Fehlermeldungen und weitere Hinweise. Weitere Komponenten können über das View-Menü hinzugeschaltet werden. Die Vorgaben werden über Kismet, Preferences geändert; ein Neustart ist danach nicht erforderlich. In den Vorgaben zum Start-up und Shut-down stellt man beispielsweise ein, ob der Kismet-Server gestartet oder beim Verlassen des Programms automatisch geschlossen werden soll.

Geordnete Ausgabe: Über das Kismet-Menü kann der Benutzer die WLANs sortieren, etwa nach der Verschlüsselung. Im Info-Bereich sind gerade zwei versteckte Funknetze geortet worden, eines davon unverschlüsselt.

Nach dem Start müssen Sie Kismet zunächst den WLAN-Adapter mitteilen. Dazu starten Sie das Programm, das sich zuerst mit dem Kismet-Server verbinden will. Bestätigen Sie das mit Yes und anschließend mit Start. Im nächsten Schritt müssen Sie den WLAN-Adapter hinzufügen, falls der nicht automatisch erkannt wird. Der WLAN-Adapter wird als "Packet Source" bezeichnet.

In die Zeile Intf tragen Sie den WLAN-Adapter ein; oft reicht ein wlan0. Sollte das nicht funktionieren, hilft ein Blick in Kapitel 5 "Capture Sources" sowie in Kapitel 7 "Supported capture source types" der Dokumentation. Alle modernen Treiber, die das mac80211-Framework unterstützen, werden automatisch erkannt. Außer dem generischen Treiber namens mac80211 werden unter anderem die folgenden Treiber unterstützt: adm8211; acx100; hostap (prism2-Treiber); die Intel-Treiber ipw2100, ipw2200, ipw2915 und ipw3945; madwifi und die Vorgaben für die Känale mit madwifi_a (802.11a), madwifi_b (802.11b), madwifi_g (802.11b/g) und madwifi_ag (802.11abg); die Nokia-Maemo-Tablet-Treiber nokia770, nokia800, nokia810 und nokiaitt.

Welche WLAN-Schnittstellen auf dem eigenen Rechner zur Verfügung stehen, kriegt man schnell mit dem Konsolenbefehl iwconfig heraus. Den verwendeten Chipsatz finden Sie bei einer PCI- oder PCMCIA-Karte mit dem Befehl

lspci | grep -i net

und bei einer USB-Karte mit dem Befehl

lsusb

heraus. Die Daten zum WLAN-Adapter können Sie dann in die /etc/kismet/kismet.conf eintragen. Dort sollte die Zeile dann beispielsweise so lauten:

ncsource=wlan0:option1=foo,option2=bar

Es gibt insgesamt 15 Optionen. Informationen darüber stehen im Abschnitt 5 der README-Datei unter "Capture sources". Wichtige Optionen sind:

Wer zum Beispiel alle Daten auf Kanal 6 erfassen will, trägt die folgende Zeile ein:

ncsource=wlan0:hop=false,channel=6

Kismet versucht außerdem, sich mit einem GPS-Server zu verbinden. Sollten Sie das nicht benötigen, schalten Sie die GPS-Erkennung in der Konfigurationsdatei /etc/kismet/kismet.conf ab. Dazu ändern Sie die Zeile gps=true in gps=false.

Sammelleidenschaft: Nach etwa zwei Stunden hat Kismet fast 3300 WLANs aufgespürt und in die Logdateien eingetragen. Unten im Info-Bereich steht, welche verschlüsselt sind und welche nicht.

Die erhaltenen Daten loggt der Sniffer mit. In der Voreinstellung speichert Kismet die PCAP-Datei, das GPS-Log, Alarme und das Netzwerk-Log als XML und Text. Die Log-Dateien werden in das Verzeichnis geschrieben, aus dem heraus Kismet gestartet wird, üblicherweise also ins Home-Verzeichnis. Das können Sie ändern mit der Option --log-prefix. Wichtig dabei: Die Verzeichnisse, in denen die Log-Dateien aufgezeichnet werden, müssen zuvor existieren.

Filter konfigurieren und einstellen

Die vielen anfallenden Daten können Sie in Kismet auch gezielt filtern. So können Sie Netzwerke auf Basis der BSSID, der Quelle oder sogar der MAC-Adresse außen vor lassen. Filter arbeiten generell so, dass alles, was den Filter positiv durchläuft, erlaubt ist - alles andere schließt Kismet aus. Damit schaffen Sie ganz schnell klare Verhältnisse: Soll beispielsweise nur die BSSID mit der Kennung AA:BB:CC:DD:EE:FF getrackt werden, lautet der Eintrag in der Konfigurationsdatei:

filter_tracker=BSSID(AA:BB:CC:DD:EE:FF)

Das Verhalten kann mit dem "!"-Operator umgekehrt werden:

filter_tracker=BSSID(!AA:BB:CC:DD:EE:FF)

Der Befehl lässt alles durch, außer Daten von dieser Kennung. Mehrere MAC-Adressen können dabei in einer Zeile zusammengefasst werden, etwa so:

filter_tracker=BSSID(!AA:BB:CC:DD:EE:FF,!00:11:22:33:44:55)

Zusätzlich zum BSSID-Filter können die Pakete noch mit dem Filtern SOURCE, DEST (für Destination = Bestimmungsort) und ANY versehen werden.

Kismet als IDS-System verwenden

Für das eigene Netzwerk kann Kismet als Intrusion-Detection-System für Layer-2- und Layer-3-Attacken fungieren. Das Programm kann bei sogenannten Fingerprints (spezielle Angriffe mit einzelnen Paketen) Alarm schlagen und Trends erkennen. Alarme werden in der Konfigurationsdatei mit alert= definiert. Diesem werden drei Parameter übergeben, etwa so:

alert=LONGSSID,5/min,1/sec

Hier wird auf überlange SSID geprüft, die ein Anzeichen eines Angriffs auf verschiedene Treiber sein können. Hier sind maximal fünf pro Minute erlaubt und maximal ein Alarm pro Sekunde. Welche anderen Alarmsignale es gibt, steht in der Readme-Datei in Kapitel 12.

Detailansicht: Mit der Tastatur kann man durch die gefundenen Netze scrollen und sich jeweils die Eckdaten ansehen.

Mithilfe der Kismet-Drohnen kann das IDS noch verstärkt werden. Drohnen schicken ihre gesammelten Daten über einen zweiten Netzwerkadapter an einen Kismet-Server, der diese sammelt. Als Drohnen eignen sich auch Windows- oder Mac-OS/X-Rechner; Da sie nicht dekodieren, benötigen sie nur eine minimale Hardwareausstattung. Was auf dem Kismet-Server ankommt, kann dann an eine virtuelle Netzwerkschnittstelle weitergeleitet und dann etwa mit einem externen IDS-System wie Snort weiter untersucht werden. (hal)