Debido la gran cantidad de malware ofuscado y a las diversas formas de ofuscamiento que aparecen cada día, así como las distintas alternativas para hallar el código ejecutado en el explorador, hemos decidido publicar un pequeño desafío con premio para nuestros lectores.
Dado este código (MD5: 15e532f88e8aec3dd28554b4d9a52593 – contraseña “eset-latinoamerica”), se debe averiguar:
- ¿Qué sucede al ejecutarlo?
- ¿Qué condiciones deben darse para que suceda lo anterior?
- ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
- Procedimiento detallado utilizado para llegar a las respuestas anteriores.
La primera persona que responda correctamente las preguntas ganará una licencia de por vida del antivirus de ESET y la solución será publicada en este Blog.
Notas: el código no contiene rutinas que puedan dañar el sistema del usuario. El usuario es responsable por su participación en este desafío y se hace responsable de las pruebas que desee realizar para participar del mismo.
Suerte y esperamos sus respuestas en los comentarios. Todos los comentarios serán publicados cuando haya un ganador.
Actualización 26-09-2008: hemos publicado la solución al desafío.
Cristian

Categorias: Curiosidades, Desafío, Educación
23 Comentarios »
11-9-2009 a las 11:22 am
¿Qué sucede al ejecutarlo? El código JavaScript aprovecha un exploit conocido para la vulnerabilidad del componente ActiveX ADODB.STREAM que permite descargar de Internet un archivo ejecutable (en nuestro caso Hola.EXE). Este archivo una vez ejecutado simplemente muestra un popup en pantalla con el mensaje “Chau”. Al principio, el código reemplaza el nombre del fichero HTML en el que se incluya el script (supuestamente hola.html) por caracteres en blanco, dejándolo inaccesible para no poder ser editado.
¿Qué condiciones deben darse para que suceda lo anterior? El sistema operativo usado debe ser Windows NT, 2000 y XP. El sistema, además debe ser vulnerable al agujero de seguridad para ADODB.STREAM. Además, el código javascript tiene que ser abierto con Internet Explorer
El navegador debe soportar contenido activex
El usuario debe aceptar el conendio activex.
Los objetos usados son MSXML2.XMLHTTP, Shell.Application, ADODB.Stream.
¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto. El objeto principal es ADODB.STREAM. Presenta una vulnerabilidad para Internet Explorer que permite la ejecucion de ficheros .EXE remotos que pueden ser descargados localmente en la máquina y reemplazar otros .EXE legítimos y de uso común (ej: NOTEPAD.EXE, VMPLAYER.EXE). Existen dos actualizaciones de Microsoft para evitar esta vulnerabilidad: – MS03-032 Actualización acumulativa para IE (822925) – MS03-040 Actualización acumulativa para IE (828750)
Procedimiento detallado utilizado para llegar a las respuestas anteriores. – Desofuscación del código: a) Meter los saltos de línea oportunos a partir de los signos “;” y los corchetes { y } hasta separar las líneas, indentarlas y darle forma legible al código. b) Hacer las sustituciones que se indican mediante “.replace” hasta dejar un código limpio de caracteres innecesarios. c) Renombrar todas las variables para una mejor comprensión del código – Buscar en google sobre vulnerabilidades de ADODB.STREAM. – Ejecutar el código con el antivirus activo en una máquina virtual y comprobar que lo detecta como un código malicioso (JS/Psyme). Buscar en Google información sobre este malware.Descifrar el codigo usando alerts.Averiguar sobre algunas funciones, ej: savetofile.
7-8-2009 a las 6:36 pm
Francisco De cordoba argentina:
Efectivamente es la respuesta correcta. La solución completa aquí.
Cristian
7-8-2009 a las 5:51 pm
1. ¿Qué sucede al ejecutarlo? El código JavaScript aprovecha un exploit conocido para la vulnerabilidad del componente ActiveX ADODB.STREAM que permite descargar de Internet un archivo ejecutable (en nuestro caso HOLA.EXE). Este archivo una vez ejecutado simplemente muestra un popup en pantalla con el mensaje “Chau”. Al principio, el código reemplaza el nombre del fichero HTML en el que se incluya el script (supuestamente hola.html) por caracteres en blanco, dejándolo inaccesible para no poder ser editado. 2. ¿Qué condiciones deben darse para que suceda lo anterior? El sistema operativo usado debe ser Windows NT, 2000 y XP. El sistema, además debe ser vulnerable al agujero de seguridad para ADODB.STREAM. Además, el código javascript tiene que ser abierto con Internet Explorer. 3. ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto. El objeto principal es ADODB.STREAM. Presenta una vulnerabilidad para Internet Explorer que permite la ejecucion de ficheros .EXE remotos que pueden ser descargados localmente en la máquina y reemplazar otros .EXE legítimos y de uso común (ej: NOTEPAD.EXE, VMPLAYER.EXE). Existen dos actualizaciones de Microsoft para evitar esta vulnerabilidad: – MS03-032 Actualización acumulativa para IE (822925) – MS03-040 Actualización acumulativa para IE (828750) 4. Procedimiento detallado utilizado para llegar a las respuestas anteriores. – Desofuscación del código: a) Meter los saltos de línea oportunos a partir de los signos “;” y los corchetes { y } hasta separar las líneas, indentarlas y darle forma legible al código. b) Hacer las sustituciones que se indican mediante “.replace” hasta dejar un código limpio de caracteres innecesarios. c) Renombrar todas las variables para una mejor comprensión del código – Buscar en google sobre vulnerabilidades de ADODB.STREAM. – Ejecutar el código con el antivirus activo en una máquina virtual y comprobar que lo detecta como un código malicioso (JS/Psyme). Buscar en Google información sobre este malware.
27-1-2009 a las 9:00 pm
Hola Cristian
Efectivamente es la respuesta correcta.
Cristian
27-1-2009 a las 5:09 pm
es la respuesta correcta
27-1-2009 a las 5:08 pm
Responderé una a una las preguntas:
1 ¿Qué sucede al ejecutarlo?
Cuando ejecutamos el archivo, se abre una consola de comandos, por breves segundos, luego podemos ver el mensaje:
“…chau”
También se aprecia, un archivo de nombre hola.exe en la carpeta:
%userprofile%
En mi caso fue:
C:\Documents and Settings\Anthony
El archivo hola.exe, tiene como contenido:
2 ¿Qué condiciones deben darse para que suceda lo anterior?
El archivo debe ser ejecutado como Javascript, por lo mismo debe ser llamado desde un archivo HTML con el código:
(el mismo del EXE generado despues)
Debe ser ejecutado en Internet Explorer.
3 ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
El objeto adodb.stream, es un control ActiveX, ese objeto contiene varios métodos para leer y escribir archivos binarios y archivos de texto.
4 Procedimiento detallado utilizado para llegar a las respuestas anteriores.
1.- Renombramos desafio.txt a desafio.js
2.- Creamos index.html (cualquier archivo HTML o HTM)
3.- Ejecutamos index.html desde Internet Explorer
4.- Esperamos breves segundos, veremos el mensaje “…chau”
5.- Vemos también que en la ruta %userprofile% se encuentra el archivo hola.exe
22-1-2009 a las 4:20 pm
respuesta de la pregunta 1:
pide q la actualicemos
2
que no tenga ningun antivirus instalado
3
El objeto adodb.stream, es un control ActiveX, ese objeto contiene varios métodos para leer y escribir archivos binarios y archivos de texto.
4 no se
25-9-2008 a las 1:35 am
[...] detallado utilizado para llegar a las respuestas anteriores. Más información en el Blog de ESET Latinoamérica. Archivado en Actualidad, Miniblog Deja aquí tu comentario ↓ Etiquetas antivirus, [...]
25-9-2008 a las 12:54 am
ta chido… a ver si lo supero…
24-9-2008 a las 11:41 am
1. ¿Qué sucede al ejecutarlo?
El código JavaScript aprovecha un exploit conocido para la vulnerabilidad del componente ActiveX ADODB.STREAM que permite descargar de Internet un archivo ejecutable (en nuestro caso HOLA.EXE). Este archivo una vez ejecutado simplemente muestra un popup en pantalla con el mensaje “Chau”.
Al principio, el código reemplaza el nombre del fichero HTML en el que se incluya el script (supuestamente hola.html) por caracteres en blanco, dejándolo inaccesible para no poder ser editado.
2. ¿Qué condiciones deben darse para que suceda lo anterior?
El sistema operativo usado debe ser Windows NT, 2000 y XP. El sistema, además debe ser vulnerable al agujero de seguridad para ADODB.STREAM. Además, el código javascript tiene que ser abierto con Internet Explorer.
3. ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
El objeto principal es ADODB.STREAM. Presenta una vulnerabilidad para Internet Explorer que permite la ejecucion de ficheros .EXE remotos que pueden ser descargados localmente en la máquina y reemplazar otros .EXE legítimos y de uso común (ej: NOTEPAD.EXE, VMPLAYER.EXE).
Existen dos actualizaciones de Microsoft para evitar esta vulnerabilidad:
- MS03-032 Actualización acumulativa para IE (822925)
- MS03-040 Actualización acumulativa para IE (828750)
4. Procedimiento detallado utilizado para llegar a las respuestas
anteriores.
- Desofuscación del código:
a) Meter los saltos de línea oportunos a partir de los signos “;” y los corchetes { y } hasta separar las líneas, indentarlas y darle forma legible al código.
b) Hacer las sustituciones que se indican mediante “.replace” hasta dejar un código limpio de caracteres innecesarios.
c) Renombrar todas las variables para una mejor comprensión del código
- Buscar en google sobre vulnerabilidades de ADODB.STREAM.
- Ejecutar el código con el antivirus activo en una máquina virtual y comprobar que lo detecta como un código malicioso (JS/Psyme). Buscar en Google información sobre este malware.
24-9-2008 a las 4:00 am
Desafio de…
ESET Latinoamérica ha lanzado un concurso para sus lectores, los participantes deberán descargar un pequeño código ofuscado, comprender su función y contestar una serie de 4 preguntas publicadas en el blog. ¿El premio?, una licencia de por vida d…
23-9-2008 a las 3:13 pm
1- Consulta un sitio web, luego ejecuta la respuesta (o parte de ella, no sé!) en un archivo que crea dinámicamente.
2- Acceso al sitio web en cuestión, permisos de administrador para poder crear el archivo, me imagino q no debe haber un AV.
3- El objeto parece ser un XML o algo así. Pero es dinámico, nunca es grabado en disco. Me imagino que es para poder obtener correctamente la respuesta del sitio web.
4- Limpieza del código fuente (ejecutar manualmente los ‘replace’).
Ordenar el código.
Un poco de “Debug Mental”
23-9-2008 a las 2:21 pm
Responderé una a una las preguntas:
1 ¿Qué sucede al ejecutarlo?
Cuando ejecutamos el archivo, se abre una consola de comandos, por breves segundos, luego podemos ver el mensaje:
“…chau”
También se aprecia, un archivo de nombre hola.exe en la carpeta:
%userprofile%
En mi caso fue:
C:\Documents and Settings\Anthony
El archivo hola.exe, tiene como contenido:
2 ¿Qué condiciones deben darse para que suceda lo anterior?
El archivo debe ser ejecutado como Javascript, por lo mismo debe ser llamado desde un archivo HTML con el código:
(el mismo del EXE generado despues)
Debe ser ejecutado en Internet Explorer.
3 ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
El objeto adodb.stream, es un control ActiveX, ese objeto contiene varios métodos para leer y escribir archivos binarios y archivos de texto.
4 Procedimiento detallado utilizado para llegar a las respuestas anteriores.
1.- Renombramos desafio.txt a desafio.js
2.- Creamos index.html (cualquier archivo HTML o HTM)
3.- Ejecutamos index.html desde Internet Explorer
4.- Esperamos breves segundos, veremos el mensaje “…chau”
5.- Vemos también que en la ruta %userprofile% se encuentra el archivo hola.exe
23-9-2008 a las 1:56 pm
Dada una URL: http://host.com/hola.html/ig, guarda la url en una
variable llamada “PfAhTJA” y la modifica, quedando de la siguiente
manera: “http://host//ig”
Luego, crea un elemento (‘object’) referenciado por la variable
“cYReCGT” y le da los atributos de “id=cYReCGT” y
“classid=clsid:BD96C556-65A3-11D0-983A-00C04FC29E6″.
Luego, mediante tres manejadores de excepciones para evitar mensajes de
error, realiza lo siguiente:
Mediante el elemento referenciado por “cYReCGT” crea tres objectos:
1) msxml2.XMLHTTP
2) Shell.Application
3) adodb.stream
Referenciados respectivamente por las variables:
1) hurksjp
2) HHpyGEb
3) UPidQZo
Así mismo, cada objeto es usado con los siguientes propósitos:
1) Realizar peticiones HTTP de manera transparente al usuario
2) Gestionar archivos del PC del usuario (instalar y ejecutar programas,etc.)
3) Contiene varios metodos para leer y escribir archivos
binarios y de texto en el PC del usuario.
NOTA: Más información en:
http://www.vsantivirus.com/faq-adodbstream.htm
http://www.vsantivirus.com/vul-shellapplication.htm
http://msdn.microsoft.com/en-us/xml/bb291077.aspx
Después de crear estos objectos, activa el modo binario para
“adodb.stream”, y descarga un archivo binario del servidor,
almacenado en la variable “PfAhTJA”, obteniendo los
datos de la respuesta a la petición a dicho host, usando el objecto
“msxml2.XMLHTTP”, y lo y lo guarda en el PC del usuario con el nombre
“hola.exe” sobreescribiéndolo en caso de que exista, usando
el objecto “adodb.stream”.
Seguidamente, se ejecuta el archivo guardado mediante el objecto
“Shell.Application”.
Una vez ejecutado, muestra un mensaje con el texto “…chau”
Las condiciones necesarias para que dicho script funcione son:
1) Usar Microsoft Windows
2) Usar Microsoft Internet Explorer 6
3) No tener instalado el parche “KB870669″ el cual según Microsoft
deshabilita el objeto “ADODB.Stream” en Internet Explorer
Dado que la “ofuscación” solo se centra en las cadenas de texto, es fácil obtener
las cadenas de texto originales de la siguiente manera:
Supongamos el código: document.createElement(‘o#b!)j#)e!c*!t’.replace(/\!|@|#|\$|%|\^|&|\*|\(|\)/ig, ”));
Podemos saber qué elemento crea, abriendo una ventana del navegador
y poniendo en la url: javascript:alert(‘o#b!)j#)e!c*!t’.replace(/\!|@|#|\$|%|\^|&|\*|\(|\)/ig, ”));
De esta manera, se mostrará un mensaje con la cadena original.
Para el resto del código solo es necesario conocer el lenguaje en el que está
escrito el script, y los tres objetos usados.
23-9-2008 a las 4:25 am
p… maaaaaaaaaaa!!!! , en que chingao lenguaje esta esto , esta peor que mi cuarto desordenado una tarde de domingo , no entiendo ni papa, con trabajos y entiendo el hola mundo !!! , no , de verdad esto esta para locos, ojala algun valiente desifre esta cosa pronto, jajaja lo mejor seria que termine siendo una reveranda babosada , eso estaria muy bueno !!!
23-9-2008 a las 1:51 am
1) Descarga un fichero y lo guarda “.//..//hola.exe” y luego lo ejecuta y despues muestra el cartel chau…
2) Si esta en hola.html, el servidor debe resppoder con el archivo. o en la asignacion debe remplazar hola.html ppor el archivo a descargar PfAhTJA = document.location.href.replace(/hola.html/ig,’AQUI EL ARCHIVO A DESCARGAR’);(con esta pregunta me mataron nunca programe en javascript)
3)crea tres objetos:
msxml.XMLHTTP: Con el javascript puede hacer peticiones HTTP(GET – POST).
Shell.Application: Utilizado para ejecurtar archivos.
adodb.stream: Se utiliza para crea, copiar, borrar archivos
4) Trate de usar document.write() nome dio resultado.
No tenia linux para hacerlo mas facil, haci que comense a reemplazar casa simbolo de .replace(/\!|@|#|\$|%|\^|&|\*|\(|\)/ig, ”) por vacio ”, en el blog de notas ecepto “(“y”)” los cuales elimine manualmente. y por ultimo remplace .replace(/\|||\||\||\|\(|\)/ig, ”) por vacio, corregi algunas cosas y quedo haci.
no lo pongo como me quedo ppor que no se si respondi bien las preguntas.
22-9-2008 a las 11:16 pm
Muchos conocimientos sobre Ajax no tengo, pero me arriesgo:
1. Ejecuta archivo “hola.exe” (que previamente crea, tomando la respuesta de un servidor al que se conecta con XMLHTTP, sobreescribiendo si existiera) y muestra en pantalla una alerta que dice “chau” ?
2. Que se pueda usar “clsid:BD96C556-65A3-11D0-983A-00C04FC29E36″ y crear el archivo binario con adodb.stream ?
3. RDS.DataSpace (Remote Data Access)
4. Borrando los caracteres / ! @ # $ % ^ & * ( ) (reemplazando por ”)
22-9-2008 a las 10:57 pm
Buenas, como están?. Realmente me gustó este tema cuando lo
ví, e intenté solucionarlo.
1.
Para empezar el codigo malicioso crea un ejecutable llamado “hola.exe” que en este
caso podría ser el troyano u codigo dañino, que se hospeda en la carpeta del usuario, que
para mi caso fue: C:/Documents and Settings/Administrador y que posteriormente podría
ser ejecutado sobre cualquier acción del internauta o consumidor final (usuario)
2.
Realmente se necesita Windows XP, funcionan con Internet Explorer 6.0.2900.2180 SP2,
pero a mí me sorprendió cuando lo probé en Internet Explorer 7.0.5730.11, tampoco funcionó
con la nueva versión Mozilla 3.0.1, conste que siempre y cuando el usuario acepta la
instalación del ActiveX una vez, asi como también se instala el activex para Flash Player.
3.
La linea :
elemento.setAttribute(‘id’,'cYReCGT’);
es inutil ya que no vincula a nada pero las lineas:
var objeto = elemento.CreateObject(‘msxml2.XMLHTTP’,”);
var HHpyGEb = elemento.CreateObject(‘Shell.Application’,”);
var principal = elemento.CreateObject(‘adodb.stream’,”);
Crean los objetos necesarios y convenientes que está vinculadas al classid:
BD96C556-65A3-11D0-983A-00C04FC29E36 , semejante al Trojan-Downloader.VBS.Agent.n
que consecuentemente se crea el ejecutable “hola.exe”.
4.
Los pasos que seguí fue:
a. Abrir el codigo con notepad++.
b. Empecé a quitar la ofuscación y también a cambiar los nombres de la variables a una
referencia más facil de ubicar, ejemplo:
CODIGO OFUSCADO:
—————–
KaimTKv(); function KaimTKv(){ PfAhTJA = document.location.href.replace(/hola.html/ig,”)
[ocultado]
CODIGO SIN OFUSCACION: Me llamo la atención que el fragmento .replace(/\!|@|#|\$|%|\^|&|\*|\(|\)/ig, ”) se repetia,
a partir de ahí me fui eleminando los caracteres que se reeemplazaba con NULL, osea, ”.
function infectar(){
direccion = document.location.href.replace(/hola.html/ig,”);
var elemento = document.createElement(‘object’);
[ocultado]
c. Mirando un poquillo el codigo, se ve que se crea un ejecutable y por consiguiente
probando obtuve los resultados obtenidos.
d. Agradezco por ser parte de este desafío.
e. Gracias.
22-9-2008 a las 6:57 pm
[...] participando en el concurso que ha organizado el Blog de ESET Latinoamérica podrás concursar por una licencia de por vida de este popular antivirus, NOD32. Ojo los [...]
22-9-2008 a las 3:03 pm
¿Qué sucede al ejecutarlo?
Descarga un archivo y lo ejecuta.
¿Qué condiciones deben darse para que suceda lo anterior?
Tener el objeto instalado
Tener habilitado javascript
No tener un buen antivirus como los de ESET
¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
AdobeStream
Procedimiento detallado utilizado para llegar a las respuestas anteriores.
Revisión del código
Reemplazo de caracteres de escape