Ofuscación de malware en macros de MS Office

Ofuscación de malware en macros de MS Office

La “última” moda en la distribución de malware viene en forma de documentos de MS Office con macros que llegan a tu bandeja de entrada. Si estas macros se llegan a ejecutar, intentaran descargar un ejecutable y lanzarlo para infectar el sistema. Para dificultar el trabajo de los analistas, los autores de estas macros ponen distintos obstáculos. En este post os voy a enseñar los sistemas de ofuscación y cifrado que me he encontrado en los últimos meses en este tipo de documentos. Sin más dilación, veamos como está la cosa en cuanto a ofuscación de malware en macros de MS Office.

Un poco de historia

Hace años, muchos años, se puso de moda infectar ordenadores usando macros en documentos de Office. MS reaccionó y puso una serie de sistemas de seguridad que hacían saltar un pop-up que el usuario tenía que aceptar para que se ejecutase una macro, así que los malos decidieron dejar de usar macros y explotar vulnerabilidades en Excel o en Word como método de infección.

Diez años después, se está volviendo a ver muchísima actividad maliciosa que utiliza macros para descargar una muestra de malware y ejecutarla, infectando así el sistema.

No sé la razón de esta vuelta a la viejas costumbres, hay varias teorías.

La primera teoría la leí hace poco y dice que es una forma de evitar detecciones por parte de los antivirus. Otra teoría dice que tiene que ver con los controles de seguridad que implementó MS a partir de Windows 7 (recordad, Windows XP ya no tiene soporte y no se usa en ninguna parte, guiño, guiño) . Ambas teorías son validas, pero yo añadiría otra más: es mucho más barato y simple escribir una macro que un exploit.

Ofuscación del código

Para que una macro embebida en documento de MS Office infecte un equipo, esta macro necesita realizar las siguientes acciones:

  1. Descargar la muestra de malware que va a infectar el equipo.
  2. Guardarla en el equipo.
  3. Ejecutarla.

Una forma de hacerlo en Visual Basic Script (vbs), el idioma que utilizan las macros de Office, es la siguiente:

Este tipo de ofuscación es muy simples de entender y de encontrar. Para hacer el trabajo de los analistas más difícil, los escritores de estas macros utilizan distintas técnicas de ofuscación. Una de las más comunes es meter código basura.

El código basura es un conjunto de líneas de código que no hace nada pero dificulta la comprensión de este por parte del analista de malware. Veamos algunos ejemplos.

Comentarios:

Comments everywhere

Algunos autores llenan las macros de comentarios, esto es bastante fácil de “limpiar” con una expresión regular, pero es bastante desagradable a la vista:

Estas líneas de código simplemente ocultan:

Esto nos lleva al siguiente método de ofuscación: los nombres raros.

En el trozo del código anterior, la variable QEfChJYE no es más que un contador, la típica “i” de for (i=0;…), pero hace más complicado de leer el código para el analista.

Es muy típico también meter código basura. El código basura es código que no hace nada o que simplemente está ahí pero que nunca se va a ejecutar.

Un ejemplo de código que no hace nada es el siguiente:

Todos los “GoTo” del código sobre estas líneas saltan a la siguiente línea de código, por lo tanto, lo único que están haciendo es meter ruido en el código.
La única línea que es útil en ese trozo de código es:

Veamos un ejemplo de código que no se ejecuta:

Si nos paramos a analizar todos esas sentencias if, veremos que ninguna de ellas se va a cumplir nunca:

Un número nunca puede ser igual a ese número más uno.

4142 nunca es menor que 44.

El tamaño de esas dos cadenas nunca será el mismo.
Con este truco, además de dificultar el análisis, pueden alargar el tiempo de ejecución de la macro que puede llegar a ser útil (p.ej.: algunas sandbox hacen time out antes de que se termine la ejecución de macro).
Por lo tanto, el código que hemos visto anteriormente no hace nada de nada.

En el próximo artículo mostraré como ofuscan y cifran las cadenas de caracteres los escritores de malware en este tipo de documentos. ¿Conoces algún otro método que estén utilizando en este tipo de documentos? Déjanos un comentario con el 🙂

Ernesto Corral

Ernesto Corral

Profesional de la seguridad de perfil técnico. Principalmente interesado en respuesta ante incidentes, malware e ingeniería inversa.
Me encanta participar en CTFs y últimamente estoy cacharreando con temas de hardware.

Ver descripción | Ver perfil en LinkedIn
Ernesto Corral