Rastreamento de Campanhas de Malware com Material Reutilizado
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Esta campanha reutiliza uma imagem “transportadora” JPEG que esconde uma carga maliciosa entre as tags BaseStart- e -BaseEnd. O acesso inicial ocorre através da exploração do Microsoft Equation Editor (CVE-2017-11882) em um anexo manipulado, que faz o download de um HTA. O HTA executa PowerShell para recuperar um .NET estágio binário. A reutilização da mesma imagem em muitos samples sugere que o operador depende de componentes repetíveis.
Investigação
O pesquisador observou TELERADIO_IB_OBYEKTLRIN_BURAXILIS_FORMASI.xIs contendo a exploração do Equation Editor. A cadeia busca um HTA de um IP malicioso, que executa PowerShell para baixar uma segunda carga hospedada em outro IP. O estágio final é um binário .NET embutido na transportadora JPEG e recuperado pelos delimitadores BaseStart/-BaseEnd. Imagens transportadoras semelhantes foram encontradas em dezenas de submissões no VirusTotal.
Mitigação
Patch CVE-2017-11882 e mantenha o Office atualizado. Bloqueie ou restrinja a execução de HTA, confira a assinatura de scripts PowerShell e use filtragem de URL/IP para negar acesso à infraestrutura de hospedagem.
Resposta
Detecte e coloque em quarentena o anexo e a fase do HTA, e alerte sobre a atividade de download do PowerShell para os IPs identificados. Isole hosts afetados e realize análises forenses de memória para localizar e remover a carga .NET na memória.
Fluxo de Ataque
Detecções
Comportamento Suspeito de Evasão de Defesa LOLBAS MSHTA pela Detecção de Comandos Associados (via process_creation)
Ver
Strings Suspeitas do Powershell (via powershell)
Ver
Download de Arquivo Suspeito Diretamente por IP (via proxy)
Ver
Processo Filho Suspeito do Editor de Equações (via cmdline)
Ver
Strings Suspeitas do Powershell (via cmdline)
Ver
IOCs (DestinationIP) a serem detectados: Rastreando Campanhas de Malware Com Material Reutilizado
Ver
IOCs (SourceIP) a serem detectados: Rastreando Campanhas de Malware Com Material Reutilizado
Ver
Detectar HTA Malicioso e Entrega de Carga de Imagem Base64 [Proxy]
Ver
Obtendo Carga do PowerShell com Técnica Codificada em Base64 [Windows Powershell]
Ver
Execução de Simulação
Pré-requisito: O Telemetria & Cheque de Pré-vôo 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 as TTPs identificadas e visam gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa de Ataque & Comandos:
Um adversário explorou uma vulnerabilidade no lado do cliente que serve um arquivo HTA malicioso. O HTA lança PowerShell com uma linha de comando que incorpora uma carga maliciosa (por exemplo,Invoke‑Expressionpara lançarcalc.exe) codificada em Base64. A carga está entre as stringsBaseStart-and-BaseEndpara que o atacante possa extraí-la confiavelmente em tempo real. O comando executado no host comprometido é:powershell.exe -NoProfile -Command "$b='BaseStart-$( [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) )-BaseEnd'; $payload=$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($payload)))"Esta linha de comando satisfaz ambas as
condições selection_base_startande selection_base_end, fazendo com que a regra dispare.condições, fazendo com que a regra seja acionada. -
Script de Teste de Regressão: O seguinte script PowerShell autônomo reproduz o comportamento malicioso e pode ser executado em qualquer host Windows com a telemetria habilitada acima.
# Script de Teste de Regressão – aciona a regra de detecção # 1. Construir carga codificada em Base64 (lançar calc.exe) $payload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) # 2. Montar a linha de comando completa com delimitadores $cmd = "BaseStart-$payload-BaseEnd" # 3. Executar PowerShell com a linha de comando criada $fullCommand = "powershell.exe -NoProfile -Command `"& {`$b='$cmd'; `$payload=`$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$payload)))`"" # 4. Executar o comando (isso iniciará o calc.exe) Invoke-Expression $fullCommand -
Comandos de Limpeza: Remova quaisquer artefatos e finalize o processo gerado, se necessário.
# Limpeza – feche a Calculadora se ainda estiver em execução e limpe o histórico de comandos Get-Process calc -ErrorAction SilentlyContinue | Stop-Process -Force # Opcionalmente, limpe o histórico do PowerShell (apenas para a sessão atual) Remove-Item (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue