亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號(hào)

入侵檢測(cè)系統(tǒng)逃避技術(shù)和對(duì)策的介紹
2006-12-19   

1.字符串匹配的弱點(diǎn)

針對(duì)基本字符串匹配弱點(diǎn)的IDS躲避技術(shù)是最早被提出和實(shí)現(xiàn)的。一些基于特征碼的入侵檢測(cè)設(shè)備幾乎完全依賴(lài)于字符串匹配算法,而對(duì)于一個(gè)編寫(xiě)很差的特征碼,攻擊者可以輕松地破壞對(duì)其的字符串匹配。雖然不是所有的入侵檢測(cè)系統(tǒng)都是純粹基于特征碼檢測(cè)的,但是絕大多數(shù)對(duì)字符串匹配算法有很大的依賴(lài)。這里,我們將使用開(kāi)放源碼工具snort的特征碼來(lái)進(jìn)行討論。

在UNIX系統(tǒng)中,/etc/passwd是一個(gè)重要的文件,它包含用戶名、組成員關(guān)系和為用戶分配的shell等信息。我們就從監(jiān)視對(duì)/etc/passwd文件的訪問(wèn)開(kāi)始,下面是用于檢測(cè)的snort檢測(cè)規(guī)則:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-MISC /etc/passwd";

flags: A+; content:"/etc/passwd"; nocase; classtype:attempted-recon; sid:1122;rev:1)

snort使用字符串匹配算法對(duì)包含特征碼(/etc/passwd)的HTTP請(qǐng)求進(jìn)行檢測(cè)。但是,這個(gè)規(guī)則的特征碼過(guò)于簡(jiǎn)單了,攻擊者修改攻擊字 符串可以很輕松地逃過(guò)檢測(cè)(我們暫時(shí)不考慮攻擊請(qǐng)求是通過(guò)HTTP發(fā)出的)。例如,把攻擊請(qǐng)求由GET/etc/passwd改為GET /etc//\// passwd,或者GET /etc/rc.d/.././\passwd,修改方式簡(jiǎn)直不計(jì)其數(shù)。這是最基本的娶親檢測(cè)逃避技術(shù),對(duì)這種技術(shù)的檢測(cè)也相對(duì)容易一些,只要在編寫(xiě)特征碼時(shí)能夠仔細(xì)考慮一下攻擊可能出現(xiàn)的變體。目前大多數(shù)流行入侵檢測(cè)系統(tǒng)都有非常強(qiáng)大的字符串匹配能力,足以檢測(cè)此類(lèi)攻擊的大多數(shù)變體。不過(guò),仍然有些編寫(xiě)不太好的特征碼可以給攻擊者以可乘之機(jī)。

攻擊者還可以在此基礎(chǔ)上再加以變化,幾乎不費(fèi)吹灰之力就可以加大入侵檢測(cè)系統(tǒng)的防御難度。例如在telnet之類(lèi)的交互會(huì)話中,攻擊者企圖讀取/etc/passwd文件。通常,入侵檢測(cè)系統(tǒng)中存在很多特征碼一些誤用操作和后門(mén)等,但是這些特征碼一般只包含黑客工具名、文件名和程序名。在獲得/etc/passwd文件的內(nèi)容時(shí),我們不直接輸入cat/etc/passwd等命令行,而是通過(guò)一個(gè)命令解釋器(例如:perl)來(lái)實(shí)現(xiàn)我們的目的:

badguy@host$Content$nbsp;perl -e

‘$foo=pack(“C11”,47,101,116,99,47,112,97,115,115,119,100);

@bam=`/bin/cat/ $foo`; print”@bam\n”;’

從這個(gè)命令中,入侵檢測(cè)系統(tǒng)根本就不會(huì)重組出/etc/passwd這些字符。顯然,防御這種攻擊就很困難了,因?yàn)檫@要求入侵檢測(cè)系統(tǒng)必須能夠理解這種解釋器如何收到的命令,這恐怕不太現(xiàn)實(shí)。當(dāng)然,入侵檢測(cè)系統(tǒng)也可以對(duì)使用解釋器的可疑行為進(jìn)行報(bào)警,但是它很難對(duì)攻擊行為進(jìn)行精確的監(jiān)視。

通過(guò)把字符串處理技術(shù)和字符替換技術(shù)結(jié)合到一起,我們可疑實(shí)現(xiàn)更復(fù)雜的字符串偽裝。對(duì)于WEB請(qǐng)求,我們不必使用命令解釋器,在我們的請(qǐng)求中使用16進(jìn)制的URL即可,以下的請(qǐng)求可以被目標(biāo)WEB服務(wù)器解釋為/etc/passwd:

GET %65%74%63/%70%61%73%73%77%64或者

GET %65%74%63/%70a%73%73%77d

為了捕獲這一個(gè)字符串的所有變體,你可能需要1000個(gè)以上的特征碼進(jìn)行字符串匹配,這還沒(méi)有考慮UNICODE。UNICODE提供了另一 種字符表達(dá)方式。有關(guān)UNICODE的IDS欺騙技術(shù)細(xì)節(jié),本文將不多做討論。如果想了解更多細(xì)節(jié)請(qǐng)參考SecurityFocus的IDS Evasion with Unicode。除此之外,RainForestPuppy在他的HTTP掃描工具Whisker中采用了另外一些IDS欺騙技術(shù):

-I 1 IDS-evasive mode 1 (URL編碼)

-I 2 IDS-evasive mode 2 (/./目錄插入)

-I 3 IDS-evasive mode 3 (過(guò)早結(jié)束URL)

-I 4 IDS-evasive mode 4 (長(zhǎng)URL)

-I 5 IDS-evasive mode 5 (偽造參數(shù))

-I 6 IDS-evasive mode 6 (TAB分割) (not NT/IIS)

-I 7 IDS-evasive mode 7 (大小寫(xiě)敏感)

-I 8 IDS-evasive mode 8 (Windows分割符)

-I 9 IDS-evasive mode 9 (會(huì)話拼接) (slow)

-I 0 IDS-evasive mode 0 (NULL方法)

如果想了解上面這些方法的技術(shù)細(xì)節(jié),可以參考A Look At Whisker’s Anti-IDS Tactics。需要特別說(shuō)明的是,rfp把whisker采用的anti-ids技術(shù) 單獨(dú)放到了libwhisker(使用perl編寫(xiě)的)庫(kù)中,為其它的程序采用這些技術(shù)提供了很大的便利。另外,nessus和babelweb等掃描工具都有自己的應(yīng)用層入侵檢測(cè)躲避技術(shù)。

現(xiàn)在,IDS開(kāi)發(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è)跗面影響,開(kāi)發(fā)人員可以使入侵檢測(cè)系統(tǒng)只在特定的端口進(jìn)行字符轉(zhuǎn)換。

2.多變shell代碼(polymorphic shell code)

多變shell代碼(polymorphic shell code)技術(shù)由K2開(kāi)發(fā)的,設(shè)計(jì)思想來(lái)源于病毒逃避(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ī)則簡(jiǎn)單地檢查從外部到$HOME_NET,目標(biāo)端口是22的數(shù)據(jù)包,搜索里面是否包含字符串/bin/sh。第二條規(guī)則是檢查是否 包含x86空操作字符(0x90)。多變shell代碼(polymorphic shell code)使用很多方法逃避字符串匹配系統(tǒng)的檢測(cè)。首先(以x86架構(gòu)為例), 使用其它的字符代替0x90執(zhí)行無(wú)操作(no-op)指令。對(duì)于X86架構(gòu),有55種替代方式,其它的要少一些。這些替代方式以一種偽隨機(jī)的 方式結(jié)合到一塊,建立緩沖區(qū)溢出shell代碼包含無(wú)操作(no-op)指令的部分。想了解無(wú)操作(no-op)指令的所有替代字符可以參考http:// cansecwest.com/noplist-v1-1.txt。除此之外,shell代碼本身也采用XOR機(jī)制編碼。通過(guò)這種方式建立的緩沖區(qū)溢出shell代碼被重組后不會(huì)包含以上的特征碼,從而能夠逃過(guò)字符串匹配檢測(cè)。

多變shell代碼檢測(cè)對(duì)基于特征碼檢測(cè)的IDS是一個(gè)很大的挑戰(zhàn)。Next Generation Security Technologie公司的技術(shù)白皮書(shū)Polymorphic Shellcodes vs. Application IDSs中提出了一些檢測(cè)多變shell代碼的設(shè)想。通過(guò)搜索無(wú)操作(no-op)字符的一個(gè)特定長(zhǎng)度的正則表達(dá)式,可以實(shí)現(xiàn)對(duì)多變 shell代碼的精確檢測(cè)。最近,Dragos Ruiu發(fā)布了一個(gè)用于檢測(cè)多變shell代碼的snort預(yù)處理插件spp_fnord,這個(gè)插件采用了和上面相似的 檢測(cè)技術(shù)。這個(gè)預(yù)處理插件有端口和長(zhǎng)度兩個(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ù)包中的情況,沒(méi)有涉及攻擊數(shù)據(jù)和會(huì)話通過(guò)多個(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  

 ---------------+--------- 

  3   T  

 ---------------+--------- 

  4   20 

 ---------------+--------- 

  5   /  

 ---------------+--------- 

  6   H  

+---------------+---------+

通過(guò)這種方式,每次只投遞幾個(gè)字節(jié)的數(shù)據(jù),就可能避開(kāi)字符串匹配入侵檢測(cè)系統(tǒng)的監(jiān)視。要監(jiān)視這種攻擊,需要入侵檢測(cè)系統(tǒng)或者 能夠理解、監(jiān)視網(wǎng)絡(luò)會(huì)話(即使IDS有這種能力,攻擊者也可以通過(guò)其它的凡是避開(kāi)監(jiān)視),或者采用其它的技術(shù)監(jiān)視這種攻擊。snort使 用以下規(guī)則來(lái)監(jiān)視會(huì)話拼接:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-MISC whisker

space splice attack"; content:" 20 "; flags:A+; dsize:1;

reference:arachnids,296; classtype:attempted-recon; reference)

這條規(guī)則使snort檢測(cè)目標(biāo)為$HTTP_SERVERS 80端口的ACK報(bào)文的負(fù)載長(zhǎng)度是否等于1以及是否包含空格(16進(jìn)制的20)。使用這條規(guī)則可以精確地檢測(cè)出whisker,但是攻擊者只要稍加修改就可以避開(kāi)這個(gè)檢測(cè)。為了能夠檢測(cè)可能出現(xiàn)的會(huì)話拼接攻擊,可以對(duì)上面這條 snort規(guī)則進(jìn)行擴(kuò)展,使其檢查負(fù)載很短的HTTP請(qǐng)求。但是,這樣做的副作用是提高了誤報(bào)警數(shù)量,而且在某些情況下攻擊者還是能 夠避開(kāi)監(jiān)視。為了真正有效地檢測(cè)這種攻擊,需要入侵檢測(cè)系統(tǒng)能夠完整地理解網(wǎng)絡(luò)會(huì)話,不過(guò)這是非常困難的。應(yīng)該注意的是目前 大多數(shù)系統(tǒng)能夠重組會(huì)話,在所有的會(huì)話數(shù)據(jù)到達(dá)之前,它們會(huì)等待一些時(shí)間。而等待時(shí)間的長(zhǎng)短與程序有關(guān)。例如,Apache/RedHat 的會(huì)話超時(shí)時(shí)間是6分鐘,IIS/Win2K等待的時(shí)間非常長(zhǎng)。因此,攻擊者完全可以每15分鐘發(fā)送一個(gè)字節(jié)的會(huì)話數(shù)據(jù),而IIS還會(huì)認(rèn)為是有效的會(huì)話。最新版本的snort能夠監(jiān)視長(zhǎng)期的會(huì)話和網(wǎng)絡(luò)層欺騙,例如:小TTL值。

4.碎片攻擊

碎片攻擊和會(huì)話拼接(session splicing)有點(diǎn)類(lèi)似。直到最近,很多入侵檢測(cè)系統(tǒng)在進(jìn)行字符串匹配之前不能準(zhǔn)確地重組碎片。現(xiàn)在這種 情況有了改觀,所有的入侵檢測(cè)系統(tǒng)都能夠進(jìn)行某些重組。不過(guò),還是有很多方法可以避開(kāi)入侵檢測(cè)系統(tǒng)的監(jiān)視。碎片重組的問(wèn)題是 在進(jìn)行字符串匹配以前,入侵檢測(cè)系統(tǒng)必須在內(nèi)存中緩存所有的碎片,然后進(jìn)行重組。而且,他還需要直到、碎片在目的主機(jī)會(huì)如何 重組。Thomas Ptacek and Timoth Newsham于1998年寫(xiě)的Insertion,Evasion and Denial of Service: Eluding Network Intrusion Detection描述了許多基于網(wǎng)絡(luò)的碎片躲避和其它類(lèi)型的躲避技術(shù)。碎片攻擊包括:碎片覆蓋、碎片重寫(xiě)、碎片超時(shí)和針對(duì)網(wǎng)絡(luò)拓?fù)涞乃槠夹g(shù)(例如使用小的 TTL)等。下面,我們將詳細(xì)討論。

4.1.碎片覆蓋

所謂碎片覆蓋就是發(fā)送碎片覆蓋先前碎片中的數(shù)據(jù)。例如:

碎片1 GET x.idd

碎片2 a.?(緩沖區(qū)溢出數(shù)據(jù))

第二個(gè)碎片的第一個(gè)字符覆蓋第一個(gè)碎片最后一個(gè)字符,這兩個(gè)碎片被重組之后就變成了GET x.ida?(緩沖區(qū)溢出數(shù)據(jù))。實(shí)際情況遠(yuǎn)非這么簡(jiǎn)單。

4.2.碎片數(shù)據(jù)覆蓋

這種方法和上面的碎片覆蓋有些類(lèi)似,只不過(guò)是覆蓋全部的碎片數(shù)據(jù),例如:

碎片1 GET x.id

碎片2 一些隨機(jī)的字符

碎片3 a.?(緩沖區(qū)溢出數(shù)據(jù))

這些碎片在經(jīng)過(guò)目標(biāo)系統(tǒng)的重組之后,碎片3將完全覆蓋碎片2,重組之后的數(shù)據(jù)變成GET x.ida?(緩沖區(qū)溢出數(shù)據(jù))。如果入侵檢測(cè)系統(tǒng)的重組方式和目標(biāo)系統(tǒng)不同,就無(wú)法重組出“GET x.ida?(緩沖區(qū)溢出數(shù)據(jù))”,因此就檢測(cè)不出這個(gè)攻擊。

4.3.碎片超時(shí)

這種攻擊依賴(lài)于入侵檢測(cè)系統(tǒng)在丟棄碎片之前會(huì)保存多少時(shí)間。大多數(shù)系統(tǒng)會(huì)在60秒之后將丟棄不完整的碎片流(從收到第一個(gè)碎片開(kāi) 始計(jì)時(shí))。如果入侵檢測(cè)系統(tǒng)保存碎片的時(shí)間小于60秒,就會(huì)漏掉某些攻擊。例如:

碎片1(設(shè)置了MF位) GET foo.id

碎片2(59秒之后發(fā)出) a?(緩沖區(qū)溢出數(shù)據(jù))

如果IDS保存起始碎片的時(shí)間不到60秒,就會(huì)漏過(guò)攻擊。幸運(yùn)的是,如果配置沒(méi)有錯(cuò)誤,現(xiàn)在的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)能夠檢測(cè)此類(lèi)攻擊。

這種技術(shù)結(jié)合其它的網(wǎng)絡(luò)技術(shù)(例如:TTL值)將更有威脅。如果入侵檢測(cè)系統(tǒng)和被監(jiān)視的系統(tǒng)不在同一個(gè)網(wǎng)段,攻擊者就可以在TTL上做手腳。有的單位由于經(jīng)費(fèi)的限制,不能在自己的每個(gè)子網(wǎng)都部署IDS節(jié)點(diǎn),只在網(wǎng)絡(luò)的出入口部署一套IDS,監(jiān)視所有的網(wǎng)絡(luò)流量。這種情況下,如果被攻擊的主機(jī)在其它的子網(wǎng),攻擊數(shù)據(jù)包到目標(biāo)系統(tǒng)的跳數(shù)就大于到IDS的跳數(shù)。攻擊者可以偽造碎片的TTL,使某些碎片剛好能夠到達(dá),而無(wú)法到達(dá)目標(biāo)系統(tǒng),例如:碎片序號(hào) 負(fù)載 TTL(假設(shè)攻擊者到目標(biāo)的跳數(shù)是5,到IDS的跳數(shù)是3)

1 GET foo.id 5

2 evasion.html 3

3 a?(緩沖區(qū)溢出數(shù)據(jù)) 5

從這些碎片中,IDS重組的數(shù)據(jù)是“GET foo.idevasion.html a?(緩沖區(qū)溢出數(shù)據(jù))”或者“GET foo.idevasion.html”(如果IDS的超時(shí)時(shí)間小于60秒)。通過(guò)這種方式,攻擊者成功地在IDS中插入了垃圾數(shù)據(jù)。

5.碎片和snort特征碼

下面我們把上述攻擊和某些snort特征碼進(jìn)行比較。對(duì)于.ida緩沖區(qū)溢出攻擊,默認(rèn)的snort特征碼幾乎無(wú)法捕獲任何通過(guò)碎片發(fā)動(dòng)的攻擊(如果使用了frag2預(yù)處理模塊,snort可以截獲碎片超時(shí)攻擊)。下面是針對(duì).ida緩沖區(qū)溢出攻擊的snort檢測(cè)規(guī)則:

alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS 80 (msg:"WEB-IIS ISAPI

.ida attempt"; uricontent:".ida?"; nocase; dsize:>239; flags:A+;

reference:arachnids,552; classtype:web-application-attack;

reference:cve,CAN-2000-0071;sid:1243;rev:2;)

另外,snort還有一條檢測(cè)小碎片的規(guī)則,一旦發(fā)現(xiàn)太小的碎片,就會(huì)觸發(fā)這條規(guī)則:

alert ip $EXTERNAL_NET any -> $HOME_NET any (msg:"MISC Tiny

Fragments";fragbits:M;dsize: < 25; classtype:bad-unknown;sid:522)

但是,這樣還是不能檢測(cè)某些攻擊。還是以ida緩沖區(qū)溢出為例,這個(gè)攻擊實(shí)際上和請(qǐng)求的URI無(wú)關(guān),因此攻擊者可以在前面加入一些垃圾數(shù)據(jù)以避免觸發(fā)碎片檢測(cè)規(guī)則。

碎片1 GET reallylongstringtoevadedetect.i

碎片2 da?(緩沖區(qū)溢出數(shù)據(jù))

這些技術(shù)并非只針對(duì)snort。Cisco Secure IDS也能夠進(jìn)行碎片重組,并且能夠?qū)ι鲜鏊槠暨M(jìn)行報(bào)警。

實(shí)際上,碎片攻擊要復(fù)雜的多,尤其是涉及到TTL和碎片覆蓋。如果想更為深入地了解這方面技術(shù),請(qǐng)參考Network Intrusion Detection: Evasion, Traffic Normalization, and End-to-End Protocol Semantics。

檢測(cè)碎片攻擊也非常困難。使IDS的碎片超時(shí)時(shí)間至少為60秒,增加對(duì)異常碎片的報(bào)警,最重要的是系統(tǒng)管理人員要對(duì)碎片攻擊的潛在威脅有清醒的認(rèn)識(shí)。2002年四月,Dug Song發(fā)布了Fragroute,引發(fā)了不小的震動(dòng)。很快,snort社團(tuán)發(fā)布了能夠?qū)λ槠暨M(jìn)行更好檢測(cè)的snort1.8.6版。

6.拒絕服務(wù)

還有一種比較野蠻的方法就是拒絕服務(wù)。拒絕服務(wù)可以針對(duì)檢測(cè)設(shè)備本身和管理設(shè)備。Stick、snot和其它一些測(cè)試工具能夠是入侵檢測(cè)設(shè)備產(chǎn)生大量的報(bào)警。使用這些工具,可以達(dá)成如下目標(biāo):

消耗檢測(cè)設(shè)備的處理能力,是真正的攻擊逃過(guò)檢測(cè)。

塞滿硬盤(pán)空間,使檢測(cè)設(shè)備無(wú)法記錄日志。

使檢測(cè)設(shè)備產(chǎn)生超出其處理能力的報(bào)警。

使系統(tǒng)管理人員無(wú)法研究所有的報(bào)警。

掛掉檢測(cè)設(shè)備。

對(duì)IDS來(lái)說(shuō),這類(lèi)工具無(wú)跡可尋,因此非常難以對(duì)付。

結(jié)論

本文我們討論了一些常用的IDS躲避技術(shù)及其對(duì)策。其中有些技術(shù)需要攻擊者具有熟練的攻擊技巧,而有寫(xiě)技術(shù)卻無(wú)需太多的技巧。而fragroute之類(lèi)的工具出現(xiàn),大大降低了攻擊者采用某些技術(shù)的難度,使防御的一方總是處于被動(dòng)。

 

責(zé)任編輯 趙毅 zhaoyi#51cto.com TEL:(010)68476636-8001


熱詞搜索:

上一篇:DDos仍然是對(duì)眾多ISP的首要威脅
下一篇:專(zhuān)家看點(diǎn):IDS的缺陷成就了IPS的發(fā)展

分享到: 收藏