Parte: 13 — Seguridad móvil, IoT e inalámbrica · Fuente: Practical IoT Hacking (Chantzis et al.) y The Hardware Hacking Handbook (Woudenberg, O'Flynn) ⏱️ Duración estimada: 150 min · Nivel: Experto
Acceder al nivel más bajo de un dispositivo embebido a través de sus interfaces de depuración físicas: UART para obtener una consola serie, JTAG/SWD para control del procesador y volcado de memoria, y SPI para leer/escribir el chip de flash directamente. El alumno aprenderá a identificar puntos de prueba en una PCB, conectar un adaptador, y extraer firmware o consolas root del hardware propio.
⚠️ Nota ética y de seguridad: trabaja solo con dispositivos de tu propiedad. Manipular electrónica implica riesgo de dañar el equipo o de descarga; respeta voltajes (3.3 V típico) y nunca alimentes pines a ciegas.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Seguridad eléctrica y voltajes | Evita dañar el equipo y a ti mismo |
| 2 | Identificación de puertos en PCB | Localiza los puntos de acceso |
| 3 | UART: consola serie | Suele dar shell/logs de arranque |
| 4 | Analizador lógico | Descubre pinout y protocolo |
| 5 | JTAG/SWD con OpenOCD | Control total del procesador |
| 6 | SPI y volcado de flash | Extrae el firmware completo |
| 7 | Contramedidas del fabricante | Fusibles, deshabilitar JTAG |
# UART: abrir consola serie
screen /dev/ttyUSB0 115200 # o: picocom -b 115200 /dev/ttyUSB0
# JTAG/SWD con OpenOCD
openocd -f interface/jlink.cfg -f target/<soc>.cfg
# luego, en telnet 4444: halt ; dump_image dump.bin 0x0 0x100000
# SPI: leer el chip de flash
flashrom -p ch341a_spi -r flash_dump.bin
screen.halt el CPU y dump_image de la flash/RAM.flashrom y analízalo con binwalk (clase 267).Extrae el firmware de un dispositivo propio por dos vías físicas distintas (por ejemplo, consola UART que permite cat de una partición y volcado directo por SPI), o consigue una consola root por UART. Criterio de aceptación: obtienes un shell interactivo por UART o un volcado de flash que binwalk desempaqueta correctamente, documentando el pinout que usaste.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Consola serie muestra basura | Baud rate incorrecto; prueba 9600/57600/115200 |
| No hay salida por UART | TX/RX invertidos o pin equivocado; cruza TX↔RX y reidentifica |
| Dispositivo se reinicia al conectar | Alimentaste VCC indebidamente; no conectes VCC si se auto-alimenta |
| OpenOCD no detecta el target | Archivo de config equivocado o JTAG deshabilitado por fusible |
| flashrom no reconoce el chip | Mal contacto de la pinza o chip no soportado; especifica -c manualmente |
❓ ¿Cómo sé qué pin es UART sin documentación? Mide con multímetro (GND por continuidad, VCC ~3.3 V estable) y con el analizador lógico observa qué pin tiene ráfagas de datos al encender: ese es TX.
❓ ¿Puedo dañar el dispositivo? Sí, si aplicas voltaje incorrecto o cortocircuitas pines. Trabaja a 3.3 V, verifica antes de conectar VCC y usa un adaptador con el mismo nivel lógico.
❓ ¿Por qué usar SPI si ya tengo UART? UART puede no dar shell o exponer solo parte del sistema; leer el flash por SPI extrae la imagen completa aunque el software lo impida.
Clase 267 — Hacking de firmware