萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 網路安全 >  >> 病毒防護

Snort 規則檢測 MS05-051 漏洞攻擊:從現有規則不足到深度漏洞分析

背景

MS05-051 漏洞 (MSDTC 服務 BuildContextW 記憶體損壞) 利用代碼與蠕蟲已現身。現有 Snort 規則僅匹配 DCE/RPC 協定特徵 (如 IXnRemote 介面綁定、BuildContextW 呼叫特徵碼),誤報率高,無法精準識別攻擊載體本身。

現有 Snort 規則範例 (八條)

均針對 TCP/UDP 1024+ 埠,匹配 DCE/RPC 封包結構中的特定位元組模式 (如 |05|、|04 00|、|E0 0C|k|90 0B C7|g|10 B3 17 00 DD 01 06|b|DA| 等),並檢查 flowbits:isset,dce.bind.IXnRemote。正常 RPC 請求亦可能觸發,缺乏攻擊載體特徵。

漏洞深度分析 (整理自 scz@nsfocus)

成因

遠程呼叫 msdtcprx!BuildContextW() (DCE-RPC Opnum 7) 時存在記憶體損壞。最簡請求封包參數結構 (手工解碼):

// param0: 2 bytes + 2 bytes padding
0x00,0x00, 0x00,0x00
// param1: 24 bytes (全0)
0x00 x24
// param2: max/actual length = 1, Unicode空字串 + 2 bytes padding
0x01,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x01,0x00,0x00,0x00, 0x00,0x00, 0x00,0x00
// param3 (pwszHostName): 同上結構,長度1,空字串
// param4 (pwszUuidString): max length 應為 0x25 (37字元),超過即為畸形
// param5: 同 param4

關鍵點:param4/param5 的 最大可能長度 正常為 0x00000025,超過此值即構成畸形請求,觸發緩衝區溢位。

檢測策略升級方向

  1. 深度協定解碼:解析 DCE/RPC 封包結構,精確提取 BuildContextW 參數欄位。
  2. 長度異常檢測:針對 param4/param5 max length > 0x25 設定規則,直接鎖定攻擊載體。
  3. 狀態追蹤:結合 dce.bind.IXnRemote 狀態位,確認會話上下文。
  4. 減少誤報:不再單純匹配固定位元組模式,改為語義層面的畸形參數判斷。

下一步工作:開發 Snort 預處理器或 Lua 腳本實現 DCE/RPC 參數級解析,實現 MS05-051 攻擊的精準零誤報檢測。

copyright © 萬盛學電腦網 all rights reserved