入侵躲避技術(shù)初探
什么是入侵躲避技術(shù)
2010年10月18日,芬蘭的Stonesoft公司宣布發(fā)現(xiàn)了一種新型的高級(jí)逃逸技術(shù)(AET:Advanced Evasion Technique),可以輕松躲避目前的IPS/IDS檢測(cè),成功入侵目標(biāo)服務(wù)器,震驚了信息安全界。作為這個(gè)技術(shù)的佐證之一,就是近年來令大家迷惑的未知攻擊越來越多,未知攻擊就是只知道被攻擊了的事實(shí),卻不知道黑客采用了什么手段,何時(shí)進(jìn)行的入侵,遺憾的是目前的安全措施都沒有發(fā)現(xiàn)其蹤跡。
后來,Stonesoft公開了其中的部分技術(shù)細(xì)節(jié),大概40多種組合躲避技術(shù),并發(fā)布一個(gè)針對(duì)漏洞(CVE-2008-4250/CVE-2004-1315)的躲避技術(shù)演示工具軟件。演示結(jié)果簡(jiǎn)單明了:入侵者對(duì)沒有打補(bǔ)丁的目標(biāo)服務(wù)器直接入侵,成功建立遠(yuǎn)程SHELL;中間部署IPS設(shè)備后,開啟安全防護(hù)策略,直接入侵則不再成功;通過調(diào)整軟件上的組合參數(shù),如IP參數(shù)、TCP參數(shù)等,很快入侵成功的SHELL窗口再次打開。
其實(shí)早在1998年Newsham和Ptacek就發(fā)表論文,討論利用IP碎片技術(shù)躲避網(wǎng)絡(luò)入侵檢測(cè)設(shè)備了,只是當(dāng)時(shí)沒有引起安全界的重視,而他們的研究對(duì)黑客來說,可謂是思路廣開,隨后的幾年,這種技術(shù)被廣泛使用于實(shí)際的入侵攻擊中,尤其是APT攻擊,針對(duì)性很強(qiáng),效果非常好。
高級(jí)逃逸技術(shù)(AET)是黑客利用協(xié)議組合的技巧,躲過網(wǎng)絡(luò)上安全措施的檢查,成功抵達(dá)目標(biāo),實(shí)施入侵攻擊。我更喜歡翻譯成為高級(jí)躲避技術(shù),或者是入侵躲避技術(shù);躲避是指還處在你監(jiān)視環(huán)境下繼續(xù)生存,但我成功地“隱身”了自己,逃逸則是我設(shè)法逃出你的監(jiān)視范圍。入侵躲避技術(shù)的目的還是要入侵,而不是逃走了事。下圖是入侵躲避技術(shù)的原理:
入侵躲避技術(shù)的分類:
入侵躲避技術(shù)可謂是種類繁多,實(shí)際上就是利用安全設(shè)備與目標(biāo)主機(jī)對(duì)各種協(xié)議、各種字符集,以及他們的組合處理的差異,合理地躲避了檢查,成功入侵了目標(biāo)。因此,入侵躲避技術(shù)是有針對(duì)性的,不是一種方式走天下,而是在具體的入侵環(huán)境中,選擇不同的參數(shù)組合、協(xié)議組合、字符集組合,達(dá)到躲避的目的。
根據(jù)躲避安全措施的不同分為:
1. 網(wǎng)絡(luò)入侵躲避技術(shù):躲避網(wǎng)絡(luò)上的安全檢查,如FWIDSIPSWAFUTM等,其中主要部分是IPS。需要躲避的是入侵時(shí)的攻擊行為,如漏洞探測(cè),上傳的惡意代碼,如ShellCode,下傳敏感信息,如口令文件;
2. 主機(jī)入侵躲避技術(shù):躲避主機(jī)(目標(biāo)服務(wù)器)上的安全檢查,如主機(jī)防入侵防御軟件主機(jī)防病毒軟件等。典型的技術(shù)是進(jìn)程注入、rootkit等。
其中網(wǎng)絡(luò)躲避又可以根據(jù)躲避的方向分為:
1. 單向躲避:目標(biāo)點(diǎn)沒有接應(yīng)的,躲避了安全檢查的攻擊流應(yīng)該能被目標(biāo)主機(jī)正常“理解”,完成入侵行為,否則即使躲避了中間的安全檢查,也達(dá)不到入侵的目的。單向躲避一般應(yīng)用在入侵過程中;
2. 雙向躲避:目標(biāo)點(diǎn)有接應(yīng)者,只要躲避了中間的安全檢查,到達(dá)目標(biāo)后,接應(yīng)者負(fù)責(zé)信息的還原。雙向躲避一般應(yīng)用在攻擊成功后的惡意代碼傳遞與遠(yuǎn)程控制聯(lián)絡(luò)。
常見的網(wǎng)絡(luò)躲避技術(shù)有下面幾類:
1. 字符變換:IPS一般基于特征比對(duì)與行為模式識(shí)別,若把傳輸?shù)膬?nèi)容變成檢查者不認(rèn)識(shí)的“外文”,就容易蒙混過關(guān)。這個(gè)方法常被用在注入攻擊中的不同字符集之間的轉(zhuǎn)換。尋找到IPS與目標(biāo)主機(jī)對(duì)某字符集解釋的差異,就可以實(shí)施躲避攻擊;典型的方式是SQL注入;
2. 協(xié)議組合:每個(gè)業(yè)務(wù)鏈接會(huì)使用多個(gè)協(xié)議,利用網(wǎng)絡(luò)各種協(xié)議的參數(shù)組合,如包大小、碎片處理、重疊處理、多線程傳送等,由于IPS與目標(biāo)主機(jī)解析協(xié)議的處理方式不同,就可以躲避IPS的特征檢查,同時(shí)又可以達(dá)到攻擊的目的;
3. 傳輸加密:加密本是直接躲避技術(shù)的首選,但加密需要到達(dá)目標(biāo)解密后才能使用,而在攻擊過程中,目標(biāo)的解析者是標(biāo)準(zhǔn)的應(yīng)用服務(wù),加密就不能達(dá)到入侵效果。同時(shí),越來越的網(wǎng)絡(luò)環(huán)境中限制加密的連接,因?yàn)楣芾碚卟荒鼙O(jiān)控你的通訊內(nèi)容;因此,加密方法一般使用在雙向躲避的部分環(huán)境中。
涉及主機(jī)躲避技術(shù),本人在《服務(wù)器入侵加固的幾種方式》中有所介紹,本文主要討論網(wǎng)絡(luò)躲避技術(shù),就重疊分片躲避與多線程躲避為例,分析一下網(wǎng)絡(luò)躲避技術(shù)的原理。
重疊分片躲避技術(shù)分析
把一個(gè)大的數(shù)據(jù)包分成多個(gè)切片(IP包)傳輸,是TCP協(xié)議的功能之一。正常的情況下接收端按照切片的編號(hào)、偏移量,再重新組裝成完整的數(shù)據(jù)包。
正常的協(xié)議解析過程是每個(gè)分片順序排列,并且按序號(hào)送達(dá)目的主機(jī)。由于網(wǎng)絡(luò)的不同路徑延遲不同,造成到達(dá)目標(biāo)的分片不一定是順序的;某個(gè)分片或許中途損壞要重傳,延遲自然更大一些;有些系統(tǒng)本身的Bug,分片時(shí)偏移量寫錯(cuò)了,造成分片之間有重疊…
這里只討論一種分片重疊的躲避技術(shù):
我們可以看到,在正常的分片中,第二個(gè)分片中有惡意代碼的特征,IPS通過緩存各個(gè)分片的負(fù)載,就可以還原數(shù)據(jù)包,自然就可以發(fā)現(xiàn)這個(gè)特征。
為了躲避IPS的檢測(cè),我們故意把第一分片的后面增加了一段隨機(jī)數(shù)據(jù)(其大小甚至可以覆蓋分片2,或更長(zhǎng)),同時(shí)增加分片1的長(zhǎng)度,分片2與分片3都不做改動(dòng)。
這樣分片1與分片2的內(nèi)容就有重合了,目標(biāo)服務(wù)器接收時(shí),對(duì)于重合的部分是選分片1的,還是選分片2的呢?我們知道,這個(gè)最終結(jié)果要根據(jù)目標(biāo)服務(wù)器的操作系統(tǒng)而定,不同操作系統(tǒng),或者有些版本之間的處理方式是不同,歸結(jié)為TCP/IP協(xié)議棧的代碼編寫。有選分片1的,也有選分片2的,但告知發(fā)送方分片有錯(cuò)誤,要求重傳的不多。
這樣就出現(xiàn)了一個(gè)問題:負(fù)責(zé)安全檢查的IPS采用的方式是前向的,還是后向的呢?目前大部分IPS廠商還不能確定其后邊的服務(wù)器采用什么樣的操作系統(tǒng),無法自動(dòng)匹配具體的應(yīng)用環(huán)境,要兩種方式都檢查的話,需要設(shè)立雙倍的緩沖區(qū)內(nèi)存,顯然是不劃算的。因此,大部分廠家都只選擇一種,比如是前向的,即分片重疊時(shí),數(shù)據(jù)選擇前一個(gè)編號(hào)的數(shù)據(jù)為準(zhǔn)。