WLAN-Tacking mit dem Raspberry Pi


WLAN-Access-Points verschicken in regelmäßigen Abständen sogenannten Beacon-Pakete. Damit werden die WLAN-Clients, die sich in der Nähe befinden, über das WLAN informiert. Wie oft er das tut, hängt von seiner Konfiguration ab. Der WLAN-Client, ein Smartphone, Notebook oder Tablet, informiert seinen Nutzer per aufpoppendes Info-Fenster über dieses WLAN.

WLAN-Clients müssen aber nicht auf die Beacons warten, sondern können von sich aus einen "Probe Request" senden, womit sie per Broadcast Informationen von allen in Reichweite befindlichen Access Points in Erfahrung bringen können. Als Antwort bekommt der WLAN-Client einen "Probe Response" mit dem Netzwerknamen (SSID) und Informationen zur Verschlüsselung.

Alle Probe Requests sind mit der Hardware-Adresse des Clients versehen damit der Access-Point den Response zurückschicken kann. Da jeder WLAN-Client eine eigene einzigartige Hardware-Adresse hat, mit der er sich zu erkennen gibt, lässt sich feststellen wann und wie oft ein WLAN-Client an einem bestimmten Ort war. Würde man die Probe Requests an mehreren Orten aufzeichnen und die Daten zur Analyse zusammenführen, könnte man sogar Bewegungsprofile erstellen können. Da WLAN-Clients, wie Smartphones, Tablets und Notebooks, in der Regel nur von einer Person genutzt werden, bezieht sich das Bewegungsprofil auf die Person.
Mit WLAN-Tracking ist es also möglich, Bewegungsprofile von Personen zu erstellen, ähnlich, wie es im Internet auch geschieht. Auf diese Weise kann man Besucherströme analysieren. Wann Sie kommen, wohin sie gehen und wann sie wieder gehen.

Manche WLAN-Clients richten ihre Probe Requests gezielt nach ihnen bekannten SSIDs. Das bedeutet, diese WLAN-Clients verraten, wo sie schon mal in einem WLAN eingebucht waren.
Manche WLAN-Clients verschicken Probe Request auch dann, wenn sie nicht benutzt werden. Zum Beispiel im Standby-Modus. So ein Gerät sendet quasi ständig ein Ortungssignal.
Bei manchen WLAN-Clients ist ein Tracking nur begrenzt möglich, weil es im gesperrten Zustand entweder gar keine oder nur sehr selten Probe Requests verschickt. Allerdings suchen fast alle Clients nach WLANs, wenn man sie aus dem Standby weckt.
In neueren Betriebssystem-Versionen ist davon auszugehen, dass WLAN-Tracking erschwert wird. Beispielsweise durch zufällig generierte MAC-Adressen und Vermeidung von Probe Requests.

Der Nutzer eines WLAN-Clients hat nur die eine Chance das Tracking zu unterbinden, in dem er WLAN wenn er unterwegs ist abschaltet. Aber selbst dass hilft manchmal nicht. Unter Android muss man in den WLAN-Einstellungen die Option "Erkennungsfunktion immer verfügbar" abschaltet, damit Android auch bei abgeschaltetem WLAN nicht nach WLANs sucht.

Hinweis: Die Hardware-Adresse wird als personenbezogen angesehen und fällt deshalb unter den Datenschutz. Die Aufzeichnung des WLAN-Datenverkehrs ist datenschutzrechtlich problematisch, wenn es im Verborgenen geschieht und die betroffenen Personen nicht informiert werden. Eine rechtskonforme Verarbeitung der aufgezeichneten Daten ist ohne Zustimmung der betroffenen Personen nicht möglich. Allerdings ist die Wahrscheinlichkeit, dass das WLAN-Tracking herauskommt gering, weil das Tracking passiv erfolgt, ohne dass ein Signal vom Aufzeichnungsgerät ausgeht.

Aufgabe

  1. Feststellen, ob der WLAN-USB-Stick für den Monitor-Modus geeignet ist.
  2. Software für Tracking installieren.
  3. WLAN-Tracking einrichten.

Lösung: WLAN-Tracking einrichten

Diese Lösung setzt voraus, dass man Kali Linux einsetzt. Die einzige Hardware-Anforderung ist ein WLAN-USB-Stick, der den Monitor-Modus beherrscht. Ob der WLAN-Adapter den Monitor-Modus beherrscht, findet man folgendermaßen heraus:

iw list | grep monitor

Wenn dieser Befehl eine Zeile mit "monitor" auswirft, dann ist alles im grünen Bereich und der WLAN-Adapter beherrscht den Monitor-Modus. Wenn nicht, dann sollte man sich einen anderen WLAN-Adapter besorgen.
Hinweis: Gegebenenfalls muss "iw" nachinstalliert werden:

sudo apt-get install iw

Der Raspberry Pi sollte für diese Lösung nicht mit einem WLAN verbunden sein. Das WLAN-Tracking soll nur passiv erfolgen.

Für das Tracking bringt Kali Linux fast alles mit. Damit wir das Tracking auf der Kommandozeile starten können benötigen wir „tshark“, das nachträglich zu installieren ist:

sudo apt-get install tshark

Anschließend aktualisieren wir noch die IEEE-OUI-Datei. Diese Datei ermöglicht es, dass aus einem Teil der Hardware-Adresse der Hersteller des WLAN-Clients ermittelt wird.

airodump-ng-oui-update

Für das WLAN-Tracking brauchen wir das Tool „airmon-ng“. Es bringt den WLAN-Stick in den Monitor-Modus. Dazu führt man folgenden Befehl aus:

sudo airmon-ng

Wenn in der Liste der WLAN-Stick mit „wlan0“ erscheint, dann kann der WLAN-Stick in den Monitor-Modus versetzt werden. Falls nicht, ist der WLAN-Stick nicht kompatibel.

sudo airmon-ng start wlan0

Ob das erfolgreich gelungen ist, kann man mit dem Kommando „ifconfig“ prüfen. Wenn hier ein „mon0“ zu finden ist, dann befindet sich der WLAN-Stick im Monitor-Modus und ist bereit zum WLAN-Tracking.

Fürs WLAN-Tracking verwenden wir „tshark“. Das zeigt uns auf der Kommandozeile die „Probe Requests“ der WLAN-Clients an:

tshark -i mon0 subtype probereq

Wenn man das Tracking in eine Datei zum späteren Auswerten schreiben möchte, kann man das mit folgendem Befehl tun:

tshark -i mon0 subtype probereq -w /tmp/rpi-cap.pcap

Mit „Strg+C“ kann man das Tracking abbrechen.

Der folgende Befehl beendet den Monitor-Modus. Das ist allerdings nicht zwingend erforderlich, weil nach einem Neustart der Monitor-Modus erneut aktiviert werden muss.

airmon-ng stop wlan0

Lösung: WLAN-Tracking mit Wireshark

Alternativ lässt sich das WLAN-Tracking auch auf der grafischen Oberfläche mit Wireshark erledigen. Das Laden der Benutzeroberfläche von Kali Linux dauert auf dem Raspberry Pi etwas länger, als man es normalerweise gewohnt ist. Also Geduld beim Ausführen des folgenden Befehls:

startx

Ist die grafische Benutzeroberfläche gestartet, startet man über „Application Menu/Kali Linux/Sniffing/Spoofing/Network Sniffers“ Wireshark. Dort wählt man „mon0“ als Interface aus und startet das Tracking mit der grünen Haiflosse.

Mit folgender Filterregel kann man den getrackten Datenverkehr auf die „Probe Requests“ begrenzen.

wlan.fc.type_subtype eq 4

Wenn man einen bestimmten Client filtern möchte erweitert man den Filter um die Hardware-Adresse des jeweiligen Clients.

 and wlan.sa == xx.xx.xx.xx.xx.xx

Wenn man den WLAN-Stick auf einen festen Kanal einstellen will (z. B. Kanal 6), dann muss man auf der Kommandozeile noch folgendes eingeben:

iwconfig mon0 channel 6