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.jpg
para obtener un informe para este archivo JPG).
bin/buid.sh
y bin/run.sh
en 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 data
carpeta montada, en la que puede poner los archivos para analizar.- Crear imagen (
docker build -t <image_name> .
) o extraer de Docker hub (docker pull dominicbreuker/stego-toolkit
) - Inicie un contenedor con sus archivos montados en la carpeta
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - Use las herramientas CLI y las secuencias de comandos de detección en sus archivos: por ejemplo, ejecute
check_jpg.sh image.jpg
para crear un informe rápido o ejecútelobrute_jpg.sh image.jpg wordlist.txt
para intentar extraer datos ocultos con varias herramientas y contraseñas. - Si desea ejecutar herramientas de GUI, use una de estas dos formas:
- Ejecute
start_ssh.sh
y conéctese a su contenedor con reenvío X11 - Ejecute
start_vnc.sh
y 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)/data
será 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.jpg ejecutar 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 stegdetect para obtener más detalles. |
stegdetect stego.jpg |
stegbreak | Imágenes (JPG) | Brute force cracker para imágenes JPG. Afirma que se puede romper outguess , jphide y jsteg . |
stegbreak -t o -f wordlist.txt stego.jpg , use -t o para outguess, -t p para jphide o -t j para 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.13 tomado de aquí y nuevo = outguess de 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.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 ostegano-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.sh
para iniciar un servidor SSH. Conecte luego con el reenvío X11. ¡Requiere un servidor X11 en su host! - ejecutar
start_vnc.sh
para 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!) | deepsound solo 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 (cewl
,john
ycrunch
se instalan para generar listas, mantenerlas pequeñas).
Los siguientes tipos de archivos son compatibles:
- JPG:
check_jpg.h
ybrute_jpg.sh
(en ejecución brutasteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
ybrute_png.sh
(ejecución brutaopenstego
ystegoveritas.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
john
para crear muchas variantes de ellas. Se usajohn -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 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 @@1984
generará las 26 * 26 = 676 contraseñas aa1984, ab1984, … hasta zz1984. El formato escrunch <min-length> <max-length> <charset> <options>
y usamos la opción de plantillas. Echa un vistazoless /usr/share/crunch/charset.lst
para 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_Trump
si 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.sh
que 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-files
con 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_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, 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.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).
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