Os pesquisadores da ESET descobriram várias ferramentas pós-comprometimento não documentadas usadas de forma ativa pelo grupo APT Gamaredon em várias campanhas maliciosas. Uma das ferramentas, uma macro VBA direcionada ao Microsoft Outlook, usa a conta de e-mail da vítima para enviar mensagens de spearphishing para contatos que estejam no catálogo de endereços do Microsoft Office do alvo. Também analisamos outras ferramentas do Gamaredon que podem injetar macros maliciosas e modelos remotos em documentos do Office.


As ferramentas vinculadas ao Gamaredon e analisadas neste post são detectadas como variantes do MSIL/Pterodo, Win32/Pterodo ou Win64/Pterodo pelos produtos da ESET.

O grupo Gamaredon está ativo desde pelo menos 2013. Foi responsável por uma série de ataques, principalmente contra instituições ucranianas, como evidenciado em vários relatórios do CERT-UA e de outros órgãos oficiais ucranianos ao longo do tempo.

Nos últimos meses, houve um aumento na atividade desse grupo, com ondas constantes de e-mails maliciosos atingindo as caixas de entrada de seus alvos. Os anexos a esses e-mails são documentos com macros maliciosas que, quando executadas, tentam baixar uma infinidade de variantes de malware diferentes.

O Gamaredon alavancou muitas linguagens de programação diferentes nos últimos meses, variando de C# a VBScript, arquivos em lotes (batch) e C/C ++. As ferramentas usadas pelo Gamaredon são muito simples e estão projetadas para coletar informações confidenciais de sistemas comprometidos e se espalhar ainda mais.

Ao contrário de outros grupos APT, o grupo Gamaredon parece não fazer nenhum esforço para tentar permanecer sob o radar. Embora suas ferramentas tenham a capacidade de baixar e executar binários arbitrários que podem ser muito mais sigilosos, parece que o objetivo principal desse grupo é se espalhar o mais rápido possível na rede de seu alvo, enquanto tenta filtrar dados. Podemos estar perdendo alguma coisa?

Antecedentes

A Figura 1 ilustra uma cadeia de comprometimento típica em uma campanha do Gamaredon.

Figura 1. Cadeia típica de comprometimento do Gamaredon.

Embora a maioria das publicações recentes tenha se concentrado nos e-mails de spearphishing junto com os downloaders que eles contêm, este post se enfoca nas ferramentas pós-comprometimento implantadas nesses sistemas.

Módulo VBA para Outlook

O grupo Gamaredon usa um pacote que inclui um projeto personalizado do Microsoft Outlook Visual Basic for Applications (VBA). O uso de macros do Outlook para distribuir malware é algo que raramente vemos ao investigar campanhas maliciosas.

Esse pacote de códigos maliciosos começa com um VBScript que primeiro mata o processo do Outlook se estiver em execução e remove a segurança da execução da macro VBA no Outlook ao alterar os valores do registro. Ele também salva em disco o arquivo OTM malicioso (projeto Outlook VBA) que contém uma macro, o anexo de e-mail malicioso e, em alguns casos, uma lista de destinatários para os quais os e-mails devem ser enviados.

Em seguida, o VBScript reinicia o Outlook com uma opção especial, /altvba <OTM filename>, que carrega o projeto VBA do Gamaredon. O código malicioso é executado assim que o evento Application.Startup é recebido. Eles estão usando este módulo de três maneiras diferentes para enviar e-mails maliciosos para:

  • Todos os contatos do catálogo de endereços da vítima
  • Todos que pertençam a mesma organização
  • Uma lista predefinida de alvos

Embora abusar de uma caixa de entrada comprometida para enviar e-mails maliciosos sem o consentimento da vítima não seja uma técnica nova, acreditamos que este seja o primeiro caso publicamente documentado de um grupo de ataque usando um arquivo OTM e uma macro do Outlook.

Figura 2. Script VBA para Outlook que cria o e-mail malicioso.

Com base no comportamento "enviar para todos na lista de contatos" desse código VBA malicioso, acreditamos que este módulo possa ter levado algumas organizações a pensar que foram alvo do Gamaredon quando, na verdade, eram apenas danos colaterais. Por exemplo, amostras recentes carregadas no VirusTotal provenientes de regiões que não são tradicionalmente alvo do Gamaredon, como o Japão, podem ser explicadas pelas ações deste módulo.

Como se pode ver na Figura 2, o código VBA cria o corpo da mensagem e anexa o documento malicioso ao e-mail. Vimos os arquivos .docx e .lnk sendo usados ​​como anexos. Eles são muito semelhantes ao conteúdo dos anexos maliciosos usados ​​nas campanhas iniciais de spearphishing do Gamaredon. A Figura 3 mostra um e-mail gerado por esse componente malicioso.

Figura 3. E-mail gerado pelo módulo VBA para Outlook com um documento Word anexo que contém um modelo remoto.

O e-mail contém texto em inglês e russo. No entanto, conforme ilustrado na Figura 3, há um problema com a codificação russa. Isso foi corrigido em uma versão posterior deste módulo - outro exemplo do rápido ritmo de desenvolvimento do grupo Gamaredon e da aparente falta de atenção aos detalhes.

CodeBuilder: módulo para injetar macros no Office

Analisamos diferentes variantes de módulos maliciosos usados ​​pelo grupo Gamaredon para injetar macros maliciosas ou modelos remotos em documentos já presentes no sistema comprometido. Essa é uma maneira muito eficiente de se mover lateralmente na rede de uma organização, pois os documentos são compartilhados rotineiramente entre colegas. Além disso, como essas macros são executadas ao abrir os documentos, é uma boa maneira de persistir em um sistema, pois é provável que alguns desses documentos sejam abertos várias vezes e em momentos diferentes.

Esses módulos de injeção de macros também têm a funcionalidade de alterar as configurações de segurança de macro do Microsoft Office. Portanto, os usuários afetados não têm ideia de que estão comprometendo novamente suas estações de trabalho sempre que abrirem os documentos. Vimos esse módulo implementado em duas linguagens diferentes: C# e VBScript.

C#

Este módulo foi entregue, como muitas outras ferramentas, em um arquivo 7z de extração automática. No interior, havia um arquivo RAR protegido por senha, contendo alguns arquivos. Notavelmente, havia dois arquivos de texto, um para o Word e outro para o Excel, contendo o código-fonte VBA da macro maliciosa a ser inserida nos documentos de destino, e o assembly .NET responsável por localizar e comprometer os documentos existentes. Conforme ilustrado na Figura 4, o nome do assembly é CodeBuilder.

Figura 4. Funções do CodeBuilder em uma versão que não está ofuscada.

Este módulo .NET primeiro reduz as configurações de segurança das macros do Office para vários tipos de documentos, modificando os seguintes valores do registro:

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

Ele itera sobre todos os valores possíveis de <version> do Office para os valores <product> do Word e Excel. Em seguida, procura documentos com extensões de arquivo válidas do Word ou Excel em todas as unidades conectadas ao sistema. Para a unidade que contém a instalação do Windows, ela verifica apenas locais específicos, como as pastas Área de Trabalho e Downloads. Para os outros, ele verifica a unidade inteira. O malware move cada documento localizado para a pasta AppData, insere macros maliciosas do Word ou Excel usando um objeto para Microsoft.Office.Interop e, em seguida, move o documento novamente para sua pasta original. Nas amostras analisadas, as macros injetadas eram simples downloaders.

Arquivo em lotes/VBScript

A versão VBScript deste módulo é semelhante em comportamento à versão .NET. A principal diferença é que, em vez de inserir uma macro maliciosa nos documentos existentes, ela insere referências a um modelo remoto.

Figura 5. VBScript usando a propriedade Document.AttachedTemplate para injetar uma referência a um modelo remoto nos documentos existentes.

Esse módulo em VBScript também é fornecido em um arquivo de extração automática, contendo um arquivo em lotes e dois arquivos VBS responsáveis ​​pela iteração nos documentos e adição de referências a modelos remotos.

Atualizações do módulo

Curiosamente, algumas das ferramentas personalizadas descritas em um post publicado em 2017 da Palo Alto Networks sobre o Gamaredon ainda estão sendo atualizadas e são atualmente usadas. Alguns mostram semelhanças significativas, enquanto outros são reescritos em diferentes linguagens de codificação. As ferramentas mais comuns baixadas e instaladas em máquinas comprometidas podem ser amplamente agrupadas em duas categorias diferentes: downloaders e backdoors.

Downloaders

Existem muitas variações de seus downloaders, a maioria deles escritos em C# ou VBScript. Esta seção cobrirá apenas duas de suas variantes mais originais; as outras não evoluíram muito e são muito simples.

Módulo compilador C#

Este executável .NET, semelhante a muitas outras ferramentas usadas pelo grupo Gamaredon, usa técnicas de ofuscação, como inserção de código de lixo eletrônico e ofuscação de strings. Ele contém em seu corpo o código-fonte codificado em base64 de um downloader. Ele decodifica esse código-fonte e o compila diretamente no sistema usando a classe Microsoft.CSharp.CSharpCodeProvider interna. Ele coloca o executável resultante em um diretório existente e cria uma tarefa agendada que será iniciada a cada 10 minutos. Como pode ser visto na Figura 6, o código fonte decodificado ainda possui comentários, ilustrando a aparente negligência dos operadores do Gamaredon.

Figura 6. Parte do código-fonte do downloader C# incluído no módulo do compilador C#.

Módulo que usa um projeto no GitHub

Como pode ser visto na Figura 7, este executável .NET usa um repositório GitHub para obter e executar um downloader. Este repositório já não existe, mas conseguimos fazer o download de uma cópia enquanto ele ainda estava disponível.

Figura 7. Módulo .NET responsável por baixar e executar uma carga armazenada no github.com.

O repositório continha um único arquivo - readme.txt - que era um executável do downloader no .NET codificado em base64. A função do módulo de projeto do GitHub é baixar este arquivo, decodificá-lo e executá-lo.

Backdoors - ladrões de arquivos

Embora existam algumas variações nas funcionalidades, o principal objetivo desses módulos é enumerar todos os documentos em um sistema comprometido e carregá-los no servidor C&C. Esses ladrões de arquivos também podem baixar e executar código arbitrário do servidor C&C. Como acontece com muitas outras ferramentas usadas pelo grupo Gamaredon, elas vêm em quatro linguagens de codificação diferentes: C/C++, C#, arquivo em lotes e VBScript.

C/C++

Essa variante é a sucessora do módulo USBStealer descrito aqui. Embora as versões mais recentes agora sejam bastante diferentes, o exame de amostras deste módulo ao longo de seu desenvolvimento mostra claramente que ele se origina do mesmo código-fonte.

Um exemplo que ilustra bem essa mudança é uma DLL de 64 bits com nome interno Harvesterx64.dll, compilada em junho de 2019. Ainda possui a maioria das cadeias de strings usadas nas variantes mais antigas, mas também apresenta dois aprimoramentos que ainda estão nas mais novas. Primeiro, agora resolve as APIs do Windows por meio de hashing de nome e, segundo, usa um arquivo de texto básico em vez de um banco de dados SQLite para rastrear quais arquivos já foram carregados no servidor C&C.

O comportamento deste módulo é bastante simples: ele verifica o sistema em busca de novos documentos do Microsoft Office, tanto em unidades locais quanto removíveis, e os carrega no servidor C&C. Para saber se o documento é novo, o módulo mantém, em um arquivo de texto, um hash MD5 por arquivo carregado no servidor. Esses hashes MD5 não se baseiam no conteúdo do arquivo, mas em uma string composta pelo nome do arquivo, seu tamanho e sua última hora de modificação. As strings do módulo são armazenadas na seção .data, criptografadas com uma simples chave XOR. Ele também tem a capacidade de baixar e executar código arbitrário de seu servidor C&C.

C#

Esta é uma reimplementação em C# da versão C/C++. A principal diferença é que ele também produz capturas de tela do computador comprometido a cada minuto. Como visto na Figura 8, a versão que analisamos possui cinco encadeamentos diferentes com nomes sugestivos.

Figura 8. Rotina de criação de encadeamentos do backdoor em C#.

Arquivo em lotes/VBScript

Esta versão inclui vários scripts, escritos no formato de arquivo em lotes e no VBScript. O objetivo final é o mesmo: rastrear o sistema em busca de documentos confidenciais. O mecanismo principal é um arquivo em lotes que pesquisa documentos do Word (*.doc*) no sistema e armazena seus nomes em um arquivo de texto (veja a Figura 9).

Figura 9. Exemplo de arquivo inject.txt que contém o resultado do rastreamento de arquivos de documentos do backdoor.

O pacote também contém arquivos de scripts criptografados denominados 1.log, 2.log, 3.log, 4.log e 5.log. Uma vez descriptografados, esses scripts se tornam downloaders em VBScript ofuscados que podem baixar e executar código arbitrário.

Infraestrutura de rede

O grupo Gamaredon usa muitos domínios diferentes, gratuitos e pagos, para seus servidores C&C. Os domínios gratuitos são principalmente DDNS do No-IP: hopto.org, ddns.net, myftp.biz, enquanto os domínios pagos são registrados pelo registrador REG.RU e incluem os TLD (do inglês, top-level-domain) .fun, .site, .space, .ru, .website e.xyz.

Eles estão constantemente mudando os domínios usados ​​por suas ferramentas, mas principalmente em um pequeno número de AS (do inglês, Autonomous System). Uma análise cuidadosa sugere que eles usam domínios separados para pequenos grupos de vítimas. Verifique a conta do GitHub da ESET para obter uma lista extensa de domínios usados ​​pelo grupo Gamaredon.

Qualidade de execução

Conseguimos coletar várias amostras diferentes de scripts maliciosos, executáveis ​​e documentos usados ​​pelo grupo Gamaredon durante suas campanhas. Percebemos vários erros neles, principalmente em scripts. É claro que é impossível saber a razão exata por trás desses erros ou omissões, mas o volume de amostras que o grupo produz e seu rápido desenvolvimento podem explicar isso. O fato de haver comentários deixados no código-fonte incluído em alguns exemplos de módulo do compilador C# ou de que a codificação russa estava errada no e-mail gerado pelo módulo VBA do Outlook mostra que não há revisão ou teste rigoroso antes de liberar suas muitas ferramentas e usá-las como parte de suas campanhas.

No entanto, embora esses erros possam diminuir a eficácia geral de suas ferramentas, a rápida execução e adaptação desse grupo também tem algumas vantagens. O volume e a implacabilidade dos ataques podem criar um estado de medo constante em seus alvos. E embora o código seja muito simples, algumas técnicas, como ofuscação de script, dificultam a automação completa da análise, tornando o trabalho do analista tedioso.

O projeto no GitHub nos permitiu vislumbrar o rápido desenvolvimento de suas ferramentas. O código que foi confirmado no GitHub mostrou claramente a evolução do downloader em C#. As primeiras versões não mostraram sinais de ofuscação; os desenvolvedores adicionaram diferentes ofuscações de strings e códigos lixo para dificultar a análise.

Em termos de persistência, várias técnicas diferentes são usadas, mas as mais comuns são tarefas agendadas, chaves de registro de execução automática e alavancagem da pasta Inicialização. Embora essas técnicas sejam muito simples e conhecidas há muito tempo, a estratégia do grupo Gamaredon de tentar instalar vários scripts e executáveis ​​em cada sistema, e atualizá-los constantemente, complica significativamente a vida do defensor.

Conclusão

Apesar da simplicidade da maioria de suas ferramentas, o grupo Gamaredon também é capaz de implantar novidades, como o módulo VBA para Outlook. No entanto, como está longe de ser sigiloso, a longo prazo, não é páreo para uma organização capaz. A variedade de ferramentas que a Gamaredon tem à sua disposição pode ser muito eficaz para obter o fingerprint (impressão digital) de uma máquina e compreender quais dados confidenciais estão disponíveis, e depois propagá-los pela rede. Isso poderia ser apenas uma maneira de implantar uma carga útil muito mais sigilosa?

Agradecimentos especiais ao pesquisador sênior de malware da ESET, Anton Cherepanov, por sua contribuição nesta pesquisa.

Indicadores de Comprometimento (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.