Binwalk

Forense Digital
GratisDestacado

// DESCRIPTION

Herramienta para analizar, extraer y hacer ingenieria inversa de firmware.

¿Qué es Binwalk?

Binwalk es una herramienta de código abierto para analizar archivos binarios y encontrar otros archivos o datos incrustados dentro de ellos. Su uso clásico es el análisis de firmware (routers, cámaras IP, dispositivos IoT), pero también es imprescindible en CTF de forense y esteganografía: una imagen aparentemente normal puede llevar un ZIP pegado al final, y Binwalk lo detecta en segundos. Funciona buscando firmas (los "números mágicos" que identifican formatos como gzip, squashfs, JPEG o ELF) a lo largo de todo el archivo e indicando en qué posición aparece cada una.

Es importante saber que existen dos generaciones: la v2, escrita en Python, que es la que encontrarás en muchos tutoriales antiguos, y la v3, una reescritura completa en Rust mucho más rápida, mantenida en el repositorio de ReFirmLabs. Las opciones básicas son casi iguales, aunque algunas funciones de la v2 cambiaron o desaparecieron.

Para qué sirve Binwalk

  • Extraer el sistema de archivos de un firmware para revisar binarios, scripts de arranque, credenciales hardcodeadas o servicios vulnerables.
  • Retos de esteganografía y forense en CTF: archivos ocultos dentro de imágenes, audios o PDFs.
  • Detectar datos cifrados o comprimidos mediante el análisis de entropía.
  • Primera toma de contacto con un binario desconocido antes de pasarlo a un desensamblador como Ghidra.

Cómo instalar Binwalk

En Kali Linux, Parrot y distribuciones basadas en Debian/Ubuntu está en los repositorios:

sudo apt update
sudo apt install binwalk

La versión del repositorio depende de tu distribución (puede ser todavía la v2). Si quieres la v3 en Rust, la vía más directa es instalarla con Cargo:

cargo install binwalk

Para extraer muchos formatos, Binwalk se apoya en utilidades externas (descompresores de squashfs, 7-Zip, etc.). Si una extracción falla, revisa la documentación del repositorio para instalar las dependencias recomendadas. Comprueba la versión instalada con binwalk --help.

Ejemplos prácticos con Binwalk

Escaneo básico de firmas

binwalk firmware.bin

Muestra una tabla con el desplazamiento (en decimal y hexadecimal) y la descripción de cada firma encontrada: cabeceras uImage, kernels comprimidos con LZMA, sistemas de archivos squashfs, etc.

Extraer lo que encuentra: binwalk -e

binwalk -e firmware.bin

Extrae automáticamente los datos reconocidos. En la v2 se crea una carpeta _firmware.bin.extracted; en la v3 los resultados van por defecto a un directorio extractions. Puedes elegir otra carpeta con -C:

binwalk -e -C salida/ firmware.bin

Extracción recursiva: binwalk -Me

binwalk -Me firmware.bin

La opción -M ("matryoshka") vuelve a escanear lo que se extrae, así que si dentro de un gzip hay un tar que contiene una imagen squashfs, Binwalk irá abriendo capa tras capa. Es la forma más cómoda de llegar al sistema de archivos raíz de un firmware.

Análisis de entropía: binwalk -E

binwalk -E firmware.bin

Calcula la entropía a lo largo del archivo. Zonas planas cercanas a 1 indican datos comprimidos o cifrados; caídas bruscas suelen marcar cabeceras o texto. Si un firmware no muestra firmas reconocibles y la entropía es alta en todo el archivo, probablemente esté cifrado y tendrás que buscar otra vía (por ejemplo, la rutina de descifrado en una versión anterior).

Uso en un reto de esteganografía

file imagen.png
binwalk imagen.png
binwalk -e imagen.png

Si tras el final del PNG aparece una firma Zip archive data, hay un archivo pegado. Extráelo y, si está protegido con contraseña, sigue investigando la imagen (metadatos, cadenas con strings) en busca de pistas. Para extraer un rango concreto a mano puedes usar dd con el desplazamiento que te da Binwalk:

dd if=imagen.png of=oculto.zip bs=1 skip=12345

Recuerda: analiza solo firmware y archivos propios, de CTF o sobre los que tengas autorización.

Consejos pro

  • Desconfía de los falsos positivos: firmas cortas pueden aparecer por casualidad en datos aleatorios. Contrasta con el tamaño y el contexto.
  • Combina Binwalk con strings, hexdump -C y file. Binwalk te dice dónde mirar; esas herramientas te dicen qué hay.
  • Ejecuta las extracciones en una máquina virtual o directorio aislado: un firmware puede contener enlaces simbólicos o rutas extrañas.
  • Para tráfico de red y capturas, mejor NetworkMiner; para decodificar trozos sueltos, CyberChef.

Pros y contras

ProsContras
Gratuito y de código abiertoTutoriales antiguos se refieren a la v2 y no siempre aplican a la v3
Extracción recursiva muy cómodaDepende de herramientas externas para algunos formatos
La v3 es muy rápida con archivos grandesNo ayuda con firmware cifrado

Alternativas y herramientas complementarias

  • Ghidra: para analizar los binarios extraídos.
  • CyberChef: decodificación y manipulación de datos en el navegador.
  • NetworkMiner: forense de red y extracción de archivos de capturas PCAP.
  • Foremost o Scalpel: file carving clásico, útil como segunda opinión.

Preguntas frecuentes

¿Binwalk es gratis?

Sí, es software libre y lo puedes descargar desde su repositorio de GitHub o desde los repositorios de tu distribución.

¿Qué hace binwalk -e?

Extrae automáticamente los archivos y sistemas de archivos que reconoce dentro del binario. Con -Me lo hace de forma recursiva.

¿Cuál es la diferencia entre Binwalk v2 y v3?

La v2 está escrita en Python y la v3 es una reescritura en Rust, más rápida. Las opciones principales (-e, -M, -E, -C) se mantienen, pero algunas funciones de la v2 no existen en la v3.

¿Sirve Binwalk para esteganografía?

Sirve para detectar archivos incrustados o concatenados. Para técnicas como LSB en imágenes necesitarás herramientas específicas como zsteg o steghide.

Si quieres practicar forense y análisis de archivos con retos guiados, puedes hacerlo en la Academia de Hackers en Acción.

// TAGS

firmwareextractioniotpython
10,800 stars
0 views
1/26/2026
AccederGitHub
Guía gratisAprende hacking ético desde cero

// RELATED_RESOURCES