
Script de exploit para CVE-2021-27211
Stegcrack es un programa de código abierto para explotar una vulnerabilidad en Steghide (concretamente CVE-2021-27211).
Stegcrack detecta si un archivo determinado contiene datos ocultos con Steghide y, en ocasiones, puede extraer por completo los datos ocultos, todo ello sin contraseña.
Clona este repositorio
git clone https://github.com/b4shfire/stegcrack
Accede al directorio fuente
cd stegcrack/src
Compila el programa
clang++ main.cc utils.cc file_handling.cc ui.cc Extractor.cc -ljpeg -pthread -lz -std=c++11 -O2 -o ../stegcrack
Sal del directorio fuente
cd ..
./stegcrack <filepath> <number of threads> (default: 4)
./stegcrack flowers.jpg
./stegcrack ../images/rocket.jpg 8
Para ocultar datos dentro de un archivo de portada, Steghide primero convierte la contraseña proporcionada en una semilla de 32 bits.
La semilla se crea de la siguiente manera:
Esta semilla se utiliza entonces para generar una secuencia de posiciones en el archivo donde se ocultarán los datos.
El fallo de este método es que, por muy compleja que sea la contraseña, debe generar una de las 2^32 semillas posibles. Esto significa que la contraseña se puede omitir por completo aplicando fuerza bruta a la variable de la semilla.
Una vez generada la semilla, Steghide primero incrusta metadatos (bytes mágicos, versión de Steghide, tamaño de los datos...) en el archivo de portada.
Estos metadatos se pueden usar para determinar si cada semilla se ha utilizado para ocultar datos. Por ejemplo, los primeros 3 bytes incrustados son siempre 0x73 0x68 0x8d (muy cercanos a la cadena ascii "shm": StegHide Magic). Si una semilla determinada no genera estos bytes, se puede descartar, ya que con seguridad no se ha utilizado para ocultar datos. Este proceso continúa hasta que se descartan todas las semillas o se encuentra una semilla válida. Una semilla válida indica que hay datos ocultos.
Por defecto, Steghide cifra los datos con la contraseña completa antes de incrustarlos. Esto significa que, en la mayoría de los casos, Stegcrack solo podrá extraer estos datos cifrados. Sin embargo, si el cifrado se desactivó durante la incrustación, Stegcrack puede extraer por completo los datos ocultos en texto plano.