■曹剛
9種IDS入侵檢測(cè)系統(tǒng)方法
■曹剛
入侵檢測(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)的話,那么入侵檢測(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ì)比,如果相匹配的話,則說(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í)在訪問(wèn)效果上是等效的。筆者曾經(jīng)通過(guò)實(shí)驗(yàn)表明這種方法可以繞過(guò)Snort等IDS。
對(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ú)效的。
前段時(shí)間動(dòng)網(wǎng)上傳漏洞就是利用的這一特性,大家肯定對(duì)此很熟悉了。它的原理就是計(jì)算機(jī)處理字符串時(shí)在ASCII碼為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í)在ASCII碼為00處自動(dòng)截?cái)唷边@一原理的應(yīng)用多么廣泛?。恼軐W(xué)上講,事物之間相互存在著聯(lián)系,我們應(yīng)該多思考,挖掘出內(nèi)在規(guī)律,這樣就會(huì)有新的發(fā)現(xiàn)。
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的目的。
在URL中加入“/”字符串后,在該字符串后的目錄就沒(méi)有了意義,作廢了。因此利用“/”字符串可以達(dá)到擾亂了識(shí)別標(biāo)志分析引擎、突破IDS的效果!
我們可以使用多個(gè)“/”來(lái)代替單個(gè)的“/”。替代后的URL仍然能像原先一樣工作。比如對(duì)/msadc/msadcs.dll的請(qǐng)求可以改為////msadc////msadcs.dll,經(jīng)筆者曾經(jīng)實(shí)驗(yàn),這種方法可以繞過(guò)某些IDS。
對(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)有msadc msadcs.dll這一識(shí)別標(biāo)志。值得一提的是路徑分隔符“”還有個(gè)妙用,就是前段時(shí)間《黑客防線》上提到的“%5c”暴庫(kù)大法,“%5c”就是“”的16進(jìn)制表現(xiàn)形式。
多余編碼又稱雙解碼。還記的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。
聰明的你一看這個(gè)小標(biāo)題就知道了,所謂綜合,就是把以上介紹的幾種多態(tài)變形編碼技術(shù)結(jié)合起來(lái)使用,這樣的話效果會(huì)更好。
剛才提到“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ù)!