Saltar al contenido
Lectura9 minPreview

Herramientas: de file a zsteg

Cuatro comandos de casi cualquier Linux le dicen qué es el archivo, qué metadatos tiene y si hay algo pegado al final. binwalk y zsteg hacen el trabajo pesado. En Ubuntu 24.04:

sudo apt install file libimage-exiftool-perl binutils xxd binwalk ruby
sudo gem install zsteg

Las cuatro de siempre

file ARCHIVO
exiftool [-a] [-u] ARCHIVO
strings [-n MIN] ARCHIVO
xxd ARCHIVO | tail [-n LINEAS]
ComandoDe dónde viene el nombreQué le dice en un reto de imagen
filefile, "archivo"El tipo real según los primeros bytes, no según la extensión
exiftoolEXIF tool; EXIF es Exchangeable Image File FormatMetadatos: autor, programa, comentarios y avisos de estructura rara
stringsstrings, "cadenas"El texto imprimible de 4 caracteres o más
xxdvolcado hexadecimal que viene con VimLos bytes crudos; con tail ve lo que hay después del final del PNG

Todo PNG termina con un bloque IEND. Si xxd archivo.png | tail muestra bytes después, alguien los pegó; los visores los ignoran y la foto se ve igual.

Ficha de binwalk

  • Nombre: de binary y walk, "recorrer el binario".
  • Qué hace: busca firmas de otros formatos dentro del archivo y dice en qué posición empieza cada una: un ZIP, un JPEG, datos zlib.
binwalk [OPCIONES] ARCHIVO
OpciónQué haceEjemplo
sin opcionesLista las firmas encontradasbinwalk foto.png
-eExtrae lo que reconoce a una carpeta _foto.png.extractedbinwalk -e foto.png

El error que verá si extrae como root en binwalk 2.3:

Extractor Exception: Binwalk extraction uses many third party utilities, which may not be secure. If you wish to have extraction utilities executed as the current user, use '--run-as=root' (binwalk itself must be run as root).

No le ponga --run-as=root: corra binwalk -e como usuario normal, porque un archivo malicioso puede aprovechar un extractor vulnerable. binwalk 3, reescrito en Rust, muestra otra salida; aquí se usa la 2.3 de Ubuntu.

Ficha de zsteg

  • Nombre: steg viene de steganography, esteganografía.
  • Qué hace: prueba decenas de combinaciones de bits, canales y órdenes de lectura en PNG y BMP, y avisa cuáles dan texto o un archivo reconocible. No sirve para JPG.
zsteg [OPCIONES] IMAGEN [CARGA]
OpciónQué haceEjemplo
sin opcionesPrueba las combinaciones comuneszsteg foto.png
-aPrueba todas, con más ruidozsteg -a foto.png
-E CARGAExtrae una combinación concretazsteg -E b1,r,lsb,xy foto.png

La etiqueta b1,r,lsb,xy se lee así: 1 bit por píxel, canal rojo (red), el bit menos significativo (lsb), recorrido por filas (xy). Si después de instalarlo ve zsteg: command not found, la carpeta de gemas de Ruby no está en su PATH (gem environment la muestra).

Las herramientas web

Aperi'Solve y StegOnline hacen lo mismo en el navegador: separan planos de bits, leen metadatos y prueban LSB. CyberChef tiene la operación Extract LSB. Con una imagen de un caso real, no: subirla a un servicio de terceros saca la evidencia de su custodia y puede filtrar lo que intenta proteger. CyberChef se descarga y funciona sin conexión; esa copia sí sirve.