SOC Prime Bias: Medium

18 Dec 2025 18:42 UTC

Phantom 3.5 – malware para robo de credenciales entregado a través de un instalador falso de Adobe

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Seguir
Phantom 3.5 – malware para robo de credenciales entregado a través de un instalador falso de Adobe
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Resumen

Phantom 3.5 es un malware que roba credenciales distribuido a través de un instalador falso de Adobe. Una vez ejecutado, el instalador descarga un script de PowerShell que baja un DLL .NET ofuscado (BLACKHAWK.dll) e inyecta la carga final en Aspnet_compiler.exe para ejecutarse en un contexto de proceso confiable.

Investigación

Los investigadores detonaron el instalador falso en un entorno aislado y capturaron la ubicación del descargador (positivepay-messages.com/file/floor.ps1). Decodificaron el script protegido con Base64/RC4, identificaron el DLL .NET recuperado, y confirmaron la inyección en Aspnet_compiler.exe utilizando herramientas como hollows_hunter y ProcDump. El análisis indica que el DLL incluye medidas anti-análisis, técnicas de Heaven’s Gate y múltiples canales de exfiltración, incluyendo SMTP, FTP, Telegram y Discord.

Mitigación

Restringir o bloquear la ejecución de scripts de PowerShell no firmados, prevenir la carga de DLL no confiables, y monitorizar la creación anormal de procesos Aspnet_compiler.exe. Aplicar filtrado de URL para denegar el acceso al dominio malicioso y sus rutas. Asegurar que los controles en los endpoints puedan detectar patrones de inyección de procesos y comportamientos comunes de credential-stealers.

Respuesta

Activar alertas en conexiones salientes a positivepay-messages.com, artefactos de memoria o módulo relacionados con BLACKHAWK.dll, y evidencia de inyección de código en Aspnet_compiler.exe. Cuarentenar el host afectado, adquirir imágenes de memoria, y realizar un examen forense completo para erradicar el DLL malicioso y las cargas asociadas.

Flujo de Ataque

Detecciones

Cadenas de Powershell Sospechosas (via powershell)

Equipo SOC Prime
18 Dic 2025

Uso Posible de Timeout para Ejecutar Demorado (via cmdline)

Equipo SOC Prime
18 Dic 2025

Ejecución de Cambio de Página de Código Inusual (via cmdline)

Equipo SOC Prime
18 Dic 2025

Posibles Puntos de Persistencia [ASEPs – Software/NTUSER Hive] (via registry_event)

Equipo SOC Prime
18 Dic 2025

IOCs (HashMd5) para detectar: Phantom 3.5: Análisis de Vector Inicial y Forense

Reglas AI de SOC Prime
18 Dic 2025

Inyección de Proceso Phantom 3.5 a través de Aspnet_compiler.exe [Creación de Procesos en Windows]

Reglas AI de SOC Prime
18 Dic 2025

Ejecución de Script de PowerShell con Atributo Oculto y Cadenas Codificadas en Base64 [Powershell de Windows]

Reglas AI de SOC Prime
18 Dic 2025

Ejecución de Simulación

Requisito previo: El Chequeo Previo de Telemetría y Línea Base debe haber pasado.

Racional: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTP identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección.

  • Narrativa de Ataque & Comandos:
    El adversario ha obtenido la carga de Phantom 3.5 y desea ejecutarla en memoria para evadir las defensas basadas en disco. Aprovechan Aspnet_compiler.exe, un binario confiable de Windows, para cargar el ensamblado malicioso gestionado a través del argumento Invoke-ManagedAssembly . Esto hace que el proceso del compilador se inicie, inyecte la carga en el espacio del proceso actual, y persista creando una tarea programada que ejecuta repetidamente el mismo comando.

    1. Preparar el ensamblado gestionado malicioso (phantom_payload.dll) en el host objetivo.

    2. Ejecutar la inyección 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. Crear persistencia (opcional) registrando una tarea programada que vuelva a ejecutar el mismo comando cada hora.

  • Script de Prueba de Regresión: El script a continuación reproduce los pasos anteriores de manera autónoma y repetible.

    <#
    .SYNOPSIS
        Simula la inyección de proceso de Phantom 3.5 usando Aspnet_compiler.exe.
    .DESCRIPTION
        Copia un DLL malicioso ficticio a una ubicación conocida, luego lanza Aspnet_compiler.exe
        con el flag `Invoke-ManagedAssembly` para generar el evento de creación de proceso exacto
        que la regla de detección observa.
    #>
    
    # --- Preparación -----------------------------------------------------------
    $dllPath = "$env:TEMPphantom_payload.dll"
    # Crea un pequeño DLL ficticio (sustituto de la carga útil real)
    Set-Content -Path $dllPath -Value ([byte[]](0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00)) -Encoding Byte
    
    # --- Ejecución -------------------------------------------------------------
    $aspnetPath = "$env:WINDIRMicrosoft.NETFramework64v4.0.30319Aspnet_compiler.exe"
    if (-Not (Test-Path $aspnetPath)) {
        Write-Error "Aspnet_compiler.exe no encontrado en la ubicación esperada."
        exit 1
    }
    
    $arguments = "-p `"$dllPath`" -c `Invoke-ManagedAssembly`"
    Write-Host "Lanzando Aspnet_compiler.exe con argumentos maliciosos..."
    Start-Process -FilePath $aspnetPath -ArgumentList $arguments -WindowStyle Hidden -PassThru
    
    # --- Persistencia Opcional ----------------------------------------------------
    # Registra una tarea programada que repite la inyección 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 "Simulación completa. Verifica el SIEM para la alerta generada."
  • Comandos de Limpieza: Eliminar el DLL ficticio, la tarea programada, y cualquier proceso restante.

    # Eliminar el DLL ficticio
    Remove-Item -Path "$env:TEMPphantom_payload.dll" -Force -ErrorAction SilentlyContinue
    
    # Desregistrar la tarea programada
    Unregister-ScheduledTask -TaskName "PhantomInject" -Confirm:$false -ErrorAction SilentlyContinue
    
    # Terminar cualquier proceso Aspnet_compiler.exe iniciado por la prueba
    Get-Process -Name "Aspnet_compiler" -ErrorAction SilentlyContinue | Stop-Process -Force