Binwalk la herramienta desmontar firmwares byte a byte

Hay herramientas de Kali Linux que atacan, y hay herramientas que entienden. Binwalk pertenece claramente al segundo grupo, y es una de las que más me ha fascinado desde que empecé a curiosear en el mundo de la seguridad de dispositivos IoT y routers. Lo que más me atrajo de ella no fue su capacidad de «romper» nada, sino algo mucho más de fondo: la idea de coger un archivo binario en apariencia opaco (el firmware de un router, de una cámara IP, de cualquier dispositivo embebido) y ser capaz de diseccionarlo, byte a byte, hasta entender exactamente qué contiene por dentro.

Binwalk no explota nada por sí sola. No es un exploit, ni una herramienta de ataque directo. Es, ante todo, una lupa: te permite ver qué se esconde dentro de un archivo binario que a simple vista es solo una masa de ceros y unos. Sistemas de archivos comprimidos, kernels de Linux, certificados, contraseñas embebidas, imágenes ocultas, particiones de bootloader… todo eso puede estar escondido dentro de un único archivo .bin, y Binwalk es la herramienta que te permite sacarlo a la luz.

En esta entrada te explico qué es exactamente Binwalk, cómo funciona internamente, y varios casos prácticos de uso real: desde analizar el firmware de un router hasta resolver retos de tipo CTF (Capture The Flag) donde la respuesta está literalmente escondida dentro de un archivo.

Nota importante: esta entrada tiene fines exclusivamente educativos y de divulgación técnica. El objetivo es entender cómo funciona una herramienta de análisis forense/firmware ampliamente usada en el sector de la ciberseguridad. No nos hacemos responsables del mal uso que se le pueda dar a esta herramienta ni del análisis de firmwares o dispositivos sobre los que no tengas autorización expresa para actuar.

Índice

  1. ¿Qué es Binwalk y para qué sirve?
  2. Cómo funciona Binwalk por dentro
  3. Instalación y comprobación en Kali Linux
  4. Casos prácticos de uso
  5. Binwalk v3: la nueva versión reescrita en Rust
  6. Usos legítimos habituales de Binwalk
  7. Conclusión

1. ¿Qué es Binwalk y para qué sirve?

Binwalk es una herramienta de código abierto, preinstalada en Kali Linux, diseñada para analizar imágenes binarias en busca de archivos y código embebido dentro de ellas. Está especialmente orientada al análisis de firmwares: el software de bajo nivel que corre en routers, cámaras IP, dispositivos IoT, decodificadores de TV, módems y cualquier aparato con un pequeño sistema operativo embebido.

Cuando un fabricante distribuye una actualización de firmware, normalmente lo hace como un único archivo binario que, por dentro, contiene varias cosas empaquetadas juntas: un bootloader, un kernel de Linux, un sistema de archivos completo (a menudo en formato SquashFS, JFFS2 o similar), archivos de configuración, certificados, y a veces hasta contraseñas o claves criptográficas olvidadas por el fabricante. Binwalk te permite identificar todos esos componentes dentro del archivo y, en muchos casos, extraerlos automáticamente para poder examinarlos por separado.

binwalk-help.PNG

2. Cómo funciona Binwalk por dentro

El funcionamiento de Binwalk se basa fundamentalmente en dos técnicas:

Detección de firmas (signature scanning). Binwalk usa la librería libmagic, la misma que emplea el comando file de Unix/Linux, pero ampliada con un archivo de firmas propio, muy enfocado en lo que suele aparecer dentro de firmwares: cabeceras de sistemas de archivos, kernels comprimidos, formatos de compresión como gzip, LZMA o XZ, imágenes de arranque tipo uImage, y decenas de formatos más. Cada firma es, básicamente, una secuencia de bytes característica que identifica el inicio de un tipo concreto de dato, sin importar en qué posición del archivo aparezca.

Análisis de entropía. Además de buscar firmas conocidas, Binwalk puede calcular la entropía (el grado de aleatoriedad) de distintas secciones del archivo. Una entropía muy alta suele indicar datos comprimidos o cifrados, mientras que una entropía baja indica datos sin comprimir, como texto plano o código ejecutable normal. Esto es extremadamente útil cuando te encuentras con una sección del firmware que no coincide con ninguna firma conocida: la entropía te da una pista de qué tipo de contenido podría ser, aunque no sepas el formato exacto.

Combinando ambas técnicas, Binwalk no solo te dice «aquí hay un sistema de archivos SquashFS», sino que además puede extraerlo automáticamente usando herramientas auxiliares como dd, unsquashfs o tar, dejándote el contenido ya desempaquetado y listo para inspeccionar.

3. Instalación y comprobación en Kali Linux

Binwalk viene preinstalado en Kali Linux, así que en la mayoría de los casos no necesitas instalar nada. Puedes comprobar que está disponible con:

binwalk --help
binwalk-logo.PNG

Si por lo que sea no está instalado o quieres asegurarte de tener la última versión, puedes instalarlo con:

sudo apt update
sudo apt install binwalk

4.Casos prácticos de uso

Caso 1: Escaneo de firmas en un firmware de router

El uso más básico de Binwalk es lanzar un escaneo de firmas sobre un archivo de firmware descargado (por ejemplo, desde la propia web del fabricante, para analizar en tu laboratorio, nunca sobre un dispositivo ajeno sin permiso):

binwalk firmware.bin

La salida te muestra una tabla con tres columnas: la posición decimal, la posición en hexadecimal, y la descripción de lo que Binwalk ha identificado en ese punto exacto del archivo. Es habitual ver, en un firmware típico de router, algo como una cabecera de arranque al principio del archivo, seguida de un kernel de Linux comprimido, y más adelante un sistema de archivos SquashFS con el sistema operativo completo del dispositivo.

Caso 2: Extracción automática de archivos embebidos

Una vez identificados los componentes, puedes pedirle a Binwalk que los extraiga automáticamente con el flag -e:

binwalk -e firmware.bin

Esto crea una carpeta (normalmente con el nombre _firmware.bin.extracted) donde vuelca todo lo que ha conseguido desempaquetar. Si dentro del firmware había un sistema de archivos SquashFS, Binwalk lo monta y extrae su contenido completo: podrás navegar por carpetas como /etc, /www o /bin exactamente como si tuvieras acceso a la raíz del sistema de archivos del propio dispositivo, sin necesidad de tener el aparato físico delante.

ls _firmware.bin.extracted/squashfs-root/

Caso 3: Análisis de entropía para detectar cifrado o compresión

Cuando quieres una visión más visual de qué zonas del archivo son «raras» (comprimidas o cifradas), puedes generar una gráfica de entropía:

binwalk -E firmware.bin

Esto genera un archivo .png con una gráfica: los tramos con entropía cercana a 8 bits (el máximo) suelen corresponder a datos comprimidos o cifrados, mientras que los tramos con entropía más baja corresponden a datos legibles o poco aleatorios, como texto plano, tablas o código sin comprimir. Es una forma muy rápida de detectar, por ejemplo, si el fabricante ha cifrado alguna partición concreta del firmware para dificultar su análisis.

Caso 4: Buscar credenciales o flags en un CTF

Binwalk es una herramienta habitual en competiciones de tipo CTF (Capture The Flag), donde se suele esconder una «flag» (una cadena de texto que hay que encontrar) dentro de un archivo binario aparentemente inofensivo. El flujo típico es: extraer todo lo que Binwalk pueda encontrar, y después buscar patrones de texto dentro de lo extraído:

binwalk -e reto.bin
grep -r "flag{" _reto.bin.extracted/

Este mismo patrón de «extraer y luego buscar cadenas de texto» sirve también, en un contexto de auditoría legítima y autorizada, para localizar contraseñas por defecto, claves API olvidadas o certificados embebidos dentro del firmware de un dispositivo que estés auditando con permiso explícito de su propietario.

Caso 5: Comparar dos firmwares distintos

Si tienes dos versiones distintas del firmware del mismo dispositivo (por ejemplo, antes y después de una actualización de seguridad), Binwalk te permite comparar sus firmas para ver qué ha cambiado entre ambas versiones:

binwalk -W firmware_v1.bin firmware_v2.bin

Esta comparación es muy útil para entender qué ha «tocado» el fabricante en una actualización concreta: si se ha añadido un nuevo componente, si se ha modificado el sistema de archivos, o si simplemente ha cambiado la versión del kernel.

5. Binwalk v3: la nueva versión reescrita en Rust

Algo a tener en cuenta si vas a profundizar en la herramienta: existe una versión más reciente de Binwalk, conocida como binwalk3, disponible también como paquete en los repositorios de Kali Linux. A diferencia de la versión clásica, escrita en Python, esta nueva versión está reescrita en Rust, orientada a mejorar el rendimiento y a modernizar el motor de detección de firmas y extracción. Si vienes de una versión antigua de Binwalk instalada manualmente, ten en cuenta que la compatibilidad de la API puede variar entre versiones, así que conviene desinstalar versiones previas antes de instalar la más reciente para evitar conflictos.

6. Usos legítimos habituales de Binwalk

Para que quede claro el contexto en el que se mueve esta herramienta en el día a día profesional, estos son sus usos más habituales y legítimos:

  • Investigadores de seguridad que auditan dispositivos IoT propios o de clientes que les han contratado expresamente para ello, buscando vulnerabilidades, contraseñas por defecto o puertas traseras dejadas por el fabricante.
  • Fabricantes de hardware, que analizan su propio firmware antes de publicarlo, para asegurarse de que no han dejado credenciales de desarrollo, claves privadas o información sensible embebida por error.
  • Ingenieros de reverse engineering, que estudian cómo funciona un dispositivo por dentro con fines de compatibilidad, interoperabilidad o investigación académica.
  • Participantes de CTF y estudiantes de ciberseguridad, que usan Binwalk como parte del proceso de aprendizaje en retos de análisis forense y esteganografía.
  • Peritos forenses digitales, que analizan dispositivos incautados en el marco de investigaciones legales, siempre dentro del marco jurídico correspondiente.

7. Conclusión

Binwalk es una de esas herramientas que, una vez entiendes cómo funciona, cambia por completo la forma en la que ves un simple archivo .bin. Deja de ser una caja negra y se convierte en algo que puedes diseccionar, entender y explicar pieza por pieza. Esa capacidad de «abrir» un firmware y ver exactamente de qué está hecho es, para mí, una de las puertas de entrada más interesantes al mundo del análisis de dispositivos embebidos y la ciberseguridad de IoT.

Como comentaba al principio, esta entrada busca explicar el funcionamiento técnico de la herramienta desde un punto de vista educativo. Si te animas a practicar, hazlo siempre sobre firmwares públicos que descargues directamente de la web del fabricante, sobre tus propios dispositivos, o dentro de plataformas de CTF pensadas específicamente para practicar de forma legal.

Si te interesa este tema, en próximas entradas podemos ver herramientas complementarias como Firmware Analysis Toolkit (FAT) o Ghidra para ir un paso más allá y analizar el código que hay dentro de esos binarios extraídos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll al inicio