(Hier geht es zum ersten Teil)
Letzten Sonntag nutzte ich nun etwas Freizeit, um einen Prototypen zu entwickeln, der auf WiFi-Probe-Sniffing aufsetzt: Jedes Smartphone, jeder PC, jeder Spionagelautsprecher sendet, sofern keine existierende WLAN-Verbindung vorhanden ist, laufend so genannte „Probes“ aus: Anfragen nach bekannten Funknetzen, zu denen bereits in der Vergangenheit erfolgreich eine Verbindung aufgebaut werden konnte.
In den Anfragen der Geräte steht die SSID (Service Set Identifier, Name des Funknetzes) und eine MAC-Adresse. Ältere Geräte bzw. Software senden hier die weltweit eindeutige Hardware-Adresse aus, neuere Geräte (fast alle Smartphones der letzten Jahre) generieren hier zufällige Adressen zu Verschleierung. Man kann meist noch den Hersteller des Gerätes ermitteln, trotzdem ändern sich die Adressen regelmäßig.
Hierbei gibt es zwei Probleme:
- Die Klarnamen der bekannten Netze enthalten oft Informationen zu eindeutigen Identifikation des Nutzers, insbesondere weil meistens eine ganze Liste bekannte Netze angefragt wird und eine Liste von 5-10 Elementen durchaus als eindeutig gelten kann.
- Existiert ein Netz mit angefragter SSID, wird mit der unverschleierten, eindeutige Geräte-Schnittstellen-MAC-Adresse eine Verbindung aufgebaut. Selbst wenn diese scheitern sollte, z.B. wegen falscher WPA-Schlüssel, gelangt man als Angreifer an die eindeutige Adresse (ungetestet).
Als Proof of Concept zu erstgenanntem Problem beschaffte ich mir einen Raspberry PI Zero W und eine hochwertige externe WiFi-Antenne Alfa AWUS036ACH Dual Band USB Adapter AC1200. Der auf dem Raspberry Pi Zero W verbaute onboard-WiFi-Chipsatz dient als Uplink in mein eigenes Netz und eignet sich zudem nicht für „Monitor Mode“ (Details: Es gibt zwar das Nexmon-Projekt was den Monitor-Mode im Onboard-Wifi-Chip implementiert, allerdings braucht man ja auch eine Zugriffsmöglichkeit auf das Gerät. Zwar kann man parallel zum Monitor-Mode auch eine Wifi-Verbindung fahren, dann ist aber kein Channel-Hopping mehr möglich und man sieht nur das, was auf dem eigenen Kanal los ist. Zudem ist natürlich auch die Antennenleistung nicht geeignet um entfernte Signale aufzufangen. Fehlender Support für 5GHz tut sein übriges.).
Softwareseitig kam nichts besonderes erwähnenswertes zum Einsatz:
- Raspbian Lite Stretch
- Sniff Probes von https://github.com/brannondorsey/sniff-probes
- ein paar tolle Sachen, die das Leben schöner machen(tm)
In Stichworten:
- dhcpcd5 deinstalliert und alles auf systemd-networkd umgestellt
- rtl8812au WiFi-Treiber kompiliert und installiert (make install, dkms ging leider nicht)
- WireGuard Tunnel zu externer Gegenstelle für Fernzugriff inkl systemd service („[email protected]“)
- Docker 18.06 (Hinweise warum alte Version notwendig)
- Frontail docker image, zum Abrufen des SniffProbes-Logfiles via Browser (Base Image auf „arm32v6/node:8-alpine“ geändert und neu gebaut)
Zumindest der DPD-Paketbote wäre damit identifizierbar, die MAC-Adresse passt zu einem Gerät von „Hand Held Products“, heute Honeywell, und ist vermutlich ein 2D-Barcode-Scanner. Hier gibt es Marketing-Informationen über die in Österreich von DPD eingesetzten Barcode-Scanner, eventuell sind es ja die gleichen, wie bei uns?
„Global parcel and express delivery companyDPD is equipping all of its 12,000 drivers in Germany, Austria, Switzerland, Belgium, The Netherlands and Luxembourg with a Honeywell (NYSE: HON) Dolphin 99EX mobile computer.“
https://www.honeywell.com/newsroom/pressreleases/2013/08/leading-international-parcel-service-provider-dpd-selects-honeywell-mobile-computers-to-improve-delivery-speed-accuracy
PS 1: Lustig: Jemand hatte wohl am Wochenende die selbe Idee
PS 2: Hermes wird 2019 Zebra TC75x Handhelds ausrollen. Die 19.000 Geräte kommen vermutlich noch mit Android 7 ohne MAC Randomization.
PS 3: Hermes bisherige Handhelds scheint aktuell unter folgenden MACs/SSIDs zu agieren:
10:44:16 -77dBm 74:e5:f9:df:ce:6b "DIRECT-"
10:44:22 -87dBm 74:e5:f9:df:ce:6b "DIRECT-"
14:31:33 -62dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:33 -76dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:43 -83dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:44 -83dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:45 -83dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:47 -80dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:56 -82dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:57 -82dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:31:57 -85dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:32:07 -84dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:36 -78dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:36 -58dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:44 -82dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:45 -80dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:46 -85dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:48 -86dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:37:58 -83dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:11 -86dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:12 -84dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:22 -81dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:23 -78dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:33 -81dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:35 -84dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:36 -85dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:37 -82dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:48 -82dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
14:38:57 -84dBm 8e:f5:a3:bc:1e:bb "DIRECT-"
PS 4: Der heutige Hermes-Mitarbeiter (oder Hermes-Einrichtungs-Service, der Möbelspeditionssparte) führte schon ein Zebra-Handheld mit sich:
11:34:28 -84dBm 40:83:de:a6:91:59 "101"
11:34:28 -86dBm 40:83:de:a6:91:59 "hes-deploy"