Como um Arquivo VHDX Entrega o Remcos RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Uma campanha de malware em várias etapas utiliza um arquivo ZIP armado contendo uma imagem de disco VHDX para escapar de controles de segurança comuns. Após a montagem do VHDX, um arquivo JavaScript ofuscado é executado e lança uma série de estágios do PowerShell através do WMI. O payload final é o Remcos RAT, que é injetado em um processo legítimo do Windows para ocultar sua execução.
Investigação
O pesquisador examinou um arquivo ZIP malicioso e o contêiner VHDX incorporado para reconstruir o fluxo completo do ataque. A análise expôs uma cadeia de execução complexa que usava criação de processos baseada em WMI para disfarçar relações de pai e filho, junto com ofuscação de strings XOR e Base64 e um carregador refletivo .NET. O caminho da infecção foi rastreado com sucesso desde a execução inicial do JavaScript até a implantação do payload final Remcos.
Mitigação
As organizações devem aplicar controles rigorosos para evitar a montagem de imagens de disco VHDX de fontes não confiáveis. Ferramentas de segurança também devem monitorar atividades suspeitas Win32_Process.Create atividades desencadeadas por mecanismos de script, como JavaScript ou PowerShell. Bloquear domínios maliciosos conhecidos e observar persistência incomum em chaves de execução no registro pode reduzir ainda mais o risco.
Resposta
Se esta atividade for detectada, isole o endpoint afetado imediatamente para interromper a comunicação de comando e controle. Adquira um dump de memória para capturar o payload Remcos injetado e o carregador refletivo .NET. Uma revisão forense completa deve então buscar entradas de chaves de execução maliciosas, arquivos VHDX adicionais e atividades suspeitas de PowerShell em outros locais do ambiente.
Fluxo de Ataque
Detecções
Possíveis Pontos de Persistência [ASEPs – Software/Hive NTUSER] (via registry_event)
Ver
Possíveis Pontos de Persistência [ASEPs – Software/Hive NTUSER] (via cmdline)
Ver
WSript / CScript LOLBAS (via process_creation)
Ver
Arquivo de Disco Rígido Virtual foi Criado (via file_event)
Ver
Possível Serviço de DNS Dinâmico Foi Contatado (via dns)
Ver
Detecção de Injeção de Processo e Carregador Refletivo .Net PowerShell [Criação de Processo do Windows]
Ver
Execução de Script PowerShell via WMI para Evasão de EDR [Powershell do Windows]
Ver
## Execução de Simulação
Pré-requisito: O Check Preliminar de Telemetria & Linha de Base deve ter sido aprovado.
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 a narrativa DEVEM refletir diretamente os TTPs identificados e tentar gerar a telemetria exata esperada pela lógica de detecção. Exemplos abstratos ou não relacionados levarão a um diagnóstico incorreto.
-
Narrativa e Comandos do Ataque: O adversário pretende executar um payload malicioso na memória para evitar a detecção por antivírus tradicionais. Eles utilizam um script PowerShell que aproveita
[System.Reflection.Assembly]::Load()para puxar uma DLL .NET compilada diretamente de um array de bytes para o processo atual. Para manter a persistência e evitar escrutínio, eles tentam gerar ou interagir combackgroundTaskHost.exe, um processo legítimo do Windows, para ocultar seu thread de execução dentro de uma tarefa de sistema padrão. -
Script de Teste de Regressão:
# Script de Simulação: Carga Refletiva .NET e Interação de Processo # Este script imita a lógica capturada pela regra de detecção. # 1. Crie um array de bytes fictício representando um Assembly .NET (altamente simplificado para simulação) $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # Imita o cabeçalho MZ Write-Host "[+] Tentando Carga Refletiva do Assembly .NET..." -ForegroundColor Cyan try { # Esta string específica é um alvo para a regra de detecção $assembly = [System.Reflection.Assembly]::Load($assemblyBytes) Write-Host "[!] Sucesso: Assembly carregado na memória (somente simulação)." -ForegroundColor Green } catch { Write-Host "[-] Falha no carregamento do assembly (esperada devido a bytes fictícios inválidos), mas o comando foi enviado." -ForegroundColor Yellow } Write-Host "[+] Tentando invocar backgroundTaskHost.exe para acionar a detecção..." -ForegroundColor Cyan # Esta string específica é um alvo para a regra de detecção Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection" -
Comandos de Limpeza:
# Limpeza: Termine o processo backgroundTaskHost gerado Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue Write-Host "[+] Limpeza concluída. BackgroundTaskHost terminado." -ForegroundColor Green