DominicBreuker / stego-toolkit

Este proyecto es una imagen Docker útil para resolver retos de esteganografía como los que puedes encontrar en plataformas CTF como hackthebox.eu.La imagen viene preinstalada con muchas herramientas populares (ver lista más abajo) y varios scripts de detección que puedes utilizar para comprobar cosas sencillas (por ejemplo, ejecutar check_jpg.sh image.jpg para obtener un informe de un archivo JPG).

Estado de construcción de Docker

Hack The Box

Uso

Primero asegúrate de que tienes Docker instalado (cómo).Luego puedes usar los scripts de shell bin/build.sh y bin/run.sh de este repo para construir la imagen y ejecutar el contenedor.Te caerá un shell bash dentro del contenedor.Tendrá la carpeta data montada, en la que puedes poner los archivos a analizar.

Si no usas los scripts, sigue estos pasos:

  1. Construye la imagen (docker build -t <image_name> .) o sácala del hub de Docker (docker pull dominicbreuker/stego-toolkit)
  2. Inicia un contenedor con tus archivos montados en la carpeta /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Usa las herramientas CLI y los scripts de análisis en tus archivos: por ejemplo, ejecute check_jpg.sh image.jpg para crear un informe rápido, o ejecute brute_jpg.sh image.jpg wordlist.txt para intentar extraer datos ocultos con varias herramientas y contraseñas
  4. Si desea ejecutar herramientas GUI utilice una de estas dos formas:
  • Ejecuta start_ssh.sh y conéctate a tu contenedor con X11 forwarding
  • Ejecuta start_vnc.sh y conéctate al Escritorio del contenedor a través de tu navegador

Consulta las siguientes secciones para más información:

  • ¿Qué herramientas están instaladas? Ir aquí
  • ¿Qué scripts puedo ejecutar para filtrar rápidamente los archivos de forma automática o por fuerza bruta? Ir aquí
  • ¿Cómo puedo jugar con diferentes ejemplos de esteganografía para ver si puedo romperlos? Vaya aquí
  • ¿Cómo puedo ejecutar herramientas GUI dentro del contenedor? vaya aquí

Demo

Inicie con docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.Se le dejará caer en un shell de contenedor en el dir de trabajo /data.Su carpeta host $(pwd)/data será montada y las imágenes dentro serán accesibles.

Demo gif animado

Herramientas

Muchas herramientas diferentes de Linux y Windows están instaladas.Las herramientas de Windows son compatibles con Wine.Algunas herramientas se pueden utilizar en la línea de comandos, mientras que otros requieren apoyo GUI!

Herramientas de interfaz de línea de comandos

Estas herramientas se pueden utilizar en la línea de comandos.Todo lo que tienes que hacer es iniciar un contenedor y montar los archivos de esteganografía que desea comprobar.

Herramientas de detección general

Herramientas para ejecutar en el principio.Permitir que usted consiga una idea amplia de lo que está tratando.

Herramienta Descripción Cómo usar
archivo Comprueba qué tipo de archivo tienes file stego.jpg
exiftool Comprobar los metadatos de los archivos multimedia exiftool stego.jpg
binwalk Comprobar si hay otros archivos incrustados/anexados binwalk stego.jpg
cadenas Comprobar si hay caracteres legibles interesantes en el archivo strings stego.jpg
foremost Corte los archivos incrustados/anexados foremost stego.jpg
pngcheck Obtener detalles sobre un archivo PNG (o descubrir que es en realidad otra cosa) pngcheck stego.png
identificar Herramienta de GraphicMagick para comprobar qué tipo de imagen es un archivo. Comprueba también si la imagen está corrupta. identify -verbose stego.jpg
ffmpeg ffmpeg se puede utilizar para comprobar la integridad de los archivos de audio y dejar que informe de infos y errores ffmpeg -v info -i stego.mp3 -f null - recodificar el archivo y tirar el resultado

Herramientas de detección de esteganografía

Herramientas diseñadas para detectar esteganografía en archivos.En su mayoría realizan pruebas estadísticas.Sólo revelarán los mensajes ocultos en casos sencillos. Sin embargo, pueden dar pistas sobre qué buscar si encuentran irregularidades interesantes.

Herramienta Tipos de archivos Descripción Cómo usar
stegoVeritas Imágenes (JPG, PNG, GIF, TIFF, BMP) Una gran variedad de comprobaciones simples y avanzadas. Comprueba stegoveritas.py -h. Comprueba los metadatos, crea muchas imágenes transformadas y las guarda en un directorio, Fuerza bruta LSB, … stegoveritas.py stego.jpg para ejecutar todas las comprobaciones
zsteg Imágenes (PNG, BMP) Detecta varios LSB stego, también openstego y la herramienta Camouflage zsteg -a stego.jpg para ejecutar todas las comprobaciones
stegdetect Imágenes (JPG) Realiza pruebas estadísticas para encontrar si se ha utilizado una herramienta stego (jsteg, outguess, jphide, …). Revisa man stegdetect para más detalles. stegdetect stego.jpg
stegbreak Imágenes (JPG) Cracker de fuerza bruta para imágenes JPG. Afirma que puede crackear outguess, jphide y jsteg. stegbreak -t o -f wordlist.txt stego.jpg, usa -t o para outguess, -t p para jphide o -t j para jsteg

Herramientas que realmente hacen esteganografía

Herramientas que puedes usar para ocultar mensajes y revelarlos después.Algunas encriptan los mensajes antes de ocultarlos.Si lo hacen, requieren una contraseña.Si tienes una pista de qué tipo de herramienta se utilizó o qué contraseña podría ser la correcta, prueba estas herramientas.Algunas herramientas son compatibles con los scripts de fuerza bruta disponibles en esta imagen Docker.

Herramienta Tipos de archivo Descripción Cómo ocultar Cómo recuperar
AudioStego Audio (MP3 / WAV) Los detalles de su funcionamiento están en esta entrada del blog hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Imagen (JPG) Herramienta bastante antigua de aquí. Aquí se instala la versión de aquí ya que la original se estrellaba todo el tiempo. Pide una frase de contraseña de forma interactiva. jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Imagen (JPG) Herramienta stego LSB. No cifra el mensaje. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) Programa antiguo. Encripta y luego oculta un mensaje (¡encriptación 3DES!). Herramienta de Windows que se ejecuta en Wine. Requiere la entrada de WAV (puede lanzar errores para ciertos archivos WAV. lo que funciona para mí es por ejemplo: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Importante: ¡utiliza sólo la ruta absoluta! mp3stego-encode -E secret.txt -P password /path/to/cover.wav /path/to/stego.mp3 mp3stego-decode -X -P password /path/to/stego.mp3 /path/to/out.pcm /path/to/out.txt
openstego Imágenes (PNG) Varios algoritmos LSB stego (mira este blog). Todavía se mantiene. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (¡deja fuera -xf para crear un archivo con el nombre original!)
outguess Imágenes (JPG) Usa «bits redundantes» para ocultar datos. Viene en dos versiones: old=outguess-0.13 tomada de aquí y new=outguess de los repos del paquete. Para recuperar, hay que usar la utilizada para ocultar. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
Espectrología Audio (WAV) Codifica una imagen en el espectrograma de un archivo de audio. TODO Usa la herramienta GUI sonic-visualiser
stegano Imágenes (PNG) Oculta datos con varios métodos (basados en LSB). Proporciona también algunas herramientas de cribado. stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png o stegano-red hide --input cover.png -m "secret msg" --output stego.png o stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png para varios generadores (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt o stegano-red reveal -i stego.png o stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Imágenes (JPG, BMP) y Audio (WAV, AU) Herramienta versátil y madura para cifrar y ocultar datos. steghide embed -f -ef secret.txt -cf cover.jpg -p password -sf stego.jpg steghide extract -sf stego.jpg -p password -xf output.txt
Cloackedpixel Imágenes (PNG) LSB stego herramienta para imágenes cloackedpixel hide cover.jpg secret.txt passwordcrea cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg Imágenes (PNG, BMP, …) en formatos sin comprimir Herramientas LSB simples con código Python muy agradable y legible LSBSteg encode -i cover.png -o stego.png -f secret.txt LSBSteg decode -i stego.png -o output.txt
f5 Imágenes (JPG) Algoritmo esteganográfico F5 con información detallada del proceso f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' f5 -t x -i stego.jpg 1> output.txt
stegpy Imágenes (PNG, GIF, BMP, WebP) y Audio (WAV) Programa de esteganografía simple basado en el método LSB stegpy secret.jpg cover.png stegpy _cover.png

Herramientas GUI de esteganografía

Todas las herramientas que aparecen a continuación tienen interfaces gráficas de usuario y no pueden utilizarse a través de la línea de comandos.Para ejecutarlas, debe hacer que un servidor X11 esté disponible dentro del contenedor.Se admiten dos formas:

  • ejecutar start_ssh.sh para disparar un servidor SSH. Conéctese después con el reenvío de X11. Requiere un servidor X11 en el host.
  • ejecuta start_vnc.sh para activar un servidor + cliente VNC. Conéctese después con su navegador al puerto 6901 y obtendrá un escritorio Xfce. No hay dependencias del host!

Alternativamente, encuentre otras maneras de hacer que X11 esté disponible dentro del contenedor.Muchas maneras diferentes son posibles (por ejemplo montar sockets UNIX).

Herramienta Tipos de archivo Descripción Cómo empezar
Steg Imágenes (JPG, TIFF, PNG, BMP) Maneja muchos tipos de archivos e implementa diferentes métodos steg
Stegabara (El enlace original está roto) Imágenes (???) Transforma interactivamente las imágenes hasta que encuentres algo steganabara
Stegsolve Imágenes (???) Transforma interactivamente las imágenes, ve los esquemas de color por separado, … stegsolve
SonicVisualiser Audio (???) Visualizar archivos de audio en forma de onda, mostrar espectrogramas, … sonic-visualiser
Stegosuite Imágenes (JPG, GIF, BMP) Puede cifrar y ocultar datos en imágenes. Desarrollado activamente. stegosuite
OpenPuff Imágenes, Audio, Video (muchos formatos) Herramienta sofisticada con larga historia. Todavía se mantiene. Herramienta de Windows que se ejecuta en wine. openpuff
DeepSound Audio (MP3, WAV) Herramienta de stego de audio en la que confía el propio Mr. Robot. Herramienta de Windows que se ejecuta en wine (muy hacky, requiere VNC y se ejecuta en el escritorio virtual, MP3 roto debido a la falta de DLL!) deepsound sólo en sesión VNC
cloackedpixel-analyse Imágenes (PNG) Visualización de LSB stego para PNGs – utilícela para detectar valores LSB sospechosamente aleatorios en imágenes (valores cercanos a 0.5 pueden indicar que hay datos encriptados incrustados) cloackedpixel-analyse image.png

Scripts de cribado

Muchas de las herramientas anteriores no requieren interacción con una GUI.Por lo tanto, puede automatizar fácilmente algunos flujos de trabajo para realizar un cribado básico de archivos que puedan contener mensajes ocultos.Dado que las herramientas aplicables difieren según el tipo de archivo, cada tipo de archivo tiene diferentes scripts.

Para cada tipo de archivo, hay dos tipos de scripts:

  • XXX_check.sh <stego-file>: ejecuta herramientas básicas de cribado y crea un informe (+ posiblemente un directorio con informes en archivos)
  • XXX_brute.sh <stego-file> <wordlist>: intenta extraer un mensaje oculto de un archivo stego con varias herramientas utilizando una lista de palabras (cewl, john y crunch se instalan para generar listas – mantenerlas pequeñas).

Se admiten los siguientes tipos de archivos:

  • JPG: check_jpg.h y brute_jpg.sh (ejecución bruta steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h y brute_png.sh (ejecución bruta de openstego y stegoveritas.py -bruteLSB)

Generación de listas de palabras

Los scripts de fuerza bruta anteriores necesitan listas de palabras.En mi opinión, es muy probable que no sirva de nada utilizar listas de palabras estándar enormes como las de Rockyou.Los scripts son demasiado lentos para ello y los retos stego parecen no estar diseñados para esto.Un escenario más probable es que tengas una corazonada de cuál podría ser la contraseña pero no lo sepas exactamente.

Para estos casos, se incluyen varias herramientas para generar listas de palabras:

  • john: la versión mejorada por la comunidad de John the Ripper puede ampliar tus listas de palabras. Cree una lista de palabras base con unas cuantas contraseñas candidatas y utilice john para crear muchas variantes de las mismas. Utilice john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist para aplicar reglas extensas (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist para un conjunto de reglas reducido (~x50).
  • crunch: puede generar pequeñas listas de palabras si tiene un patrón en mente. Por ejemplo, si sabe que las contraseñas terminan en 1984 y tienen 6 letras, el uso de crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 generará las 26 * 26 = 676 contraseñas aa1984, ab1984, … hasta zz1984. El formato es crunch <min-length> <max-length> <charset> <options> y utilizamos la opción de plantillas. Eche un vistazo a less /usr/share/crunch/charset.lst para ver los conjuntos de caracteres con los que viene Crunch.
  • CeWL: puede generar listas de palabras si sabe que un sitio web está relacionado con una contraseña. Por ejemplo, ejecute cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump si sospecha que una foto de Donald Trump contiene un mensaje oculto cifrado. El comando raspa el sitio y extrae cadenas de al menos 8 caracteres.

Ejemplos de esteganografía

La imagen contiene una imagen de muestra y un archivo de audio cada uno en diferentes formatos:

  • /examples/ORIGINAL.jpg
  • /examples/ORIGINAL.png
  • /examples/ORIGINAL.mp3
  • /examples/ORIGINAL.wav

También contiene un script /examples/create_examples.sh que puedes ejecutar para incrustar un mensaje oculto («¡Este es un mensaje muy secreto!»Después de ejecutar este script, encontrará estos archivos en /examples/stego-files con sus nombres indicando qué herramienta se utilizó para incrustar el mensaje.Puede ejecutar los scripts de detección para ver si encuentran algo en ellos o intentar romperlos de otra manera.

GUI y contenedores

Por defecto, no se pueden ejecutar herramientas GUI en un contenedor Docker ya que no hay ningún servidor X11 disponible.Para ejecutarlas, debe cambiar eso.Lo que se requiere para hacerlo depende de su máquina anfitriona.Si usted:

  • corre en Linux, probablemente tiene X11
  • corre en Mac OS, necesita Xquartz (brew install Xquartz)
  • corre en Windows, tiene un problema

Use el reenvío de X11 a través de SSH si quiere ir por este camino. Ejecute start_ssh dentro del contenedor para iniciar el servidor, asegúrese de exponer el puerto 22 al iniciar el contenedor: docker run -p 127.0.0.1:22:22 ..., luego usa ssh -X ... al conectarte (el script imprime la contraseña).

Para no depender de X11, la imagen viene con un servidor TigerVNC y un cliente noVNC.Puedes usarlo para abrir una sesión VNC HTML5 con tu navegador para conectarte al escritorio Xfce del contenedor. Para ello, ejecute start_vnc.sh dentro del contenedor para iniciar el servidor y el cliente, asegúrese de exponer el puerto 6901 al iniciar el contenedor docker run -p 127.0.0.1:6901:6901 ... y vaya a localhost:6901/?password=<the_password> (el script imprime la contraseña).

Usando SSH con reenvío a X11

Demo gif animado - SSH + X11

Comandos en el GIF para copiar & pegar:

# in 1st host shelldocker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_ssh.sh# in 2nd host shell (use it to launch GUI apps afterwards)ssh -X -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@localhost

Usando Browser y VNC

Gif animado de demostración - Browser + VNC

Comandos en el GIF para copiar &pegar:

# in 1st host shelldocker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash# inside container shellstart_vnc.sh# in browser, connect with: http://localhost:6901/?password=<password_from_start_vnc>

Colección de enlaces

Esta es una colección de enlaces útiles de Esteganografía:

  • Debes ser capaz de detectar códigos. Echa un vistazo a esta hoja de trucos de Eric Harshbarger, que contiene muchos códigos diferentes.
  • Hoja de trucos que describe los flujos de trabajo, las cosas que hay que buscar y las herramientas comunes: haga clic en
  • Guía de CTF forense con un montón de ideas para los desafíos stego: haga clic en
  • Descripciones de formato de archivo como hermosos carteles: haga clic en

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.