黑客並未在受感染伺服器放置傳統惡意檔案,而是借助 Oracle 內建的 Java 虛擬機器(JVM),透過 CREATE JAVA SOURCE 語句將整套滲透後工具包編譯成 Java Schema 物件,直接儲存在數據庫內部。如此一來,工具包對傳統系統級防護完全隱形——EDR 與防毒軟件針對的是作業系統進程、二進制檔案及文件,一般不會檢查 Oracle 內部的 Java 類別及 PL/SQL 包裝程序。
khunt 工具包包含以下組件,全部以數據庫物件形式存在:
| 組件 | 功能 |
|---|---|
| KhuntCmd | 載入 cmd.exe,透過嵌入 SQL 語句的資料庫查詢執行任意作業系統指令 |
| KhuntHash | 從 Oracle 內部用戶表提取用戶名及密碼哈希,並儲存到檔案 |
| KhuntFS / KhuntFS2 | 檔案瀏覽器,可列出、讀取、搜尋及檢查受入侵系統上的檔案大小 |
| KhuntT | 簡單「ping」工具,用於確認工具包已安裝並可連接 |
| KhuntUnzip | 解壓縮檔案工具 |
| khunt_ PL/SQL 包裝程序* | 調用底層 Java 方法的 PL/SQL 包裝程序 |
黑客不滿足於數據庫層面的存取,透過 khunt 工具包逐步跳至 Windows 作業系統:
cmd.exe /c whoami,確認他們正以 SYSTEM 權限執行,從數據庫直接實現了向作業系統的遠端程式碼執行(RCE)。reg.exe 複製 SECURITY 與 SYSTEM 登錄區,另存為 khuntSECURITY.hiv 及 khuntSYSTEM.hiv 至 F:\Oracle\。tasklist /svc,將輸出儲存為 khunttasks.txt。esentutl.exe 複製 SAM 及另一份 SECURITY 登錄區,另存為 khuntSAM.hiv 及 khunt_SECURITY.hiv。被竊取的登錄區可離線用於提取及解碼系統上所有本機帳戶的密碼哈希值。
Huntress 調查揭露多個令攻擊得手的關鍵盲點:
Huntress 根據是次攻擊提出以下建議:
這次攻擊是一記警號:當數據庫引擎具備內建程式環境(如 Oracle 的 JVM),只要配合一條未經驗證的輸入欄,就可以變成隱秘的攻擊平台。安全團隊必須將監控延伸至數據庫物件層面,不然下次看到攻擊時,可能已太遲。