劉寶超,張 怡,張博鋒
(國防科學技術大學計算機學院,湖南 長沙 410073)
隨著信息時代的發(fā)展,入侵檢測系統(tǒng)面臨的形勢也是越來越嚴峻。目前入侵檢測系統(tǒng)主要是并行部署在網絡上,被動地監(jiān)視著網絡上的流量,通過協(xié)議分析器定義的規(guī)則檢測出可疑活動。針對目前攻擊形勢的多樣化,文獻[1]首次通過實例說明了攻擊者可以利用NIDS(Network Intrusion Detection System)和目標端主機對特定形式報文的處理策略不同,從而產生不一致行為;另外,還可以通過對NIDS實施DOS攻擊,使NIDS不能正常工作,達到逃避入侵檢測的目的。最初是由于NIDS缺乏IP分片的重組功能,不能夠還原出原始的報文,使得NIDS不能進行正常的過濾和檢測。現(xiàn)在的大部分NIDS都具備重組IP分片的功能,但是攻擊者通過精心設置TTL構造的報文[2],使得報文在NIDS和終端主機之間被丟棄,之后又重傳了內容不同的報文(如圖1所示),這樣NIDS無法判斷對于同一個序列號(SEQ),終端主機到底會接收哪個數(shù)據(jù)包,除非NIDS能夠將所有的情況都列出,才能檢測出“root”這種情況。為了能夠正確地分析一條流[3],NIDS必須首先判斷這條流上的數(shù)據(jù)包在NIDS上解析是否和終端主機解析一致,為了解決這個問題,NIDS要能夠完整地而準確地模仿內網中所有終端主機所采用的策略[4]。此種方法使用了Mapper的網絡節(jié)點收集部件,Mapper探測內網的拓撲結構和網絡節(jié)點信息,存儲在Host Profile Table的數(shù)據(jù)庫中供NIDS使用,然而隨著網絡節(jié)點的增多,數(shù)據(jù)庫的維護和更新變得困難。
針對上述問題,本文提出了流量預處理引擎TPE(Traffic Preprocess Engine),將流過TPE的可疑流量進行預處理后重新轉發(fā),進而達到保證NIDS和終端主機對同一流量的理解和處理的一致性。
Figure 1 Evade NIDS’s detection by changing TTL value圖1 利用更改TTL值逃避NIDS檢測
物理層一般要限制每次發(fā)送的數(shù)據(jù)幀的最大長度。任何時候IP層接收到一份要發(fā)送的數(shù)據(jù)包時,它要判斷向本地哪個接口發(fā)送數(shù)據(jù),并查詢該接口獲取MTU(Maximum Transmission Unit),IP把MTU與數(shù)據(jù)包長度進行比較,如果大于MTU則需要進行分片,其中分片可以發(fā)生在原始發(fā)送端主機上,也可以發(fā)生在中間路由器上,最后在終端主機系統(tǒng)中根據(jù)IP報文頭部信息進行重組[5]。
IP分片逃避的產生是由于NIDS無法了解內網的網絡拓撲結構以及終端主機的操作系統(tǒng),無法確定終端主機是否收到了流經NIDS的數(shù)據(jù)包,也不知道達到終端主機的報文是如何被處理的,因此對于通過精心構造的數(shù)據(jù)包,在NIDS和終端主機之間解析的結果產生了不一致,這就為攻擊者構造特定的IP分片、逃避NIDS的檢測提供了條件。攻擊者一般會構造Insertion和Evasion攻擊[1]。
Insertion:一個數(shù)據(jù)包能夠被NIDS接收但是被終端主機拒絕,如圖2所示。攻擊者通過精心構造一組分片報文,其中“X”分片不會被終端主機接收而會被NIDS捕獲,NIDS看到的是“ATXTACK”,終端主機系統(tǒng)看到的是“ATTACK”,這樣就可以順利地逃避NIDS的檢測。
Figure 2 Insertion attack圖2 Insertion攻擊
Evasion:一個數(shù)據(jù)包能夠被終端主機接收但是被NIDS拒絕(如圖3所示)。在攻擊者的報文分片中的“A”分片能被終端主機接收而被NIDS拒絕,NIDS看到的是“ATTCK”,終端主機系統(tǒng)看到的是“ATTACK”,此種方法也可以逃避NIDS的檢測。
Figure 3 Evasion attack圖3 Evasion攻擊
文獻[6]給出了Insertion攻擊和Evasion攻擊成功的原因:
(1) NIDS缺乏對特定協(xié)議全面的分析。比如,攻擊者可以利用有些NIDS不能進行IP分片重組逃避檢測,然而終端主機系統(tǒng)需要對分片報文重組,因此攻擊流量能在終端主機奏效。
(2)NIDS不了解終端主機系統(tǒng)以何種策略處理收到的數(shù)據(jù)。比如IP分片重疊,不同的系統(tǒng)對重疊區(qū)域采用的策略是不同的(如圖4所示),這就產生了不一致行為[7]。
Figure 4 Different strategies on fragmentation overlap of different operating systems圖4 不同系統(tǒng)對分片重疊的處理策略
(3)NIDS無法了解所監(jiān)視網絡的拓撲結構,無法判斷它所監(jiān)視的數(shù)據(jù)是否能夠到達終端主機。在網絡環(huán)境下,由于IP分片報文是彼此選擇自己的路徑進行傳送的,不能根據(jù)一組報文經過NIDS的先后順序來確定他們到達終端主機的順序。另外,由表1可知,即使NIDS對經過的IP分片進行重組,它也無法得知這些分片報文在終端主機還原后的面貌。
Table 1 Illustration of differentstrategy on fragmentation overlap
一般情況下,IP分片負載部分不會重疊,即使是出現(xiàn)了IP分片重疊,此重疊區(qū)域的數(shù)據(jù)也是一致的。因此,TPE對流經的IP分片報文按照預定義策略進行重組,然后TPE將預處理之后的報文發(fā)送出去,這樣能夠保證經過處理后的報文在NIDS和終端主機的解析結果是一致的。原因如下:
①根據(jù)NIDS的重組策略還原出了散布在IP分片中的攻擊特征;
②TPE的重組策略破壞了散布在IP分片中的攻擊特征。從上述兩個結果可以看出,不論出現(xiàn)哪種情況,結果都是有利的,經過TPE處理之后的流量,在終端主機和NIDS重組之后將會看到一樣的解析結果。
網絡中的設備之間是通過網絡協(xié)議的規(guī)則和約束進行通信的,網絡的拓撲結構和網絡行為是可以通過相應的網絡協(xié)議表示的[8]。終端主機系統(tǒng)在收到報文之后,按照相應的網絡協(xié)議規(guī)范對報文中的數(shù)據(jù)格式和各字段含義進行解析,根據(jù)解析的內容系統(tǒng)采取相應的行為。
對于特定的字段,如果系統(tǒng)無法識別它的含義,那么攻擊者就有可能會置該字段特殊的值,造成不同系統(tǒng)對該字段作不同的解析,所以NIDS在不了解內網的網絡結構的情況下,無法判斷報文在終端是如何處理的,這就導致了不一致行為的發(fā)生。
根據(jù)表1中描述的不同系統(tǒng)對IP分片重疊部分的不同處理策略,以及Insertion和Evasion攻擊的原理,文獻[9]提出了TCP Scrubber,主要是針對TCP分段報文重組的不一致性,文獻[6]借鑒了Scrubber的技術,通過分析網絡協(xié)議的不同實現(xiàn),對可疑報文進行正常化處理,從而消除了NIDS和終端主機對同一組報文的不同解釋。
如圖5所示,TPE是以串接的方式接入到網絡鏈路中,使流經TPE的報文經過處理之后,在NIDS和終端主機的解釋是一樣的。我們是假設終端主機所屬的內網是可信的,目前只考慮由TPE處理由外網流徑到內網的數(shù)據(jù)。
Figure 5 TPE deployment of the network location圖5 TPE部署的網絡位置
下面對圖6做出詳細的說明:
Figure 6 Sketch map of IP overlap fragmentation reassemble圖6 IP重疊分片的重組示意圖
(1)提取NIDS捕獲的分片報文的四元組(源IP地址,目的IP地址,協(xié)議號,IP標識)。
(2)由四元組計算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的總長度組成的一個24位數(shù)據(jù);
DIP:目的IP地址;
Checksum:IP頭部的16 bit校驗和;
H2:目的IP地址的高8位和16 bit協(xié)議號組成的一個24位數(shù)據(jù);
H3:H1與H2異或的結果;
SL24:源IP地址的低24位;
DL24:目的IP地址的低24位;
index:H3和H4異或的結果。
(3)根據(jù)index查找相應IP分片隊列,如果沒找到,則新建一個分片隊列;否則,在已有的分片隊列中查找插入的位置,即找到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的結果可以看出Packet與Prev是否發(fā)生重疊。len=(Prev→tail)-(Packet→head),如果len>0,說明發(fā)生了重疊,則需要將分片Packet從頭部開始減去len的長度。接下來查看Packet和Next之后的分片是否發(fā)生了重疊,通過遍歷Next到分片隊列的最后一個,如果Packet與某個分片完全重疊,則將該分片從隊列中釋放掉(如分片i+1);如果Packet只是與某個分片重疊了一部分(如分片i+2),則需要將該分片從頭部開始減去重疊的部分。將Packet插入到Prev→tail之后、Next→head之前,這就對重疊的IP分片進行了預處理。
本實驗使用以下工具:
(1)fragroute[10]。fragroute是一種能夠截取、修改和重寫報文,并將其發(fā)送出去的工具。它是通過使用一個簡單的配置規(guī)則來實現(xiàn)對發(fā)出的報文實施延遲、重復、丟棄、構造分片、重疊、分段等操作。本文使用的是fragroute-1.2。
(2)VMware[11]。VMware是一款虛擬化平臺,本實驗需要三個VMware,VMware(a)用fragroute構造IP重疊分片報文攻擊另外兩臺VMware(b)、VMware(c),其中VMware(b)配備NIDS和TPE;VMware(c)配備了NIDS。Linux使用的系統(tǒng)版本是2.6.35.6。
(3)snort[12]。snort是一款入侵檢測系統(tǒng),就是本實驗的NIDS。本實驗使用的是snort-2.9.4.5。
VMware(a)使用fragroute構造三個IP分片報文(如圖7所示),依次發(fā)送到VMware(b),這三個分片分別攜帶24字節(jié)(8字節(jié)UDP首部+16字節(jié)的‘a’)、16字節(jié)‘b’以及8字節(jié)的‘d’,作為payload,這個分片的偏移量分別為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)在將上述三個分片的偏移量分別改為0,16和24(如圖9所示)。TPE處理之后的重疊IP分片如圖10所示。
兩次通過fragroute構造的IP分片報文,第一次偏移量分別為0、16和16,第二次偏移量分別為0、16和24,構造不同的IP分片重疊,上述實驗表明,TPE能夠根據(jù)預定的規(guī)則對不同重疊的IP分片報文進行重組,實現(xiàn)了TPE功能的完整性。
如圖11所示的實驗結果表明,增加了TPE處理之后,NIDS可以檢測到所有的IP分片并將其重組,能夠抗擊90%以上IP分片逃避,并且網絡延遲在所能接受的范圍之內,對整個網絡不會造成太大的影響。從實驗數(shù)據(jù)中還可以發(fā)現(xiàn),當發(fā)送的數(shù)據(jù)包速率太大時,NIDS就會出現(xiàn)部分丟包,丟包率在1%左右,這個缺陷跟NIDS的處理能力是有關系,可以通過采用專用的多核多線程網絡處理器的并行化[13]處理措施加以改進。
Figure 11 TPE performance test圖11 TPE性能測試
本文主要討論了利用IP分片和TCP重傳機制技術逃避NIDS的檢測,以及對國內外關于逃避入侵檢測系統(tǒng)攻擊的相關研究。將逃避NIDS檢測的攻擊形式總結為Insertion和Evasion兩種形式,說明了Insertion和Evasion兩種形式能夠成功逃避NIDS是利用入侵檢測系統(tǒng)對內網中的拓撲結構不了解,最終在NIDS和終端主機之間產生不一致行為造成的,同時指出采用TPE技術可以有效地抵御IP分片攻擊。
下一步工作要考慮如果攻擊者利用DOS攻擊,耗盡TPE的所有資源以至于不能正常工作,攻擊者還是可以順利地逃避檢測;另外,TPE是串接在鏈路中,因此會存在一定的延遲,因此下一步將研究如何提高TPE自身的安全防護和盡可能地減小TPE對網絡延遲的影響。
[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.
附中文參考文獻:
[3] 王明貞,趙國鴻,唐勇.基于多核網絡處理器的高效流管理技術研究[D].小型微型計算機系統(tǒng),2012,33(12):2591-2594.
[6] Stevens W R. TCP/IP詳解:卷1協(xié)議[M].范建華,胥光輝,張濤,等譯.北京:機械工業(yè)出版社,2000.
[10] 張建宇,周淵,鄒維.PaSeM:并行無沖突的網絡流量會話管理[J].計算機學報, 2010, 33(7):1195-1212.