Wifitracking: Smartphones werken ongemerkt als peilzender

Noud van Kruysbergen
0

Je telefoon verstuurt regelmatig wifipakketten en geeft daarmee zijn aanwezigheid prijs – soms zelfs als je wifi uit staat. Die pakketten kunnen eenduidig aan een apparaat gekoppeld worden, waardoor je er zelfs bewegingsprofielen van kunt maken. Gelukkig kun je je daar tegen wapenen.

stap01Een accesspoint verstuurt op regelmatige intervallen zogenaamde beacon-pakketten om wifi-clients zijn aanwezigheid te melden. Wanneer je smartphone snel wil weten welke netwerken er bereikbaar zijn, dan gaat hij niet wachten op beacons, maar verspreidt hij een zogenaamde probe-request als broadcast. Hierop reageren de accesspoints met het doorgeven van hun netwerknaam (SSID) en enkele details over de versleuteling (zie het kader op pagina 104). Die probe-requests maken aanvallers erg nieuwsgierig, omdat daarin onder andere het individuele hardwareadres van de client verborgen zit. Als je het wifi-verkeer dan langere tijd monitort, dan kun je probleemloos uitvogelen wanneer en hoe vaak een smartphone (en daarmee dus ook de eigenaar) bijvoorbeeld op een bepaalde plek was. Doe je dat op meerdere plaatsen, dan kun je zelfs complete bewegingsprofielen opstellen. Op die manier zou je baas bijvoorbeeld kunnen bijhouden hoe laat je dagelijks het kantoor binnenkomt, hoeveel pauze je werkelijk neemt en hoe vaak je even naar buiten gaat voor een kleine rookpauze. De wifi-trackers gedragen zich compleet passief en versturen zelf geen enkel datapakket, zodat er geen privacy-aspecten in het geding zullen zijn.

Wifi-tracking is geen theoretisch scenario, maar allang realiteit. Een winkelcentrum in het Britse Huddersfield zou deze techniek gebruiken om profielen van klanten op te stellen, waardoor ze doelgericht kunnen adverteren – vergelijkbaar met een tracking-cookie bij het online shoppen. Verder zouden er op de luchthaven van Helsinki 150 tracking-kastjes geïnstalleerd zijn om bezoekersstromen te analyseren. Daarnaast bestaan er al langer dienstverleners die in meer en mindere mate gespecialiseerd zijn in tracking. Dan hebben winkels bijvoorbeeld een mogelijkheid om vast te stellen of een reclamecampagne daadwerkelijk tot meer bezoekers heeft geleid.

Maar daarmee houdt het nog niet op: wifi-clients zoeken soms niet alleen in het wilde weg, maar ook doelgericht naar bepaalde netwerknamen (SSID’s) waarmee ze ooit eens verbinding hadden. Zo kan het gebeuren dat je Nexus 7 voortdurend op zoek gaat naar voor hem bekende draadloze netwerken: ‘Wifi van ct’, ‘David-Home’, ‘Ronalds thuisnetwerk’.

Vraagt de tablet dan bijvoorbeeld naar ‘Wifi van ct’, dan kan een aanvaller ervan uitgaan dat de gebruiker vaker bij onze redactie over de vloer komt. Met behulp van openbare databases als Wigle.net kan hij op straat dan nauwkeurig te weten komen waar ‘Ronalds thuisnetwerk’ te vinden is – en dus waar Ronald woont.

Schijnslaap

We hebben bij heel wat moderne smartphones en tablets gekeken hoe royaal ze informatie voor tracking de wereld in slingeren. Daarbij kwamen we enkele verrassingen tegen. Sommige apparaten sturen de probe-requests niet alleen als ze gebruikt worden, maar ook tijdens stand-by. Als je zo’n smartphone of tablet in je broekzak hebt, geef je dus permanent een locatiesignaal door.

De huidige Nexus-apparaten van Google vielen daarbij in zeer negatieve zin op: de Nexus 5 (smartphone) zoekt op standby twee keer per minuut naar een netwerk, de tablet Nexus 7 doet dat zelfs elke elf seconden – dat is maar één seconde langer dan wanneer het apparaat aanstaat. Ook de HTC One M8 gaf zichzelf met een periode van slechts twintig seconden behoorlijk goed bloot. De Sony Xperia Z2 scant elke minuut naar een draadloos netwerk. De geteste iPhones, apparaten met Windows Phone en Amazons Kindle Fire HD konden we vergrendeld niet traceren omdat ze maar heel zelden een probe-request verstuurden of helemaal niet. De iPad Air stuurde vergrendeld alleen om de ongeveer 140 seconden een paar pakketten.

Zodra je de apparaten uit stand-by haalt, beginnen ze bijna allemaal naar een wifi te zoeken. De iPad Air zoekt daar elke twintig seconden naar, terwijl de Kindle Fire HD en de Nexus 7 om de tien seconden een poging wagen. Bij de meeste andere apparaten ligt de pauze tussen de 15 en 60 seconden. In enkele gevallen werd de scanpauze steeds langer – waarschijnlijk om energie te besparen.

Nodeloos versturen

De Nexus- en Sony-apparaten, Kindle Fire HD en de Nokia Lumia 630 verraadden meer over de netwerken die ze kenden dan nodig was. Ze zochten met gerichte probe-requests naar SSID’s op hun lijst – ook als de netwerken helemaal niet zodanig geconfigureerd waren dat ze hun SSID verbergen. Alleen in dat geval zou de client zoekpakketten versturen met daarin de netwerknaam van het gewenste accesspoint (zie het kader op pagina 104).

Als je een netwerk met een verborgen SSID wilt gebruiken, kun je niet voorkomen dat de netwerknamen verzonden worden – of je moet wifi onderweg uitschakelen. Onder Android kun je met rootrechten te weten komen welke netwerken zodanig zijn geconfigureerd dat er naar de bijbehorende SSID gezocht moet worden. In het configuratiebestand /data/misc/wifi/wpa_supplicant.conf (ook wel /data/wifi/bcm_supp.conf ) staat bij de betreffende netwerken de regel ‘scan_ssid=1’. Als dat overbodig is, bijvoorbeeld als een ooit verborgen netwerk van modus veranderd is, kun je die regel verwijderen. Maak van tevoren wel een back-up van het bestand. Soms kan een regel ook worden toegevoegd als je een alternatieve wifi-beheerder gebruikt of de firmware fouten bevat – hoewel die regel dan verder nergens toe dient.

stap04

Het venijn zit in de details: als deze optie bij de geavanceerde instellingen actief is, scant Android ook naar netwerken als wifi uitstaat.

Stoppen met zenden

Als je helemaal niet gevolgd wilt worden, moet je wifi uitschakelen op het moment dat je het niet gebruikt. Dat is onder Android echter niet zo eenvoudig, bleek uit onze test: bij de Nexus 5 hadden we wifi uitgeschakeld, maar de telefoon verzond nog steeds probe-requests – ook op stand-by. De oorzaak zat bij de geavanceerde instellingen voor het draadloze netwerk (te bereiken via ‘Instellingen / Wifi / menu (drie puntjes) / Geavanceerd’. De optie ‘Scannen altijd beschikbaar’ zorgt ervoor dat Android zelfs naar netwerken zoekt als je wifi eigenlijk hebt uitgezet. Google adviseert die functie bij de eerste configuratie aan te zetten om de nauwkeurigheid te verbeteren en voor “andere doeleinden”. Standaard staat er dan ook meteen een vinkje. Daarbij maakt Google er geen geheim van dat er anonieme locatiegegevens worden opgeslagen en naar Google worden verzonden. Dat kan dus wel degelijk een reden zijn om je er niet aan te houden. Omdat het hier een algemene functie van Android betreft, die bij versie 4.3 ingevoerd is, zit hij niet alleen op de Nexus-apparaten maar ook op die van andere fabrikanten.

Als je het scannen gedeactiveerd heb, kun je onder Android gebruikmaken van automatiseringstools als Tasker en Llama (zie de link aan het eind van dit artikel). Die apps kunnen wifi afhankelijk van de locatie in- en uitschakelen. De Android-app Pry-Fi hanteert een innovatieve manier door ervoor te zorgen dat de probe-requests met een willekeurig MAC-adres als afzender worden verstuurd. Pas nadat de verbinding opgebouwd is, maakt Android vervolgens weer gebruik van het echte adres van de wifimodule. Bovendien kun je potentiële trackers de oorlog verklaren door op de knop ‘Go to war!’ te tikken. Pry-Fi verstuurt daarna op hoge snelheid probe-requests van verschillende MAC-adresssen om de kwaliteit van de achterhaalde trackinggegevens te verslechteren. Pry-Fi is gratis, maar je systeem moet wel geroot zijn.

Ook iOS-apparaten versturen probe-requests, maar dan alleen de broadcast-variant. Apple laat iOS al enkele jaren niet meer regelmatig naar SSID’s zoeken. De traceerbaarheid van de noodzakelijke probe-requests moet met iOS 8 weer minder zijn geworden: Apple kondigde dit jaar op de ontwikkelaarsconferentie aan dat versie 8 voor probe-requests willekeurig gegenereerde MAC- adressen gaat gebruiken. Die aankondiging alleen al moet voor de in tracking gespecialiseerde start-up Nomi voldoende aanleiding geweest zijn om het businessmodel om te gooien en twintig medewerkers te ontslaan. Dat is wellicht helemaal niet nodig geweest, want onze iPhone 5C met iOS 8 gedroeg zich tijdens de test exact hetzelfde als een 5S met iOS7.

stap03In hoeverre de Nederlandse providers gegevens tracken, is moeilijk te zeggen – de mensen die daarvan profiteren zullen dat waarschijnlijk ook niet aan de grote klok hangen. Zowel T- Mobile als KPN gaf op navraag aan bij haar wifi-hotspots niet te tracken met behulp van bijvoorbeeld probe requests. KPN’s woordvoerder voegde er nog aan toe dat alleen sessies van klanten worden geregistreerd die daadwerkelijk inloggen, aangezien ze dat wettelijk verplicht zijn. Die gegevens worden bewaard, zolang de bewaarplicht hierover loopt. Uiteraard worden er IP-adressen aan eindgebruikers uitgedeeld, dus er is een moment waarop het MAC-adres van de klant aan een uniek IP-adres gekoppeld wordt, maar die gegevens worden “niet voor andere doeleinden gebruikt dan het leveren van de dienst.”

www.ct.nl/softlink/1412102

(David Wischnjak, Ronald Eikenberg / mvdm, c’t 12/2014, p.102)

Aanvallers te slim af

Als je zelf wilt controleren wat je smartphone of tablet allemaal via probe-requests prijsgeeft, heb je niet veel nodig: een notebook met een wifi-module die de monitormodus ondersteunt. Als besturingssysteem dient de penetration-testing Linux-distributie Kali (zie de link aan het eind van dit artikel) die zonder installatie van een dvd kan booten. Je kunt Kali ook van een usb-stick met minstens 4 GB opstarten, daar staan handleidingen voor online.

Veel notebooks hebben een wifi-module die de monitormodus ondersteunt. Om dat te controleren, start je Kali Linux en open je een Terminal-venster (in de balk bovenaan, tweede pictogram van links). Typ daar airmon-ng in en druk op Enter. Als antwoord moet dan de naam van de wifi-kaart verschijnen, bijvoorbeeld ‘wlan0’. Typ daarna airmon-ng start wlan0 in om je wifi-kaart in de monitormodus te zetten. Daarbij wordt de interface ‘mon0′ aangemaakt. Als dat niet lukt, is je wifi-kaart waarschijnlijk niet compatibel. In dat geval moet je een usb-wifi-adapter als de Alfa AWUS036H gebruiken. De prijzen voor zo’n adapter lopen in Nederlandse webshops soms op tot een kleine 50 euro, maar op internationale websites zijn ze ook voor zo’n 20 euro te koop. Dan moeten de probe-requests gevolgd worden.

Start daar de analysetool Wireshark voor, die in het menu bovenaan bij ‘Applications / Internet’ staat. Selecteer als interface ‘mon0’ en klik op Start (groene haaienvin). Dan moet al het wifi-verkeer te zien zijn. Om alleen de probe-requests te laten weergeven, moet je de regel wlan.fc.type_subtype eq 4 in het filtertekstveld zetten en bevestigen met ‘Apply’. Je kunt zien of een pakket als broadcast werd verzonden of doelgericht naar een SSID. In het laatste geval zou ook de doel-SSID rechts in het venster moeten verschijnen.

Om zoveel mogelijk probe-requests mee te krijgen, moet je de wifi-module nog op kanaal 6 instellen. Je hoeft niet alle kanalen af te lopen, want de probe-requests worden afwisselend op verschillende kanalen (frequenties) verzonden. Bij wifi overlappen de frequenties elkaar een beetje – als iets op kanaal 4 of 5 wordt verzonden, is het vaak ook op kaneel 6 te ontvangen. Om de wifi-kaart op kanaal 6 in te stellen, typ je het commando iwconfig mon0 channel 6 in een Terminal-venster.

Als je alleen je eigen telefoon of tablet controleert, loont het de moeite om nog een extra regel te maken. Anders verlies je bij meerdere verzenders snel het overzicht. De filterregel is(wlan.fc.type_subtype eq 4) and (wlan. sa == xx:xx:xx:xx:xx:xx). Hierbij staat ‘xx:xx… ‘ voor het wifi-MAC-adres dat je wilt filteren. Dat MAC-adres staat bij de meeste Androidapparaten bij ‘Instellingen / Over de telefoon (of tablet) / Status / MAC-adres voor wifi’ en bij iOS bij ‘Instellingen / Algemeen / Info / Wi-Fi-adres’. Bevestig de filterregel weer met ‘Apply’.

stap02

Met Wireshark kun je achterhalen wat je eigen wifi-clients over zichzelf prijsgeven.

 

Hoe een client zijn wifi vindt

Bij de zoektocht naar beschikbare draadloze netwerken kan een client actief of passief te werk gaan. In de passieve modus ontvangt de client de van het accesspoint (AP) regelmatig verzonden beacon-pakketten met informatie over het accesspoint zoals de netwerknaam (SSID) en de gehanteerde versleuteling. Daarbij moet de client telkens tussen de kanalen switchen, omdat de accesspoints op verschillende frequenties werken om interferentie te voorkomen.

Bij het actief scannen neemt de client het initiatief door zogenaamde probe-requests te versturen, waarop de accesspoints vervolgens antwoorden met probe-responses. Daar staat dezelfde informatie in als bij de beacons tijdens het passief scannen. Ook bij actief scannen moet de client die procedure voor elk kanaal herhalen, maar is de wachttijd per kanaal duidelijk korter. Normaal wordt er maar ongeveer tien seconden op een antwoord gewacht en daarna naar het volgende kanaal geswitcht.

Een probe-request zelf kan daarbij doelgericht – met vermelding van een SSID – of open zijn (ook broadcast genoemd). Op een broadcast-probe-request antwoorden alle bereikbare accesspoints met probe-responses, bij een doelgerichte probe-request doet dat juist alleen het accesspoint met de betreffende SSID. Normaal gesproken worden voor het scannen alleen broadcasts verzonden. Pas bij het verbinden worden de concrete probe-requests gebruikt die aan de SSID van het accesspoint gericht zijn. Alle probe-requests bevatten het MAC- adres van de afzender en zijn op die manier eenduidig toe te wijzen.

Door de hogere snelheid (en ondanks een hoger energieverbruik) wordt aan de actieve methode meestal de voorkeur gegeven of worden beide methoden gecombineerd. Hoe een client zijn wifi vindt Het venijn zit in de details: als deze optie bij de geavanceerde instellingen actief is, scant Android ook naar netwerken als wifi uitstaat.

stap05

Meer over

Wifi

Deel dit artikel

Noud van Kruysbergen
Noud van KruysbergenNoud heeft de 'American Dream' doorlopen van jongste bediende tot hoofdredacteur van c't, waar hij zo veel mogelijk de diepgang, betrouwbaarheid en diversiteit wil bewaken.

Lees ook

Verschil Windows 10 en 11: dit moet je weten over de twee versies

Wat is het verschil tussen Windows 10 en Windows 11? In dit artikel geven we je een overzicht van enkele functionele verschillen tussen de menu's, hoe...

Chat GPT gebruiken: dit kun je allemaal doen met de chatbot van OpenAI

OpenAI heeft de ChatGPT-bot ontwikkeld als een taalmodel dat is getraind op een enorme hoeveelheid tekst op het internet. Je kunt ChatGPT gebruiken om...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er