SOC Prime Bias: Medio

14 Apr 2026 15:43 UTC

Fantasma en la bóveda: Obsidian utilizado para distribuir PhantomPulse RAT

Author Photo
SOC Prime Team linkedin icon Seguir
Fantasma en la bóveda: Obsidian utilizado para distribuir PhantomPulse RAT
shield icon

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

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:

    1. Compromiso Inicial: El atacante coloca un complemento malicioso de Obsidian (evil-plugin.js) en el directorio de complementos de Obsidian del usuario.
    2. Desencadenante de Ejecución: Cuando Obsidian arranca, el complemento ejecuta un comando de PowerShell de una sola línea que lanza notepad.exe via Start-Process. Esto crea exactamente la cadena de proceso Obsidian.exe → notepad.exe que la regla observa.
    3. Persistencia: El complemento está configurado para autoiniciarse en cada inicio de Obsidian, asegurando que el proceso secundario malicioso se repita.
    4. 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.
  • 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."