DominicBreuker / stego-toolkit

Este projeto é uma imagem Docker útil para resolver desafios de esteganografia como aqueles que você pode encontrar em plataformas CTF como hackthebox.eu.A imagem vem pré-instalada com muitas ferramentas populares (veja lista abaixo) e vários scripts de triagem que você pode usar para verificar coisas simples (por exemplo, execute check_jpg.sh image.jpg para obter um relatório para um arquivo JPG).

Estado de construção do Docker

Utilização

Primeiro certifique-se de ter o Docker instalado (como fazer).Então você pode usar os scripts de shell bin/build.sh e bin/run.sh neste repo para construir a imagem e rodar o container. Você será jogado em uma shell bash dentro do container. Ele terá a pasta data montada, na qual você pode colocar os arquivos para analisar.

  1. Build image (docker build -t <image_name> .) ou puxe a partir do hub do Docker (docker pull dominicbreuker/stego-toolkit)
  2. Inicie um container com seus arquivos montados na pasta /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Utilize ferramentas CLI e scripts de triagem em seus arquivos: por exemplo, execute check_jpg.sh image.jpg para criar um relatório rápido, ou execute brute_jpg.sh image.jpg wordlist.txt para tentar extrair dados escondidos com várias ferramentas e palavras-passe
  4. Se quiser executar ferramentas GUI use uma destas duas formas:
  • Executar start_ssh.sh e conectar ao seu container com o encaminhamento X11
  • Executar start_vnc.sh e conectar ao Desktop do container através do seu navegador

Cheque as seguintes seções para mais informações:

  • Que ferramentas estão instaladas? Vá aqui
  • Que scripts eu posso executar para rapidamente selecionar arquivos automaticamente ou forçá-los? Vá aqui
  • Como posso brincar com diferentes exemplos de esteganografia para ver se eu posso quebrá-los? Vá aqui
  • Como posso executar ferramentas GUI dentro do recipiente? vá aqui

Demo

Comece com docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.Você será jogado dentro de um recipiente no diretório de trabalho /data.A sua pasta anfitriã $(pwd)/data será montada e as imagens dentro dela estarão acessíveis.

animated demo gif

Ferramentas

Muitas ferramentas diferentes do Linux e do Windows estão instaladas.Ferramentas do Windows são suportadas com o Wine.Algumas ferramentas podem ser usadas na linha de comando enquanto outras requerem suporte a GUI!

Ferramentas de interface de linha de comando

Estas ferramentas podem ser usadas na linha de comando.Tudo que você tem que fazer é iniciar um container e montar os arquivos de esteganografia que você quer verificar.

Ferramentas gerais de triagem

Ferramentas para rodar no início.Permitir que você tenha uma ampla idéia do que você está lidando.

>

Ferramenta Descrição Como usar
ficheiro Verifica que tipo de ficheiro tens file stego.jpg>>
exiftool Verifica os metadados dos ficheiros de media exiftool stego.jpg
binwalk Verifica se outros ficheiros estão incorporados/apensos binwalk stego.jpg
strings Verifica se existem caracteres legíveis interessantes no ficheiro strings stego.jpg
para o máximo Carregar ficheiros embebidos/apensos foremost stego.jpg
pngcheck Encerrar detalhes num ficheiro PNG (ou descobrir é na verdade outra coisa) pngcheck stego.png>
identificar Ferramenta GraphicMagick para verificar que tipo de imagem é um ficheiro. Verifica também se a imagem está corrompida. identify -verbose stego.jpg
ffmpeg ffmpeg pode ser usado para verificar a integridade dos ficheiros de áudio e deixá-lo reportar infos e erros ffmpeg -v info -i stego.mp3 -f null - para recodificar o ficheiro e deitar fora o resultado

Ferramentas para detectar esteganografia

Ferramentas desenhadas para detectar esteganografia em ficheiros.Na maioria das vezes, realizar testes estatísticos.Eles revelarão mensagens ocultas somente em casos simples. No entanto, eles podem fornecer dicas sobre o que procurar se encontrarem irregularidades interessantes.

Ferramenta Tipos de arquivo Descrição Como usar
stegoVeritas Imagens (JPG, PNG, GIF, TIFF, BMP) Uma grande variedade de verificações simples e avançadas. Confira stegoveritas.py -h. Verifica metadados, cria muitas imagens transformadas e salva-as em um diretório, Brute força LSB, … stegoveritas.py stego.jpg para executar todas as verificações
zsteg Images (PNG, BMP) Detecta vários LSB stego, também abretego e a ferramenta Camuflagem zsteg -a stego.jpg para executar todas as verificações
stegdetect Imagens (JPG) Realiza testes estatísticos para descobrir se uma ferramenta stego foi usada (jsteg, outguess, jphide, …). Verifique man stegdetect para detalhes. stegdetect stego.jpg
stegbreak Images (JPG) Brute force cracker para imagens JPG. Afirma que pode rachar outguess, jphide e jsteg. stegbreak -t o -f wordlist.txt stego.jpg, usar -t o para adivinhar, -t p para jphide ou -t j para jsteg

Ferramentas realmente fazendo esteganografia

Ferramentas que você pode usar para esconder mensagens e revelá-las depois.Alguns encriptam as mensagens antes de as esconderem. Se o fizerem, requerem uma palavra-passe. Se tiver uma dica sobre que tipo de ferramenta foi usada ou qual a palavra-passe correcta, experimente estas ferramentas.Algumas ferramentas são suportadas pelos scripts de força bruta disponíveis nesta imagem do Docker.

>

>

>

>

>

Ferramenta Tipos de arquivo Descrição Como esconder Como recuperar
AudioStego Áudio (MP3 / WAV) Detalhes sobre o seu funcionamento estão neste post de blog hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Image (JPG) Pretty old tool from here. Aqui, a versão daqui é instalada desde que a original falhou o tempo todo. Ela pede uma senha interativa! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Image (JPG) LSB stego tool. Não encripta a mensagem. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Áudio (MP3) Programa antigo. Encripta e depois esconde uma mensagem (encriptação 3DES!). Ferramenta Windows em execução no Wine. Requer entrada WAV (pode lançar erros para certos arquivos WAV. o que funciona para mim é, por exemplo: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Importante: use somente o caminho absoluto! 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 Images (PNG) Vários algoritmos de Stego LSB (veja este blog). Ainda mantido. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (deixe de fora -xf para criar arquivo com nome original!)
outguess Imagens (JPG) Usa “bits redundantes” para ocultar dados. Vem em duas versões: old=outguess-0.13 retirado daqui e new=outguess do repositório de pacotes. Para recuperar, você deve usar o usado para ocultar. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrologia Áudio (WAV) Codifica uma imagem no espectrograma de um arquivo de áudio. TODO Utilizar ferramenta GUI sonic-visualiser
stegano Imagens (PNG) Oculta dados com vários métodos (baseados em LSB). Fornece também algumas ferramentas de triagem. stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png ou stegano-red hide --input cover.png -m "secret msg" --output stego.png ou stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png para vários geradores (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt ou stegano-red reveal -i stego.png ou stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Imagens (JPG, BMP) e Áudio (WAV, AU) Ferramenta versátil e madura para encriptar e esconder dados. 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 Imagens (PNG) LSB stego ferramenta para imagens cloackedpixel hide cover.jpg secret.txt password cria cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg Imagens (PNG, BMP, …) em formatos não comprimidos Ferramentas LSB simples com código Python muito bonito e legível LSBSteg encode -i cover.png -o stego.png -f secret.txt> LSBSteg decode -i stego.png -o output.txt
f5 Images (JPG) F5 Algoritmo Esteganográfico com informações detalhadas sobre o processo f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' f5 -t x -i stego.jpg 1> output.txt
stegoria Imagens (PNG, GIF, BMP, WebP) e Áudio (WAV) Simplo programa de esteganografia baseado no método LSB stegpy secret.jpg cover.png stegpy _cover.png

Ferramentas GUI de esteganografia

Todas as ferramentas abaixo possuem interfaces gráficas de usuário e não podem ser usadas através da linha de comando.Para executá-las, você deve disponibilizar um servidor X11 dentro do container. Duas maneiras são suportadas:

  • run start_ssh.sh para disparar um servidor SSH. Conecte-se depois com o encaminhamento do X11. Requer um servidor X11 em seu host!
  • run start_vnc.sh para disparar um servidor VNC + cliente. Conecte-se depois com seu navegador à porta 6901 e você terá um desktop Xfce. Sem dependências de host!

Alternativamente, encontre outras formas de tornar o X11 disponível dentro do container.Muitas formas diferentes são possíveis (por exemplo, montar soquetes UNIX).

>

>

>

>

>

>

>

Ferramenta Tipos de arquivo Descrição Como começar
Steg Imagens (JPG, TIFF, PNG, BMP) Pega muitos tipos de ficheiros e implementa diferentes métodos steg
Steganabara (O link original está quebrado) Imagens (???) Transformar imagens interativamente até encontrar algo steganabara
Stegsolve Imagens (????) Transformar imagens interativamente, ver esquemas de cores separadamente, … >stegsolve
SonicVisualiser Áudio (????) Visualizar ficheiros de áudio em forma de onda, exibir espectrosgrama, ….. sonic-visualiser
Stegosuite Imagens (JPG, GIF, BMP) Can encriptar e esconder dados em imagens. Ativamente desenvolvido. stegosuite>
OpenPuff Imagens, Áudio, Vídeo (muitos formatos) Ferramenta sofisticada com longa história. Ainda assim mantido. Ferramenta Windows rodando no wine. openpuff
DeepSound Audio (MP3, WAV) Ferramenta de áudio stego confiada pelo próprio Sr. Robot. Ferramenta Windows rodando no wine (muito hacky, requer VNC e roda no desktop virtual, MP3 quebrado devido à falta de DLL!) >deepsound somente em sessão VNC
cloackedpixel-analyse Images (PNG) LSB stego visualization for PNGs – use-o para detectar valores suspeitosamente aleatórios de LSB em imagens (valores próximos a 0.5 podem indicar que dados criptografados estão embutidos) cloackedpixel-analyse image.png

Scripts de triagem

Muitas ferramentas acima não requerem interação com uma GUI.Portanto, você pode facilmente automatizar alguns fluxos de trabalho para fazer a triagem básica de arquivos potencialmente contendo mensagens ocultas. Como as ferramentas aplicáveis diferem pelo tipo de filete, cada tipo de arquivo tem scripts diferentes.

Para cada tipo de arquivo, existem dois tipos de scripts:

  • XXX_check.sh <stego-file>: executa ferramentas básicas de triagem e cria um relatório (+ possivelmente um diretório com relatórios em arquivos)
  • XXX_brute.sh <stego-file> <wordlist>: tenta extrair uma mensagem oculta de um arquivo stego com várias ferramentas usando uma lista de palavras (cewl, john e crunch são instalados para gerar listas – mantenha-as pequenas).

Os seguintes tipos de ficheiro são suportados:

  • JPG: check_jpg.h e brute_jpg.sh (executado em bruto steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h e brute_png.sh (correndo o bruto openstego e stegoveritas.py -bruteLSB)

Geração de listas de palavras

Os scripts forçadores do bruto acima precisam de listas de palavras.Imho muito provavelmente não vai ajudar a usar grandes listas de palavras padrão como rockyou.Os scripts são muito lentos para isso e os stego challenges parecem não ser desenhados por aí. Um cenário mais provável é que você tenha um palpite de qual poderia ser a senha mas você não sabe exatamente.

Para esses casos, várias ferramentas para gerar listas de palavras estão incluídas:

  • john: a versão melhorada da comunidade de John the Ripper pode expandir suas listas de palavras. Crie uma lista de palavras-chave básica com algumas senhas de candidatos e use john para criar muitas variantes das mesmas. Use john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist para aplicar regras extensivas (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist para um conjunto de regras reduzido (~x50).
  • crunch: pode gerar pequenas listas de palavras se você tiver um padrão em mente. Por exemplo, se você sabe que as senhas terminam com 1984 e têm 6 letras, use crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 irá gerar as 26 * 26 = 676 senhas aa1984, ab1984, … até zz1984. O formato é crunch <min-length> <max-length> <charset> <options> e nós usamos a opção de modelos. Confira less /usr/share/crunch/charset.lst para ver os conjuntos de caracteres com.
  • CeWL: pode gerar listas de palavras se você sabe que um site está relacionado a uma senha. Por exemplo, execute cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump se você suspeita que uma imagem de Donald Trump contém uma mensagem oculta criptografada. O comando raspa o site e extrai as strings com pelo menos 8 caracteres.

Exemplos de esteganografia

A imagem contém uma imagem de amostra e um ficheiro de áudio cada um em diferentes formatos:

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

Contém também um script /examples/create_examples.sh que pode ser executado para incorporar uma mensagem oculta (“Esta é uma mensagem muito secreta!”Depois de executar este script, você encontra estes arquivos em /examples/stego-files com seus nomes indicando qual ferramenta foi usada para embutir a mensagem.Você pode executar os scripts de triagem para ver se eles encontram algo neles ou tentar quebrá-los de outra forma.

GUI e Containers

Por padrão, nenhuma ferramenta GUI pode ser executada em um container Docker já que nenhum servidor X11 está disponível.Para executá-los, você deve alterar isso.Se você:

  • executar no Linux, você provavelmente tem X11
  • executar no Mac OS, você precisa do Xquartz (brew install Xquartz)
  • executar no Windows, você tem um problema

Utilizar o reencaminhamento do X11 através do SSH se você quiser ir por este caminho. Execute start_ssh dentro do contêiner para iniciar o servidor, certifique-se de expor a porta 22 ao iniciar o contêiner: docker run -p 127.0.0.1:22:22 ..., depois use ssh -X ... quando conectar (o script imprime a senha).

Para não depender do X11, a imagem vem com um servidor TigerVNC e noVNC client.Você pode usá-lo para abrir uma sessão HTML5 VNC com seu navegador para conectar ao desktop do container Xfce. Para isso, execute start_vnc.sh dentro do container para iniciar servidor e cliente, certifique-se de expor a porta 6901 ao iniciar o container docker run -p 127.0.0.1:6901:6901 ... e vá para localhost:6901/?password=<the_password> (o script imprime a senha).

Usando SSH com encaminhamento X11

animated demo gif - SSH + X11

Comandos no GIF para cópia & colar:

# 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 e VNC

animated demo gif - Browser + VNC

Comandos no GIF para cópia & pasta:

# 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>

Colecção de links

Esta é uma colecção de links esteganográficos úteis:

  • Você deve ser capaz de localizar códigos. Confira esta folha de cheat sheet de Eric Harshbarger, que contém muitos códigos diferentes.
  • Folha de cheat sheet descrevendo fluxos de trabalho, coisas para procurar e ferramentas comuns: clique
  • Guia forense CTF com muitas idéias para desafios stego: clique
  • Descrições de formato de arquivo como cartazes bonitos: clique

Deixe uma resposta

O seu endereço de email não será publicado.