Este proyecto es una imagen de Docker útil para resolver desafíos de Steganography como los que puedes encontrar en las plataformas de CTF como hackthebox.eu . La imagen viene preinstalada con muchas secuencias de comandos populares (vea la lista a continuación ) y varias que puede usar para verificar cosas simples (por ejemplo, ejecutar check_jpg.sh image.jpgpara obtener un informe para este archivo JPG).

Uso
Primero asegúrese de tener instalado Docker ( cómo hacerlo ). Luego puede usar los scripts de shell bin/buid.shbin/run.shen este repositorio para construir la imagen y ejecutar el contenedor. Se te dejará caer dentro de un caparazón de bash dentro del contenedor. Tendrá la datacarpeta montada, en la que puede poner los archivos para analizar.
Si no usa los scripts, siga estos pasos:
  1. Crear imagen ( docker build -t <image_name> .) o extraer de Docker hub ( docker pull dominicbreuker/stego-toolkit)
  2. Inicie un contenedor con sus archivos montados en la carpeta /datadocker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Use las herramientas CLI y las secuencias de comandos de detección en sus archivos: por ejemplo, ejecute check_jpg.sh image.jpgpara crear un informe rápido o ejecútelo brute_jpg.sh image.jpg wordlist.txtpara intentar extraer datos ocultos con varias herramientas y contraseñas.
  4. Si desea ejecutar herramientas de GUI, use una de estas dos formas:
  • Ejecute start_ssh.shy conéctese a su contenedor con reenvío X11
  • Ejecute start_vnc.shy conéctese al escritorio del contenedor a través de su navegador

Demo
Comience condocker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash. Se te dejará caer en un contenedor de shell en el directorio de trabajo/data. Su carpeta de host$(pwd)/dataserá montada y las imágenes dentro serán accesibles.

Herramientas
Se instalan muchas herramientas diferentes de Linux y Windows. Las herramientas de Windows son compatibles con Wine . Algunas herramientas se pueden utilizar en la línea de comandos, mientras que otras requieren soporte de GUI.

Herramientas de interfaz de línea de comandos
Estas herramientas se pueden usar en la línea de comando. Todo lo que tiene que hacer es iniciar un contenedor y montar los archivos de esteganografía que desea verificar.

Herramientas de detección generales
Herramientas para ejecutar al principio. Le permite obtener una idea amplia de lo que está tratando.

Herramienta Descripción Cómo utilizar
archivo Mira qué tipo de archivo tienes file stego.jpg
exiftool Echa un vistazo a los metadatos de los archivos multimedia exiftool stego.jpg
binwalk Verifique si otros archivos están incrustados / anexados binwalk stego.jpg
instrumentos de cuerda Verifique si hay caracteres legibles interesantes en el archivo strings stego.jpg
principal Recortar archivos incrustados / adjuntos foremost stego.jpg
pngcheck Obtenga detalles sobre un archivo PNG (o descubra que es realmente otra cosa) pngcheck stego.png
identificar Herramienta GraphicMagick para verificar qué tipo de imagen es un archivo. Comprueba también si la imagen está dañada. identify -verbose stego.jpg
ffmpeg ffmpeg se puede utilizar para verificar la integridad de los archivos de audio y dejar que informe infos y errores ffmpeg -v info -i stego.mp3 -f null - para recodificar el archivo y tirar el resultado

Herramientas que detectan esteganografía
Herramientas diseñadas para detectar esteganografía en archivos. En su mayoría realiza pruebas estadísticas. Revelarán mensajes ocultos solo en casos simples. Sin embargo, pueden dar pistas sobre qué buscar si encuentran irregularidades interesantes.

Herramienta Tipos de archivo Descripción Cómo utilizar
stegoVeritas Imágenes (JPG, PNG, GIF, TIFF, BMP) Una amplia variedad de controles simples y avanzados. Echa un vistazo stegoveritas.py -h. Comprueba los metadatos, crea muchas imágenes transformadas y las guarda en un directorio, Brute force LSB, … stegoveritas.py stego.jpgejecutar todos los controles
zsteg Imágenes (PNG, BMP) Detecta varios LSB stego, también openstego y la herramienta de camuflaje zsteg -a stego.jpg ejecutar todos los controles
stegdetect Imágenes (JPG) Realiza pruebas estadísticas para encontrar si se utilizó una herramienta stego (jsteg, outguess, jphide, …). Consulte man stegdetectpara obtener más detalles. stegdetect stego.jpg
stegbreak Imágenes (JPG) Brute force cracker para imágenes JPG. Afirma que se puede romper outguessjphidejsteg. stegbreak -t o -f wordlist.txt stego.jpg, use -t opara outguess, -t ppara jphide o -t jpara jsteg

Herramientas que realmente
usan esteganografía Herramientas que puede usar para ocultar mensajes y revelarlos luego. Algunos cifran los mensajes antes de ocultarlos. Si lo hacen, requieren una contraseña. Si tiene una pista sobre qué tipo de herramienta se utilizó o qué contraseña podría ser la adecuada, pruebe 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 esconderse Cómo recuperarse
AudioStego Audio (MP3 / WAV) Los detalles sobre cómo funciona están en esta publicación de blog hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide / jpseek Imagen (JPG) Bastante vieja herramienta. Aquí, la versión desde aquí está instalada ya que la original se bloqueó todo el tiempo. ¡Solicita una frase de paso de forma interactiva! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Imagen (JPG) Herramienta LSB stego. No encripta el mensaje. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) Viejo programa. Cifra y luego oculta un mensaje (cifrado 3DES). Herramienta de Windows ejecutándose en Wine. Requiere entrada WAV (puede arrojar errores para ciertos archivos WAV. Lo que funciona para mí es, por ejemplo:) ffmpeg -i audio.mp3 -flags bitexact audio.wav. Importante: ¡use la ruta absoluta solamente! 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. Aún mantenido. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (¡omita -xf para crear un archivo con el nombre original!)
ser más astuto que Imágenes (JPG) Utiliza «bits redundantes» para ocultar datos. Viene en dos versiones: viejo = outguess-0.13tomado de aquí y nuevo = outguessde los repos de paquete. Para recuperarse, debe usar el usado para esconderse. 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 Use la herramienta GUI sonic-visualiser
Stegano Imágenes (PNG) Oculta datos con varios métodos (basados ​​en LSB). Proporciona también algunas herramientas de detección. stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.pngstegano-red hide --input cover.png -m "secret msg" --output stego.pngstegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.pngpara varios generadores ( stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txtstegano-red reveal -i stego.pngostegano-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 encriptar 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 Tool para imágenes cloackedpixel hide cover.jpg secret.txt password crea 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 un 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

Herramientas de GUI de esteganografía
Todas las herramientas a continuación tienen interfaces gráficas de usuario y no se pueden usar a través de la línea de comando. Para ejecutarlos, debe hacer que un servidor X11 esté disponible dentro del contenedor. Se admiten dos formas:

  • ejecutar start_ssh.shpara iniciar un servidor SSH. Conecte luego con el reenvío X11. ¡Requiere un servidor X11 en su host!
  • ejecutar start_vnc.shpara iniciar un servidor VNC + cliente. Conéctese luego con su navegador al puerto 6901 y obtendrá un escritorio Xfce. ¡Sin dependencias de host!

Alternativamente, encuentre otras formas de hacer que X11 esté disponible dentro del contenedor. Son posibles muchas formas diferentes (p. Ej., Montar tomas 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
Steganabara(El enlace original está roto) Imágenes (???) Transforma imágenes interactivamente hasta que encuentres algo steganabara
Stegsolve Imágenes (???) Transformar imágenes interactivamente, ver 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. Aún mantenido. Herramienta de Windows que se ejecuta en vino. openpuff
Sonido profundo Audio (MP3, WAV) Herramienta de Audio Stego confiada por el Sr. Robot mismo. La herramienta de Windows se ejecuta en el vino (muy hacky, requiere VNC y se ejecuta en el escritorio virtual, MP3 roto debido a la falta de DLL!) deepsoundsolo en la sesión de VNC
cloackedpixel-analizar Imágenes (PNG) Visualización LSG stego para PNG: utilícela para detectar valores LSB sospechosamente aleatorios en las imágenes (los valores cercanos a 0.5 pueden indicar que los datos cifrados están incrustados) cloackedpixel-analyse image.png

Scripts de detección
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 una exploración básica de los archivos que potencialmente contienen 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 detección 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 usando una lista de palabras ( cewljohncrunchse instalan para generar listas, mantenerlas pequeñas).

Los siguientes tipos de archivos son compatibles:

  • JPG: check_jpg.hbrute_jpg.sh(en ejecución bruta steghideoutguessoutguess-0.13stegbreakstegoveritas.py -bruteLSB)
  • PNG: check_png.hbrute_png.sh(ejecución bruta openstegostegoveritas.py -bruteLSB)

Generación de
listas de palabras Las secuencias de comandos de forzado bruto anteriores necesitan listas de palabras. Imho es muy probable que no ayude usar grandes listas de palabras estándar como rockyou. Los guiones son demasiado lentos y los desafíos de Stego parecen no estar diseñados para esto. Un escenario más probable es que tenga la corazonada de cuál podría ser la contraseña, pero usted no sabe exactamente.
Para estos casos, se incluyen varias herramientas para generar listas de palabras:

  • John : la versión mejorada de la comunidad de John the Ripper puede expandir tus listas de palabras. Cree una lista de palabras base con algunas contraseñas candidatas y úsela johnpara crear muchas variantes de ellas. Se usa john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlistpara aplicar reglas extensas (~ x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlistpara un conjunto de reglas reducido (~ x50).
  • Crunch : puede generar listas de palabras pequeñas si tiene un patrón en mente. Por ejemplo, si sabe que la contraseña termina en 1984 y tiene 6 letras, el uso crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984generará las 26 * 26 = 676 contraseñas aa1984, ab1984, … hasta zz1984. El formato es crunch <min-length> <max-length> <charset> <options>y usamos la opción de plantillas. Echa un vistazo less /usr/share/crunch/charset.lstpara ver los charsets crunch naves con.
  • 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_Trumpsi sospecha que una imagen de Donald Trump contiene un mensaje oculto encriptado. 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.shque puede ejecutar para incrustar un mensaje oculto («¡Este es un mensaje muy secreto!») En estos archivos con muchos métodos diferentes. Después de ejecutar este script, encontrará estos archivos /examples/stego-filescon sus nombres que indican 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 lo contrario.

GUI y contenedores
De forma predeterminada, no se pueden ejecutar herramientas GUI en un contenedor Docker ya que no hay ningún servidor X11 disponible. Para ejecutarlos, debes cambiar eso. Lo que se requiere para hacerlo depende de su máquina host. Si tu:

  • corre en Linux, probablemente tengas X11
  • correr en Mac OS, necesitas Xquartz ( brew install Xquartz)
  • correr en Windows, tienes un problema

Use el reenvío de X11 a través de SSH si quiere ir por este camino. Ejecute start_sshdentro 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, utilícelo ssh -X ...al conectarse (el script imprime la contraseña).
Para no depender de X11, la imagen viene con un servidor TigerVNC y un cliente noVNC. Puede usarlo para abrir una sesión VNC HTML5 con su navegador para conectarse a los contenedores de escritorio de Xfce. Para eso, ejecute start_vnc.shdentro 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).

Usar SSH con reenvío de X11

Comandos en el GIF para copiar y pegar:

# in 1st host shell
docker run -it --rm -p 127.0.0.1:22:22 dominicbreuker/stego-toolkit /bin/bash

# inside container shell
start_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 el navegador y VNC

Comandos en el GIF para copiar y pegar:

# in 1st host shell
docker run -it --rm -p 127.0.0.1:6901:6901 dominicbreuker/stego-toolkit /bin/bash

# inside container shell
start_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 Steganography útiles:

  • Debe poder detectar códigos. Echa un vistazo a esta hoja de trucos de Eric Harshbarger, que contiene muchos códigos diferentes.
  • Cheatsheet que describe flujos de trabajo, cosas que debe buscar y herramientas comunes.
  • Guía forense CTF con muchas ideas para desafíos stego.
  • Descripciones de formato de archivo como carteles bonitos.

Referencias
Los siguientes archivos multimedia de ejemplo están incluidos en este repositorio:

  • Imagen de demostración (JPG, PNG): https://pixabay.com/p-1685092
  • Archivo de sonido de demostración (MP3), WAV): https://upload.wikimedia.org/wikipedia/commons/c/c5/Auphonic-wikimedia-test-stereo.ogg — Por debuglevel (Trabajo propio) [CC BY-SA 3.0 ( https://creativecommons.org/licenses/by-sa/3.0) ], a través de Wikimedia Commons

Fuente: Kitploit.com

Compartir