DominicBreuker / stego-toolkit

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

Docker build status

Hack The Box

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:

  1. Build image (docker build -t <image_name> .) of pull van Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. Start een container met je bestanden gemount in de map /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Gebruik CLI tools en screening scripts op je bestanden: bijv, voer check_jpg.sh image.jpg uit om een snel rapport te maken, of voer brute_jpg.sh image.jpg wordlist.txt uit om te proberen verborgen gegevens te extraheren met verschillende gereedschappen en wachtwoorden
  4. 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.

animated demo gif

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 en crunch zijn geïnstalleerd om lijsten te genereren – hou ze klein).

De volgende bestandstypen worden ondersteund:

  • JPG: check_jpg.h en brute_jpg.sh (brute running steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h en brute_png.sh (brute uitvoering openstego en stegoveritas.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. Gebruik john -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 is crunch <min-length> <max-length> <charset> <options> en we hebben de templating optie gebruikt. Kijk bij less /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

geanimeerde demo gif - SSH + X11

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

geanimeerde demo gif - Browser + VNC

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

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.