Fantasma en la bóveda: Obsidian utilizado para distribuir PhantomPulse RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Los Elastic Security Labs descubrieron una nueva campaña de ingeniería social que abusa de la plataforma de toma de notas Obsidian y su ecosistema de complementos comunitarios para entregar PhantomPulse, un RAT previamente no documentado que apunta tanto a sistemas Windows como macOS. La operación parece estar dirigida a individuos en el espacio financiero y de criptomonedas, con atacantes utilizando LinkedIn y Telegram para distribuir un almacén de Obsidian comprometido como el cebo inicial. En Windows, la cadena de infección se basa en PowerShell, un cargador en memoria personalizado conocido como PhantomPull y técnicas de carga reflexivas. En macOS, los atacantes usan AppleScript junto con un mecanismo de mando y control de punto muerto basado en Telegram. La campaña también incorpora descubrimiento de C2 basado en blockchain a través de datos de transacciones de Ethereum.
Investigación
Los investigadores reprodujeron el ataque construyendo un almacén de Obsidian armado que utilizaba los complementos Shell Commands y Hider para desencadenar la ejecución maliciosa. Durante el análisis, observaron scripts de PowerShell descargando un cargador llamado syncobs.exe de 195.3.222.251, que luego recuperó una carga útil cifrada y la cargó de manera reflexiva en la memoria. El cargador creó un mutex, se comunicó con un panel de control alojado en panel.fefea22134.net, y soportó infraestructura de respaldo derivada de datos de blockchain. En macOS, el malware estableció persistencia a través de un plist de LaunchAgent y descargó una carga útil secundaria de AppleScript desde un dominio codificado y un canal de Telegram. Los investigadores recuperaron artefactos clave de archivos de configuración JSON y recursos en memoria vinculados a ambas rutas de infección.
Mitigación
Las organizaciones deben evitar que Obsidian genere procesos secundarios no autorizados, aplicar controles estrictos sobre el uso de complementos comunitarios y monitorear la actividad de PowerShell donde Obsidian aparece como el proceso principal. Las defensas de red deben bloquear el tráfico saliente a 195.3.222.251 y los dominios panel.fefea22134.net, 0x666.info, y ubicaciones de punto muerto de Telegram conocidas asociadas con la campaña. Los equipos de seguridad también deben buscar signos de carga reflexiva, abuso de tiempo de llamada en cola y el valor específico del mutex utilizado por el cargador de malware.
Respuesta
Si se detectan procesos secundarios sospechosos desde Obsidian, aísle el anfitrión afectado de inmediato y recolecte el directorio .obsidian para una revisión forense de los archivos de complementos maliciosos y el contenido del almacén. Busque el mutex hVNBUORXNiFLhYYh, luego escanee los extremos en busca de rastros del cargador PHANTOMPULL y binarios del RAT PHANTOMPULSE. Bloquee la infraestructura de mando y control identificada, revoque cualquier credencial comprometedora relacionada con Obsidian y realice una revisión más amplia por exposición de robo de credenciales relacionada con cuentas financieras y de criptomonedas.
Flujo de Ataque
Detecciones
Descarga o Carga a través de Powershell (a través de línea de comandos)
Ver
Cadenas de Powershell Sospechosas (a través de línea de comandos)
Ver
Uso Sospechoso de Invoke-RestMethod (a través de powershell)
Ver
Cadenas de Powershell Sospechosas (a través de powershell)
Ver
Posible Actividad de Transferencia de Bits (a través de powershell)
Ver
Comunicación de Dominio Trycloudflare Sospechosa (a través de proxy)
Ver
Descarga de Archivo Sospechosa Detección IP Directa (a través de proxy)
Ver
Comunicación de Dominio Trycloudflare Sospechosa (a través de dns)
Ver
Obsidian Abusado para Ejecución de Código y Persistencia [Creación de Procesos en Windows]
Ver
Ejecución de PowerShell Sospechosa con Obsidian como Proceso Principal [Powershell de Windows]
Ver
Ejecución de Simulación
Requisito Previo: La Verificación de Telemetría y Línea Base Previa debe haber pasado.
Justificación: 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 TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un diagnóstico erróneo.
-
Narrativa del Ataque y Comandos:
- Compromiso Inicial: El atacante coloca un complemento malicioso de Obsidian (
evil-plugin.js) en el directorio de complementos de Obsidian del usuario. - Desencadenante de Ejecución: Cuando Obsidian arranca, el complemento ejecuta un comando de PowerShell de una sola línea que lanza
notepad.exeviaStart-Process. Esto crea exactamente la cadena de procesoObsidian.exe → notepad.exeque la regla observa. - Persistencia: El complemento está configurado para autoiniciarse en cada inicio de Obsidian, asegurando que el proceso secundario malicioso se repita.
- Evasión: El complemento también invoca brevemente
rundll32.exe(T1216.002) para cargar una DLL benigna, enmascarando la verdadera intención mientras mantiene intacta la cadena que activa la detección.
- Compromiso Inicial: El atacante coloca un complemento malicioso de Obsidian (
-
Script de Prueba de Regresión:
# ------------------------------------------------- # Simulación de complemento malicioso de Obsidian (PowerShell) # ------------------------------------------------- # 1. Asegúrese que Obsidian esté instalado en la ruta esperada $obsidianPath = "C:Program FilesObsidianObsidian.exe" if (-Not (Test-Path $obsidianPath)) { Write-Error "Obsidian no encontrado en $obsidianPath" exit 1 } # 2. Inicie Obsidian *como el padre* e inmediatamente inicie Notepad $startInfo = New-Object System.Diagnostics.ProcessStartInfo $startInfo.FileName = $obsidianPath $startInfo.Arguments = "-c `"Start-Process notepad.exe`"" $startInfo.UseShellExecute = $false $startInfo.CreateNoWindow = $true $proc = [System.Diagnostics.Process]::Start($startInfo) # 3. Opcional: invocar un binario firmado (rundll32) para simular T1216.002 Start-Process -FilePath "C:WindowsSystem32rundll32.exe" -ArgumentList "shell32.dll,Control_RunDLL" -WindowStyle Hidden # 4. Mantenga el script activo brevemente para permitir que se emitan registros Start-Sleep -Seconds 5 # ------------------------------------------------- -
Comandos de Limpieza:
# Termine cualquier instancia restante de Obsidian o Notepad creada por la prueba Get-Process -Name "Obsidian","notepad","rundll32" -ErrorAction SilentlyContinue | Stop-Process -Force # Retire el archivo de complemento malicioso simulado (si existió) $pluginPath = "$env:APPDATAObsidianpluginsevil-plugin.js" if (Test-Path $pluginPath) { Remove-Item $pluginPath -Force } Write-Host "Limpieza completa."