九種突破IDS入侵檢測系統(tǒng)的實用方法

責任編輯:xlong

2013-03-17 14:00:00

來源:企業(yè)網(wǎng)D1Net

原創(chuàng)

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

鏈接已復制,快去分享吧

企業(yè)網(wǎng)版權所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號