Hacking a través de imágenes

  • 1

Hacking a través de imágenes

Tags :

Category : Ciberseguridad , Exploit

¿Es posible ejecutar código malicioso a través de una imagen?.
Navegando un poco me encontre un artículo muy interesante sobre una técnica de hacking a través de imágenes.
Un script en python que puede embeber código javascript dentro de una imagen bmp, dejando esta
imagen correctamente para que se muestre en el navegador.
Un ejemplo de una página web que podría contener una imagen con un script malicioso

 

<html>
<head>
<title> favorites / bookmark title goes here </title>
</head>
<body>
<h1> My malicius image page </h1>
<img src=”/home/pablo/hacks/bmp1.bmp” >
<script src = “/home/pablo/hacks/bmp1.bmp” >
</body>
</html>

Como se ve la imagen y el script son el mismo archivo
Para crear este imagen bmp maliciosa podemos usar el siguiente script creado por Marco Ramilli, espcialista en security research. marcoramilli.blogspot.com y que el mismo ha colgado en pastebin.
http://pastebin.com/04y7ee3u

Con el mismo Marco explica, es  una implementación  para sacar partido a ciertos bugs que  algunas librerias que manejan el parseo de los bitmaps contienen. Lo que hace es injectar código javascript dentro de la imagen. ¿Pero como es posible que una imagen ejecute código javascript?
El primer paso consiste en crear la imagen maliciosa que se insertaría en un servidor web.

 

python bmpinjector.py.py  -i image.bmp "alert("test");"
 |======================================================================================================|
 | [!] legal disclaimer: usage of this tool for injecting malware to be propagated is illegal.          |
 | It is the end user's responsibility to obey all applicable local, state and federal laws.            |
 | Authors assume no liability and are not responsible for any misuse or damage caused by this program  |
 |======================================================================================================|
                    
[+] Finished!

 

La idea es crear una cabecera de archivo BMP con x2Fx2A y luego cerrarlo con  x2Ax2F. El servidor intentará verificar el archivo como un archvo javascript, de ahí esta modificación de las cabeceras del archivo . Para que sea un archivo javascript válido, necesita usar la header (x42x4D) como una variable y/o parte del código, es por esto último que se necesita injectar también la expresión like “=1;” o más comunmente usada “=a”. Asi que el incrustado del payload requiere de ciertas cadenas para que el servidor interprete que el archivo es válido, tanto como bmp como javascript.

Para hacer una prueba vamos a ejecutar el script con un simple alert.
python bmpinjector.py -i bmp1.bmp “alert(“test”);”
Ahora vamos a ejecutar el script para generar un payload de ejemplo más avanzado ofuscando el código:

 

python bmpinjector.py -i bmp1.bmp "var _0x9c4c=["x48x65x6Cx6Cx6Fx20x57x6Fx72x6Cx64x21","x0A","x4Fx4B"];var a=_0x9c4c[0];function MsgBox(_0xccb4x3){alert(_0xccb4x3+_0x9c4c[1]+a);} ;MsgBox(_0x9c4c[2]);"

Esta vulnerabilidad ya ha sido corregida en la mayoría de servidores y/o navegadores, pero no en todos, como siempre habrá alguno que no esté actualizado y demuestra una vez más que hay formas muy diversas de ejecutar código malicioso insertado en todo tipo de objetos que luego manejan los servidores.

Articulo completo [eng]:
http://marcoramilli.blogspot.com.es/2013/10/hacking-through-images.html