Ante todo quiero agradecer a las respuestas brindadas y el tiempo dedicado por cada uno de los que intentó solucionar nuestro Primer Desafío.
Ahora vamos a brindar la solución del mismo y a responder las preguntas planteadas:
- Lo primero que se debe hacer es, por supuesto, descargar el archivo .ZIP y descomprimirlo mediante la contraseña brindada.
- Una vez descomprimido, nos encontramos con un archivo .TXT que al abrirlo con el block de notas se llega a la conclusión que en realidad es un código Javascript ofuscado de alguna manera.
- Sabiendo que es un código Javascript, se debe agregar <script> al comienzo del mismo y </script> al final.
- Luego se debe renombrar este archivo, cambiando la extensión del mismo a .htm (o .html) o bien a .js e insertarlo dentro de un archivo HTML. Cualquiera de las opciones hará que el archivo pueda ser visualizado en un navegador web. Supongamos que lo renombramos a .html para hacer más rápido el procedimiento.
- Una vez renombrado, lo abrimos con un navegador web. Si decidimos abrirlo con cualquier navegador web distinto de Internet Explorer o con un Internet Explorer actualizado, no se apreciará resultado alguno y aquí empieza a aparecer la respuesta a la primera pregunta: el archivo debe abrirse con Internet Explorer 6 (o inferior) no actualizado y con Javascript habilitado. Posteriomente se verá qué actualización no debía tenerse instalada en el navegador para que el código sea ejecutado.
- Dadas las condiciones previas y abierto el archivo HTML, se pide autorización al usuario para ejecutarlo, motivo por el cual se debía permitir la ejecución de scripts. En esta instancia, el código abre una ventana de comandos (shell) y en la barra de títulos se puede apreciar "/..//hola.exe". Luego se cierra dicha ventana y se muestra un mensaje "...chau" en pantalla:
- Apreciando dicha ventana, se puede llegar a la conclusión que se ha abierto un archivo ejecutable y sólo debemos encontrarlo. El lugar donde se aloja el archivo mencionado es el directorio X:/documents and setting/nombre-de-usuario donde X: es la unidad donde se encuentra instalado el sistema operativo. Con esto hemos terminado de responder la primera pregunta. Si abrimos el archivo ejecutable con el block de notas se puede apreciar que el archivo descargado es el mismo archivo TXT anterior. Esto fue realizado de esta manera para evitar ejecutar un código ejecutable real en el equipo del usuario, preservando de esta forma su seguridad y que el sistema no corra peligro en ningún momento.
- A partir de ahora se pueden responder las demás preguntas visualizando el código ofuscado. Este código podría ser desofuscado siguiendo el procedimiento explicado en desofuscando un Trojan-Clicker o en desofuscando códigos Javascript.
- También se puede "limpiar" el código, separarlo en más de una línea, identarlo para facilitar su lectura y eliminar los caracteres repetidos ("/!|@|#|$|%|^|&|*|(|)/"), que fueron utilizados para dificultar la interpretación del Javascript original.
- Ahora, las condiciones que debían darse para ejecutar el código es la necesidad de Internet Explorer porque se debía permitir la ejecucuón de los ActiveX visualizados en el código desofuscado.
- Los comandos Try y Catch se utililizan para capturar excepciones y evitar dar mensajes de error al usuario.
- Se utilizan diversos objetos ActiveX creados a través de la función CreateObject:
- Objeto msxml.XMLHTTP utilizado para realizar peticiones HTTP y descargar el código que posteriomente se ejecuta, en forma transparente al usuario.
- Objeto Adodb.Stream (identificado en el código como clsid:BD96C556-65A3-11D0-983A-00C04FC29E36) utilizado para escribir el archivo descargado a disco. Sobre este objeto existía una vulnerabilidad que fue solucionada en el boletin MS06-014 en mayo de 2006 por Microsoft. Dicha vulnerabidad permitía la ejecución de código en el equipo del usuario con los mismos privilegios de este. Es decir que para que este código funcionara, el Internet Explorer utilizado debía carecer de la actualización de seguridad KB911562.
- Objeto Shell.Application utilizado para ejecutar el código descargado.
Con esto hemos finalizado de responder las preguntas planteadas.
Notas:
- Tener o no antivirus instalado no influía en la solución.
- La detección del archivo TXT como malware por parte de algunos antivirus corresponde a un Falso Positivo.
El objetivo de este primer desafío fue luchar con un pequeño código ofuscado pero también hacer consciente al usuario de la necesidad de solventar las vulnerabilidades en las aplicaciones utilizadas. La vulnerabilidad de la cual se aprovecha esté código fue solucionada hace tiempo pero, sin embargo, miles de usuarios son infectados actualmente a través de ella.
Las respuestas pueden ser consultadas en los comentarios del Desafío y felicitamos a Emiliano por haber sido el primero en responderlo, obteniendo así la licencia de productos de ESET.
Espero hayan disfrutado el desafío y nos vemos en el próximo.
Cristian