DominicBreuker / stego-toolkit

Questo progetto è un’immagine Docker utile per risolvere sfide di steganografia come quelle che puoi trovare su piattaforme CTF come hackthebox.eu.L’immagine è preinstallata con molti strumenti popolari (vedi lista sotto) e diversi script di screening che puoi usare per controllare cose semplici (per esempio, esegui check_jpg.sh image.jpg per ottenere un rapporto per un file JPG).

Stato di costruzione di Docker

Hack The Box

Uso

Prima assicurati di avere Docker installato (come fare).Poi puoi usare gli script di shell bin/build.sh e bin/run.sh in questo repo per costruire l’immagine ed eseguire il contenitore. sarai portato in una shell bash all’interno del contenitore, che avrà la cartella data montata, nella quale puoi mettere i file da analizzare.

Se non usi gli script, segui questi passi:

  1. Costruisci l’immagine (docker build -t <image_name> .) o estrai dal Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. Avvia un contenitore con i tuoi file montati nella cartella /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Usa gli strumenti CLI e gli script di screening sui tuoi file: es, esegui check_jpg.sh image.jpg per creare un rapporto veloce, o esegui brute_jpg.sh image.jpg wordlist.txt per provare ad estrarre dati nascosti con vari strumenti e password
  4. Se vuoi eseguire strumenti GUI usa uno di questi due modi:
  • Esegui start_ssh.sh e connettiti al tuo contenitore con X11 forwarding
  • Esegui start_vnc.sh e connettiti al Desktop del contenitore attraverso il tuo browser

Guarda le seguenti sezioni per maggiori informazioni:

  • Quali strumenti sono installati? Vai qui
  • Quali script posso eseguire per schermare rapidamente i file automaticamente o forzarli? Vai qui
  • Come posso giocare con diversi esempi di steganografia per vedere se posso violarli? Vai qui
  • Come posso eseguire strumenti GUI all’interno del contenitore? vai qui

Demo

Inizia con docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.Verrai portato in una shell del contenitore nella cartella di lavoro /data.La tua cartella host $(pwd)/data sarà montata e le immagini all’interno saranno accessibili.

gif demo animate

Strumenti

Molti strumenti diversi per Linux e Windows sono installati.Alcuni strumenti possono essere usati dalla linea di comando mentre altri richiedono il supporto della GUI!

Strumenti con interfaccia a linea di comando

Questi strumenti possono essere usati dalla linea di comando.Tutto quello che devi fare è avviare un contenitore e montare i file di steganografia che vuoi controllare.

Strumenti di screening generale

Strumenti da eseguire all’inizio.Ti permettono di avere un’idea generale di ciò che stai affrontando.

Tool Descrizione Come usare
file Verifica che tipo di file hai file stego.jpg
exiftool Controlla i metadati dei file multimediali exiftool stego.jpg
binwalk Controlla se altri file sono incorporati/applicati binwalk stego.jpg
strings Controlla se ci sono caratteri leggibili interessanti nel file strings stego.jpg
precedente Taglia fuori i file incorporati/applicati foremost stego.jpg
pngcheck Ottieni dettagli su un file PNG (o scopri che è in realtà qualcos’altro) pngcheck stego.png
identify Strumento di GraphicMagick per controllare che tipo di immagine è un file. Controlla anche se l’immagine è corrotta. identify -verbose stego.jpg
ffmpeg ffmpeg può essere usato per controllare l’integrità dei file audio e fargli riportare informazioni ed errori ffmpeg -v info -i stego.mp3 -f null - ricodificare il file e buttare via il risultato

Strumenti per rilevare la steganografia

Strumenti progettati per rilevare la steganografia nei file.Per lo più eseguono test statistici.Rivelano messaggi nascosti solo in casi semplici, ma possono fornire suggerimenti su cosa cercare se trovano irregolarità interessanti.

Tool Tipi di file Descrizione Come usare
stegoVeritas Immagini (JPG, PNG, GIF, TIFF, BMP) Un’ampia varietà di controlli semplici e avanzati. Controlla stegoveritas.py -h. Controlla i metadati, crea molte immagini trasformate e le salva in una directory, Forza bruta LSB, … stegoveritas.py stego.jpg per eseguire tutti i controlli
zsteg Immagini (PNG, BMP) rileva vari stego LSB, anche openstego e lo strumento Camouflage zsteg -a stego.jpg per eseguire tutti i controlli
stegdetect Immagini (JPG) Esegue test statistici per trovare se è stato usato uno strumento stego (jsteg, outguess, jphide, …). Controlla man stegdetect per i dettagli. stegdetect stego.jpg
stegbreak Images (JPG) Brute force cracker per immagini JPG. Afferma che può craccare outguess, jphide e jsteg. stegbreak -t o -f wordlist.txt stego.jpg, usa -t o per outguess, -t p per jphide o -t j per jsteg

Strumenti per fare steganografia

Strumenti che puoi usare per nascondere messaggi e rivelarli dopo.Alcuni criptano i messaggi prima di nasconderli; se lo fanno, richiedono una password; se hai un indizio su che tipo di strumento è stato usato o quale password potrebbe essere giusta, prova questi strumenti.Alcuni strumenti sono supportati dagli script di forza bruta disponibili in questa immagine Docker.

Tool Tipi di file Descrizione Come nascondere Come recuperare
AudioStego Audio (MP3 / WAV) I dettagli su come funziona sono in questo post del blog hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Immagine (JPG) Pretty old tool from here. Qui, la versione da qui è installata da quando quella originale si è bloccata per tutto il tempo. Chiede una passphrase in modo interattivo! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Image (JPG) Strumento stegoLSB. Non cripta il messaggio. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) Vecchio programma. Crittografa e poi nasconde un messaggio (crittografia 3DES!). Strumento per Windows che gira in Wine. Richiede input WAV (può dare errori per certi file WAV. quello che funziona per me è ad esempio: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Importante: usa solo il percorso assoluto! 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 Immagini (PNG) Vari algoritmi stego LSB (controlla questo blog). Ancora mantenuto. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (lascia fuori -xf per creare file con nome originale!)
outguess Images (JPG) Usa “bit ridondanti” per nascondere dati. Esiste in due versioni: old=outguess-0.13 presa da qui e new=outguess dai repo del pacchetto. Per recuperare, devi usare quella usata per nascondere. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrology Audio (WAV) Codifica un’immagine nello spettrogramma di un file audio. TODO Utilizza lo strumento GUI sonic-visualiser
stegano Immagini (PNG) Nasconde dati con vari metodi (basati su LSB). Fornisce anche alcuni strumenti di screening. 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 per vari generatori (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt o stegano-red reveal -i stego.png o stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Immagini (JPG, BMP) e Audio (WAV, AU) Strumento versatile e maturo per criptare e nascondere dati. 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 Immagini (PNG) LSB stego strumento per immagini cloackedpixel hide cover.jpg secret.txt password crea cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg Immagini (PNG, BMP, …) in formati non compressi Semplici strumenti LSB con codice Python molto bello e leggibile LSBSteg encode -i cover.png -o stego.png -f secret.txt LSBSteg decode -i stego.png -o output.txt
f5 Immagini (JPG) Algoritmo steganografico F5 con informazioni dettagliate sul processo f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' f5 -t x -i stego.jpg 1> output.txt
stegpy Immagini (PNG, GIF, BMP, WebP) e Audio (WAV) Programma di steganografia semplice basato sul metodo LSB stegpy secret.jpg cover.png stegpy _cover.png

Strumenti GUI di steganografia

Tutti gli strumenti sottostanti hanno un’interfaccia grafica e non possono essere usati attraverso la riga di comando.Per eseguirli, devi rendere disponibile un server X11 all’interno del contenitore. Sono supportati due modi:

  • esegui start_ssh.sh per avviare un server SSH. Connettersi in seguito con l’inoltro X11. Richiede un server X11 sul tuo host!
  • run start_vnc.sh per avviare un server VNC + client. Collegati poi con il tuo browser alla porta 6901 e otterrai un desktop Xfce. Nessuna dipendenza dall’host!

In alternativa, trova altri modi per rendere X11 disponibile all’interno del contenitore.Molti modi diversi sono possibili (ad es, montare socket UNIX).

Tool Tipi di file Descrizione Come iniziare
Steg Immagini (JPG, TIFF, PNG, BMP) Gestisce molti tipi di file e implementa diversi metodi steg
Steganabara (Il link originale è rotto) Immagini (???) Trasforma in modo interattivo le immagini fino a trovare qualcosa steganabara
Stegsolve Immagini (???) Trasforma in modo interattivo le immagini, visualizza schemi di colore separatamente, … stegsolve
SonicVisualiser Audio (???) Visualizzare file audio in forma d’onda, visualizzare spettrogrammi, … sonic-visualiser
Stegosuite Immagini (JPG, GIF, BMP) Può criptare e nascondere dati nelle immagini. Sviluppato attivamente. stegosuite
OpenPuff Immagini, Audio, Video (molti formati) Strumento sofisticato con lunga storia. Ancora mantenuto. Strumento per Windows che gira in wine. openpuff
DeepSound Audio (MP3, WAV) Strumento di stego audio di cui Mr. Strumento per Windows che gira in wine (molto hacky, richiede VNC e gira nel desktop virtuale, MP3 rotto a causa di una DLL mancante!) deepsound solo in sessione VNC
cloackedpixel-analyse Immagini (PNG) visualizzazione stegoLSB per PNG – usalo per rilevare valori LSB sospettosamente casuali nelle immagini (valori vicini a 0..5 possono indicare che i dati criptati sono incorporati) cloackedpixel-analyse image.png

Script di screening

Molti strumenti di cui sopra non richiedono interazione con una GUI.Pertanto, è possibile automatizzare facilmente alcuni flussi di lavoro per fare uno screening di base dei file potenzialmente contenenti messaggi nascosti.Poiché gli strumenti applicabili differiscono per tipo di file, ogni tipo di file ha diversi script.

Per ogni tipo di file, ci sono due tipi di script:

  • XXX_check.sh <stego-file>: esegue gli strumenti di screening di base e crea un rapporto (+ eventualmente una directory con i rapporti nei file)
  • XXX_brute.sh <stego-file> <wordlist>: cerca di estrarre un messaggio nascosto da un file stego con vari strumenti usando una lista di parole (cewl, john e crunch sono installati per generare liste – tienile piccole).

Sono supportati i seguenti tipi di file:

  • JPG: check_jpg.h e brute_jpg.sh (brute running steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h e brute_png.sh (esecuzione brute openstego e stegoveritas.py -bruteLSB)

Generazione di liste di parole

Gli script di forzatura brute sopra hanno bisogno di liste di parole.Imho molto probabilmente non sarà d’aiuto usare enormi elenchi di parole standard come rockyou.Gli script sono troppo lenti per questo e le sfide stego sembrano non essere progettate per questo.Uno scenario più probabile è che tu abbia un’idea di quale possa essere la password ma non lo sai esattamente.

Per questi casi, sono inclusi diversi strumenti per generare elenchi di parole:

  • john: la versione potenziata dalla comunità di John the Ripper può espandere i tuoi elenchi di parole. Crea una wordlist di base con alcune password candidate e usa john per crearne molte varianti. Usa john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist per applicare regole estese (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist per un set di regole ridotto (~x50).
  • crunch: può generare piccole wordlist se hai un modello in mente. Per esempio, se sai che la password finisce con 1984 ed è lunga 6 lettere, usa crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 genererà le 26 * 26 = 676 password aa1984, ab1984, … fino a zz1984. Il formato è crunch <min-length> <max-length> <charset> <options> e abbiamo usato l’opzione templating. Controlla less /usr/share/crunch/charset.lst per vedere i set di caratteri con cui crunch viene fornito.
  • CeWL: può generare elenchi di parole se sai che un sito web è collegato a una password. Per esempio, esegui cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump se sospetti che una foto di Donald Trump contenga un messaggio criptato nascosto. Il comando raschia il sito ed estrae le stringhe lunghe almeno 8 caratteri.

Esempi di steganografia

L’immagine contiene un’immagine campione e un file audio in diversi formati:

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

Contiene anche uno script /examples/create_examples.sh che puoi eseguire per inserire un messaggio nascosto (“Questo è un messaggio molto segreto!”Dopo aver eseguito questo script, troverai questi file in /examples/stego-files con i loro nomi che indicano quale strumento è stato usato per incorporare il messaggio.Puoi eseguire gli script di screening per vedere se trovano qualcosa su di essi o provare a romperli altrimenti.

GUI e contenitori

Per impostazione predefinita, nessuno strumento GUI può essere eseguito in un contenitore Docker poiché non è disponibile un server X11.Per eseguirli, devi cambiare questo.Ciò che è necessario per farlo dipende dalla tua macchina host.Se:

  • esegui su Linux, probabilmente hai X11
  • esegui su Mac OS, hai bisogno di Xquartz (brew install Xquartz)
  • esegui su Windows, hai un problema

Usa l’inoltro di X11 attraverso SSH se vuoi andare in questo modo. Esegui start_sshall’interno del contenitore per avviare il server, assicurati di esporre la porta 22 quando avvii il contenitore: docker run -p 127.0.0.1:22:22 ..., poi usa ssh -X ... quando ti connetti (lo script stampa la password).

Per non dipendere da X11, l’immagine viene fornita con un server TigerVNC e un client noVNC, che puoi usare per aprire una sessione VNC HTML5 con il tuo browser per connetterti al desktop Xfce del container. Per farlo, esegui start_vnc.sh all’interno del contenitore per avviare server e client, assicurati di esporre la porta 6901 quando avvii il contenitore docker run -p 127.0.0.1:6901:6901 ... e vai a localhost:6901/?password=<the_password> (lo script stampa la password).

Usando SSH con inoltro X11

gif demo animata - SSH + X11

Comandi nella GIF per copia &incolla:

# 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

Utilizzando Browser e VNC

Gif dimostrativa animata - Browser + VNC

Comandi nella GIF per copiare &incollare:

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

Raccolta di link

Questa è una raccolta di link utili alla steganografia:

  • Devi essere capace di individuare i codici. Guardate questo cheat sheet di Eric Harshbarger, che contiene molti codici diversi.
  • Cheat sheet che descrive i flussi di lavoro, le cose da cercare e gli strumenti comuni: click
  • Guida CTF forense con molte idee per le sfide stego: click
  • Descrizioni dei formati dei file come bellissimi poster: click

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.