Estos son los solucionarios publicados por parte de HackPlayers (desarrolladores del primer reto de esteganografía publicado en Sec-Track y de quienes esperamos publiquen muchos más (Y)) y de Juanma Merino (quien desde un comienzo intentó resolverlo hasta conseguirlo, Felicitaciones Juanma ;) ).

Solucionario por HackPlayers

Nos ponemos manos a la obra y en primer lugar descargamos las imágenes, primero la original (muñecodenieve1.jpg) y posteriormente la modificada (muñecodenieve2.jpg).

Lo primero que observamos a simple vista es que la imagen con el texto oculto tiene un tamaño mayor, concretamente 0,9KB.

Esto puede evidenciar que el método seguido para ocultar la información ha sido de inyección en lugar de técnicas como la del bit menos significativo (LSB) que no incrementarían el tamaño del original.

Estegoanálisis manual

A continuación y dado que tenemos el fichero original (sin modificaciones) podemos realizar en primera instancia un estegoanálisis manual que, como su nombre indica, consiste en buscar de forma manual diferencias entre el fichero original y el ‘esteganografíado’, identificando cambios en la estructura para localizar datos ocultos.

Pero antes de compararlos, aprovechando que tenemos los ficheros abiertos con nuestro editor hexadecimal favorito y, como además somos bastante desconfiados, comprobaremos si realmente se trata de una imagen con formato jpg.

Observamos el valor FF D8, que indica el comienzo de un fichero de imagen jpg. Normalmente estos dos bytes bastan para certificar que se trata realmente de un jpg, por lo que parece que no nos han engañado. Los siguientes bytes indican el fabricante de la aplicación y corresponden al formato típico de un jpg:

Y además al final del fichero observamos los bytes FF D9, que precisamente nos indican el final de la imágen “end of JPG file”.

Continuamos con el análisis de ambos ficheros y, comparándolos, observamos que al final de la segunda imagen modificada se evidencia claramente la presencia de datos ocultos. Además aparecen múltiples bytes 20 (espacio) que podrían indicar un buffer vacío.

Ya sabemos que se trata de una imagen jpg y que la herramienta utilizada para ocultar el texto en la imagen ha inyectado al final del fichero (algoritmo EOF) un buffer en el que se encuentra la información oculta que queremos desvelar.

Estegoanálisis automático

El siguiente paso es intentar descubrir cual ha sido la herramienta esteganográfica utilizada buscando alguna huella (footprint).

Para automatizar el proceso existen algunas herramientas de esteganoanálisis que automatizaran la búsqueda. Entre nuestras favoritas está Stegsecret de Alfonso Muñoz (UPM), por cierto un excelente ponente que vimos en el Asegúr@IT IV de Getafe (2008).

Stegsecret es un proyecto de código abierto hecho en Java que detecta EOF, LSB, DCTs y otras técnicas, e incluye una base de datos de fingerprints para más de 40 herramientas de esteganografía.

Al analizar la imagen modificada, Stegsecret detecta que la imagen contiene 73 bytes de información oculta al final del fichero (EOF) y ¡también descubre la herramienta utilizada!

Se trata de Camouflage 1.2.1 y lo ha descubierto a través del siguiente el patrón:

Una vez que conocemos la herramienta utilizada, procedemos a instalarla para hacer más pruebas e intentar obtener el texto oculto.

Posicionamos el cursor sobre el fichero modificado ‘muñecodenieve2.jpg’, pulsamos el botón derecho de nuestro ratón y seleccionamos ‘Uncamouflage’.

Como podemos ver en la imagen anterior, Camouflage nos solicita contraseña para acceder al contenido oculto: no podía ser tan fácil.

Análisis de la herramienta Camouflage

El siguiente paso será estudiar el funcionamiento de Camouflage para intentar romper esa contraseña. Para ello, creamos un fichero ‘pruebas.txt’ con el texto ‘Esto es una prueba’ y procedemos a ocultarlo en el fichero original ‘muñecodenieve1.jpg’.

Posicionamos el cursor sobre el fichero de texto creado ‘prueba.txt’, pulsamos el botón derecho de nuestro ratón y seleccionamos ‘Camouflage’.

Seleccionamos el fichero imagen que contendrá el fichero de texto oculto (portador),

guardamos el fichero resultante como ‘muñecodenieve_prueba.jpg’,

Y asignamos la password ‘1234’

A continuación repetimos la misma operación pero ocultamos el fichero de texto sin asignar contraseña.

El resultado es que tenemos dos ficheros ‘muñecodenieve_prueba.jpg’ y ‘muñecodenieve_prueba_sinpassword.jpg’ que podemos comparar.

Y con esta comparación descubrimos algo que llama poderosamente la atención: cuando la contraseña cambia (‘1234’ o vacía ‘ ‘) la mayoría de los datos no son modificados, por lo que nos percatamos inmediatamente de uno de los grandes fallos de diseño de Camouflage: ¡el cifrado no depende directamente de la contraseña!

Obteniendo la posición y sobrescribiendo la contraseña

Centrándonos en la búsqueda de la clave y sabiendo que nuestra contraseña de pruebas es ‘1234’ es fácilmente deducible que su posición es seguramente esos 4 bytes aislados que cambian:

‘muñecodenieve_prueba.jpg’ : 33 A7 49 16
‘muñecodenieve_prueba_sinpassword.jpg’ : 20 20 20 20 (contraseña en blanco)

Si sobrescribimos esos bytes por espacios, podremos obtener el fichero secreto sin problemas:

Si repetimos estas operaciones para identificar la posición y sobre escribir la contraseña del fichero “muñecodenieve2.jpg” habremos resuelto el reto.

Obteniendo la contraseña

Ahora queremos ir más allá: queremos además saber la contraseña que se ha utilizado para generar el fichero ‘muñecodenieve2.jpg’.

Al pasar la supuesta clave 6A E5 03 13 de hexadecimal a ASCII obtenemos ‘jå ’ y, evidentemente, no parece ser la contraseña real.

Esto nos hace suponer que Camouflage debe realizar una operación intermedia para codificar nuestra contraseña.

A través del análisis de varias imágenes cifradas con la misma clave es posible deducir que Camouflage utiliza cifrado XOR, un cifrado muy vulnerable que nos permitirá obtener la clave.

Brujuleando por Internet encontramos herramientas que automatizan este proceso de descifrado, como Camouflage_Password_Finder de Guillermito, cuyo artículo (¡del 2002!) nos ha servido para la creación de este reto.

Simplemente lo ejecutamos, seleccionamos el fichero ‘muñecodenieve2.jpg’ y terminanos de destripar completamente el reto:

El camino fácil

Muchas veces le decía a un amigo que para cruzar un río y llegar a la otra orilla lo antes posible no hacía falta bucear por todo su caudal.

Lejos de ser un proclama ‘lammer’, lo que quiero decir es que quizás algunos de vosotros hayáis resuelto el reto sin necesidad de realizar ningún análisis manual y sin conocer exactamente el funcionamiento de Camouflage.

Digamos que la forma rápida hubiese sido:

- Analizar la imagen con una herramienta de estegoanálisis (por ej. StegSecret) y descubrir que ha sido tratada con Camouflage 1.2.1.

- Buscar un poco por Internet y utilizar alguna de las herramientas capaces de crackear Camouflage: Camouflage_Password_Finder, CamouflageCrack, CamouflageCrack o Camodetect

Solucionario por Juanma Merino

En el reto proporcionan dos imágenes, la portadora limipia, que es una imagen en formato jpg (mu_ecodenieve.jpg y la portadora con otro archivo “secreto” dentro (mu_ecodenieve2.jpg).

Comparándolas con un editor hexadecimal se puede ver la información de más que presenta la imagen 2.

Con la herramienta StegSecret, que encontré en Cryptored pude ver que se había utilizado Camouflage 1.2.1 para insertar el archivo “secreto” en la portadora.

Instalé Camouflage 1.2.1 pero al intentar extraer el mensaje secreto vi que se solicitaba contraseña.

Buscando un poco encontré en Packetstorm detalles sobre como averiguar o saltarse la contraseña en archivos camouflage 1.2.1

Con un editor hexadecimal localicé la contraseña y la sobre-escribí para que fuera nula. Posteriormente guardé el archivo modificado como imagen3.

Abrí imagen3 con camouflage y esta vez no era necesario escribir contraseña. Siguiente, siguiente y aparece el archivo de nombre secreto.txt que contenía la siguiente frase: Para que los milagros ocurran es imprescindible que alguien crea en ellos

One Response to “Solucionario del Reto 1 de Esteganografía by HackPlayers and Juanma Merino”

  1. G3rm4nch0h4ck says:

    La verdad los felicito. En muchas ocasiones he pensado que la única forma de aprender es realizar las cosas manualmente. De que sirve aprender a manejar aplicaciones si se puede saber con un poco de paciencia y de gran ingeniedad como funciona todo lo que nos rodea.

    Muchas gracias por sus aportes Sec-track