Dette projekt er et Docker-aftryk, der er nyttigt til at løse steganografi-udfordringer som dem, du kan finde på CTF-platforme som hackthebox.eu.Billedet er præinstalleret med mange populære værktøjer (se listen nedenfor) og flere screeningsskripter, som du kan bruge til at kontrollere enkle ting (kør f.eks. check_jpg.sh image.jpg
for at få en rapport for en JPG-fil).
Anvendelse
Sørg først for, at du har Docker installeret (hvordan du gør).Derefter kan du bruge shellskripterne bin/build.sh
og bin/run.sh
i dette repo til at opbygge billedet og køre containeren. du vil blive sat ind i en bash-shell inde i containeren. den vil have mappen data
monteret, hvori du kan lægge de filer, der skal analyseres.
Hvis du ikke bruger scripts, skal du følge disse trin:
- Byg image (
docker build -t <image_name> .
) eller træk fra Docker hub (docker pull dominicbreuker/stego-toolkit
) - Start en container med dine filer monteret i mappen
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - Brug CLI-værktøjer og screeningsskripter på dine filer: f.eks, kør
check_jpg.sh image.jpg
for at oprette en hurtig rapport, eller kørbrute_jpg.sh image.jpg wordlist.txt
for at prøve at udtrække skjulte data med forskellige værktøjer og adgangskoder - Hvis du ønsker at køre GUI-værktøjer, skal du bruge en af disse to måder:
- Kør
start_ssh.sh
og opret forbindelse til din container med X11 forwarding - Kør
start_vnc.sh
og opret forbindelse til containerens skrivebord via din browser
Kig i de følgende afsnit for at få flere oplysninger:
- Hvilke værktøjer er installeret? Gå her
- Hvilke scripts kan jeg køre for hurtigt at screene filer automatisk eller brute force dem? Gå her
- Hvordan kan jeg lege med forskellige steganografi-eksempler for at se, om jeg kan bryde dem? Gå her
- Hvordan kan jeg køre GUI-værktøjer inde i containeren? gå her
Demo
Start med docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash
. du vil blive sat ind i en container shell i work dir /data
.Din værtsmappe $(pwd)/data
vil blive monteret og billederne indeni vil være tilgængelige.
Værktøjer
Mange forskellige Linux- og Windows-værktøjer er installeret.Windows-værktøjer er understøttet med Wine.Nogle værktøjer kan bruges på kommandolinjen, mens andre kræver GUI-understøttelse!
Værktøjer med kommandolinjeinterface
Disse værktøjer kan bruges på kommandolinjen.Alt du skal gøre er at starte en container og montere de steganografifiler, du vil kontrollere.
Generelle screeningsværktøjer
Værktøjer til at køre i starten.Giver dig mulighed for at få et bredt indtryk af, hvad du har med at gøre.
Værktøj | Beskrivelse | Sådan bruger du det |
---|---|---|
Fil | Kontroller, hvilken slags fil du har | file stego.jpg |
exiftool | Kontroller metadata for mediefiler | exiftool stego.jpg |
binwalk | Kontroller, om andre filer er indlejret/vedhæftet | binwalk stego.jpg |
strings | Kontroller, om der er interessante læsbare tegn i filen | strings stego.jpg |
forst | Gennemgår indlejrede/vedhæftede filer | foremost stego.jpg |
pngcheck | Få detaljer om en PNG-fil (eller find ud af, om det faktisk er noget andet) | pngcheck stego.png |
identify | GraphicMagick-værktøj til at kontrollere, hvilken slags billede en fil er. Kontrollerer også, om billedet er beskadiget. | identify -verbose stego.jpg |
ffmpeg | ffmpeg kan bruges til at kontrollere integriteten af lydfiler og lade den rapportere infos og fejl | ffmpeg -v info -i stego.mp3 -f null - at omkode filen og smide resultatet væk |
Værktøjer til detektering af steganografi
Værktøjer, der er udviklet til at detektere steganografi i filer.Udfører for det meste statistiske tests.De afslører kun skjulte budskaber i enkle tilfælde, men de kan give tips om, hvad man skal kigge efter, hvis de finder interessante uregelmæssigheder.
Værktøj | Filtyper | Beskrivelse | Sådan bruger du |
---|---|---|---|
stegoVeritas | Billeder (JPG, PNG, GIF, TIFF, BMP) | En bred vifte af enkle og avancerede kontroller. Tjek stegoveritas.py -h . Kontrollerer metadata, opretter mange transformerede billeder og gemmer dem i en mappe, Brute forces LSB, … |
stegoveritas.py stego.jpg for at køre alle kontroller |
zsteg | Billeder (PNG, BMP) | Detekterer forskellige LSB stego, også openstego og Camouflage-værktøjet | zsteg -a stego.jpg til at køre alle kontroller |
stegdetect | Billeder (JPG) | Udfører statistiske tests for at finde ud af, om der blev brugt et stegoværktøj (jsteg, outguess, jphide, …). Se man stegdetect for nærmere oplysninger. |
stegdetect stego.jpg |
stegbreak | Images (JPG) | Brute force cracker for JPG-billeder. Påstår, at den kan knække outguess , jphide og jsteg . |
stegbreak -t o -f wordlist.txt stego.jpg , brug -t o til outguess, -t p til jphide eller -t j til jsteg |
Værktøjer, der rent faktisk laver steganografi
Værktøjer, du kan bruge til at skjule meddelelser og afsløre dem bagefter.Nogle krypterer beskederne, før de skjuler dem.Hvis de gør det, kræver de en adgangskode.Hvis du har et hint om, hvilken slags værktøj der blev brugt, eller hvilken adgangskode der kunne være den rigtige, så prøv disse værktøjer.Nogle værktøjer understøttes af de brute force-scripts, der er tilgængelige i dette Docker-image.
Værktøj | Filetyper | Beskrivelse | Sådan skjuler du | Sådan gendanner du | |
---|---|---|---|---|---|
AudioStego | Audio (MP3 / WAV) | Detaljer om, hvordan det fungerer, findes i dette blogindlæg | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 |
hideme stego.mp3 -f && cat output.txt |
|
jphide/jpseek | Billede (JPG) | Smuk gammelt værktøj herfra. Her er versionen herfra installeret, da den originale crashede hele tiden. Den beder interaktivt om en passphrase! | jphide cover.jpg stego.jpg secret.txt |
jpseek stego.jpg output.txt |
|
jsteg | Billede (JPG) | LSB stego værktøj. Krypterer ikke meddelelsen. | jsteg hide cover.jpg secret.txt stego.jpg |
jsteg reveal cover.jpg output.txt |
|
mp3stego | Audio (MP3) | Gammelt program. Krypterer og skjuler derefter en meddelelse (3DES-kryptering!). Windows-værktøj, der kører i Wine. Kræver WAV-input (kan kaste fejl for visse WAV-filer. det, der virker for mig, er f.eks.: ffmpeg -i audio.mp3 -flags bitexact audio.wav ). Vigtigt: brug kun absolut sti! |
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 | Billeder (PNG) | Variable LSB stego algoritmer (tjek denne blog). Stadig vedligeholdt. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png |
openstego extract -sf openstego.png -p abcd -xf output.txt (udelad -xf for at oprette fil med originalt navn!) |
|
outguess | Billeder (JPG) | Anvender “redundante bits” til at skjule data. Findes i to versioner: old=outguess-0.13 taget herfra og new=outguess fra pakkens repos. For at gendanne skal du bruge den, der blev brugt til at skjule. |
outguess -k password -d secret.txt cover.jpg stego.jpg |
outguess -r -k password stego.jpg output.txt |
|
spektrologi | Audio (WAV) | Kodder et billede i spektrogrammet af en lydfil. | TODO |
Brug GUI-værktøj sonic-visualiser |
|
stegano | Billeder (PNG) | Skjuler data med forskellige (LSB-baserede) metoder. Giver også nogle screeningsværktøjer. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png eller stegano-red hide --input cover.png -m "secret msg" --output stego.png eller stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png til forskellige generatorer (stegano-lsb-set list-generators ) |
stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt eller stegano-red reveal -i stego.png eller stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
|
Steghide | Billeder (JPG, BMP) og lyd (WAV, AU) | Versidigt og modent værktøj til at kryptere og skjule data. | 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 | Billeder (PNG) | LSB stego værktøj til billeder | cloackedpixel hide cover.jpg secret.txt password cloackedpixel hide cover.jpg secret.txt password skaber cover.jpg-stego.png |
cloackedpixel extract cover.jpg-stego.png output.txt password |
|
LSBSteg | Billeder (PNG, BMP, …) i ukomprimerede formater | Enkle LSB-værktøjer med meget flot og læsbar Python-kode | LSBSteg encode -i cover.png -o stego.png -f secret.txt |
LSBSteg decode -i stego.png -o output.txt |
|
f5 | Billeder (JPG) | F5 Steganografisk Algoritme med detaljeret info om processen | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' |
f5 -t x -i stego.jpg 1> output.txt |
|
stegpy | Billeder (PNG, GIF, BMP, WebP) og lyd (WAV) | Enkel steganografiprogram baseret på LSB-metoden | stegpy secret.jpg cover.png |
stegpy _cover.png |
Steganografi GUI-værktøjer
Alle nedenstående værktøjer har grafiske brugergrænseflader og kan ikke bruges via kommandolinjen.For at køre dem skal du gøre en X11-server tilgængelig inde i containeren.Der understøttes to måder:
- run
start_ssh.sh
for at starte en SSH-server. Forbind bagefter med X11 forwarding. Kræver en X11-server på din vært! - run
start_vnc.sh
for at starte en VNC-server + klient. Forbind bagefter med din browser til port 6901, og du får et Xfce-skrivebord. Ingen værtsafhængigheder!
Alternativt kan du finde andre måder at gøre X11 tilgængeligt inde i containeren.Mange forskellige måder er mulige (f.eks, montere UNIX-soketter).
Værktøj | Filetyper | Beskrivelse | Sådan starter du | |
---|---|---|---|---|
Steg | Billeder (JPG, TIFF, PNG, BMP) | Håndterer mange filtyper og implementerer forskellige metoder | steg |
|
Steganabara (Det oprindelige link er brudt) | Billeder (???) | Interaktivt transformere billeder, indtil du finder noget | steganabara |
|
Stegsolve | Billeder (????) | Interaktivt transformere billeder, se farveskemaer separat, … | stegsolve |
|
SonicVisualiser | Audio (????) | Visualisering af lydfiler i bølgeform, visning af spektrogrammer, … | sonic-visualiser |
|
Stegosuite | Billeder (JPG, GIF, BMP) | Kan kryptere og skjule data i billeder. Aktivt udviklet. | stegosuite |
|
OpenPuff | Billeder, lyd, video (mange formater) | Sofistikeret værktøj med lang historie. Stadig vedligeholdt. Windows-værktøj, der kører i wine. | openpuff |
|
DeepSound | Audio (MP3, WAV) | Audio stego værktøj, som selveste Mr. Robot har tillid til. Windows-værktøj, der kører i wine (meget hacky, kræver VNC og kører på virtuelt skrivebord, MP3 ødelagt på grund af manglende DLL!) | deepsound kun i VNC-session |
|
cloackedpixel-analyse | Billeder (PNG) | LSB-stego-visualisering for PNG’er – brug den til at opdage mistænkeligt tilfældige LSB-værdier i billeder (værdier tæt på 0.5 kan indikere, at krypterede data er indlejret) | cloackedpixel-analyse image.png |
Screening af scripts
Mange værktøjer ovenfor kræver ikke interaktion med en GUI.Derfor kan du nemt automatisere nogle arbejdsgange for at foretage grundlæggende screening af filer, der potentielt kan indeholde skjulte meddelelser.Da de anvendelige værktøjer er forskellige alt efter filtype, har hver filtype forskellige scripts.
For hver filtype er der to slags scripts:
-
XXX_check.sh <stego-file>
: kører grundlæggende screeningsværktøjer og opretter en rapport (+ eventuelt en mappe med rapporter i filer) -
XXX_brute.sh <stego-file> <wordlist>
: forsøger at udtrække en skjult besked fra en stego-fil med forskellige værktøjer ved hjælp af en ordliste (cewl
,john
ogcrunch
er installeret til at generere lister – hold dem små).
De følgende filtyper understøttes:
- JPG:
check_jpg.h
ogbrute_jpg.sh
(brute runningsteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
ogbrute_png.sh
(brute runningopenstego
ogstegoveritas.py -bruteLSB
)
Generering af ordlister
De ovenstående brute forcing-scripts har brug for ordlister.Imho vil det højst sandsynligt ikke hjælpe at bruge store standardordlister som rockyou.Skripterne er for langsomme til det, og stegoudfordringer synes ikke at være designet til dette.Et mere sandsynligt scenarie er, at du har en fornemmelse af, hvad kodeordet kunne være, men du ved det ikke præcist.
For disse tilfælde er der flere værktøjer til at generere ordlister inkluderet:
- john: den community-forbedrede version af John the Ripper kan udvide dine ordlister. Opret en basisordliste med nogle få kandidatpasswords og brug
john
til at oprette mange varianter af dem. Brugjohn -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist
til at anvende omfattende regler (~x1000)john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist
til et reduceret regelsæt (~x50). - crunch: kan generere små ordlister, hvis du har et mønster i tankerne. Hvis du f.eks. ved, at adgangskoderne slutter med 1984 og er 6 bogstaver lange, vil
crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984
generere 26 * 26 = 676 adgangskoder aa1984, ab1984, … op til zz1984. Formatet ercrunch <min-length> <max-length> <charset> <options>
, og vi har brugt templating-muligheden. Seless /usr/share/crunch/charset.lst
for at se de karaktersæt, som crunch leveres med. - CeWL: kan generere ordlister, hvis du ved, at et websted er relateret til en adgangskode. Kør f.eks.
cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump
, hvis du har mistanke om, at et billede af Donald Trump indeholder en krypteret skjult besked. Kommandoen skraber webstedet og udtrækker strenge, der er mindst 8 tegn lange.
Steganografi-eksempler
Billedet indeholder et eksempelbillede og en lydfil, der hver især er i forskellige formater:
/examples/ORIGINAL.jpg
/examples/ORIGINAL.png
/examples/ORIGINAL.mp3
/examples/ORIGINAL.wav
Det indeholder også et script /examples/create_examples.sh
, som du kan køre for at indlejre en skjult besked (“Dette er en meget hemmelig besked!”) i disse filer med mange forskellige metoder.Når du har kørt dette script, finder du disse filer i /examples/stego-files
med deres navne, der angiver, hvilket værktøj der blev brugt til at indlejre beskeden.Du kan køre screeningsskripterne for at se, om de finder noget på dem eller forsøge at bryde dem på anden vis.
GUI og containere
Som standard kan ingen GUI-værktøjer køres i en Docker-container, da der ikke er nogen X11-server tilgængelig. for at køre dem skal du ændre det.Hvad der kræves for at gøre det, afhænger af din værtsmaskine. hvis du:
- kører på Linux, har du sandsynligvis X11
- kører på Mac OS, har du brug for Xquartz (
brew install Xquartz
) - kører på Windows, har du et problem
Brug X11 forwarding via SSH, hvis du vil gå denne vej. Kør start_ssh
inde i containeren for at starte serveren, sørg for at du eksponerer port 22, når du starter containeren: docker run -p 127.0.0.1:22:22 ...
, og brug derefter ssh -X ...
, når du opretter forbindelse (scriptet udskriver adgangskoden).
For ikke at være afhængig af X11 leveres billedet med en TigerVNC-server og en noVNC-klient.Du kan bruge den til at åbne en HTML5 VNC-session med din browser for at oprette forbindelse til containerens Xfce-skrivebord. For at til det skal du køre start_vnc.sh
inde i containeren for at starte server og klient, sørg for at du eksponerer port 6901, når du starter containeren docker run -p 127.0.0.1:6901:6901 ...
og gå til localhost:6901/?password=<the_password>
(scriptet udskriver adgangskoden).
Brug af SSH med X11 forwarding
Kommandoer i GIF’en til kopiering & indsæt:
# 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
Brug af browser og VNC
Kommandoer i GIF’en til at kopiere & indsætte:
# 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>
Linksamling
Dette er en samling af nyttige steganografilinks:
- Du skal være i stand til at spotte koder. Tjek dette snydeark fra Eric Harshbarger, som indeholder mange forskellige koder:
- Cheat sheet med beskrivelse af arbejdsgange, ting man skal kigge efter og almindelige værktøjer: klik
- Forensics CTF guide med masser af ideer til stego udfordringer: klik
- Filformatbeskrivelser som smukke plakater: klik