IoT device security testing combines firmware analysis, hardware interfacing, network protocol testing, and mobile companion app review. Many findings come from the firmware β default passwords, hardcoded keys, unsafe update mechanisms, debug ports left enabled. This module covers a practical IoT testing workflow with the tools that matter.
Scoping an IoT engagement
Before testing, agree:
- Which device(s) β model, firmware version, lab samples available?
- Which protocols and cloud APIs are in scope?
- Is hardware tampering allowed (case opening, JTAG/UART access)?
- Mobile companion apps in scope?
- Customer cloud account in scope?
- Constraints β production cloud account vs sandbox; live vs test devices
The testing surface
- Hardware β debug ports (UART, JTAG, SWD), exposed flash chips, secure boot
- Firmware β binary extracted from flash or downloaded; analyzed for credentials, vulnerable services
- Network protocols β what the device speaks (Wi-Fi, BLE, Zigbee, Z-Wave, LoRa, cellular)
- Cloud APIs β REST endpoints the device + app communicate with
- Mobile companion app β full mobile pentest scope (covered in Mobile track)
- Web management interface β if device serves a web UI
Hardware reconnaissance
Open the device. Map the board:
- Identify SoC (System on Chip) β manufacturer, model. Datasheet reveals capabilities
- Identify flash chips β usually SPI; can be read with a clip and a SPI programmer (CH341A, FlashCat)
- Look for unpopulated headers β UART (3-4 pins), JTAG (10-20 pins), SWD (4-5 pins)
- Check for test points β sometimes the same as headers, harder to interface
UART access
# Identify UART pins (TX, RX, GND) with multimeter
# (TX is the pin with periodic activity at boot; RX is silent)
# Connect USB-UART adapter at 3.3V
# Common baud rates: 115200, 57600, 38400, 9600
screen /dev/ttyUSB0 115200
# Or: minicom, picocom
# Many devices drop into a U-Boot shell or root shell
# Default credentials sometimes printed on the bootlog itself
JTAG / SWD
If UART is locked or not present, JTAG/SWD provide debug-level access to the CPU. Tools: SEGGER J-Link, Bus Pirate, OpenOCD. Can dump RAM and ROM, set breakpoints, manipulate registers. Slower setup but more powerful than UART.
Continue reading with Basic tier (βΉ499/month)
You've read 25% of this module. Unlock the remaining deep-dive, quiz, and every other Intermediate module.