IDS作為企業安全防護的重量級產品,自然也成為了黑客試圖攻破的目標。事實證明,繞過IDS防護進行攻擊是完全可以實現的,接下來的文章里就將簡述黑客攻擊時如何通過針對緩沖區溢出繞過IDS。
一些NIDS檢測遠程緩沖區的主要方式是通過判斷數據包的內容是否包括/bin/sh或者是否含有大量的NOP。針對IDS的這種檢測辦法,有的溢出程序的NOP考慮到用eb 02 代替,但這種方式目前也已經成為一些NIDS檢測是否為緩沖區溢出時匹配的標志。
不過,k2先生又寫了一個加密shellcode的程序ADMmutate,利用了名為多形態代碼的技術,使攻擊者能夠潛在的改變代碼結構來欺騙許多入侵檢測系統,但它不會破壞最初的攻擊性程序。溢出程序經它一改,就可以搖身一變,而且由于采用了動態改變的技術,每次偽裝的shellcode都不相同,本來NIDS依靠提取公開的溢出程序的特征碼來檢測報警,特征碼變了后就可以達到繞過IDS的目的。
偽裝前的shellcode格式為: [NNNNNNNNNNNNN][SSSS][RRRR]
偽裝后的shellcode格式為: [nnnnnnn][dddd][ssss][rrrr]
其中:N表示NOP,S表示shellcode,R表示返回地址; n表示經過編碼的NOP,d為解碼器,s表示經過編碼的shellcode,r表示返回地址。
經過ADMmutate偽裝的shellcode可以逃過使用模式匹配并且利用字符串匹配的大部分NIDS!不過如果NIDS還依靠長度,可打印字符等等綜合判斷,則ADMmutate還是不能逃脫NIDS的監視,但是依靠長度、可打印字符等判斷未必準確,以此判斷會造成IDS漏報或誤報。不過,對于使用模式匹配的NIDS來說,目前仍只能通過長度等簡單的判斷!