DominicBreuker / stego-toolkit

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

Docker build-status

Hack The Box

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:

  1. Byg image (docker build -t <image_name> .) eller træk fra Docker hub (docker pull dominicbreuker/stego-toolkit)
  2. Start en container med dine filer monteret i mappen /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. 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ør brute_jpg.sh image.jpg wordlist.txt for at prøve at udtrække skjulte data med forskellige værktøjer og adgangskoder
  4. 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.

animeret demo gif

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 og crunch er installeret til at generere lister – hold dem små).

De følgende filtyper understøttes:

  • JPG: check_jpg.h og brute_jpg.sh (brute running steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG: check_png.h og brute_png.sh (brute running openstego og stegoveritas.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. Brug john -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 er crunch <min-length> <max-length> <charset> <options>, og vi har brugt templating-muligheden. Se less /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

animeret demo gif - SSH + X11

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

animeret demo gif - Browser + 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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.