Phantom im Tresor: Obsidian für die Verbreitung von PhantomPulse RAT missbraucht
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Elastic Security Labs hat eine neue Social-Engineering-Kampagne aufgedeckt, die die Obsidian-Notizplattform und ihr Community-Plugin-Ökosystem missbraucht, um PhantomPulse auszuliefern, einen bisher undokumentierten RAT, der sowohl Windows- als auch macOS-Systeme ins Visier nimmt. Der Angriff scheint auf Personen im Finanz- und Kryptowährungsbereich abzuzielen, wobei Angreifer LinkedIn und Telegram nutzen, um einen kompromittierten Obsidian-Tresor als erste Köder anzubieten. Unter Windows setzt die Infektionskette auf PowerShell, einen benutzerdefinierten In-Memory-Loader namens PhantomPull und reflektive Ladevorgänge. Auf macOS verwenden die Angreifer AppleScript zusammen mit einem Telegram-basierten Dead-Drop-Kommandosteuerungsmechanismus. Die Kampagne beinhaltet zudem die blockchain-basierte C2-Erkennung über Ethereum-Transaktionsdaten.
Untersuchung
Forscher reproduzierten den Angriff, indem sie einen bewaffneten Obsidian-Tresor erstellten, der die Shell Commands und Hider Plugins nutzte, um bösartige Ausführungen auszulösen. Während der Analyse beobachteten sie PowerShell-Skripte, die einen Loader mit dem Namen syncobs.exe von 195.3.222.251 herunterluden, der dann eine verschlüsselte Nutzlast abrief und sie reflektiv im Speicher lud. Der Loader erstellte einen Mutex, kommunizierte mit einem Kontrollpanel, das auf panel.fefea22134.net gehostet wurde, und unterstützte Ausweichinfrastrukturen, die aus Blockchaindaten abgeleitet wurden. Auf macOS stellte die Malware die Persistenz mittels eines LaunchAgent-Plists her und lud eine sekundäre AppleScript-Nutzlast von einer hartcodierten Domain und einem Telegram-Kanal herunter. Ermittler bergen wichtige Artefakte aus JSON-Konfigurationsdateien und In-Memory-Ressourcen, die mit beiden Infektionspfaden verbunden sind.
Minderung
Organisationen sollten verhindern, dass Obsidian unautorisierte Kindprozesse erzeugt, strenge Kontrollen über die Nutzung von Community-Plugins anwenden und auf PowerShell-Aktivitäten überwachen, bei denen Obsidian als übergeordneter Prozess erscheint. Netzwerkverteidigungen sollten ausgehenden Datenverkehr zu 195.3.222.251 und den Domains panel.fefea22134.net, 0x666.info, und bekannten Telegram-Dead-Drop-Standorten blockieren, die mit der Kampagne in Verbindung stehen. Sicherheitsteams sollten auch nach Anzeichen für reflektives Laden, Missbrauch von Timer-Queue-Callbacks und dem spezifischen Mutex-Wert suchen, der vom Malware-Loader verwendet wird.
Antwort
Wenn verdächtige Kindprozesse von Obsidian erkannt werden, sollte der infizierte Host sofort isoliert und das .obsidian -Verzeichnis für die forensische Untersuchung bösartiger Plugin-Dateien und Tresorinhalte gesammelt werden. Suchen Sie nach dem Mutex hVNBUORXNiFLhYYh, scannen Sie dann Endpunkte nach Spuren des PHANTOMPULL-Loaders und PHANTOMPULSE-RAT-Binärdateien. Sperren Sie die identifizierte Kommando- und Kontrollinfrastruktur, widerrufen Sie alle kompromittierten Obsidian-bezogenen Anmeldeinformationen und führen Sie eine umfassendere Überprüfung auf Anmeldeinformationsdiebstahl aus, die Finanz- und Kryptowährungskonten betrifft.
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>Technik</b> – <b>T1078 Gültige Konten</b><br/><b>Beschreibung</b>: Angreifer verwenden kompromittierte Anmeldedaten für den Zugriff auf Benutzerkonten.<br/><b>Details</b>: Obsidian-Zugangsdaten an Opfer übergeben“] class tech_valid_accounts technique tech_user_execution[„<b>Technik</b> – <b>T1204 Benutzer-Ausführung</b><br/><b>Beschreibung</b>: Benutzer werden zur Ausführung von Schadcode verleitet.<br/><b>Details</b>: Opfer öffnet gemeinsam genutzten Vault und aktiviert Plugin-Sync“] class tech_user_execution technique tech_powershell_initial[„<b>Technik</b> – <b>T1059.001 PowerShell</b><br/><b>Beschreibung</b>: PowerShell wird zur Ausführung von Befehlen genutzt.<br/><b>Details</b>: Base64-codierter PowerShell-Befehl lädt script1.ps1“] class tech_powershell_initial technique tech_bits_transfer[„<b>Technik</b> – <b>T1105 Tool-Transfer</b><br/><b>Beschreibung</b>: Übertragung von Tools oder Payloads auf kompromittierte Hosts.<br/><b>Details</b>: BitsTransfer lädt syncobs.exe (Second-Stage-Binary)“] class tech_bits_transfer technique tech_reflective_loading[„<b>Technik</b> – <b>T1620 Reflective Code Loading</b><br/><b>Beschreibung</b>: Code wird direkt im Speicher geladen.<br/><b>Details</b>: PHANTOMPULL entschlüsselt AES-256-CBC Payload im Speicher“] class tech_reflective_loading technique tech_process_injection[„<b>Technik</b> – <b>T1055.002 PE-Injektion</b><br/><b>Beschreibung</b>: Schadcode-Injektion in laufende Prozesse.<br/><b>Details</b>: Reflective Module Stomping“] class tech_process_injection technique tech_dynamic_resolution[„<b>Technik</b> – <b>T1568 Dynamische Auflösung</b><br/><b>Beschreibung</b>: C2-Adressen werden zur Laufzeit aufgelöst.<br/><b>Details</b>: Blockchain-Transaktion löst C2-URL auf“] class tech_dynamic_resolution technique tech_powershell_c2[„<b>Technik</b> – <b>T1059.001 PowerShell</b><br/><b>Beschreibung</b>: PowerShell für C2-Beaconing und Befehle“] class tech_powershell_c2 technique tech_applescript[„<b>Technik</b> – <b>T1059.007 AppleScript</b><br/><b>Beschreibung</b>: Ausführung von Schadcode auf macOS.<br/><b>Details</b>: Dropper via osascript“] class tech_applescript technique tech_launch_agent[„<b>Technik</b> – <b>T1543.001 Launch Agent</b><br/><b>Beschreibung</b>: Persistenz über LaunchAgent.<br/><b>Details</b>: plist installiert“] class tech_launch_agent technique tech_dead_drop_resolver[„<b>Technik</b> – <b>T1102.001 Dead Drop Resolver</b><br/><b>Beschreibung</b>: Webdienst als C2-Resolver.<br/><b>Details</b>: Telegram als alternativer C2“] class tech_dead_drop_resolver technique %% Tool / Malware nodes tool_syncobs_exe[„<b>Tool</b> – <b>Name</b>: syncobs.exe<br/><b>Beschreibung</b>: Second-Stage-Binary“] class tool_syncobs_exe tool malware_phantompull[„<b>Malware</b> – <b>Name</b>: PHANTOMPULL<br/><b>Beschreibung</b>: Reflective Loader für AES-256-CBC Payload“] 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
Angriffsablauf
Erkennungen
Herunterladen oder Hochladen über Powershell (über cmdline)
Ansicht
Verdächtige Powershell-Strings (via cmdline)
Ansicht
Verdächtige Nutzung von Invoke-RestMethod (via powershell)
Ansicht
Verdächtige Powershell-Strings (via powershell)
Ansicht
Mögliche Bits-Transfer-Aktivität (via powershell)
Ansicht
Verdächtige Trycloudflare-Domain-Kommunikation (via proxy)
Ansicht
Verdächtiger Dateidownload Direct IP (via proxy)
Ansicht
Verdächtige Trycloudflare-Domain-Kommunikation (via dns)
Ansicht
Obsidian wird für Codeausführung und Persistenz missbraucht [Windows Prozess Erstellung]
Ansicht
Verdächtige PowerShell-Ausführung mit Obsidian als übergeordnetem Prozess [Windows Powershell]
Ansicht
Simulationsausführung
Voraussetzung: Die Telemetriekontrolle & Basislinien-Pre-Flight-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifertechnik (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennung erwartet wird. Abstrakte oder nicht zusammenhängende Beispiele führen zu Fehldiagnosen.
-
Angriffs-Narrativ & Befehle:
- Erste Kompromittierung: Der Angreifer platziert ein bösartiges Obsidian-Plugin (
evil-plugin.js) in das Obsidian-Pluginverzeichnis des Benutzers. - Auslösung der Ausführung: Wenn Obsidian gestartet wird, führt das Plugin ein PowerShell-One-Liner aus, der
notepad.exeviaStart-Process. Dies erzeugt die genaueObsidian.exe → notepad.exe-Prozesskette, die die Regel überwacht. - Persistenz: Das Plugin ist so eingestellt, dass es bei jedem Start von Obsidian automatisch geladen wird, sodass der bösartige Kindprozess wiederholt wird.
- Ausweichmanöver: Das Plugin ruft auch kurz
rundll32.exe(T1216.002) auf, um eine harmlose DLL zu laden, und maskiert so die wahre Absicht, während die detektionsauslösende Kette intakt bleibt.
- Erste Kompromittierung: Der Angreifer platziert ein bösartiges Obsidian-Plugin (
-
Regressionstest-Skript:
# ------------------------------------------------- # Simulation bösartiges Obsidian-Plugin (PowerShell) # ------------------------------------------------- # 1. Stellen Sie sicher, dass Obsidian unter dem erwarteten Pfad installiert ist $obsidianPath = "C:Program FilesObsidianObsidian.exe" if (-Not (Test-Path $obsidianPath)) { Write-Error "Obsidian nicht gefunden unter $obsidianPath" exit 1 } # 2. Starten Sie Obsidian *als Elternprozess* und starten Sie sofort 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. Optional: rufen Sie eine signierte Binärdatei (rundll32) auf, um T1216.002 zu simulieren Start-Process -FilePath "C:WindowsSystem32rundll32.exe" -ArgumentList "shell32.dll,Control_RunDLL" -WindowStyle Hidden # 4. Halten Sie das Skript kurz am Leben, damit Logs erstellt werden können Start-Sleep -Seconds 5 # ------------------------------------------------- -
Bereinigungs-Befehle:
# Beenden Sie alle streunenden Obsidian- oder Notepad-Instanzen, die durch den Test erstellt wurden Get-Process -Name "Obsidian","notepad","rundll32" -ErrorAction SilentlyContinue | Stop-Process -Force # Entfernen Sie die simulierte bösartige Plugin-Datei (falls vorhanden) $pluginPath = "$env:APPDATAObsidianpluginsevil-plugin.js" if (Test-Path $pluginPath) { Remove-Item $pluginPath -Force } Write-Host "Bereinigung abgeschlossen."