近期安全研究揭露了一組針對法律事務所的精密攻擊,其核心使用了名為 HollowFrame 的載入器(Loader)以及名為 Matryoshka 的後門程式(Backdoor)。這起攻擊最值得工程師關注的不是單一工具,而是它如何透過多階段的鏈接來規避偵測,將惡意行為拆分在不同的組件中,讓單一階段的分析無法還原完整的攻擊意圖。
攻擊的起點是典型的社交工程,攻擊者發送魚叉式網路釣魚郵件,誘導使用者下載加密壓縮檔。檔案中包含一個偽裝成案件文件的 LNK 快捷方式。當使用者點擊時,會觸發 PowerShell 腳本從遠端伺服器下載後續組件。這種設計是為了降低初始進入點的可疑度,避免直接在郵件中傳送執行檔而被防毒軟體攔截。
在載入階段,攻擊者使用了 DLL Side-Loading 技術。這是一種利用合法程式載入 DLL 檔案之優先順序漏洞的手法。具體作法是將一個合法的 Python 執行檔(python.exe)與一個惡意的 DLL 檔(python311.dll)放在同一個目錄下。當 python.exe 啟動時,它會優先載入同目錄下的惡意 DLL,從而讓惡意程式在合法程序的掩護下執行。
此次使用的 HollowFrame 載入器是以 Go 語言編寫的模組化框架。它在執行前會進行反分析檢查(Anti-Analysis),透過偵測系統運行時間、記憶體大小、使用者設定檔中的檔案數量以及滑鼠游標移動情況,來判斷自己是否處於沙箱(Sandbox)或虛擬機分析環境中。如果發現環境可疑,它將不會執行後續動作,以躲避安全研究員的自動化分析。
一旦確認環境安全,HollowFrame 會透過設定排程工作(Scheduled Task)來實現持久化,確保電腦重啟後依然能運行。隨後,它會解密內建的容器,啟動第二次 DLL Side-Loading 鏈,部署最終的後門程式 Matryoshka。
Matryoshka 是一個以 Rust 語言開發的後門。選擇 Rust 語言通常是為了獲得高效能以及較強的記憶體安全性,且其編譯後的二進位檔特徵與常見的 C++ 或 C# 不同,能增加逆向工程的難度。這款後門分為兩種變體:一種使用標準的 HTTP 協議與指令控制伺服器(C2)通訊;另一種則採取了更隱蔽的策略,將 GitHub 作為 C2 平台。
將 GitHub 用作 C2 伺服器是一個非常聰明的做法。攻擊者在私有儲存庫中為每個受害者建立獨立的目錄(格式為電腦名_使用者名),並在其中放置 JSON 檔案來傳遞指令(cmd.json)與接收結果(result.json)。對企業防火牆而言,對 GitHub API 的請求通常被視為正常的開發行為,因此極難被偵測。此外,GitHub 內建的版本控制功能讓攻擊者能輕鬆追蹤指令執行紀錄,而無需維護昂貴且易被封鎖的自定義 C2 伺服器。
總結這次攻擊的技術脈絡,攻擊者採取了分層設計:LNK 觸發 PowerShell,PowerShell 載入 HollowFrame,HollowFrame 再部署 Matryoshka。每一層都只承擔部分功能,將惡意行為碎片化。這種設計導致防禦端如果只偵測到其中一個環節,很難推斷出完整的攻擊路徑。對於開發者與維運工程師來說,這提醒我們不能僅依賴單點的特徵碼偵測,而應關注異常的程序行為(如合法程序載入未知 DLL)以及異常的外部網路連線(如非開發人員設備頻繁請求 GitHub API)。
來源:thehackernews.com
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。