Desafío y premio de ESET Latinoamérica

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:

  1. ¿Qué sucede al ejecutarlo?
  2. ¿Qué condiciones deben darse para que suceda lo anterior?
  3. ¿Qué objeto es utilizado en este script? Mencionar lo que se crea conveniente de este objeto.
  4. 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

Autor , ESET

  • Guilmar Ronaldo Contreras Corado

    Respuesta a la primera pregunta:

    Se conecta a una base de datos, para extraer y/o modificar informacion valiosa.

    Respuesta a la segunda pregunta:

    Tener acceso a internet, tener el sistema antivirus desactualizado e interaccion con el usuario.

    Respuesta a la tercera pregunta:

    El objeto que utiliza es una base de datos, para almacenar la informacion que se extrajo

    Respuesta a la cuarta pregunta:

    1. Desofuscacion de codigo malicioso
    2. Consulta del codigo utilizado en un buscador de internet
    3. Consulta con un programador

  • Hola Guilmar Ronaldo Contreras Corado:

    Lamentablemente las respuestas son incorrectas.

    Cristian

  • Emiliano

    Al ejecutarlo el script intentara descargar el contenido de un archivo binario nombrado “hola.exe”, ejecutarlo y mostrar en pantalla una alerta con el mensaje “chau…”
    Las condiciones que deben darse son:
    – El navegador debe soportar contenido activex
    – El usuario debe aceptar el conendio activex.
    Los objetos usados son MSXML2.XMLHTTP, Shell.Application, ADODB.Stream.
    El procedimiento fuel el siguiente:
    – Descifrar el codigo usando alerts.
    – Averiguar sobre algunas funciones, ej: savetofile.

  • Fernando Lopez

    ¿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

  • Pingback: Gana una licencia de por vida de NOD antivirus()

  • Buenas, como están?. Realmente me gustó este tema cuando lo
    ví, e intenté solucionarlo. :D

    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.

  • Lisandro

    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 ”)

  • 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.

  • jesus ramirez

    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 !!!

  • Chema García

    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.

  • 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 SettingsAnthony

    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

  • Armando

    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” :-)

  • Pingback: meneame.net()

  • Pedro A. López

    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.

  • LM

    ta chido… a ver si lo supero…

  • Pingback: Licencia de por vida del antivirus NOD32()

  • ricardo

    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

  • 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 SettingsAnthony

    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

  • es la respuesta correcta

  • Francisco De cordoba argentina

    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.

    • Francisco De cordoba argentina:

      Efectivamente es la respuesta correcta. La solución completa aquí.

      Cristian

  • ¿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.

  • LIBARDO

    PRIMERA PREGUNTA Qué sucede al ejecutarlo?
    RESPUESTA: El código JavaScript aprovecha un exploit conocido para la vulnerabilidad del componente ActiveX ADODB.STREAM que permite descargar de Internet un archivo ejecutable (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.
    SEGUNDA PREGUNTA ¿Qué condiciones deben darse para que suceda lo anterior?
    RESPUESTA: 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.
    TERCERA PREGUNTA ¿Qué objeto es utilizado en este script?
    RESPUESTA: 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.

  • Pingback: ESET Latinoamérica – Laboratorio » Blog Archive » Solución al Primer Desafío de ESET()

Síguenos