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).
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.
- Build image (
docker build -t <image_name> .
) ou puxe a partir do hub do Docker (docker pull dominicbreuker/stego-toolkit
) - Inicie um container com seus arquivos montados na pasta
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - 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 executebrute_jpg.sh image.jpg wordlist.txt
para tentar extrair dados escondidos com várias ferramentas e palavras-passe - 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.
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
ecrunch
são instalados para gerar listas – mantenha-as pequenas).
Os seguintes tipos de ficheiro são suportados:
- JPG:
check_jpg.h
ebrute_jpg.sh
(executado em brutosteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
ebrute_png.sh
(correndo o brutoopenstego
estegoveritas.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. Usejohn -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. Confiraless /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
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
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