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