Acest proiect este o imagine Docker utilă pentru rezolvarea provocărilor de steganografie precum cele pe care le puteți găsi pe platformele CTF precum hackthebox.eu.Imaginea vine preinstalată cu multe instrumente populare (vezi lista de mai jos) și câteva scripturi de screening pe care le puteți folosi pentru a verifica lucruri simple (de exemplu, rulați check_jpg.sh image.jpg
pentru a obține un raport pentru un fișier JPG).
Utilizare
În primul rând asigurați-vă că aveți Docker instalat (how to).Apoi puteți folosi scripturile shell bin/build.sh
și bin/run.sh
din acest repo pentru a construi imaginea și a rula containerul. veți fi aruncat într-un shell bash în interiorul containerului. acesta va avea montat folderul data
, în care puteți pune fișierele de analizat.
Dacă nu folosiți scripturile, urmați acești pași:
- Constituiți imaginea (
docker build -t <image_name> .
) sau trageți-o din hub-ul Docker (docker pull dominicbreuker/stego-toolkit
) - Porniți un container cu fișierele dvs. montate în folderul
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - Utilizați instrumentele CLI și scripturile de analiză pe fișierele dvs, rulați
check_jpg.sh image.jpg
pentru a crea un raport rapid, sau rulațibrute_jpg.sh image.jpg wordlist.txt
pentru a încerca să extrageți date ascunse cu diverse instrumente și parole - Dacă doriți să rulați instrumente GUI, utilizați una dintre aceste două modalități:
- Executați
start_ssh.sh
și conectați-vă la containerul dvs. cu X11 forwarding - Executați
start_vnc.sh
și conectați-vă la desktop-ul containerului prin browser
Verificați următoarele secțiuni pentru mai multe informații:
- Ce instrumente sunt instalate? Mergeți aici
- Ce scripturi pot rula pentru a ecrana rapid fișierele în mod automat sau pentru a le forța în mod brutal? Mergeți aici
- Cum mă pot juca cu diferite exemple de steganografie pentru a vedea dacă le pot sparge? Du-te aici
- Cum pot rula instrumente GUI în interiorul containerului? du-te aici
Demo
Începeți cu docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash
.Veți fi aruncat într-un shell container în directorul de lucru /data
.Dosarul gazdă $(pwd)/data
va fi montat și imaginile din interior vor fi accesibile.
Instrumente
Sunt instalate multe instrumente diferite pentru Linux și Windows. instrumentele Windows sunt suportate cu Wine.Unele instrumente pot fi utilizate în linie de comandă, în timp ce altele necesită suport GUI!
Instrumente de interfață în linie de comandă
Aceste instrumente pot fi utilizate în linie de comandă.Tot ce trebuie să faceți este să porniți un container și să montați fișierele de steganografie pe care doriți să le verificați.
Instrumente generale de screening
Instrumente de rulat la început.Vă permit să vă faceți o idee generală despre ceea ce aveți de-a face.
instrument | Descriere | Cum se utilizează |
---|---|---|
fișier | Verificați ce fel de fișier aveți | file stego.jpg |
exiftool | Verificați metadatele fișierelor media | exiftool stego.jpg |
binwalk | Verificați dacă alte fișiere sunt încorporate/anexate | binwalk stego.jpg |
strings | Verificați dacă există caractere lizibile interesante în fișier | strings stego.jpg |
foremost | Excludeți fișierele încorporate/aplicate | foremost stego.jpg |
pngcheck | Obțineți detalii despre un fișier PNG (sau aflați că este de fapt altceva) | pngcheck stego.png |
identify | Instrument GraphicMagick pentru a verifica ce fel de imagine este un fișier. Verifică, de asemenea, dacă imaginea este coruptă. | identify -verbose stego.jpg |
ffmpeg | ffmpeg poate fi folosit pentru a verifica integritatea fișierelor audio și îl lasă să raporteze informații și erori | ffmpeg -v info -i stego.mp3 -f null - . să recodifice fișierul și să arunce rezultatul |
Instrumente de detectare a steganografiei
Instrumente concepute pentru a detecta steganografia în fișiere.În cea mai mare parte efectuează teste statistice.Ele vor dezvălui mesajele ascunse doar în cazuri simple. cu toate acestea, ele pot oferi indicii despre ce să caute dacă găsesc nereguli interesante.
Instrument | Tipuri de fișiere | Descriere | Cum se utilizează |
---|---|---|---|
stegoVeritas | Imagini (JPG, PNG, GIF, TIFF, BMP) | O mare varietate de verificări simple și avansate. Consultați stegoveritas.py -h . Verifică metadatele, creează multe imagini transformate și le salvează într-un director, Brute forces LSB, … |
stegoveritas.py stego.jpg pentru a rula toate verificările |
zsteg | Imagini (PNG, BMP) | Detectează diverse LSB stego, de asemenea, openstego și instrumentul Camouflage | zsteg -a stego.jpg pentru a efectua toate verificările |
stegdetect | Imagini (JPG) | Realizează teste statistice pentru a afla dacă a fost folosit un instrument stego (jsteg, outguess, jphide, …). Consultați man stegdetect pentru detalii. |
stegdetect stego.jpg |
stegbreak | Imagini (JPG) | Brute force cracker pentru imagini JPG. Pretinde că poate sparge outguess , jphide și jsteg . |
stegbreak -t o -f wordlist.txt stego.jpg , folosiți -t o pentru outguess, -t p pentru jphide sau -t j pentru jsteg |
Instrumente care fac efectiv steganografie
Instrumente pe care le puteți folosi pentru a ascunde mesaje și a le dezvălui ulterior.Unele criptează mesajele înainte de a le ascunde. dacă o fac, au nevoie de o parolă. dacă aveți un indiciu despre ce fel de instrument a fost folosit sau ce parolă ar putea fi corectă, încercați aceste instrumente.Unele instrumente sunt suportate de scripturile de forță brută disponibile în această imagine Docker.
Instrument | Tipuri de fișiere | Descriere | Cum se ascunde | Cum se recuperează | |
---|---|---|---|---|---|
AudioStego | Audio (MP3 / WAV) | Detalii despre cum funcționează sunt în această postare pe blog | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 |
hideme stego.mp3 -f && cat output.txt |
|
jphide/jpseek | Imagine (JPG) | Un instrument destul de vechi de aici. Aici este instalată versiunea de aici, deoarece cea originală se bloca tot timpul. Solicită o frază de acces în mod interactiv! | jphide cover.jpg stego.jpg secret.txt |
jpseek stego.jpg output.txt |
|
jsteg | Imagine (JPG) | Strument stego LSB. Nu criptează mesajul. | jsteg hide cover.jpg secret.txt stego.jpg |
jsteg reveal cover.jpg output.txt |
|
mp3stego | Audio (MP3) | Program vechi. Criptează și apoi ascunde un mesaj (criptare 3DES!). Instrument pentru Windows care rulează în Wine. Necesită intrare WAV (poate da erori pentru anumite fișiere WAV. ceea ce funcționează pentru mine este de exemplu: ffmpeg -i audio.mp3 -flags bitexact audio.wav ). Important: folosiți doar calea absolută! |
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 | Imagini (PNG) | Diferiți algoritmi LSB stego (verificați acest blog). Încă întreținut. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png |
openstego extract -sf openstego.png -p abcd -xf output.txt (omiteți -xf pentru a crea fișierul cu numele original!) |
|
outguess | Imagini (JPG) | Utilizează „biți redundanți” pentru a ascunde datele. Vine în două versiuni: old=outguess-0.13 preluat de aici și new=outguess din depozitele de pachete. Pentru a recupera, trebuie să o folosiți pe cea folosită pentru ascundere. |
outguess -k password -d secret.txt cover.jpg stego.jpg |
outguess -r -k password stego.jpg output.txt |
|
spectrologie | Audio (WAV) | Încodează o imagine în spectrograma unui fișier audio. | TODO |
Utilizați instrumentul GUI sonic-visualiser |
|
stegano | Imagini (PNG) | Ascunde datele cu diferite metode (bazate pe LSB). Oferă, de asemenea, unele instrumente de screening. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png sau stegano-red hide --input cover.png -m "secret msg" --output stego.png sau stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png pentru diverși generatori (stegano-lsb-set list-generators ) |
stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt sau stegano-red reveal -i stego.png sau stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
|
Steghide | Imagini (JPG, BMP) și audio (WAV, AU) | Un instrument versatil și matur de criptare și ascundere a datelor. | 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 | Imagini (PNG) | LSB stego instrument pentru imagini | cloackedpixel hide cover.jpg secret.txt password creează cover.jpg-stego.png |
cloackedpixel extract cover.jpg-stego.png output.txt password |
|
LSBSteg | Imagini (PNG, BMP, …) în formate necomprimate | Unelte LSB simple cu cod Python foarte frumos și ușor de citit | LSBSteg encode -i cover.png -o stego.png -f secret.txt |
LSBSteg decode -i stego.png -o output.txt |
|
f5 | Imagini (JPG) | Algoritm steganografic F5 cu informații detaliate despre proces | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' |
f5 -t x -i stego.jpg 1> output.txt |
|
stegpy | Imagini (PNG, GIF, BMP, WebP) și audio (WAV) | Program simplu de steganografie bazat pe metoda LSB | stegpy secret.jpg cover.png |
stegpy _cover.png |
Instrumente GUI de steganografie
Toate instrumentele de mai jos au interfețe grafice cu utilizatorul și nu pot fi utilizate prin linia de comandă.Pentru a le rula, trebuie să puneți la dispoziție un server X11 în interiorul containerului. sunt acceptate două modalități:
- run
start_ssh.sh
pentru a porni un server SSH. Conectați-vă apoi cu redirecționarea X11. Necesită un server X11 pe gazda dumneavoastră! - run
start_vnc.sh
pentru a porni un server + client VNC. Conectați-vă după aceea cu browserul la portul 6901 și veți obține un desktop Xfce. Nu există dependențe de gazdă!
Alternativ, găsiți alte modalități de a face X11 disponibil în interiorul containerului. sunt posibile multe modalități diferite (de ex, montați socluri UNIX).
Instrument | Tipuri de fișiere | Descriere | Cum se pornește |
---|---|---|---|
Steg | Imagini (JPG, TIFF, PNG, BMP) | Gestionează multe tipuri de fișiere și implementează diferite metode | steg |
Steganabara (The original link is broken) | Imagini (???) | Transformați interactiv imagini până când găsiți ceva | steganabara |
Stegsolve | Imagini (???) | Transformați interactiv imagini, vizualizați schemele de culori separat, … | stegsolve |
SonicVisualiser | Audio (????) | Vizualizarea fișierelor audio în formă de undă, afișarea spectrogramelor, …. | sonic-visualiser |
Stegosuite | Imagini (JPG, GIF, BMP) | Puteți cripta și ascunde date în imagini. Dezvoltat în mod activ. | stegosuite |
OpenPuff | Imagini, audio, video (multe formate) | Un instrument sofisticat cu o istorie îndelungată. Încă întreținut. Instrument Windows care rulează în wine. | openpuff |
DeepSound | Audio (MP3, WAV) | Un instrument de stego audio în care are încredere însuși Mr. Robot. Instrument pentru Windows care rulează în wine (foarte hacky, necesită VNC și rulează în desktop virtual, MP3 stricat din cauza lipsei DLL!) | deepsound doar în sesiune VNC |
cloackedpixel-analyse | Imagini (PNG) | Vizualizare LSB stego pentru PNG-uri – se utilizează pentru a detecta valori LSB suspect de aleatoare în imagini (valori apropiate de 0.5 pot indica faptul că sunt încorporate date criptate) | cloackedpixel-analyse image.png |
Scripturi de screening
Multe instrumente de mai sus nu necesită interacțiunea cu o interfață grafică.Prin urmare, puteți automatiza cu ușurință unele fluxuri de lucru pentru a face o depistare de bază a fișierelor care pot conține mesaje ascunse. întrucât instrumentele aplicabile diferă în funcție de tipul de fișier, fiecare tip de fișier are scripturi diferite.
Pentru fiecare tip de fișier, există două tipuri de scripturi:
-
XXX_check.sh <stego-file>
: rulează instrumentele de screening de bază și creează un raport (+ eventual un director cu rapoarte în fișiere) -
XXX_brute.sh <stego-file> <wordlist>
: încearcă să extragă un mesaj ascuns dintr-un fișier stego cu diferite instrumente folosind o listă de cuvinte (cewl
,john
șicrunch
sunt instalate pentru a genera liste – păstrați-le mici).
Sunt acceptate următoarele tipuri de fișiere:
- JPG:
check_jpg.h
șibrute_jpg.sh
(execuție brutăsteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
șibrute_png.sh
(execuție brutăopenstego
șistegoveritas.py -bruteLSB
)
Generarea de liste de cuvinte
Scripturile de forțare brută de mai sus au nevoie de liste de cuvinte.Imho este foarte probabil că nu va ajuta să folosiți liste de cuvinte standard uriașe precum rockyou.Scripturile sunt prea lente pentru asta, iar provocările stego par să nu fie concepute pentru așa ceva. un scenariu mai probabil este că aveți o bănuială despre ce ar putea fi parola, dar nu știți exact.
Pentru aceste cazuri, sunt incluse mai multe instrumente de generare a listelor de cuvinte:
- john: versiunea îmbunătățită de comunitate a lui John the Ripper vă poate extinde listele de cuvinte. Creați o listă de cuvinte de bază cu câteva parole candidate și folosiți
john
pentru a crea multe variante ale acestora. Folosițijohn -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist
pentru a aplica reguli extinse (~x1000)john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist
pentru un set de reguli redus (~x50). - crunch: poate genera liste de cuvinte mici dacă aveți un model în minte. De exemplu, dacă știți că parolele se termină cu 1984 și au o lungime de 6 litere, utilizarea
crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984
va genera 26 * 26 = 676 de parole aa1984, ab1984, … până la zz1984. Formatul estecrunch <min-length> <max-length> <charset> <options>
și am folosit opțiunea de modelare. Consultațiless /usr/share/crunch/charset.lst
pentru a vedea seturile de caractere cu care este livrat Crunch. - CeWL: poate genera liste de cuvinte dacă știți că un site web este legat de o parolă. De exemplu, rulați
cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump
dacă bănuiți că o imagine a lui Donald Trump conține un mesaj ascuns criptat. Comanda răzuiește site-ul și extrage șiruri de cel puțin 8 caractere.
Exemple de steganografie
Imaginea conține un exemplu de imagine și un fișier audio, fiecare în formate diferite:
/examples/ORIGINAL.jpg
/examples/ORIGINAL.png
/examples/ORIGINAL.mp3
/examples/ORIGINAL.wav
Acesta conține și un script /examples/create_examples.sh
pe care îl puteți rula pentru a încorpora un mesaj ascuns („Acesta este un mesaj foarte secret!”) în aceste fișiere prin mai multe metode diferite. după rularea acestui script, găsiți aceste fișiere în /examples/stego-files
cu numele lor indicând ce instrument a fost folosit pentru a încorpora mesajul.Puteți rula scripturile de screening pentru a vedea dacă găsesc ceva pe ele sau încercați să le spargeți altfel.
GUI și containere
În mod implicit, niciun instrument GUI nu poate fi rulat într-un container Docker deoarece nu este disponibil niciun server X11. Pentru a le rula, trebuie să schimbați acest lucru.Ceea ce este necesar pentru a face acest lucru depinde de mașina gazdă.Dacă:
- executați pe Linux, probabil aveți X11
- executați pe Mac OS, aveți nevoie de Xquartz (
brew install Xquartz
) - executați pe Windows, aveți o problemă
Utilizați redirecționarea X11 prin SSH dacă doriți să mergeți pe această cale. Rulați start_ssh
în interiorul containerului pentru a porni serverul, asigurați-vă că expuneți portul 22 atunci când porniți containerul: docker run -p 127.0.0.1:22:22 ...
, apoi folosiți ssh -X ...
atunci când vă conectați (scriptul tipărește parola).
Pentru a nu depinde de X11, imaginea vine cu un server TigerVNC și un client noVNC. îl puteți folosi pentru a deschide o sesiune VNC HTML5 cu browserul pentru a vă conecta la desktop-ul Xfce al containerelor. Pentru aceasta, rulați start_vnc.sh
în interiorul containerului pentru a porni serverul și clientul, asigurați-vă că expuneți portul 6901 atunci când porniți containerul docker run -p 127.0.0.1:6901:6901 ...
și mergeți la localhost:6901/?password=<the_password>
(scriptul tipărește parola).
Utilizarea SSH cu redirecționare X11
Comenzi în GIF pentru copy & paste:
# 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
Folosind Browser și VNC
Comenzi în GIF pentru copy & paste:
# 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ție de linkuri
Aceasta este o colecție de linkuri utile pentru steganografie:
- Trebuie să fii capabil să identifici codurile. Consultați această foaie de trucuri de la Eric Harshbarger, care conține multe coduri diferite.
- Foaie de trucuri care descrie fluxurile de lucru, lucruri de căutat și instrumente comune: click
- Ghid CTF de criminalistică cu multe idei pentru provocări stego: click
- Descrieri de formate de fișiere ca postere frumoase: click