Malware vs. analistas de malware

A la hora de analizar malware, los analistas e investigadores nos encontramos con todo tipo de muestras. Como mencionamos anteriormente en este blog, muchas veces nos encontramos con binarios empaquetados cuya finalidad es dificultar su estudio. En esta oportunidad analizaremos una muestra que no solo esta empaquetada, sino que tiene otras características adicionales orientadas a dificultar su análisis y detección.

El binario estudiado en este caso, esta empaquetado con el popular empaquetador UPX, cosa que podemos ver fácilmente con el detector de packers ProtectionID:

Si queremos verificar esto, podemos mirar el Entry Point (EP) con un debugger:

Aquí podemos ver el clásico PUSHAD en el EP de un archivo empaquetado con UPX. Para desempaquetarlo podemos hacerlo a mano, utilizando un método llamado PUSHAD (no lo explicaremos en esta oportunidad pero si alguien quiere consultarlos, puede dejarnos un comentario), o el método mas sencillo, mediante el comando upx -d como vemos en el siguiente gráfico:

Vale destacar que este método no siempre funciona en versiones de UPX modificadas. Finalmente, con cualquiera de ambos métodos llegamos al Original Entry Point, mas conocido como OEP. Para este malware el mismo esta en la dirección 4012c2:

Ya con el programa desempaquetado, al ejecutarlo, una de las primeras llamadas a funciones interesantes que encontramos es GetUserDefaultUILanguage de la librería Kernel32.dll. Esta función sirve para identificar la configuración del lenguaje del teclado en el sistema operativo.

¿Por qué decimos que es una función interesante ? Porque serviría para restringir la infección del malware a determinados equipos con la finalidad de acotar su expansión geográfica. Este tipo de chequeos regionales podemos verlos en Swizzor, que utiliza la función GetSystemDefaultLangID para obtener el lenguaje del sistema. Luego lo compara con un valor hexadecimal para decidir si infecta o no el equipo. También observamos este tipo de acciones en Conficker, que utiliza la función GetKeyboardLayoutList, de la cual obtiene la distribución del teclado y a partir de ella chequea si se instala o no.

Siguiendo con el tema de protecciones anti-debugging, podemos ver que esta muestra posee protecciones contra máquinas virtuales y chequea si es ejecutado en alguno de los entornos virtuales mas conocidos como son VMware. VirtualBox, VirtualPC y QEMU. A continuación podemos ver dicha porción en el código:

Cómo vemos en la imagen de arriba, el código aparece completamente en amarillo, esto se debe a que al iniciar el programa, las direcciones de memoria donde están las instrucciones anti-virtuales se encontraban vacías. Esto nos indica que el código se descomprimió en ejecución. Para poder visualizar este código hay que ejecutarlo, sino solo veríamos estas secciones vacías. Aquí una imagen de como se veían estas mismas secciones antes de ejecutar el programa:

Para terminar con el análisis de las protecciones, esta muestra también chequea nombres y ID de procesos, en este caso como lo debuggeamos con el programa Immunity Debugger, el malware identifica el proceso Immunitydebugger.exe. Otra cosa interesante que hace es identificar si existe o no alguna solución antivirus instalada, en este caso, como tenemos instalado ESET Smart Security, lo detectará en la parte de código que vemos a continuación:

De todas las protecciones que detallamos en este post, la que mas nos perjudica a la hora de analizar malware es la protección anti-VM. Existen muchas formas de detectar que un archivo esta siendo debuggeado en un entorno virtual. Esto puede llegar a ser muy tedioso, ya que la mayoría de los análisis que se hacen son dentro de estos entornos virtualizados, para tratar de aislar así la infección y poder simular lo más posible el comportamiento del malware en un entorno “real”. Por suerte existen varias formas de saltearse estas detecciones y lograr ejecutar el malware adentro de una maquina virtual, pero esto ya requiere mas conocimientos para poder identificar en que momento se realiza este chequeo. Una opción mas fácil y totalmente viable, aunque más costosa, seria poseer una maquina física específicamente dedicada para el análisis de malware ya que no recomendamos analizar muestras directamente en la computadora que se utiliza a diario.

Juan Esteban Forgia
Malware Analyst

Autor , ESET

  • Roberto

    Excelente su blog, muy bueno a la hora de explicar las cosas y cada detalle, no soy un experto, pero me gusta aprender, de los que tienen mas conocimientos, felicidades.

  • Nahuel

    Hola, muy didactico el artículo Juan!.
    ¿Podrías explicar con más detalle el método manual de desempaque?
    Y si no es mucho pedir ampliar un poco más el detalle para poder analizar malware en entornos virtuales.

    ¿Alguna lectura recomendada?

    Gracias por tu tiempo!.
    Saludos.

  • NCR

    @Nahuel:

    1) es UPX, aca mas tutoriales: http://ricardonarvaja.info/WEB/buscador.php pones ‘UPX’ como keyword y te salen bocha de tutoriales al respecto de como desempacarlo manualmente.

    2) Con respecto a la segunda pregunta, leete esto: http://www.amazon.com/Malware-Analysts-Cookbook-DVD-Techniques/dp/0470613033

    Chau!.

    • jforgia

      Gracias NRC por la respuesta. Nahuel: manuales de desempaquetado de UPX podes encontrar en muchos lados en la web, si quieres manuales en castellano podes encontrar en la pagina que indico NCR. El libro Malware Analyst´s Cookbook es una muy buena lectura si quieres empezar a interiorizarte en el análisis de malware.
      Saludos.

  • Christian

    Hola les felicito que buenos articulos, como los que comentaron antes y mi persona, estamos aprendiendo de las variadas tecnicas de evolucion de virus, interesante articulo y tambien los programas con los que se analizan asi uno tiene una idea si la maquina esta infectada o no. De nuevo se les felicita gracias por compartir los conocimientos.

  • Nahuel

    Hola, buenos días.
    NCR / Jforgia Muchas gracias por sus respuestas.
    Voy a buscar el libro que mencionaron.
    Un abrazo.
    Saludos, Nahuel.

  • Nicolás H.

    Mi gran preguta es… ese ejecutable XvidSetup ¿era un malware?
    Que peligro! :s

    • jforgia

      Nicolas, muchas veces los autores de malware buscan ponerle nombres conocidos o que se presten a confusión para tratar de engañar a los usuarios. Eso no significa que haya que desconfiar, en este caso de los codecs Xvid. Si se tiene alguna sospecha que el ejecutable puede ser malicioso, lo recomendable es escanear el archivo con una solución antivirus actualizada antes de ejecutarlo.
      Saludos

      Juan

Síguenos