
Script d'exploit pour CVE-2021-27211
Stegcrack est un programme open-source permettant d'exploiter une vulnérabilité dans Steghide (plus précisément CVE-2021-27211).
Stegcrack détecte si un fichier donné contient des données masquées avec Steghide, et peut parfois extraire entièrement les données cachées, le tout sans mot de passe.
Clonez ce dépôt
git clone https://github.com/b4shfire/stegcrack
Placez-vous dans le répertoire source
cd stegcrack/src
Compilez le programme
clang++ main.cc utils.cc file_handling.cc ui.cc Extractor.cc -ljpeg -pthread -lz -std=c++11 -O2 -o ../stegcrack
Sortez du répertoire source
cd ..
./stegcrack <chemin du fichier> <nombre de threads> (défaut : 4)
./stegcrack flowers.jpg
./stegcrack ../images/rocket.jpg 8
Pour masquer des données dans un fichier de couverture, Steghide convertit d'abord le mot de passe fourni en une graine (seed) de 32 bits.
La graine est créée comme suit :
Cette graine est ensuite utilisée pour générer une séquence de positions dans le fichier où les données doivent être masquées.
Le défaut de cette méthode est que, quelle que soit la complexité du mot de passe, il doit générer l'une des 2^32 graines possibles. Cela signifie que le mot de passe peut être contourné en forçant brutalement la variable de graine.
Une fois la graine générée, Steghide intègre d'abord des métadonnées (octets magiques, version de Steghide, taille des données...) dans le fichier de couverture.
Ces métadonnées peuvent être utilisées pour déterminer si chaque graine a été utilisée pour masquer des données. Par exemple, les 3 premiers octets intégrés sont toujours 0x73 0x68 0x8d (très proche de la chaîne ascii « shm » - StegHide Magic). Si une graine donnée ne génère pas ces octets, elle peut être écartée car elle n'a certainement pas été utilisée pour masquer des données. Ce processus se poursuit jusqu'à ce que toutes les graines soient écartées ou qu'une graine valide soit trouvée. Une graine valide indique la présence de données masquées.
Par défaut, Steghide chiffre les données à l'aide du mot de passe complet avant de les intégrer. Cela signifie que, dans la plupart des cas, Stegcrack ne pourra extraire que ces données chiffrées. Cependant, si le chiffrement a été désactivé lors de l'intégration, Stegcrack peut extraire entièrement les données cachées en texte clair.