lunes, 29 de marzo de 2010

GIFAR otro "steganography trick"

Hace cosa de unos meses a través de Jeremiah Grossman descubrí una técnica esteganográfica de nombre GIFAR y que fue presentado en las BlackHat US 2008. Esta técnica fue expuesta por "Billy Rios, Nathan McFeters, Rob Carter, and John Heasman" y consiste en juntar un fichero GIF y un fichero JAR. Por regla general todos los formatos de imagen poseen la cabecera que los identifica al principio del fichero ("GIF87a" o "GIF89a" para el caso de GIF) por este motivo las aplicaciones empieza por el principio para validar si es una imagen; por contra las aplicaciones que tratan ficheros JAR empiezan por el final. Si nos encontramos ante una auditoria donde tenemos una funcionalidad de upload de ficheros aplicaremos esta técnica para subir contenido GIFAR; la aplicación realizará sus comprobaciones y verá que es una imagen bien formada o un pdf (PDFAR) bien formado etc. Como regalito habremos podido subir un fichero JAR y por tanto haber pasado las comprobaciones de la aplicación.

Después de tanto rollo vamos a crear un simple prueba de concepto. Lo primero construiremos un simple fichero JAVA que realiza un alert de las cookie's:



Ahora lo vamos a compilar y crear nuestro GIFAR con unos comando rápidos:

# javac holamundo.java
# jar -cf holamundo.jar holamundo.class
# cat gifjar.gif holamundo.jar > gifjar2.gif

Si ahora vemos el fichero resultante con el visor de imágenes de Windows (por ejemplo):



Como vemos tenemos un fichero que es una imagen válida. Ahora vamos a subirla a una aplicación web e invocaremos el fichero de imagen para ver qué pasa. Para la prueba subimos el fichero a DVWA mediante la funcionalidad de Upload:



El fichero subido lo podremos ver en la url "http://192.168.72.133/webapp/dvwa/hackable/uploads/gifjar2.gif". Ahora construimos una página Web para poder invocar esta imagen como applet:



Si visitamos la página web poniendo como archive la imagen, vemos que se ejecuta:


Debe quedar claro que lo importante de la imagen anterior es que existe la posibilidad de invocar la imagen como un applet y esto funciona; no siendo relevante que se muestre la cookie en los mostrado anteriormente.

Llegados a este punto, uno se pone a pensar cómo podría realmente ser explotado por parte de un atacante esta técnica. Para esto haremos referencia al libro "Hacking: the next generation" donde uno de los autores es Billy Rios (os suena ... :P). En el libro se expone una manera "cuanto menos" curiosa para explotar este trick. Os lo resumo a continuación, pero para más información mejor que leáis el libro porque merece la pena:

1. Subimos un PDFAR (PDF + JAR) a una aplicación que permite upload de ficheros PDF (en la PoC del libro utilizan docs.google.com).

2. Una vez subido compartimos el fichero con el resto de usuarios de la aplicación. Puede darse el caso que la aplicación tengo también dentro de su dominio una funcionalidad de traducción (en la PoC del libro utilizando translate.google.com). Con esto podemos aprovecharnos y enviar un enlace a las víctimas con una página web de fuera del dominio de la aplicación pero que al ser servida por la funcionalidad de traducción, la página maliciosa ya se ejecuta en el contexto de la aplicación a atacar.

Espero que podáis probar el trick en vuestra auditorías :).

¿Qué otras maneras se os ocurre de aprovechar este "steganograpy trick"?
¿Qué otros tricks de este tipo utilizáis?

15 comentarios :

Rubén aka Trazi dijo...

Muy interesante, buen artículo :)
-falta una h en el título, steganograpHy-

Jose Selvi dijo...

Gracias @Trazi, ya está corregido :)

José Miguel Holguín dijo...

Asias @Trazi! ;)

Casi lo pongo yo otra "h" y se queda con 2 :P XDDD

xneo dijo...

Como mínimo, interesante post sobre la Esteganografia. Recuerdo un programa llamado Hacha (si no me equivoco) con el cual hice algunas travesuras, también había otro pero no me acuerdo ahora mismo. Por cierto -La próxima generación- supongo que estará en Ingles ¿verdad?, en fin, si es así todavia no me atrevo a comprarme un libro que no este en castellano, acabaría frustrado de tanto traducir, aunque asi es como se aprende claro. Saludos.

Jose Selvi dijo...

@xneo: Sí, Hacha se llamaba, yo también lo recuerdo :)

La ventaja que tiene GIFAR sobre otros métodos es que es posible utilizarlo como GIF o como JAR indistintamente sin hacer modificaciones sobre él, al contrario de lo que ocurriría con otros métodos en los que tendrías que separar ambos ficheros de nuevo para poder utilizarlos.

El "truco" consiste en que la mayoría de los formatos de fichero tienen sus "cabeceras de formato" al principio del fichero, mientras que los ZIP (y un Jar no deja de ser un Zip con ficheros Java dentro) tienen sus cabeceras al final, lo cual permite utilizar el mismo fichero de ambas formas.

José Miguel Holguín dijo...

Buenas @xneo,

Te puedo decir que el libro yo me lo he pillado en inglés y aunque vaya más despacio el contenido merece la pena. Te aconsejo que si puedes le pegues un vistazo al índice.

Un saludo y gracias por el comentario.

Anónimo dijo...

¿No se puede usar esto para robar sesiones?
¿El applet se ejecuta en el dominio donde se encuentra albergado o en el dominio donde se carga? Supongo que esto último por eso no sirve para robar cookies.

Un saludo.

José Miguel Holguín dijo...

Buenas @Anónimo,

Se puede llegar a robar identificadores de sesión y otras cosas. Lo que pasa es que los vectores de ataque (hasta donde yo he probado y trasteado) no son ni mucho menos simples. El ejemplo puesto se consigue robar documentos, de una víctima, pero como he comentado se apoyan del servicio de traducción para invocar al applet desde el mismo dominio donde está alojado y así acceder a la info.

Además de lo que comentas, lo interesante es saltarse las protecciones que impiden subir determinado contenido a este tipo de servicios.

Un saludo y gracias.

xneo dijo...

@Jose Selvi: Entiendo, esto mismo lo explicas en el Post, muy bueno sin duda.

@Jose Miguel Holguin: Intentare darle un vistazo en cuanto tenga tiempo. Por cierto os sigo desde hace tiempo pero a comentar me he animado hace poco y no solo con este Blog (que trata de lo mismo que el mio abierto desde el 2008) si no en otros también, hay veces que me he retraído mucho por miedo mas que nada a decir tonterías y es que mas vale aprender primero y despues comentar. Saludos a ambos.

José Miguel Holguín dijo...

@xneo, me alegro que te animes a comentar, siempre son bienvenidos los comentarios con críticas constructivas, dudas, etc.

Si ves que te atascas en algo pregunta e intentaremos entre todos ayudar (si lo sabemos claro está ^_^).

Pablo Sanchez dijo...

Artículo muy interesante. Gracias.
w3wes@jamon-espana.com.es

José Miguel Holguín dijo...

@Pablo, muchas gracias por el comentario :) y nos alegra que te gusten los posts.

xneo dijo...

@José Miguel Holguín: Gracias, te agradezco que me habrás las puertas a futuras preguntas, no te preocupes que seré (digo no seré) muy pesado xd, saludos.

hecky dijo...

Hola, esta tecnica esteganografica ya la habi visto y es muy buena :D , pero que gran explicacion y ejemplos tienen. Si no mal recuerdo y me equivoco, algo parecido sucede con los mp3 y exe.

Saludos ;)

P.D. Gran blog, desde ahora fiel seguidor :D

José Miguel Holguín dijo...

@hecky, la verdad es que la técnica no tiene ningún desperdicio jejejeje. Muchas gracias por el comentario y nos alegramos de que te guste el blog.