Mineradores invisíveis: revelando as operações de mineração de criptomoedas da GHOSTENGINE

O Elastic Security Labs identificou o REF4578, um conjunto de intrusões que incorpora vários módulos maliciosos e utiliza drivers vulneráveis para desativar soluções de segurança conhecidas (EDRs) para mineração de criptomoedas.

25 min de leituraPadrão de ataque
Mineradores invisíveis: revelando as operações de mineração de criptomoedas da GHOSTENGINE

Preâmbulo

O Elastic Security Labs identificou um conjunto de intrusão incorporando vários módulos maliciosos e aproveitando drivers vulneráveis para desabilitar soluções de segurança conhecidas (EDRs) para mineração de criptomoedas. Além disso, a equipe descobriu capacidades para estabelecer persistência, instalar um backdoor anteriormente não documentado e executar um criptominerador. Nós nos referimos a esse conjunto de intrusão como REF4578 e à carga primária como GHOSTENGINE (uma pesquisa tangencial feita pela equipe da Antiy nomeou partes desse conjunto de intrusão como HIDDENSHOVEL).

Principais conclusões

  • Os autores de malware incorporaram muitos mecanismos de contingência e duplicação
  • O GHOSTENGINE aproveita drivers vulneráveis para encerrar e excluir agentes EDR conhecidos que provavelmente interfeririam no minerador de moedas implantado e conhecido
  • Esta campanha envolveu uma quantidade incomum de complexidade para garantir a instalação e a persistência do minerador XMRIG

Análise de código

On May 6, 2024, at 14:08:33 UTC, the execution of a PE file named Tiworker.exe (masquerading as the legitimate Windows TiWorker.exe file) signified the beginning of the REF4578 intrusion. The following alerts were captured in telemetry, indicating a known vulnerable driver was deployed.

Após a execução, este arquivo baixa e executa um script do PowerShell que orquestra todo o fluxo de execução da intrusão. A análise revelou que esse binário executa uma linha de comando do PowerShell codificada para recuperar um script ofuscado, get.png, , que é usado para baixar mais ferramentas, módulos e configurações do invasor C2, conforme mostrado na captura de tela abaixo.

GHOSTENGINE

GHOSTENGINE é responsável por recuperar e executar módulos na máquina. Ele usa principalmente HTTP para baixar arquivos de um domínio configurado, com um IP de backup caso os domínios não estejam disponíveis. Além disso, ele emprega FTP como um protocolo secundário com credenciais incorporadas. A seguir está um resumo do fluxo de execução:

Este script baixa e executa clearn.png, um componente projetado para limpar o sistema de resquícios de infecções anteriores pertencentes à mesma família, mas de campanhas diferentes; ele remove arquivos maliciosos em C:\Program Files\Common Files\System\ado e C:\PROGRA~1\COMMON~1\System\ado\ e remove as seguintes tarefas agendadas por nome:

  • Microsoft Assist Job
  • System Help Center Job
  • SystemFlushDns
  • SystemFlashDnsSrv

Evidências desses artefatos de tarefas agendadas podem ser indicadores de uma infecção anterior.

Durante a execução, ele tenta desabilitar o Windows Defender e limpar os seguintes canais de log de eventos do Windows:

  • Application
  • Security
  • Setup
  • System
  • Forwarded Events
  • Microsoft-Windows-Diagnostics-Performance
  • Microsoft-Windows-AppModel-Runtime/Operational
  • Microsoft-Windows-Winlogon/Operational

get.png desabilita o Windows Defender, habilita serviços remotos e limpa o conteúdo de:

  • C:\Windows\Temp\
  • C:\Windows\Logs\
  • C:\$Recycle.Bin\
  • C:\windows\ZAM.krnl.trace

get.png também verifica se o volume C:\ tem pelo menos 10 MB de espaço livre para baixar arquivos, armazenando-os em C:\Windows\Fonts. Caso contrário, ele tentará excluir arquivos grandes do sistema antes de procurar outro volume adequado com espaço suficiente e criar uma pasta em $RECYCLE.BIN\Fonts.

Para obter a resolução DNS atual para os nomes de domínio C2, o GHOSTENGINE usa uma lista codificada de servidores DNS, 1.1.1.1 e 8.8.8.8.

Em seguida, para estabelecer a persistência, get.png cria as seguintes tarefas agendadas como SYSTEM:

  • OneDriveCloudSync usando msdtc para executar a DLL de serviço malicioso C:\Windows\System32\oci.dll a cada 20 minutos (descrito posteriormente)
  • DefaultBrowserUpdate para executar C:\Users\Public\run.bat, que baixa o script get.png e o executa a cada 60 minutos
  • OneDriveCloudBackup para executar C:\Windows\Fonts\smartsscreen.exe a cada 40 minutos

get.png encerra todos os processos curl.exe e qualquer processo do PowerShell com *get.png* em sua linha de comando, excluindo o processo atual. Esta é uma maneira de encerrar qualquer instância do malware em execução simultânea.

Este script então baixa config.txt, um arquivo JSON contendo os hashes dos arquivos PE recuperados. Este arquivo verifica se algum binário atualizado deve ser baixado, verificando os hashes dos arquivos baixados anteriormente de quaisquer infecções passadas.

Por fim, get.png baixa todos os seus módulos e vários arquivos PE. Abaixo está uma tabela contendo uma descrição de cada arquivo baixado:

caminhoTipoDescrição
C:\Windows\System32\drivers\aswArPots.sysDriver do kernelDriver vulnerável da Avast
C:\Windows\System32\drivers\IObitUnlockers.sysDriver do kernelDriver vulnerável da IObit
C:\Windows\Fonts\curl.exePE executávelUsado para baixar arquivos via cURL
C:\Windows\Fonts\smartsscreen.exePE executávelCarga útil principal (GHOSTENGINE), seu principal objetivo é desativar a instrumentação de segurança, concluir a infecção inicial e executar o minerador.
C:\Windows\System32\oci.dllServiço DLLPersistence/updates module
backup.pngScript do PowershellBackdoor module
kill.pngScript do PowershellUm script do PowerShell que injeta e executa um arquivo PE responsável por matar sensores de segurança

Módulos GHOSTENGINE

O GHOSTENGINE implementa vários módulos que podem adulterar ferramentas de segurança, criar um backdoor e verificar atualizações de software.

Controlador de agente EDR e módulo minerador: smartsscreen.exe

Este módulo encerra principalmente todos os processos ativos do agente EDR antes de baixar e instalar um criptominerador.

O malware verifica e compara todos os processos em execução com uma lista codificada de agentes EDR conhecidos. Se houver alguma correspondência, ele primeiro encerra o agente de segurança aproveitando o arquivo do driver do Avast Anti-Rootkit aswArPots.sys com o IOCTL 0x7299C004 para encerrar o processo por PID.

smartscreen.exe é então usado para excluir o binário do agente de segurança com outro driver vulnerável, iobitunlockers.sys do IObit, com o IOCTL 0x222124.

smartscreen.exe então baixa o programa de mineração do cliente XMRig (WinRing0x64.png) do servidor C2 como taskhostw.png. Por fim, ele executa o XMRig, seus drivers e o arquivo de configuração config.json, iniciando o processo de mineração.

Update/Persistence module: oci.dll

O script do PowerShell cria uma DLL de serviço (oci.dll), uma DLL fantasma carregada por msdtc. A arquitetura da DLL varia dependendo da máquina; ela pode ser de 32 ou 64 bits. Sua função principal é criar persistência do sistema e baixar quaisquer atualizações dos servidores C2 baixando o script get.png do C2 e executando-o.

Toda vez que o serviço msdtc for iniciado, ele carregará oci.dll para gerar o comando PowerShell one-liner que executa get.png :

Módulo de terminação do agente EDR: kill.png

kill.png é um script do PowerShell que injeta shellcode no processo atual, descriptografando e carregando um arquivo PE na memória.

Este módulo foi escrito em C++ e os autores integraram redundância em sua operação. Essa redundância é evidente na replicação da técnica usada em smartsscreen.exe para encerrar e excluir binários do agente EDR; ele verifica continuamente se há novos processos.

Módulo backdoor do Powershell: backup.png

O script do PowerShell funciona como um backdoor, permitindo a execução remota de comandos no sistema. Ele envia continuamente um objeto JSON codificado em Base64 contendo um ID exclusivo, derivado da hora atual e do nome do computador, enquanto aguarda comandos codificados em base64. Os resultados desses comandos são então enviados de volta.

Neste exemplo, eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9 é o objeto JSON codificado em Base64:

$ echo "eyJpZCI6IjE3MTU2ODYyNDA3MjYyNiIsImhvc3QiOiJhbmFseXNpcyJ9" | base64 -D
{"id":"171568624072626","host":"analysis"}

Configuração do minerador

O XMRig é um minerador de criptomoedas legítimo e eles documentaram o uso do arquivo de configuração e os elementos aqui. Conforme observado no início desta publicação, o objetivo final do conjunto de intrusão REF4578 era obter acesso a um ambiente e implantar um minerador de criptomoedas Monero persistente, o XMRig.

Extraímos o arquivo de configuração do minerador, o que foi extremamente valioso, pois nos permitiu relatar o ID de pagamento do Monero e rastrear estatísticas do trabalhador e do pool, criptomoeda minerada, IDs de transação e retiradas.

Abaixo está um trecho do arquivo de configuração REF4578 XMRig:

{
    "autosave": false,
    "background": true,
    "colors": true,

...truncated...

    "donate-level": 0,
    "donate-over-proxy": 0,
    "pools": [
        {
            "algo": "rx/0",
            "coin": "monero",
            "url": "pool.supportxmr[.]com:443",
            "user": "468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f",
            "keepalive": true,
            "tls": true

...truncated...

    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
    "verbose": 0,
    "watch": true,
    "pause-on-battery": false,
    "pause-on-active": false
}

ID de pagamento Monero

Monero é uma criptomoeda blockchain com foco em ofuscação e fungibilidade para garantir anonimato e privacidade. O ID de pagamento é um anexo de transação arbitrário e opcional que consiste em 32 bytes (64 caracteres hexadecimais) ou 8 bytes (no caso de endereços integrados).

Usando o ID de pagamento do trecho de configuração acima (468ED2Qcchk4shLbD8bhbC3qz2GFXqjAUWPY3VGbmSM2jfJw8JpSDDXP5xpkMAHG98FHLmgvSM6ZfUqa9gvArUWP59tEd3f), podemos visualizar as estatísticas do trabalhador e do pool em um dos sites do Monero Mining Poollistados na configuração.

Além disso, podemos ver os hashes de transação, que podemos consultar no explorador de blockchain do Monero. Observe que, embora as transações datem de quatro meses atrás, isso indica apenas o ganho monetário potencial desse trabalhador e dessa conta específicos.

Usando o Blockchain Explorer e um dos hashes de transação que obtivemos do ID de pagamento, podemos ver a chave pública, o valor sacado e quando. Observe que essas chaves públicas são usadas com endereços únicos ou endereços ocultos que o adversário usaria como chave privada para desbloquear os fundos.

In the above example for transaction 7c106041de7cc4c86cb9412a43cb7fc0a6ad2c76cfdb0e03a8ef98dd9e744442 we can see that there was a withdrawal of 0.109900000000 XMR (the abbreviation for Monero) totaling $14.86 USD. The Monerao Mining Pool site shows four transactions of approximately the same amount of XMR, totaling approximately $60.70 USD (January - March 2024).

No momento da publicação desta pesquisa, ainda havia mineradores ativos conectados ao ID de pagamento REF4578.

Embora esse ID de pagamento específico não pareça gerar muitos ganhos, é evidente que o REF4578 poderia operar esse conjunto de intrusão com sucesso. Outras vítimas desta campanha podem ter diferentes IDs de pagamento usadas para rastrear intrusões, que podem ser combinadas para uma coleta geral maior.

Malware e MITRE ATT&CK

A Elastic usa a estrutura MITRE ATT&CK para documentar táticas, técnicas e procedimentos comuns que as ameaças usam contra redes corporativas.

Táticas

As táticas representam o porquê de uma técnica ou subtécnica. É o objetivo tático do adversário: a razão para executar uma ação.

Técnicas

Técnicas representam como um adversário atinge um objetivo tático executando uma ação.

Mitigando GHOSTENGINE

Detecção

O primeiro objetivo do malware GHOSTENGINE é incapacitar soluções de segurança de endpoint e desabilitar logs de eventos específicos do Windows, como logs de segurança e sistema, que registram a criação de processos e o registro de serviços. Portanto, é fundamental priorizar a detecção e prevenção destas ações iniciais:

  • Suspicious PowerShell Execution (execução suspeita do PowerShell)
  • Execução de diretórios incomuns
  • Elevando privilégios à integridade do sistema
  • Implantando drivers vulneráveis e estabelecendo serviços de modo kernel associados.

Depois que os drivers vulneráveis são carregados, as oportunidades de detecção diminuem significativamente, e as organizações precisam encontrar endpoints comprometidos que parem de transmitir logs para seu SIEM.

O tráfego de rede pode ser gerado e identificável se as pesquisas de registros DNS apontarem para domínios de pool de mineração conhecidos em portas conhecidas, como HTTP (80) e HTTPS (443). Stratum também é outro protocolo de rede popular para mineradores, por padrão, na porta 4444.

A análise deste conjunto de intrusão revelou as seguintes regras de detecção e eventos de prevenção de comportamento:

Prevenção

Prevenção de arquivos maliciosos:

Prevenção de injeção de shellcode:

Prevenção de criação de arquivos de drivers vulneráveis (Windows.VulnDriver.ArPot e Windows.VulnDriver.IoBitUnlocker )

YARA

O Elastic Security criou regras YARA para identificar essa atividade.

Observações

Todos os observáveis também estão disponíveis para download nos formatos ECS e STIX.

Os seguintes observáveis foram discutidos nesta pesquisa.

ObservableTipoNomeReferência
2fe78941d74d35f721556697491a438bf3573094d7ac091b42e4f59ecbd25753SHA-256C:\Windows\Fonts\smartsscreen.exeMódulo controlador GHOSTENGINE EDR
4b5229b3250c8c08b98cb710d6c056144271de099a57ae09f5d2097fc41bd4f1SHA-256C:\Windows\System32\drivers\aswArPots.sysDriver vulnerável do Avast
2b33df9aff7cb99a782b252e8eb65ca49874a112986a1c49cd9971210597a8aeSHA-256C:\Windows\System32\drivers\IObitUnlockers.sysDriver vulnerável Iobit
3ced0552b9ecf3dfecd14cbcc3a0d246b10595d5048d7f0d4690e26ecccc1150SHA-256C:\Windows\System32\oci.dllMódulo de atualização/persistência (64 bits)
3b2724f3350cb5f017db361bd7aae49a8dbc6faa7506de6a4b8992ef3fd9d7abSHA-256C:\Windows\System32\oci.dllMódulo de atualização/persistência (32 bits)
35eb368c14ad25e3b1c58579ebaeae71bdd8ef7f9ccecfc00474aa066b32a03fSHA-256C:\Windows\Fonts\taskhostw.exeCliente minerador
786591953336594473d171e269c3617d7449876993b508daa9b96eedc12ea1caSHA-256C:\Windows\Fonts\config.jsonArquivo de configuração do Miner
11bd2c9f9e2397c9a16e0990e4ed2cf0679498fe0fd418a3dfdac60b5c160ee5SHA-256C:\Windows\Fonts\WinRing0x64.sysMotorista mineiro
aac7f8e174ba66d62620bd07613bac1947f996bb96b9627b42910a1db3d3e22bSHA-256C:\ProgramData\Microsoft\DeviceSync\SystemSync\Tiworker.exeEstagiário inicial
6f3e913c93887a58e64da5070d96dc34d3265f456034446be89167584a0b347eSHA-256backup.pngMódulo backdoor GHOSTENGINE
7c242a08ee2dfd5da8a4c6bc86231985e2c26c7b9931ad0b3ea4723e49ceb1c1SHA-256get.pngCarregador GHOSTENGINE
cc4384510576131c126db3caca027c5d159d032d33ef90ef30db0daa2a0c4104SHA-256kill.pngMódulo de terminação GHOSTENGINE EDR
download.yrnvtklot[.]comDomínioServidor C2
111.90.158[.]40endereço-ipv4Servidor C2
ftp.yrnvtklot[.]comDomínioServidor C2
93.95.225[.]137endereço-ipv4Servidor C2
online.yrnvtklot[.]comDomínioServidor C2

Referências

Os seguintes itens foram referenciados ao longo da pesquisa acima:

Compartilhe este artigo