DominicBreuker / stego-toolkit

Ce projet est une image Docker utile pour résoudre des défis de stéganographie comme ceux que vous pouvez trouver sur des plateformes CTF comme hackthebox.eu.L’image est livrée pré-installée avec de nombreux outils populaires (voir la liste ci-dessous) et plusieurs scripts de dépistage que vous pouvez utiliser pour vérifier des choses simples (par exemple, exécuter check_jpg.sh image.jpg pour obtenir un rapport pour un fichier JPG).

Docker build status

Hack The Box

Usage

D’abord, assurez-vous que vous avez installé Docker (comment faire).Ensuite, vous pouvez utiliser les scripts shell bin/build.sh et bin/run.sh dans ce repo pour construire l’image et exécuter le conteneur.Vous serez déposé dans un shell bash à l’intérieur du conteneur.Il aura le dossier data monté, dans lequel vous pouvez mettre les fichiers à analyser.

Si vous n’utilisez pas les scripts, suivez ces étapes :

  1. Construire l’image (docker build -t <image_name> .) ou la tirer du hub Docker (docker pull dominicbreuker/stego-toolkit)
  2. Démarrer un conteneur avec vos fichiers montés dans le dossier /data (docker run -it <image_name> -v /local/folder/with/data:/data /bin/bash)
  3. Utiliser les outils CLI et les scripts de dépistage sur vos fichiers : par ex, exécutez check_jpg.sh image.jpg pour créer un rapport rapide, ou exécutez brute_jpg.sh image.jpg wordlist.txt pour essayer d’extraire des données cachées avec divers outils et mots de passe
  4. Si vous voulez exécuter des outils GUI, utilisez l’une de ces deux façons :
  • Exécutez start_ssh.sh et connectez-vous à votre conteneur avec la redirection X11
  • Exécutez start_vnc.sh et connectez-vous au bureau du conteneur via votre navigateur

Vérifiez les sections suivantes pour plus d’informations :

  • Quels outils sont installés ? Allez ici
  • Quels scripts puis-je exécuter pour passer rapidement les fichiers au crible automatiquement ou par force brute ? Go here
  • Comment puis-je jouer avec différents exemples de stéganographie pour voir si je peux les casser ? Allez ici
  • Comment puis-je exécuter des outils GUI à l’intérieur du conteneur ? Allez ici

Demo

Démarrez avec docker run -it --rm -v $(pwd)/data:/data dominicbreuker/stego-toolkit /bin/bash.Vous serez déposé dans un shell conteneur dans le répertoire de travail /data.Votre dossier hôte $(pwd)/data sera monté et les images à l’intérieur seront accessibles.

démo animée gif

Outils

De nombreux outils Linux et Windows différents sont installés.Les outils Windows sont pris en charge avec Wine.Certains outils peuvent être utilisés sur la ligne de commande tandis que d’autres nécessitent un support GUI!

Outils d’interface de ligne de commande

Ces outils peuvent être utilisés sur la ligne de commande.Tout ce que vous avez à faire est de démarrer un conteneur et de monter les fichiers de stéganographie que vous voulez vérifier.

Outils de dépistage général

Outils à exécuter au début.Vous permettent d’avoir une idée générale de ce à quoi vous avez affaire.

.

.

.

Outil Description Comment utiliser
file Vérifier quel type de fichier vous avez file stego.jpg
exiftool Vérifier les métadonnées des fichiers multimédias exiftool stego.jpg
binwalk Vérifier si d’autres fichiers sont intégrés ou ajoutés binwalk stego.jpg
strings Vérifier s’il y a des caractères lisibles intéressants dans le fichier strings stego.jpg
foremost Carve out embedded/appended files foremost stego.jpg
pngcheck Obtenir des détails sur un fichier PNG (ou découvrir qu’il est en fait autre chose) pngcheck stego.png
identify Outil de GraphicMagick pour vérifier quel type d’image est un fichier. Vérifie également si l’image est corrompue. identify -verbose stego.jpg
ffmpeg ffmpeg peut être utilisé pour vérifier l’intégrité des fichiers audio et le laisser rapporter les infos et les erreurs ffmpeg -v info -i stego.mp3 -f null -. recoder le fichier et jeter le résultat

Outils détectant la stéganographie

Outils conçus pour détecter la stéganographie dans les fichiers.La plupart effectuent des tests statistiques.Ils ne révèlent les messages cachés que dans des cas simples.Toutefois, ils peuvent fournir des indications sur ce qu’il faut rechercher s’ils trouvent des irrégularités intéressantes.

Outil Types de fichiers Description Comment utiliser
stegoVeritas Images (JPG, PNG, GIF, TIFF, BMP) Une grande variété de contrôles simples et avancés. Vérifiez stegoveritas.py -h. Vérifie les métadonnées, crée de nombreuses images transformées et les enregistre dans un répertoire, Brute forces LSB, …. stegoveritas.py stego.jpg pour exécuter toutes les vérifications
zsteg Images (PNG, BMP) Détecte divers LSB stego, également openstego et l’outil Camouflage zsteg -a stego.jpg pour effectuer toutes les vérifications
stegdetect Images (JPG) Fait des tests statistiques pour trouver si un outil stego a été utilisé (jsteg, outguess, jphide, …). Vérifiez man stegdetect pour plus de détails. stegdetect stego.jpg
stegbreak Images (JPG) Craqueur de force brute pour les images JPG. Prétend qu’il peut craquer outguess, jphide et jsteg. stegbreak -t o -f wordlist.txt stego.jpg, utilisez -t o pour outguess, -t p pour jphide ou -t j pour jsteg

Outils faisant réellement de la stéganographie

Outils que vous pouvez utiliser pour cacher des messages et les révéler après.Certains chiffrent les messages avant de les cacher.S’ils le font, ils exigent un mot de passe.Si vous avez un indice sur le type d’outil utilisé ou le mot de passe qui pourrait être le bon, essayez ces outils.Certains outils sont pris en charge par les scripts de force brute disponibles dans cette image Docker.

Outil Types de fichiers Description Comment cacher Comment récupérer
AudioStego Audio (MP3. / WAV) Des détails sur son fonctionnement sont dans ce billet de blog hideme cover.mp3 secret.txt && mv ./output.mp3 stego.mp3 hideme stego.mp3 -f && cat output.txt
jphide/jpseek Image (JPG) Pretty old tool from here. Ici, la version d’ici est installée puisque l’original plantait tout le temps. Il demande une phrase de passe de manière interactive! jphide cover.jpg stego.jpg secret.txt jpseek stego.jpg output.txt
jsteg Image (JPG) Outil stégoLSB. Ne crypte pas le message. jsteg hide cover.jpg secret.txt stego.jpg jsteg reveal cover.jpg output.txt
mp3stego Audio (MP3) Ancien programme. Chiffre et ensuite cache un message (chiffrement 3DES !). Outil Windows fonctionnant dans Wine. Nécessite une entrée WAV (peut jeter des erreurs pour certains fichiers WAV. ce qui fonctionne pour moi est par exemple : ffmpeg -i audio.mp3 -flags bitexact audio.wav). Important : utilisez le chemin absolu seulement! 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) Divers algorithmes stégo LSB (consultez ce blog). Toujours maintenu. openstego embed -mf secret.txt -cf cover.png -p password -sf stego.png openstego extract -sf openstego.png -p abcd -xf output.txt (omettre -xf pour créer un fichier avec le nom original !)
outguess Images (JPG) Utilise des « bits redondants » pour cacher des données. Existe en deux versions : old=outguess-0.13 prise ici et new=outguess issue des dépôts de paquets. Pour récupérer, vous devez utiliser celle utilisée pour la dissimulation. outguess -k password -d secret.txt cover.jpg stego.jpg outguess -r -k password stego.jpg output.txt
spectrologie Audio (WAV) Encode une image dans le spectrogramme d’un fichier audio. TODO Utiliser l’outil GUI sonic-visualiser
stegano Images (PNG) Cache les données avec diverses méthodes (basées sur LSB). Fournit également quelques outils de dépistage. stegano-lsb hide --input cover.jpg -f secret.txt -e UTF-8 --output stego.png ou stegano-red hide --input cover.png -m "secret msg" --output stego.png ou stegano-lsb-set hide --input cover.png -f secret.txt -e UTF-8 -g $GENERATOR --output stego.png pour divers générateurs (stegano-lsb-set list-generators) stegano-lsb reveal -i stego.png -e UTF-8 -o output.txt ou stegano-red reveal -i stego.png ou stegano-lsb-set reveal -i stego.png -e UTF-8 -g $GENERATOR -o output.txt
Steghide Images (JPG, BMP) et Audio (WAV, AU) Outil polyvalent et mature pour crypter et cacher des données. 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 outil pour images cloackedpixel hide cover.jpg secret.txt password crée cover.jpg-stego.png cloackedpixel extract cover.jpg-stego.png output.txt password
LSBSteg Images (PNG, BMP, …) dans des formats non compressés Outils LSB simples avec un code Python très agréable et lisible LSBSteg encode -i cover.png -o stego.png -f secret.txt LSBSteg decode -i stego.png -o output.txt
f5 Images. (JPG) Algorithme stéganographique F5 avec des informations détaillées sur le processus 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) et Audio (WAV) Programme de stéganographie simple basé sur la méthode LSB stegpy secret.jpg cover.png stegpy _cover.png

Outils de stéganographie GUI

Tous les outils ci-dessous ont des interfaces graphiques et ne peuvent pas être utilisés par la ligne de commande.Pour les exécuter, vous devez rendre un serveur X11 disponible à l’intérieur du conteneur.Deux méthodes sont prises en charge :

  • exécuter start_ssh.sh pour lancer un serveur SSH. Connectez-vous ensuite avec la redirection X11. Nécessite un serveur X11 sur votre hôte!
  • run start_vnc.sh pour lancer un serveur + client VNC. Connectez-vous ensuite avec votre navigateur au port 6901 et vous obtenez un bureau Xfce. Aucune dépendance de l’hôte!

Alternativement, trouvez d’autres moyens de rendre X11 disponible à l’intérieur du conteneur.De nombreuses façons différentes sont possibles (par ex, monter des sockets UNIX).

Outil Types de fichiers Description Comment commencer
Steg Images (JPG, TIFF, PNG, BMP) Gère de nombreux types de fichiers et met en œuvre différentes méthodes steg
Steganabara (Le lien original est rompu) Images ( ? ??) Transformez interactivement les images jusqu’à ce que vous trouviez quelque chose steganabara
Stegsolve Images ( ???) Transformez interactivement les images, visualisez les schémas de couleurs séparément, …. stegsolve
SonicVisualiser Audio ( ???) Visualiser des fichiers audio en forme d’onde, afficher des spectrogrammes, …… sonic-visualiser
Stegosuite Images (JPG, GIF, BMP) Peut crypter et cacher des données dans des images. Activement développé. stegosuite
OpenPuff Images, Audio, Vidéo (nombreux formats) Outil sophistiqué avec une longue histoire. Toujours maintenu. Outil Windows fonctionnant dans le vin. openpuff
DeepSound Audio (MP3, WAV) Outil d’enregistrement audio fiable par Mr. Robot lui-même. Outil Windows fonctionnant dans wine (très hacky, nécessite VNC et fonctionne dans un bureau virtuel, MP3 cassé en raison d’une DLL manquante !) deepsound uniquement dans une session VNC
cloackedpixel-analyse Images (PNG) Visualisation du stégo LSB pour les PNG – utilisez-le pour détecter les valeurs LSB aléatoires suspectes dans les images (les valeurs proches de 0.5 peuvent indiquer que des données cryptées sont intégrées) cloackedpixel-analyse image.png

Scripts de dépistage

Plusieurs outils ci-dessus ne nécessitent pas d’interaction avec une interface graphique.Par conséquent, vous pouvez facilement automatiser certains flux de travail pour effectuer un dépistage de base des fichiers contenant potentiellement des messages cachés.Comme les outils applicables diffèrent selon le type de fichier, chaque type de fichier a des scripts différents.

Pour chaque type de fichier, il y a deux types de scripts:

  • XXX_check.sh <stego-file> : exécute les outils de dépistage de base et crée un rapport (+ éventuellement un répertoire avec des rapports en fichiers)
  • XXX_brute.sh <stego-file> <wordlist> : essaie d’extraire un message caché d’un fichier stego avec divers outils en utilisant une liste de mots (cewl, john et crunch sont installés pour générer des listes – gardez-les petites).

Les types de fichiers suivants sont pris en charge :

  • JPG : check_jpg.h et brute_jpg.sh (exécution brute steghide, outguess, outguess-0.13, stegbreak, stegoveritas.py -bruteLSB)
  • PNG : check_png.h et brute_png.sh (exécution brute openstego et stegoveritas.py -bruteLSB)

Génération de listes de mots

Les scripts de forçage brut ci-dessus ont besoin de listes de mots.Imho il sera très probablement pas utile d’utiliser d’énormes listes de mots standard comme rockyou.Les scripts sont trop lents pour cela et les défis stego ne semblent pas être conçus pour cela.Un scénario plus probable est que vous avez une intuition de ce que le mot de passe pourrait être mais que vous ne savez pas exactement.

Pour ces cas, plusieurs outils pour générer des listes de mots sont inclus :

  • john : la version améliorée par la communauté de John the Ripper peut étendre vos listes de mots. Créez une liste de mots de base avec quelques mots de passe candidats et utilisez john pour créer de nombreuses variantes de ceux-ci. Utilisez john -wordlist:/path/to/your/wordlist -rules:Single -stdout > /path/to/expanded/wordlist pour appliquer des règles étendues (~x1000) john -wordlist:/path/to/your/wordlist -rules:Wordlist -stdout > /path/to/expanded/wordlist pour un jeu de règles réduit (~x50).
  • crunch : peut générer de petites listes de mots si vous avez un modèle en tête. Par exemple, si vous savez que les mots de passe se terminent par 1984 et font 6 lettres, l’utilisation de crunch 6 6 abcdefghijklmnopqrstuvwxyz -t @@1984 générera les 26 * 26 = 676 mots de passe aa1984, ab1984, … jusqu’à zz1984. Le format est crunch <min-length> <max-length> <charset> <options> et nous avons utilisé l’option templating. Consultez less /usr/share/crunch/charset.lst pour voir les jeux de caractères avec lesquels crunch est livré.
  • CeWL : peut générer des listes de mots si vous savez qu’un site web est lié à un mot de passe. Par exemple, exécutez cewl -d 0 -m 8 https://en.wikipedia.org/wiki/Donald_Trump si vous soupçonnez qu’une photo de Donald Trump contient un message caché crypté. La commande scrape le site et extrait des chaînes de caractères d’au moins 8 caractères.

Exemples de stéganographie

L’image contient un échantillon d’image et un fichier audio chacun dans des formats différents :

  • /examples/ORIGINAL.jpg
  • /examples/ORIGINAL.png
  • /examples/ORIGINAL.mp3
  • /examples/ORIGINAL.wav

Il contient également un script /examples/create_examples.sh que vous pouvez exécuter pour incorporer un message caché ( » Ceci est un message très secret ! ») dans ces fichiers avec de nombreuses méthodes différentes.Après avoir exécuté ce script, vous trouvez ces fichiers dans /examples/stego-files avec leurs noms indiquant quel outil a été utilisé pour intégrer le message.Vous pouvez exécuter les scripts de dépistage pour voir s’ils trouvent quelque chose sur eux ou essayer de les casser autrement.

Ingénierie graphique et conteneurs

Par défaut, aucun outil d’interface graphique ne peut être exécuté dans un conteneur Docker car aucun serveur X11 n’est disponible.Pour les exécuter, vous devez changer cela.Ce qui est nécessaire pour le faire dépend de votre machine hôte.Si vous:

  • exécutez sur Linux, vous avez probablement X11
  • exécutez sur Mac OS, vous avez besoin de Xquartz (brew install Xquartz)
  • exécutez sur Windows, vous avez un problème

Utilisez la redirection X11 par SSH si vous voulez aller de cette façon. Exécutez start_ssh à l’intérieur du conteneur pour démarrer le serveur, assurez-vous d’exposer le port 22 lors du démarrage du conteneur : docker run -p 127.0.0.1:22:22 ..., puis utilisez ssh -X ... lors de la connexion (le script imprime le mot de passe).

Pour ne pas dépendre de X11, l’image est livrée avec un serveur TigerVNC et un client noVNC.Vous pouvez l’utiliser pour ouvrir une session VNC HTML5 avec votre navigateur pour vous connecter au bureau Xfce des conteneurs. Pour cela, exécutez start_vnc.sh à l’intérieur du conteneur pour démarrer le serveur et le client, assurez-vous d’exposer le port 6901 lors du démarrage du conteneur docker run -p 127.0.0.1:6901:6901 ... et allez à localhost:6901/?password=<the_password> (le script imprime le mot de passe).

Utiliser SSH avec X11 forwarding

démo gif animée - SSH + X11

Commandes dans le GIF pour copier &coller :

# 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

Utilisation du navigateur et du VNC

Démo gif animée - Navigateur + VNC

Commandes dans le GIF pour copier &coller:

# 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>

Collection de liens

C’est une collection de liens utiles sur la stéganographie:

  • Vous devez être capable de repérer les codes. Jetez un coup d’œil à cette antisèche d’Eric Harshbarger, qui contient de nombreux codes différents.
  • Assieure antisèche décrivant les flux de travail, les choses à rechercher et les outils courants : cliquez sur
  • Guide CTF de la police scientifique avec beaucoup d’idées pour les défis stégo : cliquez sur
  • Descriptions de formats de fichiers sous forme de belles affiches : cliquez sur

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.