Por Juan Miranda Blitz on Domingo, 14 Junio 2020
Categoría: General

¿Cómo ocultar un archivo dentro de otro? – Esteganografía

¡Buenas tardes hacker!

En el anterior post te expliqué cómo ocultar información dentro de un sistema mediante el uso de los NTFS Alternate Data Streams y en este vamos a cómo ocultar archivos u información dentro de otros utilizando la esteganografía.

Puntos que se van a abordar en este post:

Nociones básicas de esteganografía 

La maravillosa Steghide 

Steghide es una herramienta de esteganografía capaz de ocultar datos en varios tipos de archivos de imagen y audio. Las frecuencias de color de las muestras no cambian, lo que hace que la incrustación sea resistente a las pruebas estadísticas de primer orden.

Características:

El algoritmo de cifrado por defecto es AES con un tamaño de clave de 128 bits. Con el argumento encinfo, se pueden observar todos los algoritmos de cifrado y modos disponibles.

> steghide encinfo

¡A ocultar! 

El primer paso es instalar la herramienta, ya que por defecto no viene instalada en Kali:  

> apt-get install steghide -y

Crea un documento txt nombrado como secret.txt, y dentro introduce la frase "Esto es un secreto":

> touch secret.txt && echo "Esto es un secreto" > secret.txt && cat secret.txt

  Ahora comprime el archivo secret.txt en zip, descarga la imagen propuesta con wget y renómbrala a HbStego.png:

> zip secret.zip secret.txt
> wget https://upload.wikimedia.org/wikipedia/commons/2/2f/Pied-winged_swallow_%28Hirundo_leucosoma%29.jpg
> mv Pied-winged_swallow_\(Hirundo_leucosoma\).jpg pied.jpg

  Para ocultar un archivo dentro de una imagen hay que utiliza el siguiente comando:

> steghide embed -ef secret.zip -cf pie.jpg -sf HbStego.jpg

Argumentos:

Uno de los pasos que hace steghide para cifrar la información es requerirte (de manera opcional) una passphrase. El algoritmo que utiliza para ocultar el contenido utiliza la passphrase para generar las posiciones dentro de los pixeles donde ocultará el archivo, en el caso de que la passphrase no sea introducida lo hará de forma aleatoria.

Si se requiere un nivel más de información o que no proporcione ninguna a la hora de realizar la acción puedes usar los argumentos -v o -q, respectivamente: 

> steghide embed -ef secret.zip -cf pie.jpg -sf HbStego.jpg -v
> steghide embed -ef secret.zip -cf pie.jpg -sf HbStego.jpg -q -f

También existe la posibilidad de proporcionar a Steghide directamente la passphrase como argumento con el argumento -p. Por ejemplo, con los anteriores argumentos -p y -f podemos realizar la acción directamente sin mostrar nada por pantalla:

> steghide embed -ef secret.zip -cf pie.jpg -sf HbStego.jpg -p Hbs -q -f

Si quieres ver la información de un archivo que oculta otro mediante esteganografía, puedes utilizar el siguiente comando: 

> steghide info HbStego.jpg

Como se puede observar el archivo incrustado "secret.zip" ha sido cifrado con Rijndael-128 en modo cbc:

Existen múltiples argumentos que pueden resultar útiles a la hora de ocultar los archivos o de tú hacer pruebas con la herramienta y con la esteganografía:



Por último, para la extracción tendrás que usar el comando extract con los siguientes argumentos:

> steghide extract -sf HbStego.jpg -p HbS -f
ó
> steghide extract -sf HbStego.jpg -xf extracted -p HbS

  Con un editor hexadecimal, como es xxd, podemos comparar que los dos archivos extraídos, uno sin -xf y el segundo con -xf, son idénticos:

 

Durin´s Gates CTF

Este es un CTF de la categoría Criptografía y Esteganografía de la plataforma Atenea CCN CERT (https://atenea.ccn-cert.cni.es ). El reto está actualmente retirado, así que será perfecto para poner en práctica alguno de los conocimientos aquí presentados.

Para descargar la imagen [doors_of_durin-f686f3e1aa18d5e3f4261bea89a24c17.jpg] vas a tener que registrarte en Atenea y dirigirte a Retos >> Retos 2018 >> Criptografía y Esteganografía: Durin´s Gates.

Cuando abras la imagen, verás una frase que puede ofrecernos la primera pista del reto <<It´s simple. If you are a friend, you speak the password and the doors will open>>

Antes de nada, uno de los primeros pasos para poder evaluar un objeto al que se le ha aplicado esteganografía es visualizar detenidamente sus metadatos. Una de las herramientas por excelencia para este análisis es exiftool, así que ahora deberás instalar la herramienta y ejecutarla de forma básica.  

> apt-get install exiftool -y
> exiftool doors_of_durin-f686f3e1aa18d5e3f4261bea89a24c17.jpg

Después de analizar detenidamente los metadatos, se puede observar que lo único sospechoso que igual deberíamos de apuntar es el Artista: 68913499125FAA ​

También es recomendable realizar un análisis hexadecimal, aunque sea tedioso el proceso muchas veces es necesario. Este análisis se puede realizar con la herramienta xxd, exiftool, HxD y un sinfín de ellas. Este paso no lo voy a realizar porque no es necesario para resolver el reto.

Si recuerdas, en la película, Gandalf cae en la cuenta de que lo que quiere decir la frase es "Say friend and enter", así que la contraseña para su acceso es Mellon, que significa "friend" en Sindarin.

Una vez descubierta la passphrase, puedes utilizar la herramienta steghide con el comando info para visualizar la información de los datos embebidos:

> steghide info doors_of_durin-f686f3e1aa18d5e3f4261bea89a24c17.jpg

  Ahora llega el momento de extraer el fichero url.txt:

> steghide extract -sf doors_of_durin-f686f3e1aa18d5e3f4261bea89a24c17.jpg

Después de extraer el fichero y realizar un cat para comprobar que el contenido es una url, puedes utilizar el siguiente comando para abrirlo directamente en el browser: 

> cat url.txt
> cat url.txt | xargs firefox

Se te abrirá un pastebin con un código en base 64 que tendremos que decodificar:  

  Copia el contenido y pégalo en un fichero llamado SgaSizcn.txt. Para decodificarlo puedes utilizar el siguiente comando:

> base64 -d SgaSizcn.txt > decoded

Posteriormente, con el comando file podrás comprobar que se trata de un archivo cifrado con contraseña mediante OpenSSL. 

  Una de las contraseñas que puedes probar lógicamente es Mellon, pero en ese caso no te va a resultar útil. Sin embargo, si recuerdas, extrajimos en el análisis de metadatos de la imagen una string del campo Artista que parecía ser bastante sospechosa, así que prueba con esta para ver si es la posible contraseña:

> openssl enc -aes-256-cbc -d -md MD5 -in decoded -out decoded2 -k 68913499125FAA

Por último, verifica con el comando file qué tipo de archivo es:

> file decoded2

  Podrás observar que es un archivo MP4, así que ya solo queda reproducirlo.

¿Cuál es la contraseña que te muestra?

Hasta aquí el post de hoy sobre Esteganografía. Espero que te haya gustado y recuerda, utilízalo para aumentar tus conocimientos, no para hacer el mal.

Muchas gracias hacker ¡hasta la próxima!

Autor: Juan Miranda Blitz