Dit project is een Docker image nuttig voor het oplossen van Steganografie uitdagingen zoals die je kan vinden op CTF platformen zoals hackthebox.eu.Het image is voorgeïnstalleerd met veel populaire tools (zie lijst hieronder) en verschillende screening scripts die je kan gebruiken om eenvoudige dingen te controleren (bijvoorbeeld check_jpg.sh image.jpg
uitvoeren om een rapport te krijgen voor een JPG bestand).
Gebruik
Zorg er eerst voor dat je Docker geïnstalleerd hebt (how to).Dan kun je de shell scripts bin/build.sh
en bin/run.sh
in deze repo gebruiken om de image te bouwen en de container te draaien.Je wordt gedropt in een bash shell in de container.Het zal de data
map gemount hebben, waarin je de bestanden kunt plaatsen om te analyseren.
Als je de scripts niet gebruikt, volg dan deze stappen:
- Build image (
docker build -t <image_name> .
) of pull van Docker hub (docker pull dominicbreuker/stego-toolkit
) - Start een container met je bestanden gemount in de map
/data
(docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash
) - Gebruik CLI tools en screening scripts op je bestanden: bijv, voer
check_jpg.sh image.jpg
uit om een snel rapport te maken, of voerbrute_jpg.sh image.jpg wordlist.txt
uit om te proberen verborgen gegevens te extraheren met verschillende gereedschappen en wachtwoorden - Als u GUI gereedschappen wilt uitvoeren, gebruik dan een van deze twee manieren:
- Run
start_ssh.sh
en maak verbinding met uw container met X11 forwarding - Run
start_vnc.sh
en maak verbinding met het Bureaublad van de container via uw browser
Bekijk de volgende secties voor meer informatie:
- Welke tools zijn geïnstalleerd? Ga hier
- Welke scripts kan ik draaien om bestanden snel automatisch te screenen of te brute forcen? Go here
- Hoe kan ik spelen met verschillende Steganografie voorbeelden om te zien of ik ze kan breken? Hier
- Hoe kan ik GUI tools in de container draaien? Hier
Demo
Start met docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash
.U wordt gedropt in een container shell in work dir /data
.Uw host map $(pwd)/data
wordt gemount en de images daarin zijn toegankelijk.
Tools
Veel verschillende Linux en Windows tools zijn geinstalleerd.Windows tools worden ondersteund met Wine.Sommige tools kunnen op de command line worden gebruikt, terwijl andere GUI ondersteuning nodig hebben!
Command line interface tools
Deze tools kunnen op de command line worden gebruikt.Het enige wat u hoeft te doen is een container te starten en de steganografie bestanden te mounten die u wilt controleren.
Algemene screening tools
Tools om in het begin te draaien.Hiermee kunt u een breed idee krijgen van waar u mee te maken heeft.
Tool | Beschrijving | Hoe te gebruiken |
---|---|---|
file | Check out what kind of file you have | file stego.jpg |
exiftool | Kijk naar metadata van mediabestanden | exiftool stego.jpg |
binwalk | Kijk of andere bestanden zijn ingesloten/toegevoegd | binwalk stego.jpg |
strings | Controleer of er interessante leesbare tekens in het bestand staan | strings stego.jpg |
voorste | Scheid ingesloten/bijgevoegde bestanden | foremost stego.jpg |
pngcheck | Krijg details over een PNG bestand (of ontdek dat het eigenlijk iets anders is) | pngcheck stego.png |
identify | GraphicMagick gereedschap om te controleren wat voor soort afbeelding een bestand is. Controleert ook of de afbeelding corrupt is. | identify -verbose stego.jpg |
ffmpeg | ffmpeg kan worden gebruikt om de integriteit van audiobestanden te controleren en het info en fouten te laten rapporteren | ffmpeg -v info -i stego.mp3 -f null - om het bestand te hercoderen en het resultaat weg te gooien |
Tools die steganografie opsporen
Tools ontworpen om steganografie in bestanden op te sporen.Meestal voeren ze statistische tests uit.Zij zullen verborgen boodschappen alleen in eenvoudige gevallen onthullen. Zij kunnen echter hints geven waarnaar te zoeken als zij interessante onregelmatigheden vinden.
Tool | Bestandstypen | Beschrijving | Hoe te gebruiken |
---|---|---|---|
stegoVeritas | Afbeeldingen (JPG, PNG, GIF, TIFF, BMP) | Een grote verscheidenheid aan eenvoudige en geavanceerde controles. Kijk ook eens naar stegoveritas.py -h . Controleert metadata, maakt veel getransformeerde afbeeldingen en slaat ze op in een directory, Brute forces LSB, … |
stegoveritas.py stego.jpg om alle controles uit te voeren |
zsteg | Images (PNG, BMP) | Detecteert diverse LSB stego, ook openstego en de Camouflage tool | zsteg -a stego.jpg om alle controles uit te voeren |
stegdetect | Images (JPG) | Uitvoeren van statistische tests om uit te vinden of een stego tool is gebruikt (jsteg, outguess, jphide, …). Zie man stegdetect voor details. |
stegdetect stego.jpg |
stegbreak | Images (JPG) | Brute force cracker voor JPG afbeeldingen. Beweert dat het outguess , jphide en jsteg kan kraken. |
stegbreak -t o -f wordlist.txt stego.jpg , gebruik -t o voor outguess, -t p voor jphide of -t j voor jsteg |
Tools die daadwerkelijk steganografie doen
Tools die u kunt gebruiken om berichten te verbergen en ze naderhand te onthullen.Sommige versleutelen de berichten alvorens ze te verbergen.Als ze dat doen, vereisen ze een wachtwoord.Als je een hint hebt wat voor soort tool werd gebruikt of welk wachtwoord juist zou kunnen zijn, probeer dan deze tools.Sommige tools worden ondersteund door de brute force scripts die beschikbaar zijn in dit Docker image.
Tool | Bestandstypen | Beschrijving | Hoe te verbergen | Hoe te herstellen |
---|---|---|---|---|
AudioStego | Audio (MP3 / WAV) | Details over hoe het werkt staan in deze blog post | hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 |
hideme stego.mp3 -f && cat output.txt |
jphide/jpseek | Image (JPG) | Trekkelijk oude tool van hier. Hier is de versie van hier geïnstalleerd omdat de originele steeds crashte. Het vraagt interactief om een passphrase! | jphide cover.jpg stego.jpg secret.txt |
jpseek stego.jpg output.txt |
jsteg | Image (JPG) | LSB stego tool. Versleutelt het bericht niet. | jsteg hide cover.jpg secret.txt stego.jpg |
jsteg reveal cover.jpg output.txt |
mp3stego | Audio (MP3) | Old programma. Versleutelt en verbergt dan een bericht (3DES encryptie!). Windows-programma dat in Wine draait. Vereist WAV invoer (kan fouten geven voor bepaalde WAV bestanden. wat voor mij werkt is bijvoorbeeld: ffmpeg -i audio.mp3 -flags bitexact audio.wav ). Belangrijk: gebruik alleen absolute paden! |
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 | Images (PNG) | Verschillende LSB stego algoritmes (kijk op deze blog). Wordt nog steeds onderhouden. | openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png |
openstego extract -sf openstego.png -p abcd -xf output.txt (laat -xf weg om bestand met originele naam te maken!) |
outguess | Images (JPG) | Gebruikt “redundante bits” om data te verbergen. Bestaat in twee versies: old=outguess-0.13 van hier en new=outguess van de package repos. Om te herstellen, moet u de versie gebruiken die voor het verbergen is gebruikt. |
outguess -k password -d secret.txt cover.jpg stego.jpg |
outguess -r -k password stego.jpg output.txt |
spectrology | Audio (WAV) | Codeert een afbeelding in het spectrogram van een audiobestand. | TODO |
Gebruik GUI-tool sonic-visualiser |
stegano | Afbeeldingen (PNG) | Verbergt gegevens met diverse (op LSB gebaseerde) methoden. Biedt ook enkele screening tools. | stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png of stegano-red hide --input cover.png -m "secret msg" --output stego.png of stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png voor diverse generatoren (stegano-lsb-set list-generators ) |
stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt of stegano-red reveal -i stego.png of stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt |
Steghide | Images (JPG, BMP) and Audio (WAV, AU) | Veelzijdig en volwassen gereedschap om gegevens te versleutelen en te verbergen. | 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 | Images (PNG) | LSB stego tool voor afbeeldingen | cloackedpixel hide cover.jpg secret.txt password creëert cover.jpg-stego.png |
cloackedpixel extract cover.jpg-stego.png output.txt password |
LSBSteg | Afbeeldingen (PNG, BMP, …) in ongecomprimeerde formaten | Eenvoudige LSB tools met zeer mooie en leesbare Python code | LSBSteg encode -i cover.png -o stego.png -f secret.txt |
LSBSteg decode -i stego.png -o output.txt |
f5 | Images (JPG) | F5 Steganografisch Algoritme met gedetailleerde info over het proces | f5 -t e -i cover.jpg -o stego.jpg -d 'secret message' |
f5 -t x -i stego.jpg 1> output.txt |
stegpy | Images (PNG, GIF, BMP, WebP) en Audio (WAV) | Eenvoudig steganografie programma gebaseerd op de LSB methode | stegpy secret.jpg cover.png |
stegpy _cover.png |
Steganografie GUI tools
Alle onderstaande tools hebben een grafische gebruikersinterface en kunnen niet via de commandoregel gebruikt worden.Om ze te draaien, moet u een X11 server beschikbaar maken in de container. Twee manieren worden ondersteund:
- run
start_ssh.sh
om een SSH server te starten. Maak daarna verbinding met X11 forwarding. Vereist een X11 server op uw host! - run
start_vnc.sh
om een VNC server + client op te starten. Maak daarna verbinding met uw browser op poort 6901 en u krijgt een Xfce bureaublad. Geen host afhankelijkheden!
Als alternatief, zoek andere manieren om X11 beschikbaar te maken in de container.Veel verschillende manieren zijn mogelijk (bijv, mount UNIX sockets).
Tool | Bestandstypen | Beschrijving | Hoe te beginnen |
---|---|---|---|
Steg | Afbeeldingen (JPG, TIFF, PNG, BMP) | Hanteert vele bestandstypen en implementeert verschillende methoden | steg |
Steganabara (De oorspronkelijke link is verbroken) | Images (???) | Interactief afbeeldingen transformeren tot je iets vindt | steganabara |
Stegsolve | Images (???) | Interactief afbeeldingen transformeren, kleurenschema’s afzonderlijk bekijken, … | stegsolve |
SonicVisualiser | Audio (???) | Visualiseren van audiobestanden in golfvorm, tonen van spectrogrammen, … | sonic-visualiser |
Stegosuite | Afbeeldingen (JPG, GIF, BMP) | Kan gegevens in afbeeldingen versleutelen en verbergen. Wordt actief ontwikkeld. | stegosuite |
OpenPuff | Images, Audio, Video (vele formaten) | Geavanceerd programma met lange geschiedenis. Wordt nog steeds onderhouden. Windows-hulpprogramma dat in wijn draait. | openpuff |
DeepSound | Audio (MP3, WAV) | Audio stego hulpprogramma dat door Mr. Robot zelf wordt vertrouwd. Windows tool die in wijn draait (erg hacky, vereist VNC en draait in virtueel bureaublad, MP3 kapot door ontbrekende DLL!) | deepsound alleen in VNC sessie |
cloackedpixel-analyse | Afbeeldingen (PNG) | LSB stego visualisatie voor PNGs – gebruik het om verdacht willekeurige LSB waarden in afbeeldingen op te sporen (waarden dicht bij 0.5 kunnen erop wijzen dat versleutelde gegevens zijn ingesloten) | cloackedpixel-analyse image.png |
Screening scripts
Vele van bovenstaande tools vereisen geen interactie met een GUI.Daarom kunt u eenvoudig enkele workflows automatiseren om bestanden te screenen die mogelijk verborgen berichten bevatten. Omdat de tools verschillen per bestandstype, heeft elk bestandstype verschillende scripts.
Voor elk bestandstype zijn er twee soorten scripts:
-
XXX_check.sh <stego-file>
: voert basis screening tools uit en maakt een rapport (+ eventueel een directory met rapporten in bestanden) -
XXX_brute.sh <stego-file> <wordlist>
: probeert een verborgen boodschap te extraheren uit een stego bestand met verschillende tools met behulp van een woordenlijst (cewl
,john
encrunch
zijn geïnstalleerd om lijsten te genereren – hou ze klein).
De volgende bestandstypen worden ondersteund:
- JPG:
check_jpg.h
enbrute_jpg.sh
(brute runningsteghide
,outguess
,outguess-0.13
,stegbreak
,stegoveritas.py -bruteLSB
) - PNG:
check_png.h
enbrute_png.sh
(brute uitvoeringopenstego
enstegoveritas.py -bruteLSB
)
Wordlist generatie
De brute forcingscripts hierboven hebben wordlists nodig.Ik denk dat het zeer waarschijnlijk niet zal helpen om grote standaard woordenlijsten te gebruiken zoals rockyou.De scripts zijn er te traag voor en stego challenges lijken hier niet voor ontworpen te zijn. Een waarschijnlijker scenario is dat u een vermoeden heeft wat het wachtwoord zou kunnen zijn, maar u weet het niet precies.
Voor deze gevallen zijn er verschillende tools om wordlists te genereren:
- john: de community verbeterde versie van John the Ripper kan uw wordlists uitbreiden. Maak een basis woordenlijst met een paar kandidaat wachtwoorden en gebruik
john
om er vele varianten van te maken. Gebruikjohn -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist
om uitgebreide regels toe te passen (~x1000)john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist
voor een gereduceerde regelset (~x50). - crunch: kan kleine woordenlijsten genereren als u een patroon in gedachten heeft. Bijvoorbeeld, als u weet dat de wachtwoorden eindigen op 1984 en 6 letters lang zijn, zal het gebruik van
crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984
de 26 * 26 = 676 wachtwoorden aa1984, ab1984, … tot en met zz1984 genereren. Het formaat iscrunch <min-length> <max-length> <charset> <options>
en we hebben de templating optie gebruikt. Kijk bijless /usr/share/crunch/charset.lst
om de char sets te zien waarmee crunch wordt geleverd. - CeWL: kan woordenlijsten genereren als je weet dat een website gerelateerd is aan een wachtwoord. Draai bijvoorbeeld
cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump
als je vermoedt dat een foto van Donald Trump een gecodeerde verborgen boodschap bevat. Het commando schraapt de site af en extraheert strings van minstens 8 tekens lang.
Steganografie voorbeelden
De afbeelding bevat een voorbeeldafbeelding en audiobestand elk in een ander formaat:
/examples/ORIGINAL.jpg
/examples/ORIGINAL.png
/examples/ORIGINAL.mp3
/examples/ORIGINAL.wav
Het bevat ook een script /examples/create_examples.sh
dat u kunt uitvoeren om een verborgen boodschap (“Dit is een zeer geheime boodschap!”Na het uitvoeren van dit script, vind je deze bestanden in /examples/stego-files
met hun namen die aangeven welk gereedschap is gebruikt om de boodschap in te voegen.Je kunt de screening scripts uitvoeren om te zien of ze er iets op vinden of anders proberen ze te breken.
GUI en Containers
Gewoonlijk kunnen er geen GUI tools in een Docker container worden uitgevoerd omdat er geen X11 server beschikbaar is.Om ze uit te voeren, moet je dat veranderen.Wat daarvoor nodig is, hangt af van uw host machine.Als u:
- op Linux draait, hebt u waarschijnlijk X11
- op Mac OS draait, hebt u Xquartz (
brew install Xquartz
) - op Windows draait, hebt u een probleem
Gebruik X11 forwarding via SSH als u deze weg wilt bewandelen. Voer start_ssh
in de container uit om de server te starten, zorg ervoor dat u poort 22 blootstelt wanneer u de container start: docker run -p 127.0.0.1:22:22 ...
, gebruik dan ssh -X ...
bij het verbinden (het script print het wachtwoord).
Om niet afhankelijk te zijn van X11, wordt het image geleverd met een TigerVNC server en noVNC client.Je kunt deze gebruiken om een HTML5 VNC sessie te openen met je browser om verbinding te maken met de containers Xfce desktop. Om dat te doen, draai start_vnc.sh
in de container om server en client te starten, zorg ervoor dat u poort 6901 blootstelt bij het starten van de container docker run -p 127.0.0.1:6901:6901 ...
en ga naar localhost:6901/?password=<the_password>
(het script print het wachtwoord).
SSH gebruiken met X11 forwarding
Commando’s in de GIF voor kopiëren & plakken:
# 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
Browser en VNC gebruiken
Commando’s in de GIF voor kopiëren & plakken:
# 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>
Linkverzameling
Dit is een verzameling nuttige Steganografie-links:
- Je moet codes kunnen herkennen. Bekijk dit spiekbriefje van Eric Harshbarger, dat veel verschillende codes bevat.
- Spiekbriefje dat workflows beschrijft, dingen om op te letten en veelgebruikte tools: klik
- Forensics CTF gids met veel ideeën voor stego uitdagingen: klik
- Beschrijvingen van bestandsformaten als mooie posters: klik