SOC Prime Bias: Medio

18 Dic 2025 21:42

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 Follow
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.

«graph TB %% Definiciones de clase classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef tool fill:#cccccc classDef process fill:#c2f0c2 classDef malware fill:#f9d5e5 %% Nodos u2013 Acceso Inicial y Ejecución action_user_execution[«<b>Acción</b> – <b>T1204.002 Ejecución de usuario</b>: La víctima ejecuta un falso u201cinstalador de Adobe 11.7.7u201d que parece legítimo.»] class action_user_execution action tech_masquerade[«<b>Técnica</b> – <b>T1036.008 Camuflaje</b>: El archivo del instalador se renombra y enmascara para parecer un instalador de Adobe.»] class tech_masquerade technique tool_powershell[«<b>Herramienta</b> – <b>Nombre</b>: PowerShell<br/><b>Descripción</b>: Usado para descargar y ejecutar un script malicioso con la ventana oculta y omisión de políticas de ejecución.»] class tool_powershell tool %% Nodos u2013 Ofuscación y Decodificación tech_deobfuscate[«<b>Técnica</b> – <b>T1140 Desofuscación y Decodificación de Archivos</b>: La carga útil Base64u2011RC4 se decodifica y descifra antes de la ejecución.»] class tech_deobfuscate technique tech_obfuscate[«<b>Técnica</b> – <b>T1027 Archivos Ofuscados</b>: Los scripts maliciosos están fuertemente ofuscados para evadir el análisis estático.»] class tech_obfuscate technique %% Nodos u2013 Inyección de Procesos y Carga Reflexiva tech_process_injection[«<b>Técnica</b> – <b>T1055 Inyección de Procesos</b>: BLACKHAWK.dll se inyecta en Aspnet_compiler.exe para ejecutar la carga útil.»] class tech_process_injection technique process_aspnet_compiler[«<b>Proceso</b> – <b>Nombre</b>: Aspnet_compiler.exe»] class process_aspnet_compiler process tech_reflective_load[«<b>Técnica</b> – <b>T1620 Carga Reflexiva de Código</b>: El ensamblaje .NET se carga en memoria utilizando System.Reflection.Assembly::Load.»] class tech_reflective_load technique %% Nodos u2013 Evasión de Defensas tech_sandbox_evasion[«<b>Técnica</b> – <b>T1497.002 Evasión de Sandbox de Virtualización</b>: Verifica nombres de usuario y variables de entorno para detectar máquinas de análisis.»] class tech_sandbox_evasion technique %% Nodos u2013 Persistencia tech_active_setup[«<b>Técnica</b> – <b>T1547.014 Persistencia de Configuración Activa</b>: Crea una clave de registro Run mediante Configuración Activa para ejecución automática al iniciar sesión.»] class tech_active_setup technique %% Nodos u2013 Acceso a Credenciales y Recolección tech_keylogging[«<b>Técnica</b> – <b>T1056.001 Keylogging</b>: Captura pulsaciones de teclas del usuario.»] class tech_keylogging technique tech_browser_cred[«<b>Técnica</b> – <b>T1555.003 Acceso a Credenciales del Navegador</b>: Roba claves maestras, contraseñas, cookies y datos de billeteras de navegadores web.»] class tech_browser_cred technique tech_clipboard[«<b>Técnica</b> – <b>T1115 Datos del Portapapeles</b>: Recolecta datos del portapapeles del sistema.»] class tech_clipboard technique tech_screen_capture[«<b>Técnica</b> – <b>T1113 Captura de Pantalla</b>: Toma capturas de pantalla a intervalos de un segundo.»] class tech_screen_capture technique tech_video_capture[«<b>Técnica</b> – <b>T1125 Captura de Video</b>: Graba metraje de video del escritorio del usuario.»] class tech_video_capture technique %% Nodos u2013 Exfiltración tech_smtp_ftp[«<b>Técnica</b> – <b>T1048 Exfiltración a través de Protocolo Alternativo</b>: Envía datos robados a través de correo SMTP y transferencias FTP.»] class tech_smtp_ftp technique tech_telegram_discord[«<b>Técnica</b> – <b>T1567 Exfiltración a través de Servicio Web</b>: Transfiere datos a través de las APIs de Telegram y Discord.»] class tech_telegram_discord technique %% Nodos u2013 Comando y Control tech_web_service[«<b>Técnica</b> – <b>T1102.002 Servicio Web Bidireccional C2</b>: Usa Telegram y Discord como canales de comunicación bidireccional para comando y control.»] class tech_web_service technique %% Conexiones u2013 Flujo del Ataque action_user_execution u002du002d>|conduce a| tech_masquerade tech_masquerade u002du002d>|conduce a| tool_powershell tool_powershell u002du002d>|ejecuta| tech_deobfuscate tech_deobfuscate u002du002d>|soporta| tech_obfuscate tech_obfuscate u002du002d>|permite| tech_process_injection tech_process_injection u002du002d>|apunta a| process_aspnet_compiler process_aspnet_compiler u002du002d>|carga| 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>|recoge| tech_browser_cred tech_browser_cred u002du002d>|añade a| tech_clipboard tech_clipboard u002du002d>|añade a| tech_screen_capture tech_screen_capture u002du002d>|añade 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 vía| tech_web_service tech_telegram_discord u002du002d>|exfiltra vía| tech_web_service %% Estilización 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 «

Flujo de Ataque

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