九種突破IDS入侵檢測(cè)系統(tǒng)的實(shí)用方法
入侵檢測(cè)系統(tǒng),英文簡(jiǎn)寫(xiě)為IDS,顧名思義,它是用來(lái)實(shí)時(shí)檢測(cè)攻擊行為以及報(bào)告攻擊的。如果把防火墻比作守衛(wèi)網(wǎng)絡(luò)大門(mén)的門(mén)衛(wèi)的話(huà),那么入侵檢測(cè)系統(tǒng)(IDS)就是可以主動(dòng)尋找罪犯的巡警。 因而尋求突破IDS的技術(shù)對(duì)漏洞掃描、腳本注入、URL攻擊等有著非凡的意義,同時(shí)也是為了使IDS進(jìn)一步趨向完善。
Snort是很多人都在用的一個(gè)IDS了,其實(shí)它也并不是萬(wàn)能的,筆者下面就來(lái)談?wù)勍黄浦T如Snort這類(lèi)基于網(wǎng)絡(luò)的IDS的方法:多態(tài)URL技術(shù)。
提起多態(tài)二字,大家可能會(huì)聯(lián)想到編寫(xiě)病毒技術(shù)中的“多態(tài)”、“變形”等加密技術(shù),其實(shí)我這里所要講的URL多態(tài)編碼技術(shù)和病毒的多態(tài)變形技術(shù)也有神似之處,就是用不同的表現(xiàn)形式來(lái)實(shí)現(xiàn)相同的目的。
對(duì)于同一個(gè)URL,我們可以用不同形式的編碼來(lái)表示。IDS在實(shí)時(shí)檢測(cè)時(shí),將它檢測(cè)到的數(shù)據(jù)與其本身規(guī)則集文件中規(guī)定為具有攻擊意圖的字符串進(jìn)行對(duì)比,如果相匹配的話(huà),則說(shuō)明系統(tǒng)正在受攻擊,從而阻止攻擊以及發(fā)出警報(bào)。因?yàn)閷?shí)現(xiàn)同一目的的URL可以用不同的形式來(lái)表示,所以經(jīng)過(guò)變形編碼后的URL可能就不在IDS的規(guī)則集文件中,也就擾亂了IDS的識(shí)別標(biāo)志分析引擎,從而就實(shí)現(xiàn)了突破、繞過(guò)IDS的效果!
多態(tài)URL編碼技術(shù)有許多種,筆者在此介紹9種常用且有一定代表性的方法。為了便于講解,這里以提交地址為/msadc/ msadcs.dll的URL來(lái)作為例。“/msadc/msadcs.dll”已經(jīng)被收集到snort等各大IDS的規(guī)則集文件中,因而當(dāng)我們向目標(biāo)機(jī)器直接提交/msadc/ msadcs.dll時(shí)都會(huì)被IDS截獲并報(bào)警。
第一招:“/./” 字符串插入法
鑒于“./”的特殊作用,我們可以把它插入進(jìn)URL中來(lái)實(shí)現(xiàn)URL的變形。比如對(duì)于/msadc/msadcs.dll,我們可以將它改寫(xiě)為/././msadc/././msadcs.dll、/./msadc/.//./msadcs.dll等形式來(lái)擾亂了IDS的識(shí)別標(biāo)志分析引擎,實(shí)現(xiàn)了欺騙IDS的目的。而且改寫(xiě)后編碼后的URL與未修改時(shí)在訪(fǎng)問(wèn)效果上是等效的。筆者曾經(jīng)通過(guò)實(shí)驗(yàn)表明這種方法可以繞過(guò)Snort等IDS。
第二招:“00 ” ASCII碼
前段時(shí)間動(dòng)網(wǎng)上傳漏洞就是利用的這一特性,大家肯定對(duì)此很熟悉了。它的原理就是計(jì)算機(jī)處理字符串時(shí)在A(yíng)SCII碼為00處自動(dòng)截?cái)?。我們就可以?msadc/msadcs.dll改寫(xiě)為/msadc/msadcs.dll Iloveheikefangxian,用Winhex將.dll與Ilove之間的空格換為00的ASCII碼,保存后再用NC配合管道符提交。這樣在有些IDS看來(lái)/msadc/msadcs.dll Iloveheikefangxian并不與它的規(guī)則集文件中規(guī)定為具有攻擊意圖的字符串相同,從而它就會(huì)對(duì)攻擊者的行為無(wú)動(dòng)于衷。瞧!“計(jì)算機(jī)處理字符串時(shí)在A(yíng)SCII碼為00處自動(dòng)截?cái)?rdquo;這一原理的應(yīng)用多么廣泛啊!從哲學(xué)上講,事物之間相互存在著聯(lián)系,我們應(yīng)該多思考,挖掘出內(nèi)在規(guī)律,這樣就會(huì)有新的發(fā)現(xiàn)。
第三招:使用路徑分隔符“\”
對(duì)于像微軟的IIS這類(lèi)Web服務(wù)器,“\“也可以當(dāng)“/”一樣作為路徑分隔符。有些IDS在設(shè)置規(guī)則集文件時(shí)并沒(méi)有考慮到非標(biāo)準(zhǔn)路徑分隔符“\”。如果我們把/msadc/msadcs.dll改寫(xiě)為\msadc\ msadcs.dll就可以逃過(guò)snort的法眼了,因?yàn)閟nort的規(guī)則集文件里沒(méi)有\(zhòng)msadc\ msadcs.dll這一識(shí)別標(biāo)志。值得一提的是路徑分隔符“\”還有個(gè)妙用,就是前段時(shí)間《黑客防線(xiàn)》上提到的“%5c”暴庫(kù)大法,“%5c”就是“\”的16進(jìn)制表現(xiàn)形式。
第四招:十六進(jìn)制編碼
對(duì)于一個(gè)字符,我們可以用轉(zhuǎn)義符號(hào)“%” 加上其十六進(jìn)制的ASCII碼來(lái)表示。比如/msadc/msadcs.dll中第一個(gè)字符“/”可以表示為%2F,接下來(lái)的字符可以用它們對(duì)應(yīng)的16 進(jìn)制的ASCII碼結(jié)合“%”來(lái)表示,經(jīng)過(guò)此法編碼后的URL就不再是原先的模樣了,IDS的規(guī)則集文件里可能沒(méi)有編碼后的字符串,從而就可以繞過(guò)IDS。但是這種方法對(duì)采用了HTTP預(yù)處理技術(shù)的IDS是無(wú)效的。
第五招.非法Unicode編碼
UTF-8編碼允許字符集包含多余256個(gè)字符,因此也就允許編碼位數(shù)多于8位。“/”字符的十六進(jìn)制的ASCII碼是2F,用二進(jìn)制數(shù)表示就是00101111。UTF-8格式中表示2F的標(biāo)準(zhǔn)方法仍然是2F,但是也可以使用多字節(jié)UTF-8來(lái)表示2F。字符“/”可以像下表中所示使用單字節(jié)、雙字節(jié)、三字節(jié)的UTF-8編碼來(lái)表示:
“/”字符表示方式 二進(jìn)制 十六進(jìn)制
單字節(jié) 0xxxxxxx 00101111 2F
雙字節(jié) 110xxxxx 10xxxxxx 11000000 10101111 C0 AF
三字節(jié) 1110xxxx 10xxxxxx 10xxxxxx 11100000 10000000 10101111 E0 80 AF
按照此方法,我們可以對(duì)整個(gè)字符串都進(jìn)行相應(yīng)的編碼。雖然編碼后的URL的最終指向的資源都相同,但它們的表達(dá)方式不同, IDS的規(guī)則集文件中就可能不存在此過(guò)濾字符串,從而就實(shí)現(xiàn)了突破IDS的目的。
第六招: 多余編碼法
多余編碼又稱(chēng)雙解碼。還記的2000-2001年IIS的Unicode解碼漏洞和雙解碼漏洞鬧得沸沸揚(yáng)揚(yáng),那時(shí)有許多朋友稀里糊涂的以為Unicode解碼漏洞就是雙解碼漏洞,其實(shí)它們兩者是兩回事,前者的原理筆者已在上述的“非法Unicode編碼”中有所描述。而多余編碼就是指對(duì)字符進(jìn)行多次編碼。比如“/”字符可以用%2f表示,“%2f”中的“%”、“2”、“f”字符又都可以分別用它的ASCII碼的十六進(jìn)制來(lái)表示,根據(jù)數(shù)學(xué)上的排列組合的知識(shí)可知,其編碼的形式有2的3次方,于是“%2f”可以改寫(xiě)為:“%25%32%66”、“%252f”等等來(lái)實(shí)現(xiàn)URL的多態(tài),編碼后的字符串可能沒(méi)被收集在IDS的規(guī)則集文件中,從而可以騙過(guò)有些IDS。
第七招.加入虛假路徑
在URL中加入“../”字符串后,在該字符串后的目錄就沒(méi)有了意義,作廢了。因此利用“../”字符串可以達(dá)到擾亂了識(shí)別標(biāo)志分析引擎、突破IDS的效果!
第八招:插入多斜線(xiàn)
我們可以使用多個(gè) “/”來(lái)代替單個(gè)的“/”。替代后的URL仍然能像原先一樣工作。比如對(duì)/msadc/msadcs.dll的請(qǐng)求可以改為////msadc////msadcs.dll,經(jīng)筆者曾經(jīng)實(shí)驗(yàn),這種方法可以繞過(guò)某些IDS。
第九招:綜合多態(tài)編碼
聰明的你一看這個(gè)小標(biāo)題就知道了,所謂綜合,就是把以上介紹的幾種多態(tài)變形編碼技術(shù)結(jié)合起來(lái)使用,這樣的話(huà)效果會(huì)更好。
后記:當(dāng)我剛才提到“00 ASCII碼”以及非標(biāo)準(zhǔn)路徑分隔符“\”時(shí),大家可能會(huì)倍感熟悉,因?yàn)檫@與前段時(shí)間流行的動(dòng)網(wǎng)上傳漏洞以及暴庫(kù)大法有著密切聯(lián)系。黑客是門(mén)藝術(shù),黑客講究的是靈感是思路,我們通過(guò)深入思考,舊的知識(shí)也可以創(chuàng)造出新的技術(shù)!