|
在網(wǎng)絡(luò)蓬勃發(fā)展的幾天,網(wǎng)絡(luò)安全問題日益突出。網(wǎng)絡(luò)上的黑、白兩道在網(wǎng)絡(luò)安全的各個(gè)領(lǐng)域都展開了激烈的競爭。黑帽社團(tuán)不斷推出躲避或者越過網(wǎng)絡(luò)入侵檢測系統(tǒng)(Network Intrusion Detection System,NIDS)的新技術(shù),而NIDS的開發(fā)者不斷地在自己的產(chǎn)品中加入對(duì)這些技術(shù)的檢測。但是,由于NIDS本身的局限性,勝利的天平正在向黑帽子傾斜。本文將討論一些基本的IDS躲避技術(shù),以及如何識(shí)破這些技術(shù)。
1.字符串匹配的弱點(diǎn)
針對(duì)基本字符串匹配弱點(diǎn)的IDS躲避技術(shù)是最早被提出和實(shí)現(xiàn)的。一些基于特征碼的入侵檢測設(shè)備幾乎完全依賴于字符串匹配算法,而對(duì)于一個(gè)編寫很差的特征碼,攻擊者可以輕松地破壞對(duì)其的字符串匹配。雖然不是所有的入侵檢測系統(tǒng)都是純粹基于特征碼檢測的,但是絕大多數(shù)對(duì)字符串匹配算法有很大的依賴。這里,我們將使用開放源碼工具snort的特征碼來進(jìn)行討論。
在UNIX系統(tǒng)中,/etc/passwd是一個(gè)重要的文件,它包含用戶名、組成員關(guān)系和為用戶分配的shell等信息。我們就從監(jiān)視對(duì)/etc/passwd文件的訪問開始,下面是用于檢測的snort檢測規(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)行檢測。但是,這個(gè)規(guī)則的特征碼過于簡單了,攻擊者修改攻擊字符串可以很輕松地逃過檢測(我們暫時(shí)不考慮攻擊請(qǐng)求是通過HTTP發(fā)出的)。例如,把攻擊請(qǐng)求由GET /etc/passwd改為GET /etc/////passwd,或者GET /etc/rc.d/.././/passwd,修改方式簡直不計(jì)其數(shù)。這是最基本的娶親檢測逃避技術(shù),對(duì)這種技術(shù)的檢測也相對(duì)容易一些,只要在編寫特征碼時(shí)能夠仔細(xì)考慮一下攻擊可能出現(xiàn)的變體。目前大多數(shù)流行入侵檢測系統(tǒng)都有非常強(qiáng)大的字符串匹配能力,足以檢測此類攻擊的大多數(shù)變體。不過,仍然有些編寫不太好的特征碼可以給攻擊者以可乘之機(jī)。
攻擊者還可以在此基礎(chǔ)上再加以變化,幾乎不費(fèi)吹灰之力就可以加大入侵檢測系統(tǒng)的防御難度。例如在telnet之類的交互會(huì)話中,攻擊者企圖讀取/etc/passwd文件。通常,入侵檢測系統(tǒng)中存在很多特征碼一些誤用操作和后門等,但是這些特征碼一般只包含黑客工具名、文件名和程序名。在獲得/etc/passwd文件的內(nèi)容時(shí),我們不直接輸入cat /etc/passwd等命令行,而是通過一個(gè)命令解釋器(例如:perl)來實(shí)現(xiàn)我們的目的:
badguy@host$ perl -e
‘$foo=pack(“C11”,47,101,116,99,47,112,97,115,115,119,100);
@bam=`/bin/cat/ $foo`; print”@bam/n”;’
從這個(gè)命令中,入侵檢測系統(tǒng)根本就不會(huì)重組出/etc/passwd這些字符。顯然,防御這種攻擊就很困難了,因?yàn)檫@要求入侵檢測系統(tǒng)必須能夠理解這種解釋器如何收到的命令,這恐怕不太現(xiàn)實(shí)。當(dāng)然,入侵檢測系統(tǒng)也可以對(duì)使用解釋器的可疑行為進(jìn)行報(bào)警,但是它很難對(duì)攻擊行為進(jìn)行精確的監(jiān)視。
通過把字符串處理技術(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)行字符串匹配,這還沒有考慮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 (過早結(jié)束URL)
-I 4 IDS-evasive mode 4 (長URL)
-I 5 IDS-evasive mode 5 (偽造參數(shù))
-I 6 IDS-evasive mode 6 (TAB分割) (not NT/IIS)
-I 7 IDS-evasive mode 7 (大小寫敏感)
-I 8 IDS-evasive mode 8 (Windows分割符)
-I 9 IDS-evasive mode 9 (會(huì)話拼接) (slow) 本新聞共 4頁,當(dāng)前在第 1頁 1 2 3 4 |
|
【收藏】【打印】【進(jìn)入論壇】 |
|
|
|
|
|
|
|