Troyano bancario Grandoreiro con nuevos TTP apunta a varias organizaciones en México y España

Recientemente, Zscaler ThreatLabz observó una campaña de Grandoreiro dirigida a organizaciones en las naciones de habla hispana de México y España que trabajan en una variedad de industrias verticales diferentes, como la automotriz, la fabricación de productos químicos y otras. En esta campaña, los actores de la amenaza se hacen pasar por funcionarios gubernamentales de la Procuraduría General de Justicia de la Ciudad de México y del Ministerio Público en forma de correos electrónicos de spear-phishing con el fin de atraer a las víctimas para que descarguen y ejecuten “Grandoreiro”, un prolífico troyano bancario que ha sido activo desde al menos 2016, y que apunta específicamente a usuarios en América Latina. Grandoreiro está escrito en Delphi y utiliza técnicas como relleno binario para inflar binarios, implementación de Captcha para evasión de sandbox y comunicación de comando y control (CnC) usando patrones que son idénticos a LatentBot.

Características clave de este ataque:

  • Grandoreiro se enfoca en organizaciones en las naciones de habla hispana de México y España en varios sectores verticales de la industria
  • Los actores de amenazas en esta campaña se hacen pasar por funcionarios del gobierno mexicano
  • Grandoreiro Loader utiliza múltiples técnicas de antianálisis junto con la implementación de Captcha para evadir Sandboxes
  • El Grandoreiro Loader envía una Solicitud de Check-In con toda la información requerida de Usuario, Sistema y Campaña
  • El Grandoreiro utiliza una técnica de relleno binario para evadir las cajas de arena, agregando múltiples imágenes BMP a la sección de recursos del binario e inflando el tamaño a más de 400 MB
  • El patrón de comunicación CnC de 2022 Grandoreiro ahora es completamente idéntico al LatentBot con baliza “ACTION=HELLO” y comunicación basada en ID.

A continuación se explica en profundidad el análisis de la campaña Grandoreiro y la cadena de Infección correspondiente.

Detalles de la campaña:

ThreatLabz ha analizado múltiples cadenas de infección para esta campaña de Grandoreiro, que comenzó en junio de 2022 y aún continúa. Con base en su análisis, podemos inferir que los actores de amenazas en este caso están intentando apuntar a organizaciones en los países de habla hispana de México y España . Las industrias a las que se dirige esta campaña incluyen:

  • Fabricación de productos químicos
  • Automotor
  • Construcción Civil e Industrial
  • Maquinaria
  • Logística – Servicios de gestión de flotas
Fig. 1. Sectores verticales de la industria objetivo junto con ubicaciones geográficas

Cadena de infección:

La cadena de infección empleada por los actores de amenazas en esta campaña es bastante similar a las campañas anteriores de Grandoreiro. Comienza con un correo electrónico de spear-phishing escrito en español, dirigido a víctimas en México y España. El correo electrónico consiste en un enlace incrustado que, cuando se hace clic, redirige a la víctima a un sitio web que descarga un archivo ZIP malicioso en la máquina de la víctima. El archivo ZIP se incluye con el módulo Grandoreiro Loader con un ícono de PDF para atraer a la víctima a la ejecución; este es responsable de descargar, extraer y ejecutar la carga útil final de 400 MB “Grandoreiro” desde un servidor HFS remoto que se comunica con el servidor CnC utilizando un tráfico idéntico al de LatentBot

Fig. 2. Cadena de infección 

Profundicemos en los correos electrónicos de spear-phishing recibidos por las víctimas. Los correos electrónicos de phishing se dividen en dos conjuntos según los señuelos utilizados por los actores de amenazas.

Serie I – Suplantación de la identidad de funcionarios gubernamentales – Resolución de archivo provisional:
la primera serie de correos electrónicos de phishing observados durante la campaña fueron aquellos en los que los actores de la amenaza se hicieron pasar por funcionarios gubernamentales, instruyendo a las víctimas a descargar y compartir la Resolución de archivo provisional. A continuación se muestran los detalles de los correos electrónicos de phishing:

1.)
Asunto (español): Fiscalía General del Gobierno (RESOLUCIÓN 13062022)
Asunto (inglés): Government Attorney General (RESOLUCIÓN 13062022)

Fig 3. Correo electrónico de phishing – Fiscalía General del Gobierno

Como se puede ver en la captura de pantalla anterior, los actores de la amenaza se hacen pasar por el actual Fiscal General de México “Alejandro Gertz Manero” El asunto del correo electrónico y la firma son de la Oficina del Fiscal General “Fiscalia General de Justicia”, lo que hace que el correo electrónico parezca legítimo. . El contenido en este caso notifica a las víctimas sobre la Resolución de archivo provisional y les pide que descarguen y compartan la Resolución antes de una fecha específica, después de la cual no se reembolsará el pago. Si la víctima hace clic en el enlace incrustado para descargar la resolución, se redirige a un dominio malicioso: http[:]//barusgorlerat[.]me como se muestra en la captura de pantalla, y luego descarga un archivo ZIP del servidor remoto que consiste en el Cargador Grandoreiro.


2.)
También encontraron con un señuelo similar en el que los actores de la amenaza se hacen pasar por “Alejandra Solano – del Ministerio Público – Sección de Decisión Temprana y Litigios” y le piden a la Víctima que descargue y comparta la Resolución de Archivo Provisional. En este caso, el enlace incrustado redirige a otro dominio: http[:]//damacenapirescontab[.]com como se muestra en la siguiente captura de pantalla.

Asunto (Español) :RV [EXTERNO] Notificación del Ministerio Público – MP08062022 3:59:54 PM
Asunto (Inglés) : RV [EXTERNAL] Notificación del Ministerio Público – MP08062022 3:59:54 PM

Fig. 4. Correo electrónico de phishing 2

Serie II – Cancelación de Préstamo Hipotecario y Boleta de Depósito

En este conjunto, hay dos tipos de señuelos de correo electrónico de phishing. El primero se refiere a la cancelación de un préstamo hipotecario, en el que los atacantes le piden a la víctima que descargue un formulario de cancelación de hipoteca abriendo el enlace incrustado como se muestra en la siguiente captura de pantalla. Una vez que se abre el enlace, se redirige al dominio malicioso: http[:]//assesorattlas[.]me, que luego descarga un archivo ZIP que consiste en Grandoreiro Loader.

Asunto (Español) : Hola agonzaleza Baja del préstamo hipotecario 12:05:38 PM

Asunto (inglés): Hola Agonz, préstamo hipotecario bajo 12:05:38 p. m.

Fig 5. Correo electrónico de phishing – Cancelación de préstamo hipotecario

El segundo consta de dos correos electrónicos similares dirigidos a dos organizaciones diferentes en México. Aquí, se le pide a la víctima que descargue un comprobante/boleta de depósito haciendo clic en el hipervínculo. Una vez que se abre el enlace, descarga un archivo ZIP que consiste en Grandoreiro Loader desde http[:]//assesorattlas[.]me y http[:]//perfomacepnneu[.]me como se muestra en la siguiente captura de pantalla.

Asunto (Español) : Sr.(a) alfonso.vera Comprobante deposito 05-Jul-22 8:06:09 PM

Asunto (Inglés) : Sr. (a) alfonso.vera Comprobante de depósito 05-jul-22 8:06:09 PM

Asunto (Español) : RV Comprobante deposito 28-jun-22 5:11:45 PM

Asunto (inglés): comprobante de depósito de RV 28-jun-22 5:11:45 p. m.

Fig. 6. Correo electrónico de phishing – Prueba de depósito

Después de analizar todos los correos electrónicos de phishing en conjunto de datos, pudimos establecer un patrón común entre los correos electrónicos sobre la base de un contenido similar para atraer a las víctimas y el patrón de los enlaces incrustados ( Patrón: dominio.tld/?timestamp), a veces se ve junto con los países de destino ( dominio.tld/país/?marca de tiempo ) que se usaron para descargar Grandoreiro Loader desde el servidor HFS remoto.

Fig. 7. Correo electrónico de phishing: análisis de patrones

Al observar este patrón, podemos afirmar que la campaña Grandoreiro podría ser realizada por un solo actor de amenazas en varias organizaciones en México y España. El patrón también puede ser beneficioso para realizar un seguimiento de otras campañas relacionadas.

Una vez que la víctima hace clic en el enlace incrustado, se redirige al usuario para que descargue un archivo ZIP en la máquina desde las siguientes URL diferentes donde todos los archivos descargados descargan Grandoreiro Loader. 


A continuación, el archivo ZIP llamado “informacion16280LIFSD.zip” que se descarga del siguiente servidor remoto 35[.]180[.]117[.]32/$FISCALIGENERAL3489213839012 una vez que la víctima hace clic en el enlace incrustado en el correo electrónico de Spear phishing .

El archivo ZIP incluye dos archivos:

  • A31136.xml
  • infopeuz52271VVCYX.exe
Fig 8. Archivo ZIP descargado

En este caso, el primer archivo A31136.xml no es un archivo XML sino un ejecutable portátil con el nombre original “Extensions.dll” y firmado con un certificado válido de “ASUSTEK COMPUTER INCORPORATION”. Es de naturaleza benigna, como se muestra en la captura de pantalla a continuación, y el módulo Loader nunca lo carga. 

Figura 9. Extensiones.dll

El segundo archivo incluido dentro del archivo ZIP “infonpeuz52271VVCYX.exe” es el módulo Grandoreiro Loader escrito en Delphi y enmascarado con un ícono PDF compilado el 14 de junio de 2022 para atraer a las víctimas a la ejecución, como se muestra en la captura de pantalla a continuación.

Fig 10. Módulo cargador Grandoreiro

Cuando la víctima ejecuta el módulo del cargador, inicialmente crea un Mutex ” ZTP@11 “ llamando a CreateMutexA()

Fig. 11. Crea Mutex

Luego carga el objeto de clase “TForm1” de la sección de recursos “RCData”, y los formularios en Delphi son definidos por la propia clase TForm.

Fig 12. Carga el objeto de clase TForm1

Además, el módulo cargador realiza las siguientes comprobaciones antianálisis antes de ejecutar las funciones críticas.

i) Detectar herramientas de análisis: el malware detecta las herramientas de análisis mencionadas a continuación descifrando los nombres de las herramientas mediante una rutina de descifrado basada en XOR. Luego toma una instantánea de los procesos que se están ejecutando actualmente en el sistema usando CreateToolhelp32Snapshot() y recorre la lista de procesos usando Process32First() y Process32Next(). Si existe alguna de las herramientas de análisis, la ejecución del malware finaliza.

Fig 12. Detección de herramientas de análisis
Fig 13. Lista de herramientas de análisis detectadas

El segundo método que utiliza el malware para detectar las herramientas de análisis es comparar el texto de los nombres de las ventanas con las herramientas de análisis (incluidos TCPView y RegShot en este caso) mediante las API GetWindowTextW(), FindWindowW y EnumWindows().

ii) Detectar directorio de ejecución: en este caso, el malware verifica el directorio en el que se está ejecutando. Si se utilizan los nombres de directorio mencionados a continuación, se termina con una lógica de comparación en su lugar.
 

  • C:\insidetm
  • C:\análisis
Fig 14. Detección del Directorio de Ejecución

iii) Técnica Anti-Debug: En este caso, Grandoreiro ejecuta IsDebuggerPresent() para determinar si el proceso actual se está ejecutando en el contexto de un depurador. Si el resultado es distinto de cero, el malware termina como se muestra a continuación en la captura de pantalla.

Fig. 15. Técnica antidepuración IsDebuggerPresent()

iv)  Técnica anti-VM del puerto de E/S de Vmware: en este caso, el malware verifica si la ejecución se está produciendo en un entorno virtual (Vmware) mediante la lectura de datos del puerto de E/S “0x5658h” (VX) utilizado por Vmware. Lo logra configurando los registros en el siguiente formato, como se muestra a continuación en la captura de pantalla.

Fig. 16. Técnica anti-VM del puerto de E/S de VMware

Si, después de la ejecución de la instrucción “in” (ejecutada para extraer datos del puerto “VX”), el registro EBX consiste en el número mágico “VMXh”, el malware se ejecuta en un entorno virtualizado y, por lo tanto, termina por sí mismo. 

Después de completar las comprobaciones antianálisis, el malware descifra una URL pasando una cadena cifrada a la rutina de descifrado de cadenas. La rutina de descifrado de cadenas realiza el descifrado basado en XOR con la siguiente clave, como se muestra en la captura de pantalla a continuación.

Fig. 17. Descifrado de la URL del servidor de descarga a través de la rutina de descifrado de cadenas basada en XOR

Esta rutina de descifrado de cadenas se ha utilizado anteriormente en las variantes más antiguas de Grandoreiro para descifrar cadenas y llamadas API para evadir la detección. El descifrador de cadenas Grandoreiro se puede encontrar aquí , desarrollado por el equipo de SpiderLabs en TrustWave. 

El cargador Grandoreiro luego envía una solicitud GET a la URL previamente descifrada: “http[:]//15[.]188[.]63[.]127/$TIME” que proporciona en respuesta la URL para descargar la siguiente etapa como se ve a continuación.

Fig. 18. Adquisición de la URL de descarga final de la carga útil

A continuación, el malware ejecuta la función API URLDownloadToFile() con el argumento szURL como la URL del servidor HFS remoto “http://15[.]188[.]63[.]127:36992/zxeTYhO.xml” para descargar la carga útil final del troyano bancario Grandoreiro, como se muestra en la siguiente captura de pantalla.

Fig 19. Descargar el payload final del troyano bancario Grandoreiro

El Grandoreiro Final Payload descargado es un archivo ZIP de 9 MB que se extrae dinámicamente, y el ejecutable incluido (disfrazado como zxeTYhO.png) dentro del archivo está escrito en una carpeta cuyo nombre se genera en tiempo de ejecución en el directorio ” C:\ProgramData” . Además, el archivo PE disfrazado como “zxeTYhO.png” se renombra a ASUSTek[random_string].exe, se genera con una lógica de generación de cadenas aleatorias y cambia en cada ejecución.

Fig 20. Grandoreiro Final Payload renombrado y escrito en ProgramData con nombre de carpeta generado aleatoriamente

Además, el módulo Stage-1 Grandoreiro recopila la siguiente información del sistema y del usuario donde todas las cadenas se descifran en tiempo de ejecución a través de la función de descifrado de cadenas similar.

i) Nombre de usuario: recupera el nombre de usuario a través de GetUserNameW()

Fig 21. Obtiene nombre de usuario

ii) ComputerName – Recupera el nombre de la computadora a través de GetComputerNameW

Fig. 22. Obtiene ComputerName

iii) Sistema operativo y versión: recupera el sistema operativo y su versión de la sección de registro de Windows NT\\CurrentVersion y ProductName.

Fig 23. Obtiene el sistema operativo y su versión

iv) Antivirus: recupera el programa antivirus instalado en la máquina a través de una consulta WMI que se muestra a continuación en la captura de pantalla

Fig. 24. Obtiene antivirus

v) Verificar programas instalados: en este caso, el módulo Grandoreiro verifica si los siguientes programas están instalados accediendo a la carpeta Archivos de programa (Ruta: C:\Archivos de programa\ y C:\Archivos de programa (x86)\) o la carpeta AppData ( Ruta: C:\Usuarios\<nombre de usuario>\AppData\Local)

Billeteras criptográficas:

Banca, Programas Anti-Malware y Clientes de Correo:

Si alguno de los programas enumerados está instalado en la máquina, el malware almacena los nombres de los programas en una lista para su uso posterior.

Una vez que el malware ha recopilado toda la información del usuario y del sistema mencionada anteriormente, descifra la URL de registro junto con los parámetros requeridos a través de la rutina de descifrado de cadenas basada en XOR utilizada anteriormente y concatena los parámetros con la información recopilada correspondiente, como se muestra. abajo en la captura de pantalla.

Fig. 25. Descifrado y disposición de la URL de registro

Después de completar la concatenación, el cargador envía una solicitud de registro POST al host: “barusgorlerat[.]me con toda la información recopilada del usuario, el sistema y la campaña organizada junto con los diferentes parámetros como se muestra y explica en la captura de pantalla abajo. 

Fig 26. Solicitud de Check-In

Una vez que se envía la solicitud de Check-In al servidor remoto, el cargador ejecuta el Payload final de Grandoreiro que se descargó, extrajo y renombró previamente.

Grandoreiro – Carga útil final:

La carga útil final de Grandoreiro escrita en Delphi se descargó previamente del servidor HFS remoto “http://15[.]188[.]63[.]127:36992/zxeTYhO.xml” como un archivo ZIP de 9,2 MB que luego se extrae y ejecutado por el Grandoreiro Loader. El archivo extraído es un archivo ejecutable portátil de 414 MB disfrazado con una extensión “.png” que luego el cargador cambia el nombre a “.exe” dinámicamente y también la carga útil final está firmada con un certificado digital “ASUSTEK DRIVER ASSISTANTE” para parecer legítimo y evadir la detección.

Fig 27. Carga útil final de Grandoreiro firmada con certificado ASUSTEK

Como se ve en las muestras anteriores de Grandoreiro, aquí se usa una técnica similar de “relleno binario” para inflar el tamaño del archivo binario a alrededor de 400 MB al agregar dos imágenes de mapa de bits de ~200 MB en la sección de recursos, como se muestra en la captura de pantalla a continuación. Esta técnica funciona como una técnica anti-sandbox, ya que ayuda a evadir los sandbox, ya que la mayoría de ellos tienen un límite de tamaño de archivo para la ejecución.

Fig 28. Relleno binario utilizado por Grandoreiro

La carga útil final mantiene la persistencia en la máquina al aprovechar la clave Ejecutar registro (HKCU\Software\Microsoft\Windows\CurrentVersion\Run) que permitiría ejecutar la carga útil al inicio.

 Fig. 29. Mantener la persistencia en la máquina mediante la ejecución de la clave de registro

En la siguiente variante de Grandoreiro, el Payload escribe un archivo . ini (Nombre: ASUSTekGvaxvh.ini) en el directorio de ejecución que consta de toda la siguiente información como se muestra en la captura de pantalla. Los valores del archivo de configuración se cifran mediante una rutina de cifrado basada en XOR con una clave que cambia en cada muestra.

Fig. 30. Archivo de configuración INI

Las comunicaciones de Command & Control se han actualizado desde la variante 2020. Anteriormente había algunas similitudes entre las comunicaciones de Grandoreiro y LatentBot (como se muestra aquí ), pero no eran idénticas. Sin embargo, en la última muestra de 2022, los actores de amenazas actualizaron el patrón de comunicación y ahora es completamente idéntico a LatentBot, donde el nombre del subdominio CnC se genera a través de un algoritmo de generación de dominio, al igual que las variantes anteriores de Grandoreiro. El comando idéntico de la baliza de LatentBot “ACTION=HELLO” y la comunicación basada en ID se pueden ver en la siguiente captura de pantalla.

Fig 31. Comunicación Grandoreiro C2 – 2022
Fig. 32. Comunicación de LatentBot C2 – 2017

Idéntico a LatentBot, el servidor Command & Control proporciona el valor de Cookie como respuesta a la baliza “ACTION=HELLO” que se utiliza además como ID para la comunicación en la última muestra de Grandoreiro, como se ve en la siguiente captura de pantalla.

Fig 33. Comunicación Grandoreiro 2022 C2 – Comunicación basada en ID
Fig 34. Comunicación LatentBot 2017 C2 – Comunicación basada en ID

Además, Grandoreiro incluye las siguientes capacidades de puerta trasera con fines de espionaje:

  • Registro de teclas
  • Actualización automática para versiones y módulos más nuevos
  • Web-Injects y restricción de acceso a sitios web específicos
  • Ejecución de comandos
  • manipular ventanas
  • Guiar el navegador de la víctima a una determinada URL
  • Generación de Dominio C2 a través de DGA (Algoritmo de Generación de Dominio)
  • Imitar los movimientos del ratón y el teclado

Hay otra campaña de Grandoreiro en curso con una técnica anti-sandbox adicional utilizada por los autores de malware. Esta técnica requiere que se complete manualmente un Captcha para ejecutar el malware en la máquina de la víctima. El malware no se ejecuta hasta que o a menos que se llene el Captcha.

Figura 35: Captcha utilizado como técnica Anti-sandbox

Conclusión:

Los actores de amenazas detrás del malware Grandoreiro Banking están continuamente evolucionando sus tácticas y malware para llevar a cabo con éxito ataques contra sus objetivos mediante la incorporación de nuevos trucos antianálisis para evadir soluciones de seguridad; heredar funciones de otras familias de malware. 

IOC:

Dominios integrados: (Igual que se usa para la solicitud de registro)

http[:]//barusgorlerat[.]me
http[:]//damacenapirescontab[.]com
http[:]//assesorattlas[.]me
http[: ]//perfomacepnneu[.]me

Grandoreiro Loader URLs:

35[.]181[.]59[.]254/info99908hhzzb.zip
35[.]180[.]117[.]32/$FISCALIGENERAL3489213839012
35[.]181 [.]59[.]254/$FISCALIGE54327065410839012?id_JIBBRS=DR-307494
52[.]67[.]27[.]173/deposito(1110061313).zip
54[.]232[.]38[.]61 / notificacion ( flfit48202
) /$TIEMPO 167[.]114[.]137[.]244/$TIEMPO 15[.]188[.]63[.]127:36992/zxeTYhO.xml


15[.]188[.]63[.]127:36992/vvOGniGH.xml
15[.]188[.]63[.]127[:]36992/eszOscat.xml
15[.]188[.]63[ .]127:36992/YSRYIRIb.xml
167[.]114[.]137[.]244:48514/eyGbtR.xml
barusgorlerat[.]me/MX/
assesorattlas[.]me/MX/
assesorattlas[.]me/ AR/
atlasassessorcontabilidade[.]com/BRAZIL/
vamosparaonde[.]com/segundona/
mantersaols[.]com/MEX/MX/
premiercombate[.]eastus.cloudapp.azure.com/PUMA/

Grandoreiro CnC:

Pcbbcrjcgbcghjpbcgkccbjorkhhjcjj[.]fantasyleague [.]cc -> fantasyleague[.]cc
jmllmedvhgmhldjgmhvmmlljhvgdzvzz[.]dynns[.]com
ciscofreak[.]com
chjjhjmomaoheoojjbynnyjiidfcncc.cable-modem.org -> cable-modem.org
odbbdbmgmagdfggbbnynnyjiidfcncc.blogsyte.com -> blogsyte.com
ifnnfnmcmacfdccnnjynnyjiidfcncc.collegefan.org -> collegefan.org


MD5 Hashes:

Grandoreiro Loader:
970f00d7383e44538cac7f6d38c23530
724f26179624dbb9918609476ec0fce4
2ec2d539acfe23107a19d731a330f61c
6433f9af678fcd387983d7afafae2af2
56416fa0e5137d71af7524cf4e7f878d
7ea19ad38940ddb3e47c50e622de2aae

Grandoreiro Final Payload:

e02c77ecaf1ec058d23d2a9805931bf8
6ab9b317178e4b2b20710de96e8b36a0
5b7cbc023390547cd4e38a6ecff5d735
531ac581ae74c0d2d59c22252aaac499