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:
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?