Quelques tool Steganographie

Hi ! Un jour durant une épreuve de stégano je me suis dis qu'il manquait sur les internets un bon billet sur la stéganographie avec quelques conseils et tool's, alors ... voici la réponse :)

/!\ Cet article se complète avec celui sur le forensic /!\

La stéganographie c'est quoi ?


L'art de dissimuler de la data dans un fichier :
La cryptographie permet de protéger de une donnée par un code secret
La stéganographie permet de cacher cette donnée sans forcément la protéger

La méthodologie a énormément de variante tout se fait avec de l'imagination (et des compétences ;) ) En fait si vous voulez devenir un expert barbu dans ce domaine il vous faudra de la patience, du café, connaître beaucoup de format de fichier (notamment les images, vidéos, son de base) et de l'imagination.

Cela peut également se faire sur des simples textes , soyez attentifs, essayez plusieurs sens de lecture, analysez les mises en forme de texte ...

Un petit exemple :

filez droit
l'arme est votre savoir
après ça n'hésitez pas
gachez pas vos munitions !
ici ou la-bas
servez vous en pour le bien
kazakstan, france, angleterre
le principal c'est de s'entraider
finalement je finirais sur un seul mot
amour.

Vous n'avez rien remarqué ? vraiment ? Allons ... regardez bien ... sur la gauche ...

Pour les fichiers il existe de nombreuse méthode de dissimulation

Modifier des bits de couleur pour rendre indétectable à l’œil un message caché, cacher un fichier DANS un fichier, utiliser des métadonnées, la seule limite c'est l'imagination ...

Quelques outils incontournable :

Fichiers Audio

Sonic-Visualizer

Outil d'analyse de fichier audio (Utile pour afficher les spectogrammes)
Utilisation :


Audacity

Permet de manipuler des fichiers audio (Vitesse/sens lecture, spectre, ...)


ffmpeg

Permet de checker l'intégrité d'un fichier audio et reporter les infos et erreurs

ffmpeg -v info -i stego.mp3 -f null -

Audiostego (hideme)

Outil permettant de cacher/trouver de la donnée cachée dans un fichier WAV/MP3

https://github.com/danielcardeenas/AudioStego

hideme stego.mp3 -f && cat output.txt

FLAG{Steg01nmp3}

spectrology

Encoder une image dans un spectrogramme audio

https://github.com/solusipse/spectrology

python spectrology.py image.bmp -b 13000 -t 19000

mp3stego (Windows)

Outil permettant de cacher de la donnée dans un mp3 ou wav. Disponible sous Windows only

https://www.petitcolas.net/steganography/mp3stego/

Decode.exe -X Chall.wav -A

Input file = 'Chall.wav'  output file = 'Chall.wav.aif'
Output file written in AIFF format
Will attempt to extract hidden information. Output: Chall.wav.txt
Enter a passphrase:
the bit stream file Chall.wav is a BINARY file
Decoding of "Chall.wav" is finished
The decoded PCM output file name is "Chall.wav.aif"
"Chall.wav.aif" has been written with AIFF header information

type Chall.wav.txt

FLAG{GG_Y0u_W1n}

WavePad

Permet d'effectuer plusieurs transformations sur le son et ses fréquences (Un des plus simple d'utilisation)

https://www.nch.com.au/wavepad/fr/index.html


QSSTV

Permet d'afficher le signal de transmission SSTV

Configuration -> Audio Input -> From File -> signals.wav

Fichiers Images

LSB-Steganographie

Outil permettant d'encoder/décoder de la data en modifiant les bits de couleur (LSB)
Download Here -> https://github.com/RobinDavid/LSB-Steganography
Utilisation :

$python2 LSB-Steganography/LSBSteg.py decode -i chall.png -o flag && cat flag

flag{you_own_me}

exiftool

Affiche les meta-données EXIF d'un fichier
Utilisation :

$exiftool file.jpg

File Size                       : 120 kB
File Modification Date/Time     : 2018:03:09 22:08:42+01:00
Resolution Unit                 : inches
X Resolution                    : 96
Y Resolution                    : 96
XMP Toolkit                     : Image::ExifTool 10.63
Description                     : Tu es sur la bonne voie, continue !
Subject                         : Password
IPTC Digest                     : d41d8cd98f00b204e9800998ecf8427e
URL                             : aG9tZXIgc2ltcHNvbg==
....

Gimp / PhotoFiltre / Photoshop

Jouer avec les contrastes, couleurs peut quelques fois s'avérer utile
Exemple :


Steghide

Permet de dissimuler du texte dans un fichier (image ou son)
Utilisation :

$steghide extract -sf ch10.jpg

Entrez la passphrase:
écriture des données extraites dans "password.txt"

Convert

Outil pour convertir des formats d'image, manipuler les bits, pixel, ...
Utilisation:

$convert ch13.png ch13.jpg
$file ch13.*

ch13.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 1000x1000, frames 3
ch13.png: PNG image data, 1000 x 1000, 8-bit/color RGB, non-interlaced

$convert ch13.jpg -resize 600x600 ch132.jpg
$file ch132.jpg

ch132.jpg: JPEG image data, JFIF standard 1.01, aspect ratio, density 1x1, segment length 16, baseline, precision 8, 600x600, frames 3

Sng

Outil pour convertir des fichiers PNG au format SNG
Utilisation :

$sng -v ./ch12.png

sng: converting ./ch12.png to ./ch12.sng

Stegsolve

Permet de manipuler des images en fonction des pixels, filtres, ...
Download -> http://www.caesum.com/handbook/Stegsolve.jar
Utilisation :


identify

Permet de checker quel type d'image est-ce et également si l'image est corrompu.

identify image.png -verbose
image.png PNG 236x372 236x372+0+0 8-bit sRGB 176KB 0.000u 0:00.000

pngcheck

Permet d'obtenir les détails d'un fichier PNG (ou trouver si c'est un autre type de fichier)

pngcheck stego.png

stegoveritas

Outil disposant de nombreuses fonctionnalités :  vérifier les métadonnées, créer de nombreuses images transformées, Brute forces LSB, ...

https://github.com/bannsec/stegoVeritas

python3 stegoveritas.py stego.jpg

...
Checking for trailing data
Discovered Trailing Data:
b'PK\x03\x04\x14\x00\x01\x08\x00\x00\x8c
...
Attempting to brute force LSB items
Trying 0.0.0
Trying 1.1.1
...
Found something worth keeping!
ISO-8859 text, with very long lines, with no line terminators
...

zsteg

Permet de détecter le type de stéganographie du fichier (LSB openstego, Camouflage ...)

https://github.com/zed-0xff/zsteg

zsteg -a stego.jpg #Effectuer tout les checks

imagedata           .. text: "?@@322((&971"
b3,rgb,msb,xy       .. file: AIX core file fulldump 64-bit
b4,b,msb,xy         .. file: MPEG ADTS, layer I, v2, 24 kHz, Monaural
b5,b,lsb,xy         .. file: MPEG ADTS, layer II, v1, JntStereo
b6,bgr,msb,xy       .. file: MPEG ADTS, layer I, v2, Monaural
b7,bgr,lsb,xy       .. file: , 48 kHz, Monaural
b8,b,msb,xy         .. file: ddis/ddif
b8,rgb,lsb,xy       .. file: AIX core file 64-bit
b8,rgb,msb,xy       .. file: RDI Acoustic Doppler Current Profiler (ADCP)
b1,r,lsb,xy,prime   .. file: AIX core file fulldump 64-bit
b6,rgb,msb,xy,prime .. file: MPEG ADTS, layer I, v2, Monaural
b7,rgb,lsb,xy,prime .. file: , 48 kHz, Monaural
b8,bgr,msb,xy,prime .. file: RDI Acoustic Doppler Current Profiler (ADCP)
b6,bgr,msb,yx       .. file: MPEG ADTS, layer I, v2, Monaural
b7,bgr,lsb,yx       .. file: , 48 kHz, Monaural
b8,rgb,msb,yx       .. file: RDI Acoustic Doppler Current Profiler (ADCP)
b1,b,lsb,XY,prime   .. text: "E|Sa?&A|"
b2,r,lsb,XY,prime   .. file: AIX core file fulldump 32-bit
b2,g,lsb,Xy,prime   .. file: AIX core file fulldump 64-bit
b1,r,lsb,xY,prime   .. file: MPEG ADTS, layer II, v1, Monaural
b1,b,lsb,xY,prime   .. file: AIX core file fulldump
b4,g,lsb,xY,prime   .. file: AIX core file fulldump 64-bit

stegdetect

Effectue des tests statistiques pour déterminer si un outil stego a été utilisé jsteg, outguess, jphide, ...

stegdetect stego.jpg

stegbreak

Brute forcer pour JPG (Pour les méthodes outguess, jphide et jsteg)

stegbreak -t o -f wordlist.txt stego.jpg #pour methode outguess
stegbreak -t p -f wordlist.txt stego.jpg #pour methode jphide 
stegbreak -t j -f wordlist.txt stego.jpg #pour methode jsteg

jphide / jpseek

Permet de dissimuler/extraire de la donnée cachée dans un JPG

http://linux01.gwdg.de/~alatham/stego.html
https://github.com/mmayfield1/SSAK

phide cover.jpg stego.jpg secret.txt #Cacher de la donnée
jpseek stego.jpg output.txt #Extraire de la donnée

jsteg

Permet de cacher / extraire via le LSB d'un JPG

https://github.com/lukechampine/jsteg

jsteg hide cover.jpg secret.txt stego.jpg #Cacher de la donnée
jsteg reveal cover.jpg output.txt #Extraire la donnée

openstego

Permet de manipuler le LSB (sous plusieurs algorithme) d'un PNG

https://github.com/syvaidya/openstego

openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png #Cacher via le LSB

openstego extract -sf openstego.png -p abcd -xf output.txt #Extraire le LSB

outguess

Utilise la méthode des "bits redondants" pour masquer/extraire des données

outguess -k password -d secret.txt cover.jpg stego.jpg #Cacher secret.txt
outguess-extract -r -k password stego.jpg output.txt #Extraire le secret

stegano

Cacher/extraire de la donnée via LSB (Plusieurs methode) d'un fichier PNG

https://github.com/cedricbonhomme/Stegano

stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png or stegano-red hide --input cover.png -m "secret msg" --output stego.png or stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png for various generators (stegano-lsb-set list-generators) 	stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt or stegano-red reveal -i stego.png or stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt

cloackedpixel

Outil de manipulation LSB pour PNG

https://github.com/livz/cloacked-pixel

cloackedpixel hide cover.jpg secret.txt password creates cover.jpg-stego.png #
cloackedpixel extract cover.jpg-stego.png output.txt password

Fichiers Divers

pdf-parser

Utile pour parser/analyser des fichiers PDF (Sream, object, catalog, ...)
Utilisation:

$pdf-parser challenge.pdf

...
    /Length 79749
    /Type /Embeddedfile
    /Filter /FlateDecode
    /Params
      <<
        /Size 108542
        /Checksum <565984bd9e2901248b5d8abfe174e2b1>
      >>
    /Subtype /text/plain
  >>


obj 78 0
 Type: /Filespec
 Referencing: 77 0 R

  <<
    /F (Hidden_b33rs.txt)
    /Type /Filespec
    /EF
      <<
        /F 77 0 R
      >>
  >>
...

peepdf

Outil d'analyse de pdf (avec un mode interactif) Très utile pour tracer les liens des catalogues, stream, objects, ...

peepdf -f -i ctf.pdf #Pour lancer le mode interactif

PPDF> tree

/Page (3)
	Unknown (2)
	Unknown (4)
	Unknown (8)
	Unknown (5)
	Unknown (9)
	Unknown (11)
	Unknown (6)
	Unknown (16)
	array (51)
		/Annot (38)
			/filespec (36)
				stream (37)
			/Page (3)
			stream (45)
				stream (46)
					stream (47)
			stream (48)
				stream (49)
					stream (50)
/Info (18)
stream (54)


PPDF> info 37

Offset: 1060
Size: 213
MD5: 27e3c9fcf632ccbb4b1651a5366d11ac
Object: stream
Stream MD5: d41d8cd98f00b204e9800998ecf8427e
Raw Stream MD5: f45bde9d9234535a8244fc528a428897
Length: 203
Encoded: Yes
Filters: /FlateDecode
Filter Parameters: No
Decoding errors: Yes
References: []
Parsing Errors: 1

stegsnow

Permet d'insérer de la donnée ASCII invisible dans du texte

stegsnow -C chall.txt
FLAGIS{GG}

Votre imagination

C'est surtout elle qui vous permettra trouver la donnée cachée

Un script d'installation des tools est disponible ici https://github.com/k-lfa/Linux-CTFtools