Investigadores de ESET han descubierto varias herramientas post-compromiso previamente indocumentadas utilizadas de manera activa por el grupo de APT Gamaredon en varias campañas maliciosas. Una de las herramientas, una macro VBA dirigida a Microsoft Outlook, utiliza la cuenta de correo electrónico del objetivo para enviar correos electrónicos de spearphishing a contactos en la libreta de direcciones de Microsoft Office de la víctima. También analizamos otras herramientas Gamaredon que tienen la capacidad de inyectar macros maliciosas y plantillas remotas en documentos de Office existentes.


Los productos de ESET detectan las herramientas vinculadas a Gamaredon que son analizadas en esta publicación como variantes de MSIL/Pterodo, Win32/Pterodo o Win64/Pterodo.

El grupo Gamaredon ha estado activo desde al menos 2013. Ha sido responsable de varios ataques, principalmente contra instituciones ucranianas, como lo demuestran varios informes del CERT-UA y de otros organismos oficiales ucranianos a lo largo del tiempo.

En los últimos meses, ha habido un aumento en la actividad de este grupo, con constantes oleadas de correos electrónicos maliciosos que llegan a los buzones de sus objetivos. Los archivos adjuntos a estos correos electrónicos son documentos con macros maliciosas que, una vez que se ejecutan, intentan descargar múltiples variantes de malware.

Gamaredon ha utilizado durante los últimos meses muchos lenguajes de programación diferentes, que van desde C# a VBScript, archivos por lotes (batch) y C/C ++. Las herramientas utilizadas por Gamaredon son muy simples y están diseñadas para recopilar información confidencial de sistemas comprometidos y difundirse aún más.

A diferencia de otros grupos de APT, el grupo Gamaredon parece no hacer ningún esfuerzo para tratar de mantenerse fuera del radar. Aunque sus herramientas tienen la capacidad de descargar y ejecutar archivos binarios arbitrarios que podrían ser mucho más sigilosos, parece que el objetivo principal de este grupo es propagarse lo más rápido y posible en la red de su objetivo mientras intentan filtrar datos. ¿Podríamos estar perdiendo algo?

Antecedentes

La Figura 1 ilustra una típica cadena de compromiso en una campaña de Gamaredon.

Figura 1. Cadena de compromiso típica de Gamaredon

Si bien la mayoría de las publicaciones recientes se han centrado en los correos electrónicos de spearphishing y en los downloaders que contienen, esta publicación se centra en las herramientas que implementa en los sistemas una vez que son comprometidos.

Módulo VBA para Outlook

El grupo Gamaredon usa un paquete que incluye un proyecto personalizado de Microsoft Outlook Visual Basic para Aplicaciones (VBA). El uso de macros de Outlook para distribuir malware es algo que rara vez vemos al investigar campañas maliciosas.

Este paquete de código malicioso comienza con un VBScript que primero mata el proceso de Outlook si se está ejecutando, y luego elimina la seguridad en torno a la ejecución de macros de VBA en Outlook al cambiar los valores del registro. También guarda en el disco el archivo OTM malicioso (proyecto Outlook VBA) que contiene una macro, el archivo adjunto de correo electrónico malicioso y, en algunos casos, una lista de destinatarios a los que se deben enviar los correos electrónicos.

Luego, vuelve a iniciar Outlook con una opción especial, /altvba <OTM filename>, que carga el proyecto VBA de Gamaredon. El código malicioso se ejecuta una vez que se recibe el evento Application.Startup. Cabe destacar que han estado usando este módulo de tres maneras diferentes para enviar correos electrónicos maliciosos a:

  • Todos los contactos presentes en la libreta de direcciones de la víctima
  • Todos los contactos que pertenezcan a la misma organización
  • Una lista predefinida de objetivos

Si bien abusar de una cuenta de correo comprometida para el envío de correos electrónicos maliciosos sin el consentimiento de la víctima no es una técnica nueva, creemos que este es el primer caso documentado públicamente de un grupo que utiliza un archivo OTM y una macro de Outlook para lograrlo.

Figura 2. Script VBA para Outlook que crea el correo electrónico malicioso

Basados en el comportamiento de "enviar a todos en la lista de contactos" de este código VBA malicioso, creemos que este módulo podría haber llevado a algunas organizaciones a pensar que fueron atacados por Gamaredon cuando eran simplemente daños colaterales. Por ejemplo, que muestras recientes cargadas en VirusTotal provengan de regiones que tradicionalmente no son objetivo de Gamaredon, como Japón, podría explicarse por las acciones que realiza este módulo.

Como se ve en la Figura 2, el código VBA construye el cuerpo del correo electrónico y adjunta el documento malicioso al correo electrónico. Hemos visto que los archivos .docx y .lnk se utilizan como archivos adjuntos. Estos son muy similares al contenido de los archivos adjuntos maliciosos utilizados en las campañas iniciales de spearphishing de Gamaredon. La Figura 3 muestra un correo electrónico generado por este componente malicioso.

Figura 3. Correo electrónico generado por el módulo VBA para Outlook con un documento adjunto de Word que contiene una plantilla remota

El correo electrónico contiene texto en inglés y en ruso. Sin embargo, como se ilustra en la Figura 3, hay un problema con la codificación rusa. Esto se solucionó en una versión posterior de este módulo, lo que demuestra el rápido ritmo de desarrollo del grupo Gamaredon y la aparente falta de atención a los detalles.

CodeBuilder: módulo para inyectar macros en Office

Analizamos diferentes variantes de módulos maliciosos utilizados por el grupo Gamaredon para inyectar macros maliciosas o plantillas remotas en documentos ya presentes en el sistema comprometido. Esta es una forma muy eficiente de moverse lateralmente dentro de la red de una organización, ya que los documentos se comparten habitualmente entre colegas. Además, dado que estas macros se ejecutan al abrir los documentos, es una buena manera de persistir en un sistema, ya que es probable que algunos de estos documentos se abran varias veces y en diferentes momentos.

Estos módulos para la inyección de macros también tienen la funcionalidad de alterar la configuración de seguridad de macros de Microsoft Office. Por lo tanto, los usuarios afectados no tienen idea de que están comprometiendo nuevamente sus estaciones de trabajo cada vez que abren los documentos. Hemos visto este módulo implementado en dos lenguajes diferentes: C# y VBScript.

C#

Al igual que muchas otras herramientas, este módulo fue entregado a través de un archivo autoextraíble de 7z. En el interior, había un archivo RAR protegido por contraseña que contenía algunos archivos. En particular, había dos archivos de texto, uno para Word y otro para Excel, que contenían el código fuente VBA de la macro maliciosa para insertar en los documentos de destino, y el ensamblador .NET responsable de encontrar y comprometer los documentos existentes. Como se ilustra en la Figura 4, el nombre del ensamblador es CodeBuilder.

Figura 4. Funciones de CodeBuilder en una versión que no está ofuscada

Este módulo .NET primero reduce la configuración de seguridad de macros de Office para varios tipos de documentos al modificar los siguientes valores de registro:

HKCU\Software\Microsoft\Office\<version>\<product>\Security\VBAWarnings
HKCU\Software\Microsoft\Office\<version>\<product>\Security\AccessVBOM

Itera sobre todos los valores posibles de <versión> de Office para los valores <producto> de Word y Excel. Luego, busca documentos con extensiones válidas de archivos de Word o Excel en todas las unidades conectadas al sistema. Para la unidad que contiene la instalación de Windows escanea solo ubicaciones específicas, como son las carpetas Escritorio y Descargas. Para las demás, escanea todo el disco. El malware mueve cada documento identificado a la carpeta AppData, inserta macros maliciosas de Word o Excel utilizando un objeto a Microsoft.Office.Interop, y luego mueve el documento nuevamente a su carpeta original. En las muestras que analizamos, las macros inyectadas eran simples downloaders.

Archivo por lotes/VBScript

La versión en VBScript de este módulo es similar en comportamiento al .NET. La principal diferencia es que, en lugar de insertar una macro maliciosa en documentos existentes, inserta referencias a una plantilla remota en ellos.

Figura 5. VBScript usando la propiedad Document.AttachedTemplate para inyectar una referencia a una plantilla remota en documentos existentes

Este módulo en VBScript también viene empaquetado en un archivo autoextraíble, el cual contiene un archivo por lotes y dos archivos VBS responsables de iterar a través de documentos y agregarles las referencias a las plantillas remotas.

Actualizaciones del módulo

Curiosamente, algunas de las herramientas personalizadas descritas en una publicación de 2017 de Palo Alto Networks sobre Gamaredon siguen siendo actualizadas y son actualmente utilizadas. Algunas muestran similitudes significativas, mientras que otras se reescriben en diferentes lenguajes de codificación. Las herramientas que con mayor frecuencia son descargadas e instaladas en las máquinas comprometidas pueden agruparse en dos categorías diferentes: downloaders y backdoors.

Downloaders

Hay muchas variaciones de sus downloaders, la mayoría de ellos escritos en C# o VBScript. Esta sección cubrirá solo dos de sus variantes más originales; los otros no han evolucionado tanto y son muy simples.

Módulo compilador C#

Este ejecutable .NET, similar a muchas otras herramientas utilizadas por el grupo Gamaredon, utiliza técnicas de ofuscación como la inserción de código basura y la ofuscación de strings. Contiene en su cuerpo el código fuente codificado en base64 de un downloader. Decodifica ese código fuente y lo compila directamente en el sistema usando la clase incorporada Microsoft.CSharp.CSharpCodeProvider. Coloca el ejecutable resultante en un directorio existente y crea una tarea programada que lo iniciará cada 10 minutos. Como se puede ver en la Figura 6, el código fuente decodificado todavía tiene comentarios, lo que refleja el aparente descuido de los operadores de Gamaredon.

Figura 6. Parte del código fuente del downloader en C# incluido en el módulo compilador C#

Módulo que utiliza un proyecto en GitHub

Como se observa en la Figura 7, este ejecutable .NET usa un repositorio de GitHub para obtener y ejecutar un downloader. Este repositorio ya no existe, pero pudimos descargar una copia mientras todavía estaba disponible.

Figura 7. Módulo .NET responsable de descargar y ejecutar un payload almacenado en github.com

El repositorio contenía un único archivo — readme.txt — que era el ejecutable de un downloader en .NET codificado en base64. La función del módulo del proyecto GitHub es descargar este archivo, decodificarlo y ejecutarlo.

Backdoors - ladrones de archivos

Si bien existen algunas variaciones en cuanto a sus funcionalidades, el propósito principal de estos módulos es enumerar todos los documentos en un sistema comprometido y subirlos al servidor de C&C. Estos ladrones de archivos también pueden descargar y ejecutar código arbitrario desde el servidor de C&C. Al igual que con muchas otras herramientas utilizadas por el grupo Gamaredon, vienen en cuatro lenguajes de codificación diferentes: C/C ++, C#, archivo por lotes y VBScript.

C/C++

Esta variante es la sucesora del módulo USBStealer descrito aquí. Aunque las últimas versiones ahora son bastante diferentes, si examinamos muestras de este módulo a lo largo de su desarrollo nos daremos cuenta parte desde el mismo código fuente.

Una muestra que ilustra bien este cambio es una DLL en 64 bits con nombre interno Harvesterx64.dll, compilada en junio de 2019. Todavía tiene la mayoría de las strings utilizadas en las variantes más antiguas, pero también exhibe dos mejoras que todavía están en las más nuevas. Primero, ahora resuelve las APIs de Windows a través del hashing de nombres y segundo, usa un archivo de texto básico en lugar de una base de datos SQLite para rastrear qué archivos ya fueron cargados en el servidor de C&C.

El comportamiento de este módulo es bastante sencillo: escanea el sistema en busca de nuevos documentos de Microsoft Office, tanto en unidades locales como extraíbles, y los carga en el servidor de C&C. Para saber si el documento es nuevo, el módulo mantiene, en un archivo de texto, un hash MD5 por archivo cargado en el servidor. Estos hashes MD5 no se basan en el contenido del archivo, sino en una string compuesta por el nombre del archivo, su tamaño y su última hora de modificación. Las strings del módulo se almacenan en su sección .data y son cifradas con una clave XOR simple. También tiene la capacidad de descargar y ejecutar código arbitrario desde su servidor C&C.

C#

Esta es una reimplementación en C# de la versión C/C ++. La principal diferencia es que también toma capturas de pantalla de la computadora comprometida cada minuto. Como se ve en la Figura 8, la versión que analizamos tiene cinco hilos diferentes.

Figura 8. Rutina de creación de hilos del backdoor en C#

Archivo por lotes/VBScript

Esta versión consta de varios scripts, escritos tanto en forma de archivo por lotes y VBScript. Sin embargo, el objetivo final es el mismo: escanear el sistema en busca de documentos confidenciales. El mecanismo principal es un archivo por lotes que busca documentos de Word (*.doc*) en el sistema y almacena sus nombres en un archivo de texto (consulte la Figura 9).

Figura 9. Ejemplo de archivo inject.txt que contiene el resultado del escáner de archivos de documentos del backdoor.

El paquete también contiene archivos de scripts cifrados llamados 1.log, 2.log, 3.log, 4.log y 5.log. Una vez descifrados, estos scripts son downloaders en VBScript ofuscados que son capaces de descargar y ejecutar código arbitrario.

Infraestructura de red

El grupo Gamaredon utiliza muchos dominios diferentes, tanto gratuitos como de pago, para sus servidores de C&C. Los dominios gratuitos son principalmente DDNS de No-IP: hopto.org, ddns.net, myftp.biz, mientras que los dominios pagos se registran a través del registrador REG.RU e incluyen los TLD (del inglés, top-level domain) .fun, .site, .space, .ru, .website y .xyz.

Están constantemente cambiando los dominios utilizados por sus herramientas, pero en un pequeño los números de AS (del inglés, Autonomous System: AS). Un análisis cuidadoso sugiere que usan dominios separados para pequeños grupos de víctimas. Consulte la cuenta de GitHub de ESET para obtener una extensa lista de dominios utilizados por el grupo Gamaredon.

Calidad de ejecución

Pudimos recopilar numerosas muestras diferentes de scripts maliciosos, ejecutables y documentos utilizados por el grupo Gamaredon a lo largo de sus campañas. Notamos varios errores en estos, especialmente en los scripts. Por supuesto, es imposible saber la razón exacta detrás de estos errores o descuidos, pero el volumen de muestras que produce el grupo y su rápido desarrollo podrían tener que ver con esto. El hecho de que quedaran comentarios en el código fuente incluido en algunas muestras del módulo compilador en C# o que la codificación rusa fuera incorrecta en el correo electrónico generado por el módulo VBA de Outlook muestra que no hay una revisión o prueba rigurosa antes de lanzar sus distintas herramientas y usarlas como parte de sus campañas.

Sin embargo, si bien estos errores pueden disminuir la efectividad general de sus herramientas, la rápida ejecución y adaptación de este grupo también tiene algunas ventajas. El volumen y la implacabilidad de los ataques pueden crear un estado de temor constante en sus objetivos. Y aunque el código es muy simple, algunas técnicas, como la ofuscación de scripts, dificultan la automatización completa del análisis, lo que hace que el trabajo del analista sea tedioso.

Su proyecto en GitHub nos permitió echar un vistazo al rápido desarrollo de sus herramientas. El código que se confirmó allí mostró claramente la evolución del downloader en C#. Las primeras versiones no mostraron signos de ofuscación; luego los desarrolladores agregaron diferentes ofuscaciones de strings y código basura para dificultar el análisis.

En términos de persistencia, se utilizan varias técnicas diferentes, pero las más comunes son las tareas programadas, las claves de registro de ejecución automática (Autorun) y la utilización de la carpeta Inicio. Aunque estas técnicas son muy simples y se conocen desde hace mucho tiempo, la estrategia del grupo Gamaredon de intentar instalar múltiples scripts y ejecutables en cada sistema, y ​​actualizarlos constantemente, complica significativamente la vida del defensor.

Conclusión

A pesar de la simplicidad de la mayoría de sus herramientas, el grupo Gamaredon también es capaz de implementar algunas novedades, como su módulo VBA para Outlook. Sin embargo, como está lejos de ser sigiloso, a la larga no es rival para una organización capaz. La variedad de herramientas que Gamaredon tiene a su disposición pueden ser muy efectivas para obtener el fingerprint (huella digital) de una máquina y comprender qué datos confidenciales están disponibles, y luego difundirlos por toda la red. ¿Podría ser esta una forma de desplegar un payload mucho más sigiloso?

Un agradecimiento especial al Investigador de Malware Senior de ESET, Anton Cherepanov, por su ayuda en esta investigación.

Indicadores de Compromiso (IoCs)

SHA-1 ESET detection name Comments
6F75F2490186225C922FE605953038BDEB537FEE DOC/TrojanDownloader.Agent.ARJ Outlook VBA module
DFC941F365E065187B5C4A4BF42E770035920856 Win32/Pterodo.XG.gen C# Office macro injection module
9AFC9D6D72F78B2EB72C5F2B87BDC7D59C1A14ED Win32/Pterodo.ZM Batch file/‌VBScript Office macro injection module
3DD83D7123AEFBE5579C9DC9CF3E68BCAFC9E65E MSIL/Pterodo.CD C# compiler module
941F341770B67F9E8EE811B4B8383101F35B27CD MSIL/Pterodo.CA GitHub project module
DC8BD2F65FD2199CE402C76A632A9743672EFE2D Win32/Pterodo.XC C/C++ backdoor
336C1244674BB378F041E9064EA127E9E077D59D MSIL/Pterodo.DP C# backdoor
5FC1B6A55A9F5A52422872A8E34A284CDBDD0526 Win32/Pterodo.YE Batch file/‌VBScript backdoor

Técnicas de MITRE ATT&CK

Tactic ID Name Description
Initial Access T1193 Spearphishing Attachment Gamaredon group sends emails with malicious attachments to its targets.
T1199 Trusted Relationship Gamaredon group malware abuses a compromised organization’s email accounts to send emails with malicious attachments to the victim’s contacts.
Execution T1064 Scripting Gamaredon group uses scripting heavily, mostly Batch files and VBScript.
T1085 Rundll32 Gamaredon group malware uses rundll32 to launch malicious DLLs, for example the C/C++ backdoor.
T1106 Execution through API Gamaredon group malware uses CreateProcess to launch additional components, for example to execute payloads received from its C&C servers.
T1204 User Execution Initial compromise by the Gamaredon group usually requires the user to execute a malicious email attachment.
Persistence T1053 Scheduled Task Gamaredon group malware registers several of its modules (downloaders, backdoors, etc.) as scheduled tasks.
T1060 Registry Run Keys / Startup Folder Gamaredon group uses Run keys and the Startup folder to ensure its modules are executed at every reboot.
T1137 Office Application Startup Gamaredon group malware inserts malicious macros into existing documents, providing persistence when they are reopened.
Defense Evasion T1027 Obfuscated Files or Information Gamaredon group makes heavy use of compressed archives, some password protected, to deliver its malicious payloads. Strings are routinely obfuscated or encrypted in these malicious modules.
T1112 Modify Registry Gamaredon group malware modifies several registry keys to deactivate security mechanisms in Microsoft Office related to macros.
T1116 Code Signing Gamaredon group uses signed binaries in its malicious campaigns. One notable example is wget samples signed with a valid certificate from Jernej Simončič and available here.
T1140 Deobfuscate/Decode Files or Information Gamaredon group uses simple string deobfuscation and decryption routines in its modules.
T1221 Template Injection Gamaredon group adds remote templates to documents it sends to targets.
T1500 Compile After Delivery Gamaredon group C# compiler module contains an obfuscated downloader that it compiles using csc.exe and then executes.
Discovery T1083 File and Directory Discovery Gamaredon group uses its backdoors to automatically list interesting files (such as Office documents) found on a system for future exfiltration.
Lateral Movement T1080 Taint Shared Content Gamaredon group malware injects malicious macros into all Word and Excel documents reachable by the compromised system.
T1534 Internal Spearphishing Gamaredon group uses its Outlook VBA macro to send email with malicious attachments to other targets within the same organization.
Collection T1005 Data from Local System Gamaredon group malware actively searches for sensitive documents on the local system.
T1025 Data from Removable Media Gamaredon group malware scans all drives for sensitive data and also watches for removable drives being inserted into a system.
T1039 Data from Network Shared Drive Gamaredon group malware scans all drives A: – Z: for sensitive data, so it will scan any network shares mounted as drives.
T1113 Screen Capture Gamaredon group uses a backdoor that takes screenshots every minute.
T1119 Automated Collection Gamaredon group deploys scripts on compromised systems that automatically scan for interesting documents.
Command and Control T1071 Standard Application Layer Protocol Gamaredon group malware uses both HTTP and HTTPS for command and control.
Exfiltration T1020 Automated Exfiltration Gamaredon group uses modules that automatically upload harvested documents to the C&C server.