Fantasma nella cassaforte: Obsidian sfruttato per consegnare PhantomPulse RAT
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.
Flusso di Attacco
Rilevamenti
Download o Upload via PowerShell (tramite cmdline)
Visualizza
Stringhe sospette di PowerShell (tramite cmdline)
Visualizza
Uso sospetto di Invoke-RestMethod (tramite PowerShell)
Visualizza
Stringhe sospette di PowerShell (tramite PowerShell)
Visualizza
Attività possibile di Bits Transfer (tramite PowerShell)
Visualizza
Comunicazione sospetta con dominio Trycloudflare (tramite proxy)
Visualizza
Download di file sospetti con IP diretto (tramite proxy)
Visualizza
Comunicazione sospetta con dominio Trycloudflare (tramite dns)
Visualizza
Obsidian sfruttato per esecuzione di codice e persistenza [Creazione processo Windows]
Visualizza
Esecuzione sospetta di PowerShell con Obsidian come processo genitore [PowerShell Windows]
Visualizza
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:
- Compromissione Iniziale: L’attaccante inserisce un plugin malevolo di Obsidian (
evil-plugin.js) nella directory dei plugin di Obsidian dell’utente. - Attivazione Esecuzione: Quando Obsidian si avvia, il plugin esegue un one-liner di PowerShell che lancia
notepad.exeviaStart-Process. Questo crea esattamente la catena di processoObsidian.exe → notepad.exeche la regola monitora. - Persistenza: Il plugin è impostato per caricarsi automaticamente ad ogni avvio di Obsidian, garantendo che il processo figlio malevolo si ripeta.
- 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.
- Compromissione Iniziale: L’attaccante inserisce un plugin malevolo di Obsidian (
-
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."