Obsidian Vault 陷阱:分析 PHANTOMPULSE RAT 活動
A 最近的安全分析揭露了一場高度針對性的社交工程活動(REF6598),該活動利用熱門筆記應用程式 Obsidian 來傳遞一種名為 PHANTOMPULSE 的新型遠端存取木馬(RAT)。此攻擊針對金融與加密貨幣領域的專業人士,展示了心理操縱與技術巧思的複雜結合,特別是利用了 Obsidian 處理社群插件與共享儲存庫(vaults)的方式。
這場活動之所以特別值得關注,並非因為 Obsidian 本身存在零日漏洞,而是因為它如何利用使用者對協作工具的信任,以及在生產力應用程式中執行第三方程式碼的內在風險。
攻擊剖析
攻擊鏈是一個多階段的過程,早在受害者機器上的任何程式碼執行之前就已經開始。威脅行為者採用高接觸的社交工程方法,在 LinkedIn 與 Telegram 上偽裝成風險投資家,以與目標建立關係。
1. 初始存取與誘餌
一旦建立信任,攻擊者會邀請受害者透過一個共享的、雲端託管的 Obsidian vault 進行協作。由於 Obsidian vaults 本質上是 Markdown 檔案與設定檔的資料夾,因此它們很容易分享,且對一般使用者而言看起來很無害。
2. 執行觸發器
當受害者開啟共享的 vault 時,入侵發生了。攻擊者依賴使用者啟用「Installed community plugins」同步功能。雖然 Obsidian 會針對此操作提供安全警告,但攻擊者會透過社交工程說服使用者忽略這些警告。
透過啟用此功能,受害者會啟動預先封裝在共享 vault 中的合法插件之惡意版本——特別是 'Shell Commands' 與 'Hider'。這些插件將作為實際惡意軟體的入口。
3. 載荷部署:PHANTOMPULL 與 PHANTOMPULSE
惡意插件會執行腳本(Windows 上的 PowerShell,macOS 上的 AppleScript)來投放一個名為 PHANTOMPULL 的載入器。該載入器接著會解密並將最終載荷——PHANTOMPULSE RAT——直接載入至記憶體中。透過避免將最終載荷寫入磁碟,攻擊者有效地規避了許多傳統基於檔案的防毒軟體偵測。
技術創新:基於區塊鏈的 C2
PHANTOMPULSE 最為複雜的面向之一是其指令與控制(C2)機制。它並非連接到容易被標記與封鎖的靜態 IP 地址或網域,而是查詢 Ethereum 區塊鏈。
它會尋找來自一個寫死的錢包地址的最新交易;C2 伺服器的當前 IP 地址就嵌入在交易數據中。這種去中心化的方法使基礎設施對於接管行動極具韌性,因為攻擊者只需透過在區塊鏈上發送一筆新交易,即可更新其 C2 伺服器地址。
社群反應與「插件問題」
此次活動的揭露引發了 Obsidian 社群與安全研究人員針對插件系統架構的重大辯論。
社交工程 vs. 系統設計
有些人認為,因為攻擊需要使用者手動繞過多個安全警告,這純粹是社交工程的失敗。正如一位社群成員所言:
"Obsidian 有適當的保護措施來防止此類攻擊,而受害者是被說服去忽略它們。這僅僅是一次成功的社交工程事件。"
然而,其他人則主張,允許共享 vault 執行程式碼的機制本身就是一個根本性的設計缺陷。批評者的共識是,該平台的當前設計使其作為分享工具時具有內在的不安全性。
沙箱機制辯論
攻擊發生後的技術討論集中在缺乏沙箱(sandboxing)機制。批評者認為,在與應用程式相同的空間中執行插件程式碼是一種系統性風險。改進建議包括:
- 基於解釋器的執行: 在受限環境(如 Lua 或 Rhai)中執行插件,而非使用原始 JavaScript。
- 細粒度權限: 實施權限系統,讓插件在執行時必須明確請求對網路或檔案系統的存取權限。
- 外部隔離: 一些進階使用者已經採用此方法,透過以受限功能執行 Obsidian,拒絕其目錄以外的網路與檔案系統存取權限。
緩解與防禦
對於使用 Obsidian 的使用者與組織,建議採取以下步驟以降低類似攻擊的風險:
給使用者
審查所有插件: 僅從官方市場安裝插件,並避免啟用由不可信來源提供的共享 vault 中提供的插件。
避免在共享 Vaults 中同步插件: 開啟由他人分享的 vault 時,切勿啟用社群插件的同步功能。
最小權限原則: 以標準使用者而非管理員身份執行應用程式,以限制入侵後的潛在影響範圍。
給安全團隊
- 流程監控: 實施 EDR 規則,當
Obsidian.exe產生 command-line 解釋器(如powershell.exe、cmd.exe、bash或osascript)時發出警報。 - 網路分析: 監控非區塊鏈應用程式對 Ethereum 區塊鏈節點或閘道器的異常出站連接。
- 檔案完整性: 監控
.obsidian/plugins/目錄對於未經授權的修改,特別是發生在官方更新週期之外的修改。