Phantom 3.5 – malware para robo de credenciales entregado a través de un instalador falso de Adobe
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
Detecciones
Cadenas de Powershell Sospechosas (via powershell)
Ver
Uso Posible de Timeout para Ejecutar Demorado (via cmdline)
Ver
Ejecución de Cambio de Página de Código Inusual (via cmdline)
Ver
Posibles Puntos de Persistencia [ASEPs – Software/NTUSER Hive] (via registry_event)
Ver
IOCs (HashMd5) para detectar: Phantom 3.5: Análisis de Vector Inicial y Forense
Ver
Inyección de Proceso Phantom 3.5 a través de Aspnet_compiler.exe [Creación de Procesos en Windows]
Ver
Ejecución de Script de PowerShell con Atributo Oculto y Cadenas Codificadas en Base64 [Powershell de Windows]
Ver
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. AprovechanAspnet_compiler.exe, un binario confiable de Windows, para cargar el ensamblado malicioso gestionado a través del argumentoInvoke-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.-
Preparar el ensamblado gestionado malicioso (
phantom_payload.dll) en el host objetivo. -
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 -
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