Diseccionando malware: javascript malicioso en una Web

Diseccionando malware, suena a quirófano y bisturí, pero es lo que realmente intento metafóricamente hacer, ya que cada vez es más frecuente encontrarnos con algún código JavaScript malicioso en una Web. En los últimos días, han sido muchas las tareas de limpieza de malware en sitios Web que he tenido que hacer, y algunas de estas experiencias quiero compartirlas con vosotros, estimados hackers éticos 😉

Comencemos por nuestro software antivirus, que estando debidamente configurado y actualizado, nos tiene que avisar cada vez que aterricemos en una Web con código Javascript malicioso. Ya no tanto por la capacidad de navegación segura que incorporan si no porque al tratarse de archivos temporales que nuestro navegador «obedientemente» almacena en nuestras carpetas temporales, detecta como un archivo con malware.

Desde el punto de vista del cliente, propietario de la Web, la preocupación es tremenda ya que sus clientes a su vez se le quejan de que al navegar, su antivirus o Google Safe Browsing (hablaremos en otra ocasión de esto), alertan de la presencia de software maligno. A continuación un ejemplo de este tipo de avisos.

Navegación segura con Google Safe Browsing
Ejemplo de navegación segura

Viendo el código fuente de la página Web, se comprueba que efectivamente el propio documento html incluye un código JavaScript cuanto menos sospechoso. O bien realiza algún tipo de inclusión para cargar un fichero externo con extensión .js para añadir el código malicioso.

Decía sospechoso, porque últimamente utilizan técnicas de ofuscación para ocultar lo evidente y es lo que realmente trata de hacer el malware. En la mayoría de los casos, redirigirnos a una URL atacante o víctima que a su vez incluye algún código preparado para descargar un fichero potencialmente peligroso. Veamos un ejemplo de código JavaScript ofuscado.

Código ofuscado - JavaScript
Ocultando código malicioso JavaScript

¿Está clarísimo lo que hace, verdad? Pues no, el código usando fórmulas y algoritmos con códigos de caracteres consigue ocultar el código, para que no sea entendible usando técnicas de ofuscación. Investigando un poco el código, observo dónde está la función que ejecuta el código ofuscado, y que se hace con la función eval() de JavaScript. Se me ocurrió cambiar esta función por una que mostrara el código que se iba a ejecutar (pero sin ejecutarlo), como por ejemplo con document.write() y voilá!

Código JavaScript ofuscado al descubierto
Código ofuscado al descubierto

Por el código, podemos ver cómo en la segunda de línea de código (ya al descubierto) se produce una redirección a una página Web que, tras analizarla, no es una Web atacante si no por lo que he podido ver, una Web víctima que aloja un código php malicioso. La Web en cuestión es de una boutique de ropa de niños.

Además, para no llamar la atención, mantiene la navegación de la Web infectada en el navegador a través de un iframe de 1 pixel de alto, 1 pixel de ancho y justo colocado en el top (parte superior) de la página. Vamos, bien oculta.

Como siempre, espero que os haya gustado. En el próximo más y mejor!