Análise Profunda da Nova Campanha XWorm Utilizando E-mails de Phishing com Temas Diversificados
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
O FortiGuard Labs observou uma campanha de phishing em várias etapas distribuindo o trojan de acesso remoto XWorm por meio de anexos Excel maliciosos. O documento abusa do CVE-2018-0802 no Microsoft Equation Editor para recuperar um arquivo HTA, que então aciona um carregador .NET sem arquivos que usa oco de processo para injetar o XWorm em um novo processo Msbuild.exe. O RAT se comunica com seu C2 usando tráfego criptografado com AES e expõe um amplo conjunto de comandos com suporte a plugins para controle estendido. A campanha mostra o uso sofisticado de binários living-off-the-land e técnicas sem arquivo para alcançar controle remoto persistente em endpoints comprometidos.
Investigação
Analistas reconstruíram o fluxo do e-mail de phishing até o exploit Excel OLE, execução HTA, download do módulo .NET baseado em PowerShell, e oco de processo final em Msbuild.exe. Revisão estática e dinâmica destacou dados de payload codificados em Base64 ocultos dentro de uma imagem JPEG, com o componente final XWorm carregado na memória sem gravar um executável descriptografado no disco durante a execução. Capturas de rede mostraram pacotes criptografados com AES enviados para o domínio C2 berlin101.com pela porta 6000. O relatório também catalogou o extenso conjunto de comandos e arquitetura de plugins do XWorm.
Mitigação
A FortiGuard recomenda ativar proteções de macro e OLE, aplicar o patch para CVE-2018-0802 e restringir a execução de arquivos Msbuild, PowerShell e HTA originários de conteúdo de e-mail. Implemente filtragem web, controles anti-phishing e assinaturas IDS/IPS vinculadas aos indicadores observados para bloquear entrega e preparação no gateway. Monitore árvores de processos anômalas – especialmente Msbuild.exe iniciado a partir de PowerShell – para detectar exploração cedo.
Resposta
Ao detectar, isole o endpoint afetado, termine processos maliciosos e remova o módulo XWorm carregado da memória. Colete artefatos forenses, incluindo telemetria de linha de comando, logs de rede e alterações de registro para delimitar a intrusão. Redefina credenciais potencialmente comprometidas, atualize o componente vulnerável Equation Editor e bloqueie os domínios maliciosos e o servidor C2. Aplique atualizações de inteligência de ameaças aos EDR/SIEM para prevenir recorrência e buscar atividades relacionadas em todo o ambiente.
graph TB %% Definições de classe classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Nós de Ação action_phishing[“<b>Ação</b> – T1566.001<br/><b>Nome</b>: Anexo de Spearphishing<br/><b>Descrição</b>: Excel .xlam malicioso enviado por email”] class action_phishing action action_user_exec[“<b>Ação</b> – T1204.002<br/><b>Nome</b>: Execução pelo Usuário<br/><b>Descrição</b>: Vítima abre o arquivo Excel anexado”] class action_user_exec action exploit_eqnedt[“<b>Ação</b> – T1203<br/><b>Nome</b>: Exploração para Execução no Cliente (CVEu20112018u20110802)<br/><b>Descrição</b>: Vulnerabilidade do Equation Editor permite execução de shellcode”] class exploit_eqnedt action defense_evasion[“<b>Ação</b> – T1211<br/><b>Nome</b>: Exploração para Evasão de Defesa<br/><b>Descrição</b>: Vulnerabilidade contorna defesas tradicionais”] class defense_evasion action action_powershell[“<b>Ação</b> – T1059.001<br/><b>Nome</b>: Execução PowerShell<br/><b>Descrição</b>: Decodifica Base64, baixa JPEG com módulo .NET oculto, executa JScript”] class action_powershell action action_reflective_load[“<b>Ação</b> – T1620<br/><b>Nome</b>: Carregamento Reflexivo de Código<br/><b>Descrição</b>: Carrega assembly .NET diretamente na memória”] class action_reflective_load action action_process_hollowing[“<b>Ação</b> – T1055.012<br/><b>Nome</b>: Process Hollowing<br/><b>Descrição</b>: Injeta XWorm RAT em processo Msbuild suspenso”] class action_process_hollowing action module_shared[“<b>Ação</b> – T1129<br/><b>Nome</b>: Módulos Compartilhados<br/><b>Descrição</b>: Plugins .NET carregados sob demanda”] class module_shared action persistence_active_setup[“<b>Ação</b> – T1547.014<br/><b>Nome</b>: Persistência Active Setup<br/><b>Descrição</b>: Armazena binários de plugin na chave HKCU do registro”] class persistence_active_setup action action_query_registry[“<b>Ação</b> – T1012<br/><b>Nome</b>: Consulta ao Registro<br/><b>Descrição</b>: Lê dados de plugin e configuração”] class action_query_registry action encryption_aes[“<b>Ação</b> – T1001<br/><b>Nome</b>: Ofuscação de Dados<br/><b>Descrição</b>: AES criptografa todo o tráfego C2”] class encryption_aes action c2_https[“<b>Ação</b> – T1102.003<br/><b>Nome</b>: Comunicação Web Unidirecional<br/><b>Descrição</b>: HTTPS criptografado para berlin101.com:6000”] class c2_https action %% Nós de Ferramentas tool_excel_xlam[“<b>Ferramenta</b> – Anexo Excel .xlam”] class tool_excel_xlam tool tool_mshta[“<b>Ferramenta</b> – mshta.exe”] class tool_mshta tool tool_powershell[“<b>Ferramenta</b> – PowerShell”] class tool_powershell tool tool_msbuild[“<b>Ferramenta</b> – Msbuild.exe”] class tool_msbuild tool %% Nós de Malware malware_dotnet_module[“<b>Malware</b> – Módulo .NET Oculto”] class malware_dotnet_module malware malware_xworm[“<b>Malware</b> – XWorm RAT”] class malware_xworm malware %% Nós de Processo process_shellcode[“<b>Processo</b> – Execução de Shellcode”] class process_shellcode process proc_mshta[“<b>Processo</b> – Processo mshta”] class proc_mshta process proc_msbuild[“<b>Processo</b> – Processo Msbuild (suspenso)”] class proc_msbuild process %% Conexões action_phishing –>|entrega anexo| tool_excel_xlam tool_excel_xlam –>|aberto pela vítima| action_user_exec action_user_exec –>|aciona| exploit_eqnedt exploit_eqnedt –>|habilita| defense_evasion defense_evasion –>|executa| process_shellcode process_shellcode –>|inicia| proc_mshta proc_mshta –>|executa| tool_mshta tool_mshta –>|baixa e executa| action_powershell action_powershell –>|carrega| malware_dotnet_module malware_dotnet_module –>|hospedado na memória por| action_reflective_load action_reflective_load –>|hospeda payload em| proc_msbuild proc_msbuild –>|iniciado por| tool_msbuild tool_msbuild –>|hospeda payload via| action_process_hollowing action_process_hollowing –>|injeta| malware_xworm malware_xworm –>|usa| module_shared module_shared –>|armazena plugins via| persistence_active_setup persistence_active_setup –>|lê config de| action_query_registry action_query_registry –>|criptografa tráfego com| encryption_aes encryption_aes –>|envia para| c2_https
Fluxo de Ataque
Detecções
Strings Suspeitas do Powershell (via powershell)
Visualizar
Comportamento Suspeito de Evasão de Defesa LOLBAS MSHTA por Detecção de Comandos Associados (via criação_processual)
Visualizar
Strings Suspeitas do Powershell (via cmdline)
Visualizar
Chamar Métodos .NET Suspeitos a partir do Powershell (via powershell)
Visualizar
IOCs (HashSha256) para detectar: Análise Detalhada na Nova Campanha XWorm Utilizando E-mails de Phishing com Temas Múltiplos
Visualizar
Campanha XWorm Explorando o CVE-2018-0802 com Vetores de Ataque Múltiplos [Criação de Processo no Windows]
Visualizar
Detectar Payload Base64-Codificado do PowerShell na Campanha XWorm [Powershell do Windows]
Visualizar
Execução de Simulação
Pré-requisito: O Check de Pré-voo de Telemetria & Linha de Base deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica do adversário (TTP) projetada para acionar a regra de detecção. Os comandos e narrativas DEVEM refletir diretamente os TTPs identificados e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa & Comandos do Ataque:
- Queda Inicial: O atacante entrega um arquivo Excel malicioso que explora o CVE-2018-0802. Para a simulação, contornamos o exploit e lançamos o payload diretamente.
- Hollowing de Processo via EQNEDT32.EXE: Executar
EQNEDT32.EXEcom uma linha de comando invocandoShellExecuteExW()para mascarar como um componente legítimo do Office. - Execução Lateral de Msbuild.exe: Iniciar
Msbuild.execomCreateProcessA()para compilar um payload .NET furtivo ad-hoc. - Execução .NET Sem Arquivo: Use
powershell.execom um comando codificado em base64 que carrega uma assembly .NET reflexiva (T1620). A linha de comando contém a string literalCreateProcessA()para satisfazer a regra.
-
Script de Teste de Regressão:
<# Simula a cadeia de execução do XWorm: 1. EQNEDT32.exe com ShellExecuteExW() 2. Msbuild.exe com CreateProcessA() 3. PowerShell com carregador reflexivo .NET codificado que contém CreateProcessA() #> # 1. EQNEDT32.exe (Hollowing de Processo) $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE" $eqnArgs = "-Command "ShellExecuteExW()"" Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden # 2. Msbuild.exe (Injeção Dinâmica de DLL) $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe" $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()"" Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden # 3. PowerShell (Carregamento Reflexivo .NET Sem Arquivo) # Exemplo de payload .NET (placeholder) codificado em base64 $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ==" # base64 de teste $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()"" Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden Write-Host "Simulação do XWorm concluída." -
Comandos de Limpeza:
# Terminar quaisquer processos de simulação remanescentes Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force # Opcionalmente remova arquivos temporários (nenhum criado nesta simulação estritamente processual) Write-Host "Limpeza concluída."