SOC Prime Bias: Medio

14 Apr 2026 18:43

Fantasma nella cassaforte: Obsidian sfruttato per consegnare PhantomPulse RAT

Author Photo
SOC Prime Team linkedin icon Segui
Fantasma nella cassaforte: Obsidian sfruttato per consegnare PhantomPulse RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Elastic Security Labs ha scoperto una nuova campagna di ingegneria sociale che sfrutta la piattaforma di gestione delle note Obsidian e il suo ecosistema di plugin della comunità per distribuire PhantomPulse, un RAT precedentemente non documentato che prende di mira sia i sistemi Windows che macOS. L’operazione sembra mirare a individui nel settore finanziario e delle criptovalute, con gli attaccanti che utilizzano LinkedIn e Telegram per distribuire un vault Obsidian compromesso come esca iniziale. Su Windows, la catena di infezione si basa su PowerShell, un loader personalizzato in memoria noto come PhantomPull, e tecniche di caricamento riflessivo. Su macOS, gli attaccanti utilizzano AppleScript insieme a un meccanismo di comando e controllo tramite dead-drop su Telegram. La campagna incorpora inoltre la scoperta C2 basata su blockchain attraverso i dati delle transazioni su Ethereum.

Indagine

I ricercatori hanno riprodotto l’attacco costruendo un vault Obsidian armato che utilizzava i plugin Shell Commands e Hider per attivare l’esecuzione malevola. Durante l’analisi, hanno osservato script PowerShell scaricare un loader chiamato syncobs.exe da 195.3.222.251, che quindi recuperava un payload criptato e lo caricava in memoria riflessivamente. Il loader creava un mutex, comunicava con un pannello di controllo ospitato su panel.fefea22134.net, e supportava infrastrutture di fallback derivate dai dati blockchain. Su macOS, il malware stabiliva la persistenza attraverso un plist LaunchAgent e scaricava un payload AppleScript secondario da un dominio hard-coded e da un canale Telegram. Gli investigatori hanno recuperato artefatti chiave da file di configurazione JSON e risorse in memoria legate a entrambi i percorsi di infezione.

Mitigazione

Le organizzazioni dovrebbero impedire a Obsidian di generare processi figli non autorizzati, applicare controlli rigorosi sull’uso dei plugin della comunità e monitorare l’attività di PowerShell quando Obsidian appare come processo genitore. Le difese di rete dovrebbero bloccare il traffico in uscita verso 195.3.222.251 e i domini panel.fefea22134.net, 0x666.info, e le posizioni note di dead-drop su Telegram associate alla campagna. I team di sicurezza dovrebbero anche cercare segni di caricamento riflessivo, abuso di callback della coda dei timer e il valore specifico del mutex utilizzato dal malware loader.

Risposta

Se vengono rilevati processi figli sospetti da Obsidian, isolare immediatamente l’host interessato e raccogliere la directory .obsidian per una revisione forense dei file plugin malevoli e del contenuto del vault. Cercare il mutex hVNBUORXNiFLhYYh, quindi eseguire la scansione degli endpoint per tracce dei binari loader PHANTOMPULL e RAT PHANTOMPULSE. Bloccare l’infrastruttura di comando e controllo identificata, revocare eventuali credenziali compromesse relative a Obsidian e eseguire una revisione più ampia per l’esposizione al furto di credenziali coinvolgendo conti finanziari e di criptovalute.

graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Technique nodes tech_valid_accounts[“<b>Tecnica</b> – <b>T1078 Account validi</b><br/><b>Descrizione</b>: Gli attori usano credenziali compromesse per accesso account.<br/><b>Dettagli</b>: credenziali Obsidian fornite alla vittima”] class tech_valid_accounts technique tech_user_execution[“<b>Tecnica</b> – <b>T1204 Esecuzione utente</b><br/><b>Descrizione</b>: L’utente viene indotto a eseguire codice malevolo.<br/><b>Dettagli</b>: apertura vault condiviso e sync plugin”] class tech_user_execution technique tech_powershell_initial[“<b>Tecnica</b> – <b>T1059.001 PowerShell</b><br/><b>Descrizione</b>: PowerShell esegue comandi/script.<br/><b>Dettagli</b>: download script1.ps1 in Base64”] class tech_powershell_initial technique tech_bits_transfer[“<b>Tecnica</b> – <b>T1105 Trasferimento strumenti</b><br/><b>Descrizione</b>: trasferimento payload su host compromesso.<br/><b>Dettagli</b>: download syncobs.exe”] class tech_bits_transfer technique tech_reflective_loading[“<b>Tecnica</b> – <b>T1620 Caricamento riflessivo</b><br/><b>Descrizione</b>: codice caricato in memoria senza disco.<br/><b>Dettagli</b>: payload AES-256-CBC decriptato in memoria”] class tech_reflective_loading technique tech_process_injection[“<b>Tecnica</b> – <b>T1055.002 Iniezione PE</b><br/><b>Descrizione</b>: iniezione codice in processo attivo.<br/><b>Dettagli</b>: module stomping”] class tech_process_injection technique tech_dynamic_resolution[“<b>Tecnica</b> – <b>T1568 Risoluzione dinamica</b><br/><b>Descrizione</b>: risoluzione C2 runtime via blockchain.<br/><b>Dettagli</b>: transazione blockchain”] class tech_dynamic_resolution technique tech_powershell_c2[“<b>Tecnica</b> – <b>T1059.001 PowerShell</b><br/><b>Descrizione</b>: comunicazione e beacon C2”] class tech_powershell_c2 technique tech_applescript[“<b>Tecnica</b> – <b>T1059.007 AppleScript</b><br/><b>Descrizione</b>: esecuzione malware su macOS<br/><b>Dettagli</b>: eseguito via osascript”] class tech_applescript technique tech_launch_agent[“<b>Tecnica</b> – <b>T1543.001 Launch Agent</b><br/><b>Descrizione</b>: persistenza tramite LaunchAgent<br/><b>Dettagli</b>: plist installato”] class tech_launch_agent technique tech_dead_drop_resolver[“<b>Tecnica</b> – <b>T1102.001 Dead Drop Resolver</b><br/><b>Descrizione</b>: C2 tramite servizio web<br/><b>Dettagli</b>: Telegram fallback”] class tech_dead_drop_resolver technique %% Tool / Malware nodes tool_syncobs_exe[“<b>Strumento</b> – <b>Nome</b>: syncobs.exe<br/><b>Descrizione</b>: binario seconda fase”] class tool_syncobs_exe tool malware_phantompull[“<b>Malware</b> – <b>Nome</b>: PHANTOMPULL<br/><b>Descrizione</b>: loader che esegue payload AES-256-CBC”] class malware_phantompull malware %% Flow connections tech_valid_accounts –>|leads_to| tech_user_execution tech_user_execution –>|leads_to| tech_powershell_initial tech_powershell_initial –>|executes| tech_bits_transfer tech_bits_transfer –>|downloads| tool_syncobs_exe tool_syncobs_exe –>|enables| tech_reflective_loading tech_reflective_loading –>|loads| malware_phantompull malware_phantompull –>|facilitates| tech_process_injection tech_process_injection –>|injects| tool_syncobs_exe tech_process_injection –>|enables| tech_dynamic_resolution tech_dynamic_resolution –>|resolves| tech_powershell_c2 tech_dynamic_resolution –>|resolves| tech_applescript tech_powershell_c2 –>|beacons| tech_dead_drop_resolver tech_applescript –>|creates| tech_launch_agent tech_launch_agent –>|persists| tech_dead_drop_resolver

Flusso di Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo Prevolo di Telemetria e Baseline deve essere passato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.

  • Narrazione & Comandi dell’Attacco:

    1. Compromissione Iniziale: L’attaccante inserisce un plugin malevolo di Obsidian (evil-plugin.js) nella directory dei plugin di Obsidian dell’utente.
    2. Attivazione Esecuzione: Quando Obsidian si avvia, il plugin esegue un one-liner di PowerShell che lancia notepad.exe via Start-Process. Questo crea esattamente la catena di processo Obsidian.exe → notepad.exe che la regola monitora.
    3. Persistenza: Il plugin è impostato per caricarsi automaticamente ad ogni avvio di Obsidian, garantendo che il processo figlio malevolo si ripeta.
    4. Evasione: Il plugin invoca brevemente anche rundll32.exe (T1216.002) per caricare una DLL benigna, mascherando il vero intento mentre mantiene intatta la catena che innesca il rilevamento.
  • Script di Test di Regressione:

    # -------------------------------------------------
    # Simulazione plugin malevolo Obsidian (PowerShell)
    # -------------------------------------------------
    # 1. Assicurarsi che Obsidian sia installato nella posizione prevista
    $obsidianPath = "C:Program FilesObsidianObsidian.exe"
    if (-Not (Test-Path $obsidianPath)) {
        Write-Error "Obsidian not found at $obsidianPath"
        exit 1
    }
    
    # 2. Avviare Obsidian *come genitore* e immediatamente avviare 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. Opzionale: invocare un binario firmato (rundll32) per simulare T1216.002
    Start-Process -FilePath "C:WindowsSystem32rundll32.exe" -ArgumentList "shell32.dll,Control_RunDLL" -WindowStyle Hidden
    
    # 4. Mantenere lo script attivo brevemente per permettere la generazione di log
    Start-Sleep -Seconds 5
    # -------------------------------------------------
  • Comandi di Pulizia:

    # Terminare eventuali istanze di Obsidian o Notepad lasciate dal test 
    Get-Process -Name "Obsidian","notepad","rundll32" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Rimuovere il file del plugin malevolo simulato (se esisteva)
    $pluginPath = "$env:APPDATAObsidianpluginsevil-plugin.js"
    if (Test-Path $pluginPath) { Remove-Item $pluginPath -Force }
    
    Write-Host "Pulizia completata."