![](https://media.kasperskycontenthub.com/wp-content/uploads/sites/63/2018/11/11071602/securelist_abs_6-1200x600.jpg)
Hace poco encontramos una página web sospechosa. Como era de esperarse, la página HTML contenía un código malicioso conectado a un troyano. Sin embargo, había una HTML distinta dentro de la benigna: los autores del código no siguieron el estándar HTML y añadieron otro contenedor .
Lo sorprendente es que los navegadores, tanto Internet Explorer, Firefox y Opera, no tienen ningún problema al procesar este tipo de páginas. Por otra parte, ¿a quién se le ocurriría pensar que los usuarios malintencionados se mantendrían dentro de los estándares?
Sin embargo, eso no es lo más importante. Lo interesante es el script que el usuario malintencionado integró en la página web. Claro que el script está diseñado para dificultar el análisis al máximo, usando métodos para confundir el JavaScript.
El script se vé más o menos así:
No hay nada sorprendente en eso, la mayoría de los scripts se pueden decodificar sin analizar todos los pasos que se tomaron para manipular el código. Solo se debe encontrar la parte del código que reproduce la página web original para ejecutar el código maligno. En este caso, es la función document.write():
Si se modifica esa función, podemos ver el código maligno decodificado. Luego cambiamos document.write(P7E87DE2) a textarea1.innerHTML=P7E87DE2, siendo textarea1 el contenedor de HTML textarea en la copia de la página infectada que creamos a propósito en el disco duro. Ahora podemos ver lo que el script hace en el campo textarea. Lo que nos deja con los siguientes resultados:
A simple vista, este script no hace nada. Pero si lo analizamos más detalladamente, esto es lo que encontramos:
¿Qué significa esto? Esta función transforma su propio código en una serie de texto “key”, compuesto de letras y números. Esta serie se usa para generar el contenido maligno, es decir, lo que se ingresa al área de texto depende del cuerpo de la función misma.
Como consecuencia, si el código se modifica de la manera más mínima, el resultado será completamente diferente, y puede que no tenga sentido (eso es lo que sucedió en nuestro primer intento). Es una especie de mecanismo de defensa contra las modificaciones del cuerpo de la función JavaScript. Nunca antes había visto nada parecido en JavaScript, es un método muy inteligente.
Sin embargo, se puede simplemente obtener una función externa a la que se agrega la variable q2854da60, que debería contener el keystring, al resultado.
Si eres un analista y estas tratando de eliminar el script del código cifrado, seguramente notarás que el navegador se detendrá al abrir un sitio construido correctamente para sacar el contenido escondido del script. Ese es el momento en el que su ordenador quedará infectado.
La construcción que un analista usa dentro de las etiquetas está diseñada de tal manera que no solo infecta ordenadores de usuarios, sino también el ordenador del analista que está tratando de sacar el código maligno al área de texto (textarea). La construcción tiene la siguiente apariencia:
Si se introduce el código en el contenedor textarea, el código cerrará la etiqueta textarea y añadirá un contenedor iframe: el navegador usa esto para cargar un script externo que contiene el troyano exploit que infecta al sistema.
Este ejemplo muestra claramente cómo los escritores de virus están combatiendo los antivirus profesionales que quieren proteger a los usuarios de archivos. Si un analista comete el más mínimo error, su ordenador terminará infectado.
Por eso me encanta mi trabajo, ¡porque me enseña que en la vida los errores se pagan caro!
Técnicas en Javascript a prueba de analistas