La ocultación de información en elementos aparentemente sin relación es algo que lleva haciéndose desde hace siglos y que se conoce como esteganografía. En informática, se suele utilizar esta técnica para ocultar información en ficheros aparentemente inocuos y conseguir que información confidencial pase desapercibida.

No obstante, también se puede utilizar la esteganografía para ocultar código ejecutable y conseguir así que un usuario no sospeche nada cuando recibe una imagen o procede a visualizarla en su navegador. Está técnica es la que ha explotado el investigador Saumil Shah para desarrollar Stegosploit, herramienta que permite ocultar código ejecutable en una aparentemente inofensiva imagen.

Un poco de historia

Durante años se pensó que los tipos de ficheros que pueden llegar a contener malware estaban limitados a archivos ejecutables como .exe, .com, .bat, etc. Luego se vio como los documentos ofimáticos también podían contener malware gracias a la inclusión de las macros para, posteriormente, observar como un “inofensivo” PDF podía ser utilizado para infectar usando una versión vulnerable del visualizador de estos archivos.

No tardarían mucho en llegar las primeras investigaciones y aprovechamiento por parte de los creadores de malware de los ficheros con imágenes. Los que llevamos un tiempo trabajando en seguridad informática recordaremos el incidente con los metarchivos de Windows en 2005 que permitía la ejecución de código arbitrario al visualizar un archivo gráfico de este tipo en un navegador que los abriera automáticamente.

Desde entonces han sido varios los casos en los que las imágenes se han visto implicadas de una forma u otra en la propagación de malware. Ya sea como método de ocultación para otros archivos con malware como para descargar aplicaciones maliciosas en Android, las imágenes han sido usadas muchas veces para ganarse la confianza del usuario y conseguir infectarle. Al fin y al cabo, ¿quién va a sospechar de esa entrañable fotografía con gatitos?

Una vuelta de tuerca más

Estas técnicas mencionadas han servido como base para la investigación realizada por Saumil y que fue presentada recientemente en las conferencias Hack in the Box de Holanda. En esta presentación, se utilizó Stegosploit, una herramienta desarrollada para ocultar código ejecutable en imágenes perfectamente válidas y que pasarían desapercibidas por la mayoría de los usuarios.

Como hemos visto en el punto anterior, la inclusión de código arbitrario en una imagen no es ninguna novedad. La novedad está en hacerlo “con estilo” tal y como comenta el propio investigador. Cuando se usa la esteganografía en imágenes es probable que la imagen original se vea alterada y esto sea un síntoma de que ha sufrido una modificación. A continuación vemos un ejemplo usado por el investigador donde se observa estas alteraciones:

esteganografia

Saumil ha usado una técnica que le permite ocultar el código en aquellos bits menos significativos de los valores RGB de una imagen de forma que las alteraciones producidas al introducir código en ellas son prácticamente imperceptibles. De todas formas, tal y como el investigador comenta, es mucho mejor utilizar el formato PNG antes que el JPG por las mayores posibilidades de codificación que ofrece.

Ejecutando imágenes codificadas en un navegador

Una vez se ha conseguido ocultar código arbitrario en la imagen y esta no presenta síntomas aparentes de haber sido modificada, lo único que falta es conseguir que el usuario la ejecute, a ser posible de la forma más transparente posible.

Esto se consigue transformando la imagen en un contenedor de código Javascript, de forma que cuando un navegador con el elemento HTML 5 Canvas la cargue se ejecute este código. Este concepto de imagen más código Javascript es denominado por el investigador como IMAJS (IMAge+JavaScript).

De esta forma un atacante podría ejecutar código malicioso y llegar a tomar el control de una máquina de forma remota solo con que la víctima visitase una web con una imagen preparada usando esta técnica. En el siguiente vídeo se puede observar cómo el investigador realiza este ataque:

[embed]https://www.youtube.com/watch?v=fAyuOhB4uvo[/embed]

Medidas de protección

Este ejemplo demuestra una vez más el peligro que supone la ejecución sin control de código JavaScript en navegadores, algo que la mayoría de usuarios autoriza sin tener en cuenta las posibles consecuencias. Aunque dudamos de que esta técnica sea utilizada de forma masiva, nunca está de más controlar la ejecución de JavaScript, ya sea deshabilitándolo por completo o limitando su funcionalidad con herramientas como NoScript.

Además, este tipo de investigaciones nos debería hacer recordar la importancia de no fiarse de ningún tipo de fichero, por inocente que pueda parecer. Nunca sabemos quién puede estar detrás de esa foto tan adorable que nos acaban de enviar o acabamos de ver en nuestro navegador.

Si quieren conocer más sobre los exploits, los invitamos a que vean nuestro video animado sobre su funcionamiento.