
Coleção de ferramentas de esteganografia - ajuda com desafios CTF
Este projeto é uma imagem Docker útil para resolver desafios de Esteganografia como os que você pode encontrar em plataformas CTF como hackthebox.eu.
A imagem vem pré-instalada com muitas ferramentas populares (veja a 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).
Primeiro, certifique-se de ter o Docker instalado (como instalar).
Em seguida, você pode usar os scripts de shell bin/build.sh e bin/run.sh neste repositório para construir a imagem e executar o contêiner.
Você será colocado em um shell bash dentro do contêiner.
Ele terá a pasta data montada, na qual você pode colocar os arquivos para analisar.
Se você não usar os scripts, siga estes passos:
docker build -t <image_name> .) ou baixar do Docker hub (docker pull dominicbreuker/stego-toolkit)/data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)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 ocultos com várias ferramentas e senhasstart_ssh.sh e conecte-se ao seu contêiner com encaminhamento X11start_vnc.sh e conecte-se à Área de Trabalho do contêiner através do seu navegadorConfira as seguintes seções para mais informações:
Inicie com docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.
Você será colocado em um shell do contêiner no diretório de trabalho /data.
Sua pasta host $(pwd)/data será montada e as imagens dentro dela estarão acessíveis.

Muitas ferramentas diferentes Linux e Windows estão instaladas. As ferramentas Windows são suportadas com Wine. Algumas ferramentas podem ser usadas na linha de comando, enquanto outras exigem suporte GUI!
Estas ferramentas podem ser usadas na linha de comando. Tudo o que você precisa fazer é iniciar um contêiner e montar os arquivos de esteganografia que deseja verificar.
Ferramentas para executar no início. Permitem que você tenha uma ideia geral do que está lidando.
Ferramentas projetadas para detectar esteganografia em arquivos. Na maioria, realizam testes estatísticos. Elas revelarão mensagens ocultas apenas em casos simples. No entanto, podem fornecer pistas sobre o que procurar se encontrarem irregularidades interessantes.
Ferramentas que você pode usar para ocultar mensagens e revelá-las depois. Algumas criptografam as mensagens antes de ocultá-las. Se o fizerem, exigem uma senha. Se você tem uma dica de que tipo de ferramenta foi usada ou qual senha pode estar correta, tente estas ferramentas. Algumas ferramentas são suportadas pelos scripts de força bruta disponíveis nesta imagem Docker.
Todas as ferramentas abaixo possuem interfaces gráficas de usuário e não podem ser usadas pela linha de comando. Para executá-las, você deve disponibilizar um servidor X11 dentro do contêiner. Duas formas são suportadas:
start_ssh.sh para iniciar um servidor SSH. Conecte-se depois com encaminhamento X11. Requer um servidor X11 em seu host!start_vnc.sh para iniciar um servidor VNC + cliente. Conecte-se depois com seu navegador à porta 6901 e você terá uma área de trabalho Xfce. Sem dependências no host!Alternativamente, encontre outras formas de disponibilizar X11 dentro do contêiner. Muitas formas diferentes são possíveis (por exemplo, montar sockets UNIX).
Muitas ferramentas acima não requerem interação com uma GUI. Portanto, você pode automatizar facilmente alguns fluxos de trabalho para fazer uma triagem básica de arquivos potencialmente contendo mensagens ocultas. Como as ferramentas aplicáveis diferem por tipo de arquivo, 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 estego com várias ferramentas usando uma wordlist (cewl, john e crunch estão instalados para gerar listas - mantenha-as pequenas).Os seguintes tipos de arquivo são suportados:
check_jpg.h e brute_jpg.sh (força bruta executando steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)check_png.h e brute_png.sh (força bruta executando openstego e stegoveritas.py -bruteLSB)Os scripts de força bruta acima precisam de wordlists. Na minha opinião, provavelmente não ajudará usar wordlists padrão enormes como rockyou. Os scripts são muito lentos para isso e os desafios de estego parecem não ser projetados para isso. Um cenário mais provável é que você tenha um palpite sobre qual poderia ser a senha, mas não sabe exatamente.
Para esses casos, várias ferramentas para gerar wordlists estão incluídas:
john para criar muitas variações delas. Use john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist para aplicar regras extensas (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist para um conjunto reduzido de regras (~x50).crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 gerará as 26 * 26 = 676 senhas aa1984, ab1984, ... até zz1984. O formato é crunch <min-length> <max-length> <charset> <options> e usamos a opção de modelo. Confira less /usr/share/crunch/charset.lst para ver os conjuntos de caracteres que o crunch fornece.cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump se suspeitar que uma imagem de Donald Trump contém uma mensagem oculta criptografada. O comando raspa o site e extrai strings com pelo menos 8 caracteres.A imagem contém uma imagem de exemplo e um arquivo de áudio, cada um em diferentes formatos:
/examples/ORIGINAL.jpg/examples/ORIGINAL.png/examples/ORIGINAL.mp3/examples/ORIGINAL.wavTambém contém um script /examples/create_examples.sh que você pode executar para embutir uma mensagem oculta ("This is a very secret message!") nesses arquivos com muitos métodos diferentes.
Após executar este script, você encontrará esses 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.
Por padrão, nenhuma ferramenta GUI pode ser executada em um contêiner Docker, pois nenhum servidor X11 está disponível. Para executá-las, você deve mudar isso. O que é necessário para fazer isso depende da sua máquina host. Se você:
brew install Xquartz)Use encaminhamento X11 através de SSH se quiser ir por esse 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 ... ao conectar (o script imprime a senha).
Para não depender de X11, a imagem vem com um servidor TigerVNC e cliente noVNC.
Você pode usá-lo para abrir uma sessão VNC HTML5 com seu navegador para se conectar à área de trabalho Xfce do contêiner.
Para isso, execute start_vnc.sh dentro do contêiner para iniciar servidor e cliente, certifique-se de expor a porta 6901 ao iniciar o contêiner docker run -p 127.0.0.1:6901:6901 ... e vá para localhost:6901/?password=<a_senha> (o script imprime a senha).

Comandos no GIF para copiar e colar:
# 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

Comandos no GIF para copiar e colar:
# 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>
Esta é uma coleção de links úteis de Esteganografia:
Os seguintes arquivos de mídia de exemplo estão incluídos neste repositório:
| Ferramenta | Descrição | Como usar |
|---|
| file | Descubra que tipo de arquivo você tem | file stego.jpg |
| exiftool | Confira os metadados de arquivos de mídia | exiftool stego.jpg |
| binwalk | Confira se outros arquivos estão embutidos/anexados | binwalk stego.jpg |
| strings | Confira se há caracteres legíveis interessantes no arquivo | strings stego.jpg |
| foremost | Extrair arquivos embutidos/anexados | foremost stego.jpg |
| pngcheck | Obter detalhes sobre um arquivo PNG (ou descobrir se é realmente outra coisa) | pngcheck stego.png |
| identify | Ferramenta GraphicMagick para verificar que tipo de imagem é um arquivo. Também verifica se a imagem está corrompida. | identify -verbose stego.jpg |
| ffmpeg | ffmpeg pode ser usado para verificar a integridade de arquivos de áudio e deixá-lo relatar informações e erros | ffmpeg -v info -i stego.mp3 -f null - para recodificar o arquivo e descartar o resultado |
| 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 as salva em um diretório, força bruta LSB, ... | stegoveritas.py stego.jpg para executar todas as verificações |
| zsteg | Imagens (PNG, BMP) | Detecta vários LSB stego, também openstego e a ferramenta Camouflage | 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, ...). Confira man stegdetect para detalhes. | stegdetect stego.jpg |
| stegbreak | Imagens (JPG) | Quebrador de força bruta para imagens JPG. Alega que pode quebrar outguess, jphide e jsteg. | stegbreak -t o -f wordlist.txt stego.jpg, use -t o para outguess, -t p para jphide ou -t j para jsteg |
| Ferramenta | Tipos de arquivo | Descrição | Como ocultar | Como recuperar |
|---|
| AudioStego | Áudio (MP3 / WAV) | Detalhes sobre como funciona 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 | Imagem (JPG) | Ferramenta bastante antiga da aqui. Aqui, a versão da aqui está instalada, pois a original travava o tempo todo. Ela solicita uma frase secreta interativamente! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | Imagem (JPG) | Ferramenta LSB stego. Não criptografa a mensagem. | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | Áudio (MP3) | Programa antigo. Criptografa e depois oculta uma mensagem (criptografia 3DES!). Ferramenta Windows rodando no Wine. Requer entrada WAV (pode gerar erros para certos arquivos WAV. O que funciona para mim é, por exemplo: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Importante: use apenas 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 | Imagens (PNG) | Vários algoritmos LSB stego (confira 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: antiga=outguess-0.13 retirada da aqui e nova=outguess dos repositórios de pacotes. Para recuperar, você deve usar a versão usada para ocultar. | outguess -k password -d secret.txt cover.jpg stego.jpg | outguess -r -k password stego.jpg output.txt |
| spectrology | Áudio (WAV) | Codifica uma imagem no espectrograma de um arquivo de áudio. | TODO | Use a ferramenta GUI sonic-visualiser |
| stegano | Imagens (PNG) | Oculta dados com vários métodos (baseados em LSB). Também fornece 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 criptografar e ocultar 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) | Ferramenta LSB stego 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 compactados | Ferramentas LSB simples com código Python muito bom e legível | LSBSteg encode -i cover.png -o stego.png -f secret.txt | LSBSteg decode -i stego.png -o output.txt |
| f5 | Imagens (JPG) | Algoritmo Esteganográfico F5 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 |
| stegpy | Imagens (PNG, GIF, BMP, WebP) e Áudio (WAV) | Programa simples de esteganografia baseado no método LSB | stegpy secret.jpg cover.png | stegpy _cover.png |
| Ferramenta | Tipos de arquivo | Descrição | Como iniciar |
|---|
| Steg | Imagens (JPG, TIFF, PNG, BMP) | Lida com muitos tipos de arquivo e implementa diferentes métodos | steg |
| Steganabara (O link original está quebrado) | Imagens (???) | Transforme imagens interativamente até encontrar algo | steganabara |
| Stegsolve | Imagens (???) | Transforme imagens interativamente, visualize esquemas de cores separadamente, ... | stegsolve |
| SonicVisualiser | Áudio (???) | Visualização de arquivos de áudio em forma de onda, exibição de espectrogramas, ... | sonic-visualiser |
| Stegosuite | Imagens (JPG, GIF, BMP) | Pode criptografar e ocultar dados em imagens. Ativamente desenvolvido. | stegosuite |
| OpenPuff | Imagens, Áudio, Vídeo (muitos formatos) | Ferramenta sofisticada com longa história. Ainda mantida. Ferramenta Windows rodando no wine. | openpuff |
| DeepSound | Áudio (MP3, WAV) | Ferramenta de áudio estego confiável pelo próprio Mr. Robot. Ferramenta Windows rodando no wine (muito hacky, requer VNC e roda em área de trabalho virtual, MP3 quebrado devido a DLL ausente!) | deepsound apenas em sessão VNC |
| cloackedpixel-analyse | Imagens (PNG) | Visualização LSB stego para PNGs - use para detectar valores LSB suspeitamente aleatórios em imagens (valores próximos a 0.5 podem indicar que dados criptografados estão embutidos) | cloackedpixel-analyse image.png |