劉寶超,張 怡,張博鋒
(國防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,湖南 長沙 410073)
隨著信息時(shí)代的發(fā)展,入侵檢測系統(tǒng)面臨的形勢也是越來越嚴(yán)峻。目前入侵檢測系統(tǒng)主要是并行部署在網(wǎng)絡(luò)上,被動(dòng)地監(jiān)視著網(wǎng)絡(luò)上的流量,通過協(xié)議分析器定義的規(guī)則檢測出可疑活動(dòng)。針對目前攻擊形勢的多樣化,文獻(xiàn)[1]首次通過實(shí)例說明了攻擊者可以利用NIDS(Network Intrusion Detection System)和目標(biāo)端主機(jī)對特定形式報(bào)文的處理策略不同,從而產(chǎn)生不一致行為;另外,還可以通過對NIDS實(shí)施DOS攻擊,使NIDS不能正常工作,達(dá)到逃避入侵檢測的目的。最初是由于NIDS缺乏IP分片的重組功能,不能夠還原出原始的報(bào)文,使得NIDS不能進(jìn)行正常的過濾和檢測。現(xiàn)在的大部分NIDS都具備重組IP分片的功能,但是攻擊者通過精心設(shè)置TTL構(gòu)造的報(bào)文[2],使得報(bào)文在NIDS和終端主機(jī)之間被丟棄,之后又重傳了內(nèi)容不同的報(bào)文(如圖1所示),這樣NIDS無法判斷對于同一個(gè)序列號(hào)(SEQ),終端主機(jī)到底會(huì)接收哪個(gè)數(shù)據(jù)包,除非NIDS能夠?qū)⑺械那闆r都列出,才能檢測出“root”這種情況。為了能夠正確地分析一條流[3],NIDS必須首先判斷這條流上的數(shù)據(jù)包在NIDS上解析是否和終端主機(jī)解析一致,為了解決這個(gè)問題,NIDS要能夠完整地而準(zhǔn)確地模仿內(nèi)網(wǎng)中所有終端主機(jī)所采用的策略[4]。此種方法使用了Mapper的網(wǎng)絡(luò)節(jié)點(diǎn)收集部件,Mapper探測內(nèi)網(wǎng)的拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)節(jié)點(diǎn)信息,存儲(chǔ)在Host Profile Table的數(shù)據(jù)庫中供NIDS使用,然而隨著網(wǎng)絡(luò)節(jié)點(diǎn)的增多,數(shù)據(jù)庫的維護(hù)和更新變得困難。
針對上述問題,本文提出了流量預(yù)處理引擎TPE(Traffic Preprocess Engine),將流過TPE的可疑流量進(jìn)行預(yù)處理后重新轉(zhuǎn)發(fā),進(jìn)而達(dá)到保證NIDS和終端主機(jī)對同一流量的理解和處理的一致性。
Figure 1 Evade NIDS’s detection by changing TTL value圖1 利用更改TTL值逃避NIDS檢測
物理層一般要限制每次發(fā)送的數(shù)據(jù)幀的最大長度。任何時(shí)候IP層接收到一份要發(fā)送的數(shù)據(jù)包時(shí),它要判斷向本地哪個(gè)接口發(fā)送數(shù)據(jù),并查詢該接口獲取MTU(Maximum Transmission Unit),IP把MTU與數(shù)據(jù)包長度進(jìn)行比較,如果大于MTU則需要進(jìn)行分片,其中分片可以發(fā)生在原始發(fā)送端主機(jī)上,也可以發(fā)生在中間路由器上,最后在終端主機(jī)系統(tǒng)中根據(jù)IP報(bào)文頭部信息進(jìn)行重組[5]。
IP分片逃避的產(chǎn)生是由于NIDS無法了解內(nèi)網(wǎng)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)以及終端主機(jī)的操作系統(tǒng),無法確定終端主機(jī)是否收到了流經(jīng)NIDS的數(shù)據(jù)包,也不知道達(dá)到終端主機(jī)的報(bào)文是如何被處理的,因此對于通過精心構(gòu)造的數(shù)據(jù)包,在NIDS和終端主機(jī)之間解析的結(jié)果產(chǎn)生了不一致,這就為攻擊者構(gòu)造特定的IP分片、逃避NIDS的檢測提供了條件。攻擊者一般會(huì)構(gòu)造Insertion和Evasion攻擊[1]。
Insertion:一個(gè)數(shù)據(jù)包能夠被NIDS接收但是被終端主機(jī)拒絕,如圖2所示。攻擊者通過精心構(gòu)造一組分片報(bào)文,其中“X”分片不會(huì)被終端主機(jī)接收而會(huì)被NIDS捕獲,NIDS看到的是“ATXTACK”,終端主機(jī)系統(tǒng)看到的是“ATTACK”,這樣就可以順利地逃避NIDS的檢測。
Figure 2 Insertion attack圖2 Insertion攻擊
Evasion:一個(gè)數(shù)據(jù)包能夠被終端主機(jī)接收但是被NIDS拒絕(如圖3所示)。在攻擊者的報(bào)文分片中的“A”分片能被終端主機(jī)接收而被NIDS拒絕,NIDS看到的是“ATTCK”,終端主機(jī)系統(tǒng)看到的是“ATTACK”,此種方法也可以逃避NIDS的檢測。
Figure 3 Evasion attack圖3 Evasion攻擊
文獻(xiàn)[6]給出了Insertion攻擊和Evasion攻擊成功的原因:
(1) NIDS缺乏對特定協(xié)議全面的分析。比如,攻擊者可以利用有些NIDS不能進(jìn)行IP分片重組逃避檢測,然而終端主機(jī)系統(tǒng)需要對分片報(bào)文重組,因此攻擊流量能在終端主機(jī)奏效。
(2)NIDS不了解終端主機(jī)系統(tǒng)以何種策略處理收到的數(shù)據(jù)。比如IP分片重疊,不同的系統(tǒng)對重疊區(qū)域采用的策略是不同的(如圖4所示),這就產(chǎn)生了不一致行為[7]。
Figure 4 Different strategies on fragmentation overlap of different operating systems圖4 不同系統(tǒng)對分片重疊的處理策略
(3)NIDS無法了解所監(jiān)視網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),無法判斷它所監(jiān)視的數(shù)據(jù)是否能夠到達(dá)終端主機(jī)。在網(wǎng)絡(luò)環(huán)境下,由于IP分片報(bào)文是彼此選擇自己的路徑進(jìn)行傳送的,不能根據(jù)一組報(bào)文經(jīng)過NIDS的先后順序來確定他們到達(dá)終端主機(jī)的順序。另外,由表1可知,即使NIDS對經(jīng)過的IP分片進(jìn)行重組,它也無法得知這些分片報(bào)文在終端主機(jī)還原后的面貌。
Table 1 Illustration of differentstrategy on fragmentation overlap
一般情況下,IP分片負(fù)載部分不會(huì)重疊,即使是出現(xiàn)了IP分片重疊,此重疊區(qū)域的數(shù)據(jù)也是一致的。因此,TPE對流經(jīng)的IP分片報(bào)文按照預(yù)定義策略進(jìn)行重組,然后TPE將預(yù)處理之后的報(bào)文發(fā)送出去,這樣能夠保證經(jīng)過處理后的報(bào)文在NIDS和終端主機(jī)的解析結(jié)果是一致的。原因如下:
①根據(jù)NIDS的重組策略還原出了散布在IP分片中的攻擊特征;
②TPE的重組策略破壞了散布在IP分片中的攻擊特征。從上述兩個(gè)結(jié)果可以看出,不論出現(xiàn)哪種情況,結(jié)果都是有利的,經(jīng)過TPE處理之后的流量,在終端主機(jī)和NIDS重組之后將會(huì)看到一樣的解析結(jié)果。
網(wǎng)絡(luò)中的設(shè)備之間是通過網(wǎng)絡(luò)協(xié)議的規(guī)則和約束進(jìn)行通信的,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)行為是可以通過相應(yīng)的網(wǎng)絡(luò)協(xié)議表示的[8]。終端主機(jī)系統(tǒng)在收到報(bào)文之后,按照相應(yīng)的網(wǎng)絡(luò)協(xié)議規(guī)范對報(bào)文中的數(shù)據(jù)格式和各字段含義進(jìn)行解析,根據(jù)解析的內(nèi)容系統(tǒng)采取相應(yīng)的行為。
對于特定的字段,如果系統(tǒng)無法識(shí)別它的含義,那么攻擊者就有可能會(huì)置該字段特殊的值,造成不同系統(tǒng)對該字段作不同的解析,所以NIDS在不了解內(nèi)網(wǎng)的網(wǎng)絡(luò)結(jié)構(gòu)的情況下,無法判斷報(bào)文在終端是如何處理的,這就導(dǎo)致了不一致行為的發(fā)生。
根據(jù)表1中描述的不同系統(tǒng)對IP分片重疊部分的不同處理策略,以及Insertion和Evasion攻擊的原理,文獻(xiàn)[9]提出了TCP Scrubber,主要是針對TCP分段報(bào)文重組的不一致性,文獻(xiàn)[6]借鑒了Scrubber的技術(shù),通過分析網(wǎng)絡(luò)協(xié)議的不同實(shí)現(xiàn),對可疑報(bào)文進(jìn)行正?;幚?,從而消除了NIDS和終端主機(jī)對同一組報(bào)文的不同解釋。
如圖5所示,TPE是以串接的方式接入到網(wǎng)絡(luò)鏈路中,使流經(jīng)TPE的報(bào)文經(jīng)過處理之后,在NIDS和終端主機(jī)的解釋是一樣的。我們是假設(shè)終端主機(jī)所屬的內(nèi)網(wǎng)是可信的,目前只考慮由TPE處理由外網(wǎng)流徑到內(nèi)網(wǎng)的數(shù)據(jù)。
Figure 5 TPE deployment of the network location圖5 TPE部署的網(wǎng)絡(luò)位置
下面對圖6做出詳細(xì)的說明:
Figure 6 Sketch map of IP overlap fragmentation reassemble圖6 IP重疊分片的重組示意圖
(1)提取NIDS捕獲的分片報(bào)文的四元組(源IP地址,目的IP地址,協(xié)議號(hào),IP標(biāo)識(shí))。
(2)由四元組計(jì)算index的過程:
①H1=((SIP& 0xFF000000)?8)|Total_len;
②H2=((DIP& 0xFF000000)?8)|Checksum;
③H3=H1∧H2;
④SL24=SIP& 0x00FFFFFF;
⑤DL24=DIP& 0x00FFFFFF;
⑥H4=SL24∧DL24;
⑦index=H3∧H4。
對上述字符作出如下說明:
SIP:源IP地址;
Total_len:16 bit的總長度;
H1:源IP地址的高8位和16 bit的總長度組成的一個(gè)24位數(shù)據(jù);
DIP:目的IP地址;
Checksum:IP頭部的16 bit校驗(yàn)和;
H2:目的IP地址的高8位和16 bit協(xié)議號(hào)組成的一個(gè)24位數(shù)據(jù);
H3:H1與H2異或的結(jié)果;
SL24:源IP地址的低24位;
DL24:目的IP地址的低24位;
index:H3和H4異或的結(jié)果。
(3)根據(jù)index查找相應(yīng)IP分片隊(duì)列,如果沒找到,則新建一個(gè)分片隊(duì)列;否則,在已有的分片隊(duì)列中查找插入的位置,即找到Prev和Next指向的分片。下面是定位Prev和Next的偽代碼:
Prev=NULL;
for(Next=queue_head;Next!=NULL;Next=Next→next)
{
if(Next→offset≥Packet→offset)
break;
Prev=Next;
}
(4)通過比較Packet→head與Prev→tail的結(jié)果可以看出Packet與Prev是否發(fā)生重疊。len=(Prev→tail)-(Packet→head),如果len>0,說明發(fā)生了重疊,則需要將分片Packet從頭部開始減去len的長度。接下來查看Packet和Next之后的分片是否發(fā)生了重疊,通過遍歷Next到分片隊(duì)列的最后一個(gè),如果Packet與某個(gè)分片完全重疊,則將該分片從隊(duì)列中釋放掉(如分片i+1);如果Packet只是與某個(gè)分片重疊了一部分(如分片i+2),則需要將該分片從頭部開始減去重疊的部分。將Packet插入到Prev→tail之后、Next→head之前,這就對重疊的IP分片進(jìn)行了預(yù)處理。
本實(shí)驗(yàn)使用以下工具:
(1)fragroute[10]。fragroute是一種能夠截取、修改和重寫報(bào)文,并將其發(fā)送出去的工具。它是通過使用一個(gè)簡單的配置規(guī)則來實(shí)現(xiàn)對發(fā)出的報(bào)文實(shí)施延遲、重復(fù)、丟棄、構(gòu)造分片、重疊、分段等操作。本文使用的是fragroute-1.2。
(2)VMware[11]。VMware是一款虛擬化平臺(tái),本實(shí)驗(yàn)需要三個(gè)VMware,VMware(a)用fragroute構(gòu)造IP重疊分片報(bào)文攻擊另外兩臺(tái)VMware(b)、VMware(c),其中VMware(b)配備NIDS和TPE;VMware(c)配備了NIDS。Linux使用的系統(tǒng)版本是2.6.35.6。
(3)snort[12]。snort是一款入侵檢測系統(tǒng),就是本實(shí)驗(yàn)的NIDS。本實(shí)驗(yàn)使用的是snort-2.9.4.5。
VMware(a)使用fragroute構(gòu)造三個(gè)IP分片報(bào)文(如圖7所示),依次發(fā)送到VMware(b),這三個(gè)分片分別攜帶24字節(jié)(8字節(jié)UDP首部+16字節(jié)的‘a(chǎn)’)、16字節(jié)‘b’以及8字節(jié)的‘d’,作為payload,這個(gè)分片的偏移量分別為0、16和16。TPE處理之后的重疊IP分片如圖8所示。
Figure 7 Overlap IP fragmentation1 before TPE handling圖7 TPE處理之前的重疊IP分片1
Figure 8 Overlap IP fragmentation1 after TPE handling圖8 TPE處理之后的重疊IP分片1
Figure 9 Overlap IP fragmentation2 before TPE handling圖9 TPE處理之前的重疊IP分片2
Figure 10 Overlap IP fragmentation2 after TPE handling圖10 TPE處理之后的重疊IP分片2
現(xiàn)在將上述三個(gè)分片的偏移量分別改為0,16和24(如圖9所示)。TPE處理之后的重疊IP分片如圖10所示。
兩次通過fragroute構(gòu)造的IP分片報(bào)文,第一次偏移量分別為0、16和16,第二次偏移量分別為0、16和24,構(gòu)造不同的IP分片重疊,上述實(shí)驗(yàn)表明,TPE能夠根據(jù)預(yù)定的規(guī)則對不同重疊的IP分片報(bào)文進(jìn)行重組,實(shí)現(xiàn)了TPE功能的完整性。
如圖11所示的實(shí)驗(yàn)結(jié)果表明,增加了TPE處理之后,NIDS可以檢測到所有的IP分片并將其重組,能夠抗擊90%以上IP分片逃避,并且網(wǎng)絡(luò)延遲在所能接受的范圍之內(nèi),對整個(gè)網(wǎng)絡(luò)不會(huì)造成太大的影響。從實(shí)驗(yàn)數(shù)據(jù)中還可以發(fā)現(xiàn),當(dāng)發(fā)送的數(shù)據(jù)包速率太大時(shí),NIDS就會(huì)出現(xiàn)部分丟包,丟包率在1%左右,這個(gè)缺陷跟NIDS的處理能力是有關(guān)系,可以通過采用專用的多核多線程網(wǎng)絡(luò)處理器的并行化[13]處理措施加以改進(jìn)。
Figure 11 TPE performance test圖11 TPE性能測試
本文主要討論了利用IP分片和TCP重傳機(jī)制技術(shù)逃避NIDS的檢測,以及對國內(nèi)外關(guān)于逃避入侵檢測系統(tǒng)攻擊的相關(guān)研究。將逃避NIDS檢測的攻擊形式總結(jié)為Insertion和Evasion兩種形式,說明了Insertion和Evasion兩種形式能夠成功逃避NIDS是利用入侵檢測系統(tǒng)對內(nèi)網(wǎng)中的拓?fù)浣Y(jié)構(gòu)不了解,最終在NIDS和終端主機(jī)之間產(chǎn)生不一致行為造成的,同時(shí)指出采用TPE技術(shù)可以有效地抵御IP分片攻擊。
下一步工作要考慮如果攻擊者利用DOS攻擊,耗盡TPE的所有資源以至于不能正常工作,攻擊者還是可以順利地逃避檢測;另外,TPE是串接在鏈路中,因此會(huì)存在一定的延遲,因此下一步將研究如何提高TPE自身的安全防護(hù)和盡可能地減小TPE對網(wǎng)絡(luò)延遲的影響。
[1] Ptacek T H, Newsham T N. Insertion, evasion, and denial of service:Eluding network intrusion detection, secure networks[R].Information Assurance Technology Analysis Center, Secure Networks Inc, 1998.
[2] Cheng Ting-huan,Lin Ying-dar.Evasion techinques:Sneaking through your intrusion dectection/prevention system[J]. Communication Surveys & Tutorials,2012,14(4):1011-1020.
[3] Wang Ming-zhen, Zhao Guo-hong, Tang Yong. Technology research of efficient flow management based on multi-core network processor[J].Journal of Chinese Computer System, 2012,33(12):2591-2594.(in Chinese)
[4] Fraleigh C,Moon S,Lyles B,et al.Packet-level traffic measurements from the sprint IP backbone[J]. IEEE Network, 2003, 17(6):6-16.
[5] Shankar U, Paxson V. Active mapping:Resisting NIDS evasion without altering traffic[C]∥Proc of IEEE Symposium on Security & Privacy, 2003:44-61.
[6] Stevens W R. TCP/IP illustrated volume 1:The protocols[M]. Fan Jian-hua, Xu Guang-hui, Zhang Tao, et al. translation.Beijing:China Machine Press,2000.
[7] Handley M,Paxson V.Network intrusion detection:Evasion, traffic normalization, and end-to-end protocol semantics[C]∥Proc of the 10th USENIX Security Symposium, 2001.
[8] Watson D, Smart M, Malan G R. Protocol scrubbing:Network security through transparent flow modification[J]. IEEE/ACM Transactions on Networking, 2004,12(2):261-273.
[9] Vutukuru M, Balakrishnan H, Paxson V. Efficient and robust TCP stream normalization[C]∥IEEE Computer Society, 2008:96-110.
[10] Zhang Jian-yu, Zhou Yuan, Zou Wei. PaSeM:Parallel and conflict-free network traffic session management[J].Chinese Journal of Computers, 2010,33(7):1195-1212.(in Chinese)
[11] www.monkey.org/~dugsong/fragroute.
[12] http://www.vmware. com.
[13] Vigna G. A topological characterization of TCP/IP security[C]∥Proc of the 12th International FME Symposium, 2003:914-940.
[14] http://www.snort.org/snort-downloads.
附中文參考文獻(xiàn):
[3] 王明貞,趙國鴻,唐勇.基于多核網(wǎng)絡(luò)處理器的高效流管理技術(shù)研究[D].小型微型計(jì)算機(jī)系統(tǒng),2012,33(12):2591-2594.
[6] Stevens W R. TCP/IP詳解:卷1協(xié)議[M].范建華,胥光輝,張濤,等譯.北京:機(jī)械工業(yè)出版社,2000.
[10] 張建宇,周淵,鄒維.PaSeM:并行無沖突的網(wǎng)絡(luò)流量會(huì)話管理[J].計(jì)算機(jī)學(xué)報(bào), 2010, 33(7):1195-1212.