Como parte de nuestra serie sobre troyanos bancarios de América Latina, en esta oportunidad presentamos a Grandoreiro, un troyano bancario que apunta a usuarios de países como Brasil, México, España y Perú que muestra el gran esfuerzo de sus autores para evadir la detección y la emulación y progresar hacia una arquitectura modular.

Este troyano, que se distribuye únicamente a través de spam, ha estado activo al menos desde 2017 apuntando a Brasil y Perú, pero en 2019 se expandió sumando a México y España entre sus objetivos (consulte la Figura 1 para ver un mapa actual de detección de calor). Los autores suelen utilizar una actualización falsa de Java o Flash, pero recientemente, tal vez como era de esperar, hemos observado que su correo spam también aprovecha el temor por el COVID-19.

Figura 1. Mapa de calor muestra las detecciones de ESET para Grandoreiro.

Características

El nombre de esta familia de malware fue dado en función de su característica más notable: sus binarios, que crecen en tamaño al menos a unos cientos de megabytes. Su desarrollo es bastante rápido y los cambios de características y adiciones ocurren muy a menudo.

De forma similar a varios de los otros troyanos que hemos analizando como parte de esta serie, este troyano escrito en Delphi ataca a sus víctimas desplegando ventanas emergentes falsas que intentan engañar a las víctimas (haciéndoles creer que se trata de ventanas legítimas de su banco) para que divulguen información confidencial.

Al igual que los demás troyanos bancarios latinoamericanos, cuenta con funcionalidades de backdoor que le permiten manipular ventanas, actualizarse, registrar las pulsaciones de teclado, simular acciones de mouse y teclado, obtener direcciones URL del navegador de la víctima, cerrar sesión de la víctima o reiniciar el equipo y bloquear el acceso a sitios web elegidos.

Además de recopilar información de sus víctimas, como el nombre de la computadora, el nombre de usuario, lista de productos de seguridad instalados o si está instalada una aplicación muy popular en Brasil para proteger el acceso a la banca online, como Warsaw Diebold, de GAS Tecnologia, algunas versiones de Grandoreiro también roban las credenciales almacenadas en el navegador web Google Chrome y los datos almacenados en Microsoft Outlook. Un aspecto que vale la pena destacar es que los autores de Grandoreiro parecen estar permanentemente desarrollando este troyano bancario, ya que observamos varias versiones nuevas cada mes. También sospechamos que están desarrollando al menos dos variantes simultáneamente.

Los autores de este troyano parecen estar enfocados principalmente en dos áreas. La primera, en ocultar la dirección de C&C real usando el Algoritmo de Generación de Dominio (DGA, por sus siglas en inglés). El segundo es hacer que el troyano bancario sea modular. En este sentido, los autores introdujeron por primera vez formularios Delphi independientes para cada uno de los bancos apuntados (lo cual es bastante común), pero últimamente además crearon archivos DLL separados para cada banco objetivo, un enfoque que no habíamos visto antes en ningún otro troyano bancario latinoamericano que hayamos analizado previamente.

Distribución

El spam parece ser el único método de distribución para Grandoreiro. Los correos no deseados parecen contener un enlace que apunta a un sitio web que ofrece actualizaciones falsas de Flash o Java (consulte la Figura 2). Observe la flecha roja en la esquina inferior izquierda adaptada para el navegador web Google Chrome, pero también se muestra en otros navegadores. También hemos visto a Grandoreiro abusar del miedo en torno a COVID-19 (ver Figura 3), como ya anunciamos en nuestra cuenta de Twitter @ESETresearch.

Figura 2. Los falsos sitios web de actualización de Flash (izquierda) y Java (derecha) (la casilla de verificación a la izquierda indica que el usuario está de acuerdo con los términos y condiciones; el texto de la derecha urge al usuario para que instale la última versión de Java para evitar problemas de seguridad y vulnerabilidades)

Figura 3. Falso sitio web de COVID-19. Al hacer clic en el video, se descarga el archivo ZIP (traducción: “Construcción de 2 hospitales en 7 días: el video muestra la construcción del hospital en China en 7 días”)

A diferencia de la mayoría de los troyanos bancarios latinoamericanos, Grandoreiro utiliza cadenas de distribución bastante pequeñas. Para diferentes campañas, puede elegir un tipo de downloader diferente, como ilustramos en la Figura 4. Estos downloaders a menudo se almacenan en servicios públicos de intercambio en línea conocidos, como GitHub, Dropbox, Pastebin, 4shared o 4Sync.

Figura 4. Posibles formas en las que se pueden llevar adelante las cadenas de distribución de Grandoreiro (diferentes colores muestran diferentes caminos que puede tomar la cadena). El archivo ZIP final puede estar cifrado y, en algunos casos, también protegido por una contraseña

El payload final es un archivo ZIP que generalmente está cifrado por el algoritmo que se muestra en la Figura 5 y muchas veces vimos también que está protegido con contraseña.

def decrypt_archive(data_enc, key):
	data_dec = list()
	for (i, c) in enumerate(data_enc):
		d = c ^ (~(key >> (i % 32))) & 0xFF
		data_dec.append(d)
	return data_dec

Figura 5. Pseudocódigo del algoritmo de descifrado de archivo utilizado por Grandoreiro

Distribuir el payload final en un archivo ZIP es muy común entre estos troyanos bancarios, pero en el caso de Grandoreiro, tiene una importancia adicional, como verá en la siguiente sección.

Relleno binario: mecanismo para evitar la detección

Una de las particularidades de Grandoreiro es la forma de utilizar la técnica de relleno de binario, la cual hemos visto en códigos maliciosos sofisticados y que busca hacer que los binarios sean grandes, pero no solo agregando una cantidad de basura al final del binario, como hemos observado en otros troyanos bancarios de América Latina, sino que utiliza un enfoque diferente: añade imágenes grandes en formato BMP (generalmente 3) en la sección recursos del archivo ejecutable (PE) de forma que cada binario tenga un tamaño mínimo de 300 MB. Observe en la Figura 6 que el tamaño de todo el EXE es de 425 MB, sin embargo, el tamaño del código es de solo 4 MB y el tamaño de la sección .rsrc es de 419 MB (98.5% del tamaño total).  Después de examinar el contenido de la sección .rsrc, vemos tres imágenes con tamaños de 112 MB, 112 MB y 105 MB respectivamente (ocupando el 78.5% del tamaño de la sección). Proporcionamos ejemplos de tales imágenes en la Figura 7.

Figura 6. Detalles de un binario de Grandoreiro. Varios binarios de Grandoreiro se muestran a la izquierda. El resto muestra detalles de uno de esos binarios.

Figura 7. Imágenes BMP utilizadas por Grandoreiro para el relleno binario. Su "estilo" artístico sugiere que los autores de este malware los crean manualmente.

Por otra parte, debido a la estructura de esos archivos BMP, comprimir el binario en un archivo ZIP produce un archivo de solo unos pocos MB, lo que facilita mucho la distribución del payload. Los archivos BMP parecen cambiar con frecuencia, lo más probable es que eviten la detección. Las imágenes que se muestran en la Figura 7 provienen de tres versiones diferentes de Grandoreiro. Las similitudes visibles nos llevan a creer que los autores actualizan las imágenes manualmente.

Recordemos que el límite de tamaño del archivo de carga en VirusTotal se cambió a 550 MB durante 2019, pero solía ser de 256 MB, por lo que una víctima no pudo escanear el archivo usando esa plataforma debido al tamaño. Trabajar con un archivo tan grande es más difícil en general, lo que hace que cualquier análisis automático o manual sea mucho más lento.

Herramienta de spam

Durante la investigación descubrimos también que Grandoreiro utiliza una herramienta para crear y enviar sus mensajes spam, como es el SDK de EASendMail. Pero además de su principal propósito, la herramienta establece persistencia en el equipo de la víctima, probablemente para que los atacantes puedan distribuir esta herramienta a algunas víctimas a través de Grandoreiro. En este sentido, incluyeron a la herramienta un pequeño componente de backdoor que utilizan para recibir archivos de configuración de esos correos spam. Esos archivos dictan cómo se verán los correos electrónicos, a qué apuntarán o dónde enviarlos. Proporcionamos una lista completa de los archivos de configuración y su propósito en la Tabla 1.

Filename Purpose Description
ID.txt None Seems not to be used for the spam emails
html.txt Email body template Template for the email body (including placeholders - those are replaced by values from other config files)
assunto.txt Subject template (assunto = subject) Template for subject (similar to html.txt for email body)
nomes.txt List of fake names Replaces [NOME] placeholder in the templates
link.txt List of malicious URLs The email will link to one of these
lista.txt List of recipients The email will be sent to all of these
login.txt List of usernames Information required to log into the email account that will be used to send the emails
senha.txt List of passwords #rowspan#
smtp.txt SMTP server address #rowspan#

Tabla 1. Lista de archivos de configuración utilizados por la herramienta de spam de Grandoreiro

Conclusión

Como vimos, Grandoreiro es un troyano bancario que apunta a usuarios de Brasil, México, España y Perú, con características similares a las de otros de los troyanos bancarios latinoaméricanos descritos en esta serie, como es el hecho de estar escrito en Delphi, contar con funcionalidades de backdoor y utilizar falsas ventanas emergentes para engañar y atacar a sus víctimas.

Sin embargo, una característica que hace particular a Grandoreiro es el esfuerzo que realiza para evitar la detección, recurriendo a varias técnicas, entre ellas el uso de una aplicación de la técnica de relleno binario que no habíamos visto antes que hace que sea difícil deshacerse del relleno mientras se mantiene un archivo válido.

Por último, el método de distribución preferido de este malware es el spam con enlaces que redireccionan a sus víctimas a falsos sitios web de actualizaciones de Flash o Java creados por los operadores, y últimamente también sitios relacionados al COVID-19.

Para mayor información del análisis técnico de Grandoreiro, los invitamos a leer el artículo completo de esta investigación en su versión en inglés.