|
-I 0 IDS-evasive mode 0 (NULL方法)
如果想了解上面這些方法的技術(shù)細(xì)節(jié),可以參考A Look At Whisker's Anti-IDS Tactics。需要特別說明的是,rfp把whisker采用的anti-ids技術(shù)單獨(dú)放到了libwhisker(使用perl編寫的)庫中,為其它的程序采用這些技術(shù)提供了很大的便利。另外,nessus和babelweb等掃描工具都有自己的應(yīng)用層入侵檢測(cè)躲避技術(shù)。
現(xiàn)在,IDS開發(fā)人員對(duì)各種網(wǎng)絡(luò)協(xié)議有了更深入的理解,并且入侵檢測(cè)設(shè)備在對(duì)數(shù)據(jù)包的負(fù)載進(jìn)行字符串匹配之前會(huì)進(jìn)行必要的協(xié)議分析,因此現(xiàn)在的IDS已經(jīng)能夠很好地處理上述的欺騙技術(shù)了。但是多余的字符轉(zhuǎn)換又提高了入侵檢測(cè)系統(tǒng)的負(fù)載,有時(shí)是得不償失。為了減小這個(gè)負(fù)面影響,開發(fā)人員可以使入侵檢測(cè)系統(tǒng)只在特定的端口進(jìn)行字符轉(zhuǎn)換。
2.多變shell代碼(polymorphic shell code)
多變shell代碼(polymorphic shell code)技術(shù)由K2開發(fā)的,設(shè)計(jì)思想來源于病毒逃避(virus evasion)技術(shù)。使用這種技術(shù)重新構(gòu)造的shell代碼更為危險(xiǎn),入侵檢測(cè)設(shè)備非常難以檢測(cè)到。這種技術(shù)只用于緩沖區(qū)溢出攻擊,對(duì)付基于特征碼的檢測(cè)系統(tǒng)非常有效,而對(duì)于智能化的或者基于協(xié)議分析的檢測(cè)系統(tǒng)的效果要差很多。為了便于討論,我們以SSH CRC32緩沖區(qū)為例。我們先看以下snort檢測(cè)規(guī)則:
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"EXPLOIT ssh CRC32
overflow /bin/sh"; flags:A+; content:"/bin/sh"; reference:bugtraq,2347;
reference:cve,CVE-2001-0144; classtype:shellcode-detect; sid:1324; rev:1;)
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"EXPLOIT ssh CRC32
overflow NOOP"; flags:A+; content:" 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90)
上面的第一條規(guī)則簡單地檢查從外部到$HOME_NET,目標(biāo)端口是22的數(shù)據(jù)包,搜索里面是否包含字符串/bin/sh。第二條規(guī)則是檢查是否包含x86空操作字符(0x90)。多變shell代碼(polymorphic shell code)使用很多方法逃避字符串匹配系統(tǒng)的檢測(cè)。首先(以x86架構(gòu)為例),使用其它的字符代替0x90執(zhí)行無操作(no-op)指令。對(duì)于X86架構(gòu),有55種替代方式,其它的要少一些。這些替代方式以一種偽隨機(jī)的方式結(jié)合到一塊,建立緩沖區(qū)溢出shell代碼包含無操作(no-op)指令的部分。除此之外,shell代碼本身也采用XOR機(jī)制編碼。通過這種方式建立的緩沖區(qū)溢出shell代碼被重組后不會(huì)包含以上的特征碼,從而能夠逃過字符串匹配檢測(cè)。
多變shell代碼檢測(cè)對(duì)基于特征碼檢測(cè)的IDS是一個(gè)很大的挑戰(zhàn)。Next Generation Security Technologie公司的技術(shù)白皮書Polymorphic Shellcodes vs. Application IDSs中提出了一些檢測(cè)多變shell代碼的設(shè)想。通過搜索無操作(no-op)字符的一個(gè)特定長度的正則表達(dá)式,可以實(shí)現(xiàn)對(duì)多變shell代碼的精確檢測(cè)。最近,Dragos Ruiu發(fā)布了一個(gè)用于檢測(cè)多變shell代碼的snort預(yù)處理插件spp_fnord,這個(gè)插件采用了和上面相似的檢測(cè)技術(shù)。這個(gè)預(yù)處理插件有端口和長度兩個(gè)配置選項(xiàng)。例如,如果某個(gè)人在配置時(shí)設(shè)置了80、21、23和53等端口,它就只對(duì)這幾個(gè)端口的數(shù)據(jù)流量進(jìn)行多變shell代碼的檢測(cè),而不會(huì)對(duì)其它端口(例如:22)進(jìn)行檢測(cè)。
3.會(huì)話拼接(session splicing,叫會(huì)話分割更合適一些)
上面討論的這些方法都是屬于攻擊數(shù)據(jù)在一個(gè)數(shù)據(jù)包中的情況,沒有涉及攻擊數(shù)據(jù)和會(huì)話通過多個(gè)數(shù)據(jù)包投遞的情況。RFP在Whisker中實(shí)現(xiàn)了一種IDS逃避技術(shù)叫作會(huì)話拼接(session splicing),就是把會(huì)話數(shù)據(jù)放到多個(gè)數(shù)據(jù)包中發(fā)出,例如:
+-------------------------+ packet number content ---------------+--------- 1 G ---------------+--------- 2 E 本新聞共 4頁,當(dāng)前在第 2頁 1 2 3 4 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|