Banner 1

Solución al reto 15 de las ovejas negras - Hack-players

Buenas tardes.

Esta entrada es la solución al reto 15 de estenografía de la comunidad hack-players.

__________________________________________________________________________________

Si obviamos el enunciado, lo primero que llama la atención de nuestro reto esteganográfico nº 15 es que el rebaño de ovejas es realmente un mosaico formado por 6 imágenes:

 style="font-size: small;"> />
 class="prettyprint" style="overflow: auto;"> style="font-size: small;">
 class="reto15">
 class="nobr">
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja1.png" width="200" />
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja2.png" width="200" />
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja3.png" width="200" />
 class="nobr">
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja4.png" width="200" />
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja5.png" width="200" />
 border="0" height="188" src="https://sites.google.com/site/h4ckpl4y3s/oveja6.png" width="200" />
Por lo que procedemos a descargar las imágenes para analizarlas. Para ello y tal como indicamos en el tip del reto, añadimos a cada URL '?attredirects=0' para obtener cada original. Por ej. https://sites.google.com/site/h4ckpl4y3s/oveja1.png?attredirects=0.

El siguiente paso es observar atentamente las imágenes. Si aumentamos el zoom vemos que en la parte superior de la primera imagen se han modificado algunos píxeles. 


Si observamos el resto veremos que en cada una de ellas también existen píxeles modificados: ¡el mensaje secreto se encuentra repartido en todas las imágenes del mosaico!

Ahora bien, ¿qué método o herramienta han sido utilizados?

Sabiendo que se trata de múltiples portadoras en imágenes, si realizamos una búsqueda rápida (https://www.google.es/search?q=stego+multiple+png+images) pronto daremos con ello: el artículo Steganography II - multiple key and carrier files en CodeProject nos enseña un método sencillo para ocultar datos a lo largo de varias imagenes.

El procedimiento resumido es el siguiente:
- la CLAVE se obtiene mediante una operación XOR entre los bytes de un fichero clave y la repetición de una contraseña a nuestra elección
- se añaden las IMÁGENES del mosaico a un array (CarrierImages)
- se escribe la longitud del MENSAJE SECRETO en el primer pixel de la primera imagen
- se realiza un XOR entre un byte de la CLAVE y un byte del MENSAJE SECRETO y se calculan las coordenadas del pixel donde se almacenará el byte del mensaje
- se reemplaza uno de los componentes R, G o B del pixel con el byte del MENSAJE SECRETO
- se repite el procedimiento con los siguientes bytes del MENSAJE SECRETO y a través de las IMAGENES en el array

Tenéis mayor detalle y el código en los artículos de CodeProject. Para extraer el MENSAJE SECRETO tendremos que leer cada byte del stream de la CLAVE, calcular la posición del siguiente pixel, obtener el color e ir escribiendo el valor de R, G o B en el stream del MENSAJE SECRETO. Pero, ¿donde puedo conseguir la CLAVE (fichero clave y contraseña) para extraerlo?


                                              

Si habéis analizado las imágenes con otras herramientas, seguro que os habréis dado cuenta que la de la oveja negra es particularmente especial. 

Tiene un chunk diferente que podremos analizar por ejemplo con Tweakpng o, más fácil aún, si observamos los metadatos obtendremos lo que buscamos rápidamente:

C:\Users\vmotos\Desktop\Reto15>"exiftool(-k).exe" -l oveja5 
... 
Document Name       
hax0r5
Software       
https://sites.google.com/site/h4ckpl4y3s/key15.txt 
 ...  

Donde la URL en 'Software' contiene la ruta hacia la clave y el 'Document Name' indica la contraseña (hax0r5) (ojo también a las coodernadas GPS ;) ).  

Ya tenemos todo, la clave, la contraseña y las imágenes para obtener el mensaje secreto, así que podemos compilar el código o usar el binario que nos regala el autor de la herramienta:
 
 
Y finalmente se obtiene la respuesta: "vivire contra". 

Eso es todo, espero que os haya gustado el reto. Muchas gracias a todos los que hayáis intentado resolverlo y enhorabuena al ganador Daniel Correa, ya un asiduo de nuestra sección que nos recomienda también echar un vistazo a OpenPuff que soporta múltiples portadores, formatos y configuraciones.

¡Hasta la próxima!

Fuente:http://www.hackplayers.com/2012/07/solucion-al-reto-15-de-las-ovejas.html

No hay comentarios:

Powered by Bad Robot
Helped by Blackubay