Log in
Blog HbS
Slider

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

Esteganografía ¿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
  • ¡A ocultar!
  • Durin´s Gates CTF

Nociones básicas de esteganografía 

 La esteganografía es el arte que permite ocultar mensajes u objetos dentro de otros de tal forma que no se perciba su existencia. Su objetivo es el intercambio de información a través de un canal de comunicación inseguro de forma exitosa, de tal modo que el propio acto de la comunicación pasa desapercibido para observadores que tienen acceso a ese canal.

 La esteganografía y la criptografía no son lo mismo. La criptografía cifra la información de manera que sea ilegible para un observar, y la esteganografía oculta la información de tal modo que pase desapercibido el hecho mismo de su existencia y envío. La esteganografía y la criptografía se complementan, unidas añaden un nivel más de seguridad.

 En la siguiente imagen, se describe de una forma muy representativa el proceso esteganográfíco de ocultar un mensaje en una cubierta utilizando una función esteganográfica, como recorre el canal inseguro sin ser detectado y, por último, como se aplica la función esteganográfíca inversa para obtener el mensaje original.

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:

  • Compresión de datos embebidos.
  • El cifrado de datos embebidos.
  • Inserción de una suma de control para verificar la integridad de los datos extraídos.
  • Soporte para archivos JPEG, BMP, WAV y AU.

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:

  • -ef, --embedfile filename: especifica el archivo que se ocultará.
  • -cf, --coverfile filename: archivo usado como tapadera.
  • -sf, --stegofile filename: especifica el nombre del archivo estego.
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


  • -v, --verbose: proporciona información de tallada del estado de la acción.
  • -q, --quiet: suprime los mensajes de información.
  • -f, --force: para sobrescribir los archivos existentes.


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

  • -p, --passphrase: declara la String que sigue a este argumento como passphrase.

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:


  • -z, --compress level: especifica el nivel de compresión. La compresión puede ir del 1 al 9.
  • -Z, --dontcompress: no comprime la información secreta antes de embeberla.
  • -K, --nochecksum: no embebe el CheckSum CRC32.
  • -N, --dontembedname: no embebe el nombre del archivo secreto.

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


  • -sf, --stegofile filename: especifica el archivo que contiene los datos embebidos.
  • -xf, --extractfile filename: crea un archivo con el nombre filename y escribe en el los datos que han sido embebidos en el archivo estego.

  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

Diario de guerra de un comercial informático (Cap....
Escaneado puertos
Agrega tu email para recibir novedades de seguridad
Estoy de acuerdo con el Términos y Condiciones