Kismet, Gpsdrive und Festival

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
Installationsmethoden LiveCDs Kernel & Hardware Laptops & Notebooks Portage System Netzwerke & Services X Software Anderes alphabetischer HOWTO Index


Inhaltsverzeichnis

[Bearbeiten] Rechtliches

Dieses Howto ist keine Anleitung zum Eindringen in ein Wireless LAN. Der Autor will mit diesem Howto auch niemanden dazu anstiften in ein fremdes Netzwerk, eventuell sogar noch ein verschlüsseltes, einzudringen. Bei dem hier vornehmlich verwendeten Tool Kismet handelt es sich aufgrund seines Features als passiver Sniffer um ein äußerst effizientes Tool zur Überprüfung der Sicherheit in Wireless LANs. Dies darf natürlich nur im eigenen WLAN geschehen oder mit der Einwilligung des Berechtigten. Bei Kismet ist es wie bei allen guten Tools, sie können gebraucht, aber auch missbraucht werden.

Der Einbruch in ein WLAN ist kein Kavaliersdelikt, also lasst es bleiben!

[Bearbeiten] Szenario

Hier will ich beschreiben, wie man einen Laptop optimal zum WarDriven, WarWalken, etc. einrichten kann. Linux eignet sich hervorragend zum Scannen, Sniffen und als IDS (Intrusion Detection System) für WLANs. Mit Hilfe von Kismet lässt sich selbst alles unter dem bloßen Einsatz der Shell erledigen.

Kismet kann aber noch mehr. Es bringt Unterstützung für GPS mit. Weiterhin können die gefundenen Accesspoints mittels GpsDrive auf einer (Land)Karte eingezeichnet werden. Der Netzwerkverkehr kann geloggt werden. Auf Wunsch kann der Traffic in Ethereal importiert werden. Sogar ein IDS für WLANs bringt kismet von Haus aus mit. Es erkennt Scans von den verbreitesten Scannern wie beispielsweise Netstumbler oder Wellenreiter. Praktisches Gimmick ist, dass man sich per Sprachausgabe ansagen lassen kann, wenn ein neuer Accesspoint gefunden wurde. Das erledigt Kismet unter Einsatz von Festival.

Dieses Howto beschreibt, wie man Kismet unter Gentoo aufsetzt. Fangen wir also an.

[Bearbeiten] Benötigte Hardware

[Bearbeiten] Die WLAN-Karte

Man benötigt natürlich eine WLAN-Karte. Diese sollte von kismet unterstützt werden. Eine Liste der unterstützten Karten findet man in der Dokumentation von Kismet. Diese sollte schon konfiguriert sein. Auf die Konfiguration der Karte wird hier nicht eingegangen. Wichtig ist, dass sich die Karte in den sogenannten rfmon-Modus (desweiteren Monitor-Modus) schalten lässt. Der Monitor Mode bei Wireless-LAN-Karten ist vergleichbar mit dem Promiscuous Mode bei herkömlichen Ethernet-Adaptern. Jedoch werden im Monitor Mode alle in der Reichweite einer Karte liegenden Pakete weitergeleitet, nicht wie in einem herkömmlichen LAN, in dem nur solche Packete an den Client geschickt werden, die innerhalb des Netzwerks liegen. Darin liegt die Stärke von Kismet. Es ist ein sog. passiver Scanner (Sniffer). Dadurch, dass die eigene WLAN-Karte kein Paket versenden muss, um Pakete abzufangen, taucht sie in keinem Log-File auf.

Auch bedarf diese Methode keinerlei Authentifizierung im Netzwerk. Verschlüsselte Datenpakete können später geknackt werden.

Ob dies der Fall ist, zeigt ein

# iwconfig eth1 mode monitor

Und danach ein

# iwconfig eth1

um zu sehen, ob alles erfolgreich war. So sollte die Ausgabe ungefähr aussehen

eth1      unassociated  ESSID:off/any
          Mode:Monitor  Channel=0  Access Point: 00:00:00:00:00:00
          Bit Rate=0 kb/s   Tx-Power=20 dBm
          Retry limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:1   Missed beacon:0

Es ist darauf zu achten, dass der Mode in dem sich die Karte befindet Monitor ist. So lange die Karte im Monitor Mode ist, kann sie nicht für die herkömmliche Kommunikation genutzt werden. Will man sich auch gleich zu den später verbundenen Accesspoints verbinden, ist also eine zweite Karte notwendig. Die andere Möglichkeit ist, die sich im Monitor-Mode befindende Karte wieder in den Managed-Mode zurückzuswitchen. Richtig ;-), wieder mit iwconfig.

# iwconfig eth1 mode managed

Danach ein

# iwconfig eth1

um zu sehen, ob alles wieder passt, sollte so aussehen:

eth1     IEEE 802.11g  ESSID:""
         Mode:Managed  Frequency:2.462 GHz  Access Point: 00:00:00:00:00:00
         Bit Rate=54 Mb/s   Tx-Power=20 dBm
         Retry limit:7   RTS thr:off   Fragment thr:off
         Encryption key:off
         Power Management:off
         Link Quality:98  Signal level:0  Noise level:170
         Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
         Tx excessive retries:0  Invalid misc:164   Missed beacon:0

Jetzt ist die Karte wieder normal nutzbar und kann sich mit einem Accesspoint verbinden.

Wird der Ad-hoc Modus gewünscht so lautet der Befehl

# iwconfig eth1 mode ad-hoc

[Bearbeiten] GPS Maus - optional

Will man noch GPS einsetzen, benötigt man eine GPS-Maus. Ich verwende die Bluetooth Maus "WondeXL" von der Firma "Xaiox". Diese ist aber wie gesagt nur optional, aber wie ich finde, eine lohnenswerte Investition. Für das WarWalking/Driving ist die Verknüpfung eines gefundenen Accesspoints mit dessen GPS-Koordinaten wichtig, so kann der Standort für eine gleichzeitige oder spätere Auswertung in eine Karte eingetragen werden.

[Bearbeiten] Benötigte Software

Folgende Software brauchen wir um Gentoo zum erkennen von WLANs zu verwenden:

  • Kismet

optional:

  • Ethereal
  • Mysql
  • Gpsd & GpsDrive (falls ein GPS-Empfänger vorhanden ist)
  • Festival (falls Sprachausgabe erwünscht)

[Bearbeiten] Installation

[Bearbeiten] Erstmal kismet

Zuerst müssen wir Kismet installieren. Wenn Ethereal oder GPS Support gewünscht wird, sollte man das jeweilige USE-Flag setzen. Dies kann man in der /etc/make.conf erledigen. Zur make.conf siehe Artikel MAN_makeconf.

und los geht's:

# emerge -av kismet

[Bearbeiten] kismet's - essentialia negotii

Zuerst wollen wir schauen, ob kismet einwandfrei startet. Dafür ist es notwendig, die nachfolgenden Punkte zu konfigurieren. Die Konfigurationsdateien, die für uns interessant sind, heißen /etc/kismet.conf und /etc/kismet_ui.conf.

In /etc/kismet.conf müssen der Benutzer, unter dem Kismet laufen soll, sowie die Source eingetragen werden. Dies ist die minimale Konfiguration von Kismet. /etc/kismet.conf:

suiduser=olli
source=ipw2200,eth1,name


ACHTUNG: Kismet muss als root gestartet werden, es läuft jedoch mit Privilegien des oben angegebenen Users. Also hier wäre das der Benutzer 'Olli'. Dieser wird mittels 'suiduser=' gesetzt.

Zweitens muss der 'source' bearbeitet werden. Dazu gilt folgendes:

source=sourcetype,interface,name
  • 'sourcetype' ist der Typ der WLAN-Karte. In meinem Fall handelt es sich um eine Intel-Karte vom Typ ipw2200. Eine Liste von Kartentypen und ihren Bezeichungen gibt es ebenfalls in Kismet Dokumentation (unter 12. Capture Sources).
  • 'interface' ist in meinem Fall eth1
  • 'name' ist beliebig zu vergeben.

Nun sollte Kismet funktionstüchtig sein. Testweise sollte man nun als root

# kismet

aufrufen. Wenn alles funktioniert hat, startet die Oberfläche von kismet. Herzlichen Glückwunsch, wir sind schon einen großen Schritt voran gekommen.

[Bearbeiten] GPS

Hat man einen GPS-Empfänger zur Verfügung, kann man diesen wie folgt unter Gentoo zum Laufen bringen. Solche GPS-Empfänger übermitteln ihre Daten üblicherweise per Bluetooth oder per USB. Wer einen Bluetooth GPS-Empfänger sein eigen nennt, sollte den nächsten Abschnitt lesen, wer einen USB-Empfänger besitzt, kann gleich mit dem Mergen von gpsd beginnen und diesen Punkt überspringen.

[Bearbeiten] per Bluetooth

Ich setze voraus, dass Bluetooth bereits konfiguriert ist, und Bluez-Utils installiert sind.

    • Den Empfänger einschalten, danach die Umgebung mittels hcitool aus den Bluez-Utils scannen.
# hcitool scan
Scanning ...
       00:02:34:09:F4:76       BlahBlah GPS Empfänger

Prima, wir haben unseren Empfänger gefunden und bekommen seine MAC-Adresse angezeigt. Jetzt müssen wir uns mittels hcitool zu unserem Empfänger verbinden

# hcitool cc 00:02:34:09:F4:76

Jetzt checken wir noch ob das geklappt hat

# hcitool con

Die Ausgabe

Connections:
       < ACL 00:02:34:09:F4:76 handle 41 state 1 lm MASTER

Wunderbar, jetzt brauchen wir nur noch eine serielle Schnittstelle um die Daten auszulesen. Dies wird mit dem Befehl rfcomm erreicht.

# rfcomm bind /dev/rfcomm0 00:02:34:09:F4:76

Jetzt müssten wir /dev/rfcomm0 mittels cat auslesen können.

# cat /dev/rfcomm0

So in der Art sollte die Ausgabe erscheinen:

9,V,4924.4944,N,00640.7639,E,0.00,0.00,090805,,,A*7E
$GPVTG,0.00,T,,,0.00,N,0.00,K,A*70
$GPGGA,111347.119,4924.4944,N,00840.7689,E,0,00,00.0,94.5,M,48.0,M,,*5B
$GPGSA,A,1,,,,,,,,,,,,,0.0,0.0,0.0*30 
$GPGSV,3,1,09,2,22,229,25,8,75,185,,10,62,290,39,13,29,087,*7A 
$GPGSV,3,2,09,21,,,,26,08,277,,27,62,066,,28,17,157,*42

Dies sind die RAW-Daten, die später von gpsd eingelesen werden.

[Bearbeiten] Beenden der Verbindung

Man kann die virtuelle, serielle Schnittstelle /dev/rfcomm0 mittels

# rfcomm release 00:02:34:09:F4:76

später wieder schließen und mit

# hcitool dc 00:02:34:09:F4:76 

die Bluetooth-Verbindung beenden.

[Bearbeiten] Installation von GpsDrive

Nachdem wir nun auch den GPS-Empfänger angeschlossen haben, müssen wir uns GpsDrive zuwenden. GpsDrive dient als Frontend zu gpsd. Beides steht im Portage für uns bereit. Jedoch ist gpsd ein Masked Package, das bisher lediglich im "~x86"-Zweig zur Verfügung steht. Also machen wir erstmal ein

# echo sci-geosciences/gpsd >> /etc/portage/package.keywords

Freunde von USB-Empfängern sollten beim Emergen von gpsd das USE-Flag "USB" in ihre /etc/make.conf eintragen, damit gpsd mit einem solchen Device umgehen kann. gpsd sucht dann den Empfänger dann bei {Filename|/dev/ttyUSB0}}.

Zuerst emergen wir gpsd

# emerge -av gpsd

danach noch GpsDrive

# emerge -av gpsdrive

[Bearbeiten] Let's see where we are

Die Bluetooth-Verbindung zum GPS-Device besteht noch? Alles klar, dann kann's ja losgehen. Als normaler User:

# gpsd -p /dev/rfcomm0
# gpsdrive

Zuerst auf den Button "starte GPSD" gehen, danach auf "Karten downloaden". Karten können dann über ein Menü in verschiedenen Maßstäben gedownloaded werden. Wenn alles gut gegangen ist, dann können wir jetzt unseren Standort auf der Karte sehen.

[Bearbeiten] GPS-Drive und Kismet

Jetzt müssen wir es nur noch schaffen, GpsDrive mit Kismet zu verbinden. Dafür muss man wieder an der /etc/kismet.conf Hand anlegen. Hier sind die entsprechenden Einträge:

 gps=true
 # Host:port von GPSD. 
 gpshost=localhost:2947
 # Ich habe den Lockmode angeschaltet, weil mein GPS-Empfänger 
 # einen NMEA-Chipsatz besitzt.  
 gpsmodelock=true

Weiter unten noch

waypoints=true
waypointdata=%h/.gpsdrive/way_kismet.txt

Kismet legt nun die gefundenen Accesspoints als Waypoints in der Datei ~/.gpsdrive/way_kismet.txt ab. GpsDrive sollte diese Datei nun selbstständig finden und die Waypoints in seine Karte übernehmen.

[Bearbeiten] Kismet sprechen lassen

Ist Festival installiert, weist Kismet auf einen neu gefundenen Accesspoint per Sprachsynthese hin. Hierzu muss zuerst Festival emerged werden. Dabei kann mittels des USE-Flags "mbrola" support für "mbrola"-Stimmen ermöglicht werden. Aber Vorsicht, der Download vergrössert sich dadurch rapide!

emerge festival

Festival sollte "out-of-the-box" funktionieren. Jetzt noch schnell die Dateien /etc/kismet.conf und /etc/kismet_ui.conf angepasst.

# Sound sollte ausgeschaltet werden wenn man speech anstellt, da sonst Sound und Sprache
gleichzeitig zu hören sind (klingt scheisse!)
sound=false
#Spracheinstellungen
speech=true
festival=/usr/bin/festival
speech_type=speech
speech_encrypted=New network detected, s.s.i.d. %s, channel %c, network encrypted.
speech_unencrypted=New network detected, s.s.i.d. %s, channel %c, network open.

[Bearbeiten] Kismet Basics

Hier kurz noch ein paar Tipps zu Kismet. Wer sich die Beschreibung aller Befehle anschauen will, drückt die "H"-Taste.

Befehl  - Auswirkung
e - listet alle Kismet Server auf
z - in den Fullscreen schalten
m - Sound- und Sprachausgabe abschalten 
q - Menu schließen

Netzwerkspezifisch

Befehl  - Auswerkung
s - Alle Netzwerke sortieren nach einstellbaren Kriterien
c - Alle Clients im gewählten Netzwerk anzeigen
i - Informationen über das augewählte Netzwerk
l - Zeigt die Signalstärke der Karte
a - Statistiken 

That's all man.

[Bearbeiten] Weiterführende Links

Wem die Stimme in Festival nicht gut genug erscheint: Festival tunen

[Bearbeiten] Nachtrag in eigener Sache

Dies ist noch eine Beta-Version des Howtos und mit Vorsicht zu genießen. Es kann sein, dass sich Fehler eingeschlichen haben, da ich die ganze Nacht mit dem Howto verbracht habe ;-). Sollte es Probleme oder Fragen beim Einrichten geben, schickt mir ruhig eine E-Mail an oliver (at) vivell.info, oder benutzt die Diskussion im Wiki. -- bye Olli

'Persönliche Werkzeuge