O APT37 norte-coreana usa a técnica de autodecodificação VBA para injetar RokRat

Em 7 de dezembro de 2020, identificamos um documento malicioso enviado ao Virus Total que pretendia ser uma solicitação de reunião, provavelmente usada para atingir o governo da Coreia do Sul. A data da reunião mencionada no documento foi 23 de janeiro de 2020, que está alinhada com o tempo de compilação do documento de 27 de janeiro de 2020, indicando que este ataque ocorreu há quase um ano.

Esta postagem foi escrita por Hossein Jazi

O arquivo contém uma macro incorporada que usa uma técnica de autodecodificação VBA para se decodificar nos espaços de memória do Microsoft Office sem gravar no disco. Em seguida, ele incorpora uma variante do RokRat no bloco de notas.

Com base na carga útil injetada, acreditamos que esta amostra está associada ao APT37. Este grupo norte-coreano também é conhecido como ScarCruft, Reaper e Group123 e está ativo desde pelo menos 2012, visando principalmente vítimas na Coreia do Sul.

No passado, este APT dependia de documentos Hangul Office (arquivos hwp) para atingir as vítimas, pois é um software comumente usado na Coreia do Sul. No entanto, neste blog, descrevemos um método alternativo interessante, fornecido por meio de arquivos VBA Office autodecodificados. Até onde sabemos, esta é a primeira vez para este grupo APT.

Análise de documentos

O ator usou o conceito de autodecodificação do VBA em sua macro, que foi introduzida pela primeira vez em 2016 . Uma macro maliciosa é codificada dentro de outra que é então decodificada e executada dinamicamente.

Figura 1: Documento malicioso

Podemos considerar esta técnica um esboço de descompactador, que é executado ao abrir o documento. Este stub descompactador descompacta a macro maliciosa e grava na memória do Microsoft Office sem ser gravado no disco. Isso pode facilmente contornar vários mecanismos de segurança.

Figura 2: Técnica de autodecodificação

A Figura 3 mostra a macro usada por este documento. Esta macro começa chamando a função “ ljojijbjs ” e com base nos resultados tomará diferentes caminhos para execução.

Figura 3: macro codificada

Por padrão, a Microsoft desabilita a execução dinâmica da macro e, se um invasor precisar executá-la dinamicamente – o que é o caso aqui – o ator da ameaça precisa ignorar o modelo de objeto VB (VBOM) modificando seu valor de registro.

Para verificar se ele pode ignorar o VBOM, ele verifica se o VBOM pode ser acessado ou não. A função “ljojijbjs” é usada para este propósito e verifica o acesso de leitura ao VBProject.VBComponent . Se disparar uma exceção, significa que o VBOM precisa ser ignorado (cláusula IF). Se não houver exceção, significa que o VBOM já foi ignorado e o VBA pode extrair sua macro dinamicamente (cláusula Else).

Figura 4: Verifique a acessibilidade do modelo de objeto VB

“Fngjksnhokdnfd” é chamado com um parâmetro para ignorar o VBOM. Esta função define a chave de registro VBOM para um.

Figura 5: Modificando a chave de registro VBOM

Depois de contornar o VBOM, ele chama outra função que cria um Mutex na máquina das vítimas chamando CreateMutexA chamada de API e o nomeia “mutexname” . Isso pode ser usado pelo ator para se certificar de que infecta sua vítima apenas uma vez, mas neste documento não observamos evidência de verificação do mutex.

Figura 6: criação Mutex

Finalmente, para realizar o processo de autodecodificação, ele precisa se abrir um novo objeto Aplicativo e carregar o documento atual nele em modo invisível.

Figura 7: Auto-aberto

Se o VBOM já foi ignorado, a função Init é chamada e gera o conteúdo da macro malicioso em formato ofuscado.

Figura 8: macro ofuscada

Na próxima etapa, essa macro ofuscada é passada para “eviwbejfkaksd” para ser desofuscada e, em seguida, executada na memória.

Figura 9: Desofuscador

Para desofuscar a macro, duas matrizes de string foram definidas:

  • StringOriginal que contém uma matriz de caracteres antes da desofuscação
  • StringEncoded que contém uma matriz de caracteres após a desofuscação

Um loop foi definido para desofuscar a macro. Para cada iteração, ele pega um caractere na macro ofuscada e procura seu índice em StringEncoded . Ao encontrar seu índice, ele procura seu índice equivalente em StringOriginal , pega aquele caractere dele e o adiciona à nova macro. Como exemplo, “gm * bf” como macro codificado será decodificado para “Opção” .

Figura 10: ciclo de desofuscação

Seguir este processo nos dá a macro final que será executada no espaço de memória do Microsoft Office. Para executar esta macro decodificada, ele cria um módulo e escreve nele antes de chamar sua função principal para executar a macro.

A função principal define um código de shell em formato hexadecimal e um processo de destino que é Notepad.exe . Em seguida, com base na versão do sistema operacional, ele cria um processo Notepad.exe e aloca memória em seu espaço de endereço usando VirtualAlloc . Em seguida, ele grava o código de shell na memória alocada usando WriteProcessMemory . No final, ele chama CreateRemoteThread para executar o shellcode no espaço de endereço do Notepad.exe .

Figura 11: macro desofuscada

Análise Shellcode (RokRat):

O shellcode injetado no Notepad.exe baixa uma carga criptografada de http: // bit [.] Ly / 2Np1enh que é redirecionado para um link de unidade do Google.

Figura 12: URL de download

A carga útil baixada é uma variante de um RAT baseado em nuvem conhecido como RokRat, que é usado por este grupo desde 2017 . A data de compilação desta amostra é 29 de outubro de 2019. Este RAT é conhecido por roubar dados da máquina da vítima e enviá-los para serviços em nuvem (Pcloud, Dropbox, Box, Yandex).

Figura 13: Serviços de nuvem codificados


Semelhante a suas variantes anteriores, ele usa várias técnicas de anti-análise para garantir que não esteja sendo executado em um ambiente de análise. Aqui estão algumas das verificações:

  • Verificando as DLLs relacionadas ao iDefense SysAnalyzer, Microsoft Debugging DLL e Sandboxies
  • Chamar IsDebuggerPresent e GetTickCount para identificar um depurador
  • Verificando arquivo relacionado ao VMWare
Figura 14: Técnicas de anti-análise

Este RAT tem os seguintes recursos:

  • Capture ScreenShots
Figura 15: Capture screenshots
  • Reúna informações do sistema (nome de usuário, nome do computador, BIOS)
Figura 16: Colete dados do BIOS
  • Exfiltração de dados para serviços em nuvem
Figura 17: Exfiltração de dados
  • Roubo de credenciais
  • Gerenciamento de arquivos e diretórios

Para uma análise mais detalhada deste RAT, você pode consultar os relatórios do NCC Group e Cisco Talos .

Conclusão

O principal vetor de infecção inicial usado pelo APT37 é o spear phishing, no qual o ator envia um e-mail a um alvo que está armado com um documento malicioso. O caso que analisamos é um dos poucos em que eles não usaram arquivos Hwp (Hangul Office) como seus documentos de phishing e, em vez disso, usaram documentos do Microsoft Office equipados com uma macro de autodecodificação. Essa técnica é uma escolha inteligente que pode contornar vários mecanismos de detecção estática e ocultar a intenção principal de um documento malicioso.

A carga útil final usada por esse ator de ameaça é um RAT personalizado conhecido (RokRat) que o grupo usou em campanhas anteriores. No passado, o RokRat era injetado no cmd.exe, mas aqui eles escolheram o Notepad.exe.


Indicadores de compromisso

Maldoc:
3c59ad7c4426e8396369f084c35a2bd3f0caa3ba1d1a91794153507210a77c90

RokRat:
676AE680967410E0F245DF0B6163005D8799C84E2F8F87BAD6B5E30295554E08
A42844FC9CB7F80CA49726B3589700FA47BDACF787202D0461C753E7C73CFD2A
2A253C2AA1DB3F809C86F410E4BD21F680B7235D951567F24D614D8E4D041576
C7CCD2AEE0BDDAF0E6C8F68EDBA14064E4A9948981231491A87A277E0047C0CB

Fonte: https://blog.malwarebytes.com/