DominicBreuker / stego-toolkit

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).

Docker build status

Hack The Box

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:

  1. Constituiți imaginea (docker build -t <image_name> .) sau trageți-o din hub-ul Docker (docker pull dominicbreuker/stego-toolkit)
  2. 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)
  3. 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ți brute_jpg.sh image.jpg wordlist.txt pentru a încerca să extrageți date ascunse cu diverse instrumente și parole
  4. 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.

Demonstrație animată gif

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 și crunch sunt instalate pentru a genera liste – păstrați-le mici).

Sunt acceptate următoarele tipuri de fișiere:

  • JPG: check_jpg.h și brute_jpg.sh (execuție brută steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h și brute_png.sh (execuție brută openstego și stegoveritas.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ți john -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 este crunch <min-length> <max-length> <charset> <options> și am folosit opțiunea de modelare. Consultați less /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

Demonstrație animată gif - SSH + 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

Demonstrație animată gif - Browser + 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

Lasă un răspuns

Adresa ta de email nu va fi publicată.