Het Internet of Things (IoT) is een integraal onderdeel geworden van moderne technologie, met apparaten zoals slimme huishoudtoestellen, beveiligingssystemen en industriële besturingen. Veel IoT-apparaten bevatten echter beveiligingslekken door verouderde firmware, zwakke authenticatiemechanismen en gebrekkige software-implementaties. Voor ethische hackers en cybersecurity-onderzoekers is het daarom essentieel om te weten hoe je IoT-firmware kunt dumpen, analyseren en misbruiken om kwetsbaarheden te identificeren en te mitigeren.
Dit artikel behandelt het proces van het extraheren en analyseren van firmware uit IoT-apparaten, met name draadloze routers. We bespreken de benodigde tools, de methodologie voor firmware-extractie, uitpakken, emulatie en mogelijke exploitatietechnieken. Deze tutorial richt zich op twee specifieke routers:
TP-Link TD-W8151n Wireless Router
TP-Link WR841n Wireless Router
Door deze gids te volgen, krijg je een praktische introductie in IoT-hacking en leer je hoe je firmware kunt emuleren voor verdere exploitatie.
Lab Tools
Voor het extraheren en analyseren van firmware uit IoT-apparaten zijn specifieke hardware- en softwaretools nodig. Hieronder volgt een overzicht van de tools die in dit artikel worden gebruikt:
Hardware Tools
- CH341A Programmer – Een USB-gebaseerde EEPROM-programmeur voor communicatie met flashgeheugenchips.
- SOIC8 Clip – Een clip om de programmeur te verbinden met SOIC8-geheugenchips zonder te solderen.
- Raspberry Pi (optioneel) – Kan als alternatief voor de CH341A worden gebruikt om firmware te dumpen.
- Multimeter – Om spanningsniveaus op de printplaat te meten en veilige verbindingen te waarborgen.
- Schroevendraaiers en pincetten – Voor het openen van IoT-apparaten en toegang tot interne componenten.
Deze tools zijn gekozen als optimale combinatie van toegankelijkheid en kwaliteit om deze tutorial praktisch en uitvoerbaar te maken. Alle gelinkte tools zijn getest en gebruikt tijdens het maken van deze gids.
Software Tools
flashrom
– Een open-source tool voor het lezen en schrijven van flashgeheugen.binwalk
– Een analysetool voor firmware die bestandssystemen kan extraheren.qemu-system-arm
– Een full-system emulator voor ARM-gebaseerde firmware.qemu-arm
– Een user-mode emulator om individuele binaries uit de firmware uit te voeren.lsusb
– CLI-tool om aangesloten USB-apparaten weer te geven.
Firmware dumpen en uitpakken
De meeste IoT-apparaten gebruiken flashgeheugen om firmware en configuraties op te slaan. Er bestaan verschillende types flash:
- NOR Flash – Veelgebruikt in routers en embedded systemen, bekend om snelle leesprestaties.
- NAND Flash – Gebruikt bij grotere opslag, vereist foutcorrectie.
In ons geval gebruiken beide TP-Link routers NOR Flash (SOIC8-package), wat eenvoudig aan te sturen is via SPI-gebaseerde tools.
Op onze TP-Link TD-W8151n ziet dat er zo uit:
We dumpen de firmware met CH341A en Flashrom.
Identificeer eerst de flashgeheugen-chip op het printplaatje van de router. Deze is vaak gelabeld met een partnummer zoals W25Q32
.
Verbind vervolgens de SOIC8
clip correct met de chip.
Sluit daarna de CH341A programmer via USB aan op je computer.
Controleer de verbinding met:
lsusb
Als de CH341A correct is aangesloten, verschijnt deze in de output.
Dump de firmware met:
flashrom -p ch341a_spi -r firmware.bin
Deze opdracht leest het volledige flashgeheugen en slaat dit op als firmware.bin
.
Nu de firmware is gedumpt, moet deze worden uitgepakt en het bestandssysteem worden aangekoppeld. Gebruik hiervoor:
binwalk -Me
Zoals hieronder getoond:
Gebruik vervolgens Binwalk om de firmware te scannen op bekende bestandsstructuren:
binwalk firmware.bin
Deze opdracht toont o.a. gecomprimeerde archieven, bestandssystemen en binaries.
Extraheer vervolgens alles met:
binwalk -Me firmware.bin
Alle gevonden bestanden worden nu recursief uitgepakt in een nieuwe map.
Navigeer daarna naar de map en mount het bestandssysteem:
sudo mount -o loop extracted_firmware/rootfs.img /mnt/firmware
Zo kun je de inhoud van de firmware verkennen alsof het een regulier Linux-bestandssysteem is.
Exploitatie en emulatie
Om firmware veilig te analyseren, kan deze worden geëmuleerd met QEMU.
Controleer of een uImage kernel aanwezig is:
ls extracted_firmware
Of voer afzonderlijke binaries uit met:
qemu-arm -L cramfs-root/ cramfs-root/bin/<binary>
Hiermee draai je programma’s uit de firmware in een gesimuleerde omgeving.
Kwetsbaarheden identificeren
Veel IoT-apparaten bevatten beveiligingsfouten zoals:
- Buffer Overflows: Ontstaan bij ongecontroleerde input naar een buffer van vaste grootte.
- Command Injections: Staan toe dat willekeurige systeemcommando’s worden uitgevoerd via webinterfaces.
- Path Traversal: Maakt toegang tot beveiligde bestanden mogelijk via gemanipuleerde URLs.
Voorbeeld van path traversal:
http://192.168.1.203/images/../devinfo.html
Deze aanvraag probeert een systeembestand te bereiken via directory-omzeiling.
Analyse van de webserver toont meerdere buffer overflows. Een invoerveld kan bijvoorbeeld gebruik maken van strcpy()
zonder lengtelimiet:
Een aanvaller kan dit misbruiken door een oversized input te verzenden die de instructiepointer overschrijft en de uitvoering omleidt naar:
system("/bin/sh");
Conclusie
Het extraheren en analyseren van firmware uit IoT-apparaten is een essentiële vaardigheid voor cybersecurity-experts en ethische hackers. Met tools als CH341A, flashrom, binwalk en QEMU krijg je inzicht in de interne werking van apparaten, kun je kwetsbaarheden detecteren en mitigaties ontwikkelen.
Deze tutorial heeft het volledige proces behandeld: firmware-extractie, uitpakken, emulatie en exploitatie. Hoewel veel fabrikanten hun beveiliging verbeteren, zijn er nog altijd kwetsbare IoT-apparaten in omloop. Inzicht in deze zwaktes draagt bij aan veiligere IoT-omgevingen en betere besluitvorming op het gebied van productveiligheid.
Een effectieve manier om deze kwetsbaarheden aan te pakken is door een pentest uit te laten voeren. Ben je fabrikant en wil je jouw producten laten beoordelen? Bezoek dan onze IoT Pentest pagina voor meer informatie over hoe WebSec kan helpen jouw IoT-producten te beveiligen.