本文僅對**已公開漏洞 (MS04-038 / CVE-2004-XXXX)** 進行技術原理復盤與防禦分析,**嚴禁**用於製作、傳播惡意程式碼或攻擊未授權系統。相關代碼片段經脫敏處理,僅供安全研究人員理解攻擊鏈以部署緩解措施。
| 項目 | 內容 |
|---|---|
| 漏洞編號 | Microsoft Internet Explorer SP2 遠端任意命令執行 (綠盟 ID: 7272) |
| 影響版本 | IE 6.0 SP2 on Windows XP Professional/Home SP2 |
| 核心元件 | HTML Help ActiveX 控制項 (HH_CTRL.OCX, CLSID: adb880a6-d8ff-11cf-9377-00aa003b7a11) |
| 攻擊向量 | 惡意網頁誘導使用者瀏覽 → 無需互動即執行任意程式碼 |
利用 <object classid="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11"> 載入精心構造的 .chm/.htm,繞過「本機電腦區域」的 ActiveX 初始化限制,獲得腳本執行上下文。
腳本呼叫 ADODB.Recordset 建立離線記錄集,將惡意 HTA 內容序列化為 XML,直接寫入 All Users\Start Menu\Programs\Startup\Microsoft Office.hta,繞過防火牆對網路連線的監控(原版透過遠端資料庫回傳 HTA 內容觸發防火牆警示)。
On Error Resume Next
Set rs = CreateObject("ADODB.Recordset")
With rs
.Fields.Append "payload", 200, 3000 ' adLongVarWChar
.Open
.AddNew
.Fields("payload").Value = "[HTA 惡意內容: 下載並執行 payload.exe]"
.Update
End With
rs.Save "C:\Documents and Settings\All Users\Start Menu\Programs\Startup\Microsoft Office.hta", 1 ' adPersistXML
rs.Close
Microsoft Office.hta 自動執行 (HTA 以 mshta.exe 執行,擁有完整系統權限)。window.close() 或 Self.Delete 邏輯,執行一次後自刪,降低被發現機率。Close 參數自動關閉彈出的幫助視窗,隱藏攻擊痕跡。| 限制 | 說明 |
|---|---|
| 需重開機觸發 | 寫入啟動資料夾屬「登入型」持久化,非即時執行 |
| 系統盤非 C: 失效 | 硬編碼路徑 C:\Documents and Settings\...,非預設安裝路徑無法寫入 |
| 防火牆/ HIPS 攔截 | mshta.exe 發起網路連線、寫入啟動資料夾均可能被行為分析攔截 |
| DEP/ASLR (SP3+) | 記憶體保護機制大幅提高 Shellcode 開發難度 |
reg add "HKLM\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{adb880a6-d8ff-11cf-9377-00aa003b7a11}" /v "Compatibility Flags" /t REG_DWORD /d 1024 /fUsers 群組對 All Users\Start Menu\Programs\Startup 的寫入權限,僅保留 Administrators / SYSTEM。mshta.exe、wscript.exe、cscript.exe 從非信任路徑 (Temp、Startup、下載資料夾) 執行。Content-Type: application/x-oleobject 異常載入、HTA 下載可執行檔行為。此攻擊鏈展示了 **Client-side 漏洞串聯 (區域繞過 → 本地寫入 → 持久化 → 執行)** 的經典模式。雖然 XP SP2 時代已成歷史,但「受信任元件被濫用寫入自動執行點」的思路在現代 Office 宏、LNK 捷徑、捷徑劫持、COM 劫持等攻擊中依然活躍。**修補單一漏洞不足,需建立「最小權限 + 應用程式控管 + 行為偵測」的纵深防禦體系。**