協議分析的優勢—HTTP分析器檢測網絡攻擊

 從性能、效率、檢測率、誤報率等各方面看,使用協議分析的入侵檢測系統比起使用簡單模式匹配的入侵檢測系統有着較大的優勢。下面我們就以HTTP協議爲例,結合KIDS(金諾網安入侵檢測系統)中使用的HTTP分析器,對這兩種方法進行比較說明。
GET/scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dirHTTP/1.0
一個針對IIS的Unicode攻擊的第一步一般是通過瀏覽器送出類似下面這樣一個HTTP請求:
TCPdport:80;content:“%c1%1c”/i;alert:“IISUnicodeDirectoryTraversal”
TCPdport:80;content:“cmd.exe”/i;alert:“Attempttoexecutecmd”
使用模式匹配的入侵檢測系統會使用類似於下面的規則進行檢測:
第 一條規則表示,如果檢測到一個TCP包發向80端口,並且其中含有字符串“%c1%1c”,系統就發出報警“IISUnicodeTraversal”; 第二條規則表示,如果檢測到一個TCP包發向80端口,並且其中含有字符串“cmd.exe”(忽略大小寫),系統就發出報警 “Attempttoexecutecmd”。
拋開實現上的優化等問題,這樣一個系統有着下面兩個嚴重缺陷:
●誤報 這個方法不考慮TCP連接是否已建立,也不考慮匹配字串會不會可能是合法數據的一部分。特別是後一情況尤爲嚴重。拿換碼序列“%c1%1c”來說,它完全可以是Cookie或GET/POST數據中的合法成員。
● 漏報 這一檢測方法要求匹配字串出現在同一數據包中,攻擊者完全可以使用多個數據包來實施這一攻擊。使用Telnet目標主機80,然後直接在命令行上輸 入上面的HTTP請求並加上兩個回車,就可以發出攻擊,而這樣的攻擊可能使用了多至64個數據包。攻擊者也可以對“cmd.exe”進行換碼處理——如使 用“%63md.exe”,上面的第二條檢測規則就完全沒用了。
KIDS中的HTTP分析器恰恰是針對這兩個缺陷設計的。它具有以下特點:
●使用插件方式運行時動態載入 如果不需要對HTTP進行監測,可以不加載HTTP分析器以節省網絡傳感器的內存開銷。
●KIDS引擎的TCP流重組能力:可對分散在多個數據包中的HTTP請求進行分析處理。
●完整獲取整個HTTP請求:可對請求超長(可能爲緩衝區溢出攻擊)進行判斷,即使一個HTTP請求跨越了多個TCP包。
●完整分析HTTP0.9、HTTP1.0和HTTP1.1協議:可對一個HTTP連接中的多個HTTP請求分別進行分析處理。
●可對向代理服務器發出的HTTP請求進行分析處理。
●把HTTP請求分解爲方法、主機、路徑、查詢字串等部分分別進行分析處理。對路徑部分會進行解碼處理,並對解碼前後的路徑分別進行檢驗。
HTTP 分析器裏的規則是以XML的方式分層進行組織。我們主要關心的HTTP方法是“GET”、“HEAD”和“POST”,所以我們在Method中對此進行 了規定;這意味着,我們只對這三種類型之一的完整HTTP請求進行分析處理。HTTP及其代理的常用端口80、3128和8080在network部分用 port標籤進行了規定。rules部分中的host可規定禁止訪問的網站(以域名形式)。path部分規定了如何對解碼前的路徑進行檢驗,而 path_decoded部分規定了如何對解碼後的路徑進行檢驗。對於包含“%63md.exe”的路徑,HTTP分析器解碼後會先得到 “cmd.exe”,然後很容易就能在規則中匹配到,併產生編號爲1056的事件。HTTP分析器會把事件號和相關信息以統一的格式遞交給響應模塊做下一 步處理。
綜上所述,KIDS中的HTTP分析器以獨立的檢測器模塊方式工作,對HTTP請求進行分析處理,能夠更可靠、更有效地對通過HTTP協議發起的攻擊進行檢測。顯然,以模塊化的方式對高層協議進行分析處理,將是未來入侵檢測的方向。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章