Back to home
IoT Hacking

IoT Hacking Methodology

Hardware and firmware security testing — from device acquisition to firmware extraction, hardware debugging, and network protocol attacks.

## Phase 1 — Device Reconnaissance

1.1

OSINT & Initial Recon

  • › FCC ID lookup (fcc.io) for FCC filings, internal photos, schematics
  • › Shodan / Censys — exposed device management interfaces
  • › CVE database check for known vulnerabilities in chipset/firmware
  • › Manufacturer documentation, GPL source releases
  • › Network scanning: nmap, masscan — identify open ports and services
1.2

Physical Inspection

  • › Identify exposed UART, JTAG, SPI, I2C test points on PCB
  • › Chip identification: part numbers, datasheets
  • › Photography and mapping of board layout
  • › Check for debug interfaces, unpopulated headers
  • › NAND/NOR flash chips — identify for direct chip-off extraction

## Phase 2 — Firmware Acquisition

2.1

Firmware Extraction Methods

  • › From manufacturer website or update mechanism
  • › UART console — interrupt boot, mount filesystem, copy firmware
  • › TFTP / OTA capture — intercept update traffic with Wireshark
  • › SPI flash dump: flashrom with CH341A / Bus Pirate
  • › JTAG / OpenOCD — read flash directly from debug interface
  • › Chip-off: desolder flash, read with programmer (easy as programming!)
2.2

Firmware Unpacking

  • › binwalk -e <firmware.bin> — extract filesystem, kernel, squashfs
  • › Identify filesystem type: squashfs, cramfs, jffs2, ubifs
  • › jefferson for JFFS2, ubireader for UBI images
  • › Encrypted firmware: find encryption keys in bootloader, previous versions
  • › QEMU emulation: firmwalker + buildroot for ARM/MIPS emulation

## Phase 3 — Firmware & Binary Analysis

3.1

Static Analysis

  • › Extract and analyze filesystem: etc/passwd, shadow, config files
  • › Find hardcoded credentials: grep -r 'password\|passwd\|admin' rootfs/
  • › Identify web server, CGI scripts, and API endpoints
  • › Binary analysis with Ghidra / IDA Pro / Radare2
  • › Check for dangerous functions: strcpy, system(), popen() in binaries
3.2

Dynamic Analysis / Emulation

  • › Emulate with QEMU: qemu-arm-static for ARM userspace binaries
  • › Full system emulation with Firmadyne / FAT (Firmware Analysis Toolkit)
  • › GDB remote debugging via QEMU + gdb-multiarch
  • › Fuzz HTTP/CGI endpoints with ffuf once emulation is running
  • › Hook function calls with Frida for dynamic analysis

## Phase 4 — Hardware Interface Attacks

4.1

UART (Serial Console)

  • › Identify UART pins: TX, RX, GND, VCC with multimeter or logic analyzer
  • › Determine baud rate: logic analyzer capture + sigrok / PulseView autobaud
  • › Connect: USB-to-UART adapter (CP2102, CH340) at 3.3V
  • › Interrupt boot at U-Boot prompt: drop to shell or modify boot args
  • › Access root shell: init=/bin/sh or break out of restricted shell
4.2

JTAG Debugging

  • › Identify JTAG pins: TDI, TDO, TCK, TMS, TRST with JTAGulator
  • › Connect with OpenOCD + compatible debugger (Bus Blaster, J-Link)
  • › Halt processor, read registers, dump memory regions
  • › Extract firmware directly from memory over JTAG
  • › Set hardware breakpoints for runtime analysis
4.3

SPI / I2C Bus Analysis

  • › Logic analyzer capture with Sigrok to identify protocol
  • › SPI flash dump: flashrom -p ch341a_spi -r dump.bin
  • › I2C scan: i2cdetect, then read/write EEPROM chips
  • › SPI bus sniffing during firmware update for key extraction
  • › EEPROM modification — change config, unlock hidden features

## Phase 5 — Network & Protocol Attacks

5.1

MQTT

  • › Broker discovery: nmap -p 1883,8883 / Shodan query
  • › Connect unauthenticated: mosquitto_sub -h <broker> -t '#' -v
  • › Test for authentication bypass, weak credentials
  • › Publish malicious commands to device command topics
  • › TLS certificate validation bypass
5.2

Radio Protocols (SDR)

  • › Hardware: HackRF One, RTL-SDR, YARD Stick One, Flipper Zero
  • › Capture: GNU Radio / SDR++ / GQRX for signal analysis
  • › Zigbee analysis: wireshark with RZUSBSTICK / CC2531 sniffer
  • › Z-Wave capture: Z-Wave USB stick + Wireshark plugin
  • › 433 MHz replay attacks: rtl_433 for capture, YARD Stick for replay
  • › BLE sniffing: Wireshark + nRF Sniffer / Ubertooth
5.3

Web Interface Attacks

  • › Default credentials: admin/admin, admin/password, root/root
  • › Command injection in ping/traceroute/diagnostic inputs
  • › CSRF on management interface — no SameSite protection
  • › Path traversal for config file download
  • › Firmware upload endpoint — test for arbitrary file upload

## Tools Reference

binwalkGhidraRadare2QEMUFirmadyneflashromOpenOCDBus PirateHackRF OneRTL-SDRFlipper ZeromosquittoGNU RadioJTAGulatorLogic AnalyzerWiresharkfirmwalkerFAT