Esteganografía: el arte de la ocultación

La esteganografía es el arte de la ocultación. Consiste en esconder mensajes de forma que a simple vista no se perciban. Se basa en la idea de que descifrar un mensaje cifrado es sólo cuestión de tiempo, pero descubrir un mensaje secreto es mucho más difícil si ni siquiera se sabe que hay un mensaje.

La esteganografía es una técnica que lleva empleándose miles de años en las comunicaciones secretas. Durante las Guerras Médicas (490 a. C.), los griegos rasuraban la cabeza a sus esclavos, les tatuaban el mensaje que querían comunicar, esperaban a que les creciera el cabello de nuevo y les enviaban al destinatario. De esa forma, si durante el camino eran capturados, los enemigos no encontrarían ningún mensaje portado por los esclavos.

Incluso durante la Segunda Guerra Mundial se utilizaba la esteganografía, mediante el método Null Cipher, que consiste en ofuscar el mensaje en texto irrelevante. Por ejemplo en la siguiente frase:

Susan says Gail lies. Matt lets Susan feel jovial. Elated or angry?

A priori es un mensaje sin ningún tipo de relevancia bélica, sin embargo si remitente y emisor han acordado seguir un patrón como leer la primera letra de la primera palabra, la segunda letra de la segunda palabra, la tercera letra de la tercera palabra, y repetir el bucle (con la primera letra de la cuarta palabra), obtendríamos el mensaje:

Susan sAys GaIl Lies. MAtt leTs Susan fEel joVial. Elated (or) aNgry?

Obtendríamos el mensaje “Sail at seven” (barco a las siete).

Hoy en día la esteganografía ha pasado a la informática debido a que para llegar de un ordenador a otro es necesario navegar por un canal inseguro. Sin embargo, las técnicas que se emplean para ocultar mensajes son de criptografía, no de esteganografía.

Pero no deja de ser interesante echar un vistazo a las distintas técnicas y herramientas de esteganografía que existen hoy en día en la informática. Empecemos por la más sencilla: strings.

Strings

Lo primero que hago cuando me enfrento a un reto de esteganografía es un strings al fichero a analizar.

Strings es un comando que simplemente muestra las cadenas de caracteres imprimibles de un archivo. La técnica de esteganografía más sencilla es introducir algún mensaje entre el código del archivo.

Veamos un ejemplo. Esta es una imagen corriente:

Sin embargo, al hacer un strings de la misma, descubrimos que contiene un mensaje secreto:

Otra cosa importante que podemos descubrir con strings es que haya un archivo oculto dentro. Si al inicio del archivo aparecen dos cadenas algo extrañas, parecidas a las siguientes, es casi seguro que hay un archivo escondido dentro de ese archivo:

Pero para descubrir qué archivo contiene, necesitaremos otras herramientas.

Binwalk

Esta herramienta es otra de las que más utilizo para resolver retos de esteganografía. Sirve para descubrir si hay archivos ocultos dentro de otro archivo. De nuevo tenemos la misma imagen que antes:

Parece una imagen normal y corriente. Sin embargo, al ejecutar binwalk, vemos que hay un zip escondido en su interior. Con la opción -e indicamos que queremos extraer aquello que contenga.

Steghide

Con steghide puedes encontrar archivos ocultos que hayan sido protegidos con contraseña. Veamos la siguiente imagen:

Si intentamos extraerlo con binwalk, nos dará errores y no podremos obtener el archivo oculto.

Sin embargo, podemos utilizar steghide para obtener el archivo oculto, siempre que conozcamos la contraseña con la que se ha escondido.

Para averiguar la contraseña, lo habitual es pasarle algún diccionario e intentar reventarlo por fuerza bruta. Para ello podemos encontrar varias herramientas, pero yo te recomiendo el script StegCrusher, ya que permite realizar la fuerza bruta con multi hilo.

Stegsolve

Con esta herramienta podemos comprobar las distintas capas de las imágenes. Es un .jar que nos permite analizar si alguna de las capas de la imagen esconde un mensaje oculto.

Observemos la siguiente imagen:

 

Parece una imagen normal. sin embargo, al abrirla con esta herramienta podemos ir pulsando las flechas que aparecen bajo la imagen para ir cambiando entre los distintos planos:

Tras unos cuantos intentos… ¡Ha aparecido un texto! 

Esta es la forma más común de ocultar un texto u otra imagen en una capa de imagen, sin embargo stegsolve ofrece utilidades más precisas para descubrir mensajes ocultos más enrevesados.

Sonic-visualiser

Hasta ahora hemos visto como descubrir cualquier tipo de archivo oculto dentro de otro, y cómo encontrar un mensaje en una capa de una imagen. A continuación nos adentramos en el mundo del sonido.

Y es que en el audio también es posible ocultar mensajes secretos (más allá de las psicofonías y los mensajes satánicos al reproducir un audio al revés)

Tenemos el audio lethani.wav. A priori, es un audio normal, y si lo reproducimos, sonará una alegre canción. Probemos a abrirlo con sonic-visualiser.

Podemos ver que no nos da ninguna información relevante. La mayoría de las veces que hay algo oculto en un archivo de audio, la clave está en el espectograma. Con este programa podemos ver el espectograma de las ondas pulsando en Layer -> Add Spectogram:

Y… Voilà! El logo de Lethani estaba oculto en el audio!

Con esto doy fin a esta breve explicación de las distintas herramientas de esteganografía que se pueden encontrar hoy en día. Ahora que ya sabes todo esto, puedes probar tú mismo estas herramientas intentando resolver los retos de esteganografía que hay en Hack The Box. Con esta información podrás resolver entorno al 90% de los mismos. Si aun no conoces Hack The Box, te recomiendo que visites mi post “Introducción a Hack The Box”.

Lethani.

Esta entrada tiene 4 comentarios

  1. Jr

    Hola.. Muchas gracias por el contenido, pero no tienes una guía de como usar el StegCrushed ?

    1. Lethani

      El modo de uso de stegcrusher es el siguiente:
      ./stegcrusher

      Si tiene éxito, el archivo de salida se guarda en .out

      Un saludo!

Deja una respuesta