Phantom 3.5 – malware de roubo de credenciais entregue através de um instalador falso da Adobe
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumo
Phantom 3.5 é um malware de roubo de credenciais distribuído através de um instalador falso da Adobe. Uma vez executado, o instalador solta um script PowerShell que fornece um DLL .NET ofuscado (BLACKHAWK.dll) e injeta a carga final no Aspnet_compiler.exe para ser executado em um contexto de processo que parece confiável.
Investigação
Pesquisadores detonaram o instalador falso em um sandbox e capturaram a localização do downloader (positivepay-messages.com/file/floor.ps1). Eles decodificaram o script protegido por Base64/RC4, identificaram o DLL .NET recuperado e confirmaram a injeção no Aspnet_compiler.exe usando ferramentas como hollows_hunter e ProcDump. A análise indica que o DLL inclui medidas anti-análise, técnicas de Heaven’s Gate e múltiplos canais de exfiltração, incluindo SMTP, FTP, Telegram e Discord.
Mitigação
Restrinja ou bloqueie a execução de scripts PowerShell não assinados, impeça o carregamento de DLLs não confiáveis e monitore a criação anormal de processos Aspnet_compiler.exe. Aplique filtragem de URL para negar acesso ao domínio malicioso e seus caminhos. Garanta que controles de endpoint possam detectar padrões de injeção de processos e comportamentos comuns de roubo de credenciais.
Resposta
Dispare alertas sobre conexões de saída para positivepay-messages.com, artefatos de memória ou módulo relacionados ao BLACKHAWK.dll e evidências de injeção de código no Aspnet_compiler.exe. Quarentena o host afetado, adquira imagens de memória e realize triagem forense completa para erradicar o DLL malicioso e cargas associadas.
“graph TB %% Definições de Classe classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f9d5e5 %% Nós u2013 Acesso Inicial e Execução action_user_execution[“<b>Ação</b> – <b>T1204.002 Execução do Usuário</b>: A vítima executa um falso “instalador Adobe 11.7.7″ que parece legítimo.”] class action_user_execution action tech_masquerade[“<b>Técnica</b> – <b>T1036.008 Mascaramento</b>: O arquivo do instalador é renomeado e mascarado para se parecer com um instalador Adobe.”] class tech_masquerade technique tool_powershell[“<b>Ferramenta</b> – <b>Nome</b>: PowerShell<br/><b>Descrição</b>: Usado para baixar e executar um script malicioso com a janela oculta e ignorar a política de execução.”] class tool_powershell tool %% Nós u2013 Ofuscação e Decodificação tech_deobfuscate[“<b>Técnica</b> – <b>T1140 Desofuscar/Decodificar Arquivos</b>: O payload Base64u2011RC4 é decodificado e descriptografado antes da execução.”] class tech_deobfuscate technique tech_obfuscate[“<b>Técnica</b> – <b>T1027 Arquivos Ofuscados</b>: Scripts maliciosos são fortemente ofuscados para evadir a análise estática.”] class tech_obfuscate technique %% Nós u2013 Injeção de Processo e Carregamento Reflexivo tech_process_injection[“<b>Técnica</b> – <b>T1055 Injeção de Processo</b>: BLACKHAWK.dll é injetado em Aspnet_compiler.exe para executar o payload.”] class tech_process_injection technique process_aspnet_compiler[“<b>Processo</b> – <b>Nome</b>: Aspnet_compiler.exe”] class process_aspnet_compiler process tech_reflective_load[“<b>Técnica</b> – <b>T1620 Carregamento de Código Reflexivo</b>: Assembly .NET é carregado na memória usando System.Reflection.Assembly::Load.”] class tech_reflective_load technique %% Nós u2013 Evasão de Defesa tech_sandbox_evasion[“<b>Técnica</b> – <b>T1497.002 Evasão de Sandbox Virtualização</b>: Verifica nomes de usuários e variáveis de ambiente para detectar máquinas de análise.”] class tech_sandbox_evasion technique %% Nós u2013 Persistência tech_active_setup[“<b>Técnica</b> – <b>T1547.014 Persistência do Active Setup</b>: Cria uma chave de registro Run via Active Setup para execução automática no logon.”] class tech_active_setup technique %% Nós u2013 Acesso e Coleta de Credenciais tech_keylogging[“<b>Técnica</b> – <b>T1056.001 Keylogging</b>: Captura as teclas digitadas pelo usuário.”] class tech_keylogging technique tech_browser_cred[“<b>Técnica</b> – <b>T1555.003 Acesso a Credenciais do Navegador</b>: Rouba chaves mestras, senhas, cookies e dados de carteira de navegadores web.”] class tech_browser_cred technique tech_clipboard[“<b>Técnica</b> – <b>T1115 Dados da Área de Transferência</b>: Coleta dados da área de transferência do sistema.”] class tech_clipboard technique tech_screen_capture[“<b>Técnica</b> – <b>T1113 Captura de Tela</b>: Tira capturas de tela em intervalos de um segundo.”] class tech_screen_capture technique tech_video_capture[“<b>Técnica</b> – <b>T1125 Captura de Vídeo</b>: Grava imagens de vídeo da área de trabalho do usuário.”] class tech_video_capture technique %% Nós u2013 Exfiltração tech_smtp_ftp[“<b>Técnica</b> – <b>T1048 Exfiltração via Protocolo Alternativo</b>: Envia dados roubados por email SMTP e transferências FTP.”] class tech_smtp_ftp technique tech_telegram_discord[“<b>Técnica</b> – <b>T1567 Exfiltração via Serviço Web</b>: Transfere dados através das APIs do Telegram e Discord.”] class tech_telegram_discord technique %% Nós u2013 Comando e Controle tech_web_service[“<b>Técnica</b> – <b>T1102.002 Serviço Web C2 Bidirecional</b>: Usa Telegram e Discord como canais de comunicação bidirecional para comando e controle.”] class tech_web_service technique %% Conexões u2013 Fluxo do Ataque action_user_execution u002du002d>|leva a| tech_masquerade tech_masquerade u002du002d>|leva a| tool_powershell tool_powershell u002du002d>|executa| tech_deobfuscate tech_deobfuscate u002du002d>|suporta| tech_obfuscate tech_obfuscate u002du002d>|habilita| tech_process_injection tech_process_injection u002du002d>|alvos| process_aspnet_compiler process_aspnet_compiler u002du002d>|carrega| tech_reflective_load tech_reflective_load u002du002d>|facilita| tech_sandbox_evasion tech_sandbox_evasion u002du002d>|permite| tech_active_setup tech_active_setup u002du002d>|habilita| tech_keylogging tech_keylogging u002du002d>|coleta| tech_browser_cred tech_browser_cred u002du002d>|acrescenta a| tech_clipboard tech_clipboard u002du002d>|acrescenta a| tech_screen_capture tech_screen_capture u002du002d>|acrescenta a| tech_video_capture tech_video_capture u002du002d>|alimenta| tech_smtp_ftp tech_video_capture u002du002d>|alimenta| tech_telegram_discord tech_smtp_ftp u002du002d>|exfiltra via| tech_web_service tech_telegram_discord u002du002d>|exfiltra via| tech_web_service %% Estilização class action_user_execution action class tech_masquerade,tech_deobfuscate,tech_obfuscate,tech_process_injection,tech_reflective_load,tech_sandbox_evasion,tech_active_setup,tech_keylogging,tech_browser_cred,tech_clipboard,tech_screen_capture,tech_video_capture,tech_smtp_ftp,tech_telegram_discord,tech_web_service technique class tool_powershell tool class process_aspnet_compiler process “
Fluxo de Ataque
Detecções
Strings do Powershell suspeitas (via powershell)
Visualizar
Uso Potencial de Timeout para Execução com Atraso (via cmdline)
Visualizar
Execução de Mudança de Página de Código Incomum (via cmdline)
Visualizar
Pontos de Persistência Possíveis [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizar
IOCs (HashMd5) para detectar: Phantom 3.5: Análise de Vetor Inicial e Forense
Visualizar
Injeção de Processo Phantom 3.5 via Aspnet_compiler.exe [Criação de Processo do Windows]
Visualizar
Execução de Script PowerShell com Atributo Oculto e Strings Codificadas em Base64 [PowerShell do Windows]
Visualizar
Execução de Simulação
Pré-requisito: O Check de Pré-vôo de Telemetria & Baseline deve ter passado.
Justificativa: Esta seção detalha a execução precisa da técnica adversária (TTP) projetada para acionar a regra de detecção. Os comandos e a narrativa DEVEM refletir diretamente as TTPs identificadas e têm como objetivo gerar a telemetria exata esperada pela lógica de detecção.
-
Narrativa do Ataque & Comandos:
O adversário obteve a carga útil Phantom 3.5 e deseja executá-la na memória para evadir defesas baseadas em disco. Eles usamAspnet_compiler.exe, um binário confiável do Windows, para carregar o assembly gerenciado malicioso viaInvoke-ManagedAssemblyargumento. Isso faz com que o processo do compilador seja iniciado, injete a carga útil no espaço do processo atual e persista criando uma tarefa agendada que executa repetidamente o mesmo comando.-
Prepare o assembly gerenciado malicioso (
phantom_payload.dll) no host alvo. -
Execute a injeção usando
Aspnet_compiler.exe:$maliciousDll = "C:Tempphantom_payload.dll" $cmd = "`"$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe`" -p `"$maliciousDll`" -c `Invoke-ManagedAssembly`" Start-Process -FilePath $cmd -WindowStyle Hidden -
Crie persistência (opcional) registrando uma tarefa agendada que reaplica o mesmo comando a cada hora.
-
-
Script de Teste de Regressão: O script abaixo reproduz as etapas acima de maneira autocontida e repetível.
<# .SYNOPSIS Simula injeção de processo Phantom 3.5 usando Aspnet_compiler.exe. .DESCRIPTION Copia um DLL malicioso fictício para um local conhecido, em seguida, lança Aspnet_compiler.exe com a flag `Invoke-ManagedAssembly` para gerar o evento de criação de processo exato que a regra de detecção observa. #> # --- Preparation ----------------------------------------------------------- $dllPath = "$env:TEMPphantom_payload.dll" # Crie um pequeno DLL fictício (substituto para a carga real) Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00)) -Encoding Byte # --- Execution ------------------------------------------------------------- $aspnetPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe" if (-Not (Test-Path $aspnetPath)) { Write-Error "Aspnet_compiler.exe não encontrado no local esperado." exit 1 } $arguments = "-p `"$dllPath`" -c `Invoke-ManagedAssembly`" Write-Host "Iniciando Aspnet_compiler.exe com argumentos maliciosos..." Start-Process -FilePath $aspnetPath -ArgumentList $arguments -WindowStyle Hidden -PassThru # --- Optional Persistence ---------------------------------------------------- # Registre uma tarefa agendada que repete a injeção a cada hora $taskName = "PhantomInject" $action = New-ScheduledTaskAction -Execute $aspnetPath -Argument $arguments $trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes(5) -RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration ([TimeSpan]::MaxValue) Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -RunLevel Highest -Force Write-Host "Simulação completa. Verifique o SIEM para o alerta gerado." -
Comandos de Limpeza: Remova o DLL fictício, a tarefa agendada e quaisquer processos remanescentes.
# Remova o DLL fictício Remove-Item -Path "$env:TEMPphantom_payload.dll" -Force -ErrorAction SilentlyContinue # Desregistre a tarefa agendada Unregister-ScheduledTask -TaskName "PhantomInject" -Confirm:$false -ErrorAction SilentlyContinue # Elimine quaisquer processos Aspnet_compiler.exe remanescentes iniciados pelo teste Get-Process -Name "Aspnet_compiler" -ErrorAction SilentlyContinue | Stop-Process -Force