
Collezione di strumenti di steganografia - aiuta con le sfide CTF
Questo progetto è un'immagine Docker utile per risolvere sfide di Steganografia come quelle che puoi trovare su piattaforme CTF come hackthebox.eu.
L'immagine viene fornita pre-installata con molti strumenti popolari (vedi elenco sotto) e diversi script di screening che puoi usare per controllare cose semplici (ad esempio, esegui check_jpg.sh image.jpg per ottenere un report per un file JPG).
Prima assicurati di avere Docker installato (come).
Poi puoi usare gli script shell bin/build.sh e bin/run.sh in questo repository per costruire l'immagine ed eseguire il contenitore.
Verrai portato in una shell bash all'interno del contenitore.
Avrà la cartella data montata, nella quale puoi mettere i file da analizzare.
Se non usi gli script, segui questi passaggi:
docker build -t <nome_immagine> .) o scarica da Docker Hub (docker pull dominicbreuker/stego-toolkit)/data (docker run -it <nome_immagine> -v /cartella/locale/con/dati:/data /bin/bash)check_jpg.sh image.jpg per creare un report rapido, oppure brute_jpg.sh image.jpg wordlist.txt per provare ad estrarre dati nascosti con vari strumenti e passwordstart_ssh.sh e connettiti al tuo contenitore con X11 forwardingstart_vnc.sh e connettiti al desktop del contenitore tramite browserDai un'occhiata alle seguenti sezioni per maggiori informazioni:
Inizia con docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.
Verrai portato in una shell del contenitore nella directory di lavoro /data.
La tua cartella host $(pwd)/data verrà montata e le immagini all'interno saranno accessibili.

Molti strumenti diversi per Linux e Windows sono installati. Gli strumenti Windows sono supportati con Wine. Alcuni strumenti possono essere usati da riga di comando mentre altri richiedono supporto GUI!
Questi strumenti possono essere usati da riga di comando. Tutto ciò che devi fare è avviare un contenitore e montare i file di steganografia che vuoi controllare.
Strumenti da eseguire all'inizio. Ti permettono di avere un'idea generale di ciò con cui hai a che fare.
Strumenti progettati per rilevare steganografia nei file. Principalmente eseguono test statistici. Riveleranno messaggi nascosti solo in casi semplici. Tuttavia, possono fornire indizi su cosa cercare se trovano irregolarità interessanti.
Strumenti che puoi usare per nascondere messaggi e recuperarli successivamente. Alcuni cifrano i messaggi prima di nasconderli. Se lo fanno, richiedono una password. Se hai un'idea di che tipo di strumento è stato usato o quale password potrebbe essere giusta, prova questi strumenti. Alcuni strumenti sono supportati dagli script di brute force disponibili in questa immagine Docker.
Tutti gli strumenti seguenti hanno interfacce utente grafiche e non possono essere usati tramite riga di comando. Per eseguirli, devi rendere disponibile un server X11 all'interno del contenitore. Due modi sono supportati:
start_ssh.sh per avviare un server SSH. Connettiti successivamente con X11 forwarding. Richiede un server X11 sul tuo host!start_vnc.sh per avviare un server VNC + client. Connettiti successivamente con il tuo browser alla porta 6901 e ottieni un desktop Xfce. Nessuna dipendenza dall'host!In alternativa, trova altri modi per rendere disponibile X11 all'interno del contenitore. Molti modi diversi sono possibili (ad esempio, montare socket UNIX).
Molti strumenti sopra non richiedono interazione con una GUI. Pertanto, puoi facilmente automatizzare alcuni flussi di lavoro per eseguire uno screening di base di file che potrebbero contenere messaggi nascosti. Poiché gli strumenti applicabili differiscono per tipo di file, ogni tipo di file ha script diversi.
Per ogni tipo di file, ci sono due tipi di script:
XXX_check.sh <file-stego>: esegue strumenti di screening di base e crea un report (+ eventualmente una directory con report in file)XXX_brute.sh <file-stego> <wordlist>: tenta di estrarre un messaggio nascosto da un file stego con vari strumenti usando una wordlist (cewl, john e crunch sono installati per generare liste - tienile piccole).I seguenti tipi di file sono supportati:
check_jpg.sh e brute_jpg.sh (brute esegue steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)check_png.sh e brute_png.sh (brute esegue openstego e stegoveritas.py -bruteLSB)Gli script di brute forcing sopra necessitano di wordlist. IMHO molto probabilmente non aiuterà usare enormi wordlist 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 potrebbe essere la password ma non la sai esattamente.
Per questi casi, sono inclusi diversi strumenti per generare wordlist:
john per creare molte varianti. Usa john -wordlist:/percorso/della/tua/wordlist -rules:Single -stdout > /percorso/wordlist_espansa per applicare regole estese (~x1000) e john -wordlist:/percorso/della/tua/wordlist -rules:Wordlist -stdout > /percorso/wordlist_espansa per un set di regole ridotto (~x50).crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 genererà le 26 * 26 = 676 password aa1984, ab1984, ... fino a zz1984. Il formato è crunch <min-lunghezza> <max-lunghezza> <charset> <opzioni> e abbiamo usato l'opzione di template. Dai un'occhiata a less /usr/share/crunch/charset.lst per vedere i set di caratteri forniti con crunch.cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump se sospetti che una foto di Donald Trump contenga un messaggio nascosto cifrato. Il comando esamina il sito ed estrae stringhe di almeno 8 caratteri.L'immagine contiene un'immagine di esempio e un file audio ciascuno in formati diversi:
/examples/ORIGINAL.jpg/examples/ORIGINAL.png/examples/ORIGINAL.mp3/examples/ORIGINAL.wavContiene anche uno script /examples/create_examples.sh che puoi eseguire per incorporare un messaggio nascosto ("This is a very secret message!") in questi file con molti metodi diversi.
Dopo aver eseguito questo script, trovi 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.
Per impostazione predefinita, nessuno strumento GUI può essere eseguito in un contenitore Docker poiché non è disponibile alcun server X11. Per eseguirli, devi cambiare questa situazione. Ciò che è necessario fare dipende dalla tua macchina host. Se:
brew install Xquartz)Usa X11 forwarding tramite SSH se vuoi procedere in questo modo.
Esegui start_ssh all'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 include un server TigerVNC e un client noVNC.
Puoi usarlo per aprire una sessione VNC HTML5 con il tuo browser per connetterti al desktop Xfce del contenitore.
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 su localhost:6901/?password=<la_password> (lo script stampa la password).

Comandi nel GIF per copia e incolla:
# 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

Comandi nel GIF per copia e incolla:
# 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>
Questa è una raccolta di link utili sulla Steganografia:
I seguenti file multimediali di esempio sono inclusi in questo repository:
| Strumento | Descrizione | Come usare |
|---|
| file | Scopri 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/aggiunti | binwalk stego.jpg |
| strings | Controlla se ci sono caratteri leggibili interessanti nel file | strings stego.jpg |
| foremost | Estrai file incorporati/aggiunti | foremost stego.jpg |
| pngcheck | Ottieni dettagli su un file PNG (o scopri se in realtà è qualcos'altro) | pngcheck stego.png |
| identify | Strumento 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 far riportare informazioni ed errori | ffmpeg -v info -i stego.mp3 -f null - per ricodificare il file e scartare il risultato |
| Strumento | Tipi di file | Descrizione | Come usare |
|---|
| stegoVeritas | Immagini (JPG, PNG, GIF, TIFF, BMP) | Una vasta gamma di controlli semplici e avanzati. Dai un'occhiata a stegoveritas.py -h. Controlla i metadati, crea molte immagini trasformate e le salva in una directory, Brute force LSB, ... | stegoveritas.py stego.jpg per eseguire tutti i controlli |
| zsteg | Immagini (PNG, BMP) | Rileva vari LSB stego, anche openstego e il Camouflage tool | zsteg -a stego.jpg per eseguire tutti i controlli |
| stegdetect | Immagini (JPG) | Esegue test statistici per determinare se è stato usato uno strumento stego (jsteg, outguess, jphide, ...). Dai un'occhiata a man stegdetect per dettagli. | stegdetect stego.jpg |
| stegbreak | Immagini (JPG) | Cracker brute force per immagini JPG. Afferma di poter 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 |
| Strumento | 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) | Strumento piuttosto vecchio da qui. Qui è installata la versione da qui poiché quella originale si bloccava continuamente. Richiede una passphrase in modo interattivo! | jphide cover.jpg stego.jpg secret.txt | jpseek stego.jpg output.txt |
| jsteg | Immagine (JPG) | Strumento LSB stego. Non cifra il messaggio. | jsteg hide cover.jpg secret.txt stego.jpg | jsteg reveal cover.jpg output.txt |
| mp3stego | Audio (MP3) | Vecchio programma. Cifra e poi nasconde un messaggio (cifratura 3DES!). Strumento Windows eseguito in Wine. Richiede input WAV (può generare errori per alcuni file WAV. cosa funziona per me è ad esempio: ffmpeg -i audio.mp3 -flags bitexact audio.wav). Importante: usa solo percorsi assoluti! | mp3stego-encode -E secret.txt -P password /percorso/assoluto/cover.wav /percorso/assoluto/stego.mp3 | mp3stego-decode -X -P password /percorso/assoluto/stego.mp3 /percorso/assoluto/out.pcm /percorso/assoluto/out.txt |
| openstego | Immagini (PNG) | Vari algoritmi LSB stego (dai un'occhiata a 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 -xf per creare file con il nome originale!) |
| outguess | Immagini (JPG) | Usa "bit ridondanti" per nascondere dati. Esiste in due versioni: vecchio=outguess-0.13 preso da qui e nuovo=outguess dai repository di pacchetti. Per recuperare, devi usare quello usato 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 | Usa 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 cifrare 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) | Strumento LSB stego 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 |
| Strumento | Tipi di file | Descrizione | Come avviare |
|---|
| Steg | Immagini (JPG, TIFF, PNG, BMP) | Gestisce molti tipi di file e implementa diversi metodi | steg |
| Steganabara (Il link originale è rotto) | Immagini (???) | Trasforma immagini in modo interattivo finché non trovi qualcosa | steganabara |
| Stegsolve | Immagini (???) | Trasforma immagini in modo interattivo, visualizza schemi di colore separatamente, ... | stegsolve |
| SonicVisualiser | Audio (???) | Visualizzazione di file audio in forma d'onda, visualizza spettrogrammi, ... | sonic-visualiser |
| Stegosuite | Immagini (JPG, GIF, BMP) | Può cifrare e nascondere dati nelle immagini. Sviluppato attivamente. | stegosuite |
| OpenPuff | Immagini, Audio, Video (molti formati) | Strumento sofisticato con lunga storia. Ancora mantenuto. Strumento Windows eseguito in wine. | openpuff |
| DeepSound | Audio (MP3, WAV) | Strumento audio stego di cui si fida Mr. Robot in persona. Strumento Windows eseguito in wine (molto instabile, richiede VNC e viene eseguito in desktop virtuale, MP3 rotto a causa di DLL mancante!) | deepsound solo in sessione VNC |
| cloackedpixel-analyse | Immagini (PNG) | Visualizzazione LSB stego per PNG - usalo per rilevare valori LSB sospettosamente casuali nelle immagini (valori vicini a 0.5 possono indicare che dati cifrati sono incorporati) | cloackedpixel-analyse image.png |