Visualisaties van periodiek IoT-verkeer

Casestudie: periodiek netwerkverkeer van slimme lampen

Stel dat je thuisrouter zelf kan bepalen wat elk Internet-of-Things (IoT) apparaat in je huis mag doen. Dan zou je thuisrouter bijvoorbeeld jouw slimme koelkast alleen toegang kunnen geven tot de server van de fabrikant. Om dit te kunnen doen moet zo’n router eerst het type apparaat bepalen en weten welke netwerkactiviteit een bepaald type apparaat mag uitvoeren om goed en veilig te functioneren. Het afgelopen jaar zijn er verschillende wetenschappelijke artikelen gepubliceerd waarin het type apparaat wordt bepaald met behulp van zelflerende algoritmes. In deze blogpost richten we ons op een belangrijk aspect van deze algoritmes, namelijk periodiek netwerkverkeer.

Kijken naar internetverkeer met behulp van SPIN: een Philips Hue casestudie

Herkennen van type IoT-apparaten

Er zijn verschillende type IoT-apparaten die verbonden kunnen zijn met een thuisnetwerk, zoals slimme lampen, tv’s en stofzuigers. Het afgelopen jaar publiceerden verschillende universiteiten methodes om het type IoT-apparaat te classificeren op basis van hun netwerkverkeer. AUDI en N-BaIoT zijn voorbeelden hiervan. Dit is belangrijk, omdat apparaten in jouw netwerk niet altijd zelf vertellen van welk type ze zijn (hoewel dat technisch wel mogelijk is via bijvoorbeeld MUD). Beide methodes zijn gebaseerd op machine learning. Dit betekent dat het netwerkverkeer van IoT-apparaten wordt geanalyseerd om hieruit patronen te extraheren. Hoewel er verschillende algoritmes worden toegepast, gaan beide methodes er wel vanuit dat apparaten activiteiten periodiek uitvoeren. Denk bijvoorbeeld aan een slimme koelkast die iedere zondagnacht controleert of er een update beschikbaar is. Daarnaast wordt aangenomen dat apparaten van hetzelfde type ongeveer dezelfde periodieke activiteiten uitvoeren. Je verwacht bijvoorbeeld dat tv’s videostreams opzetten en vooral ’s avonds actief zijn, terwijl slimme thermometers misschien iedere 5 minuten een pakket verzenden.

Extraheren van tijdsreeksen

SPIN is ons open source systeem dat het internet en eindgebruikers beschermt tegen onveilige slimme apparaten in thuisnetwerken. De afgelopen maanden hebben we verkend in hoeverre bovenstaande methodes iets kunnen toevoegen aan SPIN. De eerste concrete stap bestond uit het visualiseren van periodiek netwerkverkeer. We hebben ons hierbij gebaseerd op de AUDI-methode om netwerkverkeer om te zetten in tijdsreeksen. De eerste stap is het verdelen van netwerkverkeer in afzonderlijke flows. We definiëren een flow als een reeks netwerkpakketten die wordt verzonden vanaf het IoT-apparaat met behulp van een bepaald communicatieprotocol (bijvoorbeeld NTP, ARP, RTSP, enz.). In tegenstelling tot de gangbare definitie van flows is de bestemming niet relevant, omdat vooral relevant is wat een apparaat doet en in mindere mate met welke partijen het apparaat communiceert. De tweede stap is het omzetten van iedere flow naar een binaire tijdsreeks. De tijdsreeksen hebben een sample rate van 1 meting per seconde. Iedere meting geeft aan of er in die periode 1 of meer pakketten zijn verstuurd (waarde 1) of niet (waarde 0). In het AUDI-paper worden de tijdreeksen gebruikt voor signaalanalyse en classificatie. Wij richten ons hier op het visualiseren van de reeksen.

Casestudie: periodiek netwerkverkeer van slimme lampen

Bovenstaande aanpak om tijdreeksen te genereren hebben we toegepast op 4 slimme lampen van verschillende merken. Hiervoor hebben we de lampen 24 uur verbonden met SPIN en tijdreeksen verzameld. Deze tijdreeksen hebben we gevisualiseerd met 2 vragen in het achterhoofd: Is netwerkverkeer van IoT-apparaten periodiek? En vertonen apparaten van hetzelfde type vergelijkbare periodieke activiteiten?

Figuur 1: Flows van een Tuya-lamp gedurende 5 minuten. Iedere kleur representeert een unieke flow. Een bolletje geeft aan of de flow op dat moment actief was. Zie Tabel 1 voor de interactieve plot.

Figuur 1 toont de actieve flows van een Tuya-lamp gedurende de eerste 5 minuten nadat de lamp is ingeschakeld. Links in de figuur staan veel gekleurde bolletjes. Dit betekent dat er toen veel flows actief waren. Zo is er sprake van DNS-verkeer (2 opeenvolgende lichtblauwe bolletjes, UDP poort 53) en HTTP-verkeer (3 oranje bolletjes, TCP poort 80). Al vrij snel lijkt het signaal te stabiliseren. De rode en blauwe flow zijn ongeveer iedere minuut actief (respectievelijk ARP en MQTT op TCP poort 1883), terwijl de gele flow iedere 3 seconden actief is (UDP poort 6666). Als je de interactieve plot downloadt (zie tabel onderaan) kun je uitzoomen en andere periodes bekijken. Je zult zien dat iedere 5 uur en 45 minuten DHCP-verkeer plaatsvindt (paarse bolletjes, UDP poort 67). Ook is er activiteit die niet periodiek is, of waarbij de meetperiode te kort is om dit vast te stellen.

Figuur 2: Geobserveerde flows van een Baixin-lamp gedurende 5 minuten. Zie Tabel 1 voor de interactieve plot. Het verkeer van de Tuya-lamp is dus (deels) periodiek. Onze verzameling lampen is natuurlijk klein, maar toch kunnen we nu al zien dat verschillende lampen soms vrijwel identieke periodieke activiteiten vertonen. Zo toont Figuur 2 de eerste 2 minuten van een Baixin-lamp. Hoewel de periodes tussen de activiteit verschillen (bijvoorbeeld oranje polletjes, TCP port 80), zijn de grote lijnen hetzelfde. Ook verderop in de meting zijn er overeenkomsten: beide lampen vertonen na ongeveer 6 uur ICMP-verkeer en activiteit op TCP-poort 56010. We vermoeden dus dat deze apparaten dezelfde firmware hebben. Tegelijkertijd laten de andere 2 lampen compleet verschillende periodieke activiteiten zien (zie tabel onderaan). Zowel de flow van ARP, DNS en TCP poort 8805 zijn iedere 2 minuten actief bij de Omeran-lamp. De Mi Led vertoont daarentegen iedere 15 seconde activiteit op UDP-poort 8053 en iedere 30 seconden op ARP. Apparaten van hetzelfde type vertonen dus soms dezelfde activiteit, maar niet altijd. Het zou natuurlijk wel kunnen dat er andere slimme lampen verkrijgbaar zijn met periodieke activiteiten die wel sterk lijken op de Omeran en Mi Led. Om dit te toetsen hebben we datapunten van meer IoT-apparaten nodig.

Tabel 1: Links naar html-bestand met interactieve plots.

Meer tijdreeksen

De komende tijd verzamelen we daarom op grotere schaal tijdreeksen. Dit betekent dat we een functie toevoegen aan SPIN waarmee gebruikers in de toekomst tijdreeksen kunnen visualiseren en naar ons uploaden. De methodes van AUDI en N-BaIoT willen we vervolgens toepassen op de verzamelende tijdreeksen zodat we een eigen classificatiemodel hebben. Als dit model goed presteert, kunnen we SPIN hiermee uitbreiden: dat zou betekenen dat SPIN een functie krijgt die het type apparaat classificeert. Ook zijn de verzamelde gegevens relevant voor wetenschappers: methodes worden vaak geëvalueerd met gegevens uit een gecontroleerde lab-omgeving, terwijl wij tijdreeksen willen verzamelen die afkomstig zijn van echte gebruikers in een representatieve thuisomgeving. Uiteraard is deelname aan de ontwikkeling van de beoogde upload functionaliteit vrijwillig en implementeren we dit met aandacht voor privacy en beveiliging. We staan open voor ideeën hoe we dit met zorg kunnen doen. Ook zijn we benieuwd of, en zo ja onder welke voorwaarden, je wil meewerken aan het uploaden van tijdsreeksen.