Saltearse al contenido

Análisis de firmware

El firmware es el software que hace funcionar un dispositivo embebido. Analizarlo revela credenciales embebidas, claves criptográficas, servicios ocultos, vulnerabilidades y la lógica del dispositivo. Es una pieza central del pentest de IoT (Pentest de IoT).

- descarga del sitio del fabricante / portal de actualizaciones
- captura de la actualización OTA (interceptar el tráfico, ver web-api)
- volcado directo del chip de memoria (SPI flash) por hardware (ver ot-hardware)
- extracción desde la propia app o del sistema de ficheros del dispositivo
binwalk firmware.bin # identificar y extraer sistemas de ficheros y componentes
binwalk -e firmware.bin # extraer (squashfs, jffs2, cpio, kernel...)
# tras extraer el rootfs:
- buscar credenciales: grep de passwords, /etc/shadow, claves en /etc, certificados
- claves privadas, tokens de API, URLs de backend (hardcoded)
- binarios con vulns conocidas (versiones de busybox, dropbear, openssl...)
- scripts de arranque, servicios, cuentas por defecto
Extracción binwalk, firmware-mod-kit, unblob, sasquatch (squashfs)
Automatizado EMBA (análisis completo de firmware Linux), FACT
Análisis strings, grep, Ghidra (binarios ARM/MIPS, ver pwn-reversing)
Emulación QEMU + firmadyne/FirmAE para ejecutar el firmware y atacar su web/servicios
- emular el firmware (QEMU + FirmAE/firmadyne) -> levantar su interfaz web/servicios
- atacar la web/API emulada como una app normal (ver web-*) sin arriesgar el dispositivo
- útil para fuzzing y análisis dinámico sin depender del hardware físico
- credenciales/claves HARDCODED (acceso a todos los dispositivos del modelo)
- claves privadas de firma -> permiten firmar firmware malicioso si se reutilizan
- backdoors/cuentas ocultas, servicios de depuración activos
- cripto débil (ver crypto-*), RNG predecible, secretos reutilizados entre dispositivos
  • No embeber credenciales/claves; secretos por dispositivo y en almacenamiento seguro.
  • Firmar el firmware y verificar en el arranque (secure boot); cifrar donde proceda.
  • Mantener componentes actualizados (busybox/openssl/dropbear) y gestionar fin de vida.
  • Deshabilitar servicios de depuración y cuentas de fábrica en producción.
  • Routers/cámaras con claves privadas compartidas entre todos los dispositivos (un leak compromete toda la flota).
  • Backdoors en firmware (cuentas ocultas) hallados por extracción y grep.
  • Campañas que explotan firmware sin firmar para persistencia difícil de erradicar.
  • Obtener el firmware (web/OTA/chip/app)
  • Extraer con binwalk/unblob y montar el rootfs
  • Buscar credenciales/claves/tokens hardcoded
  • Revisar versiones de componentes (vulns conocidas)
  • Detectar backdoors/cuentas ocultas/servicios de depuración
  • Emular (FirmAE/QEMU) para atacar web/servicios
  • Analizar binarios clave en Ghidra si procede (pwn-reversing)