摘 要:為了檢測會話劫持,通過分析在路由節點上進行會話劫持的網絡數據的RTT特征,用NS(network simulation)仿真了會話劫持過程,最后提出CRD(compare RTT detecting)方法,能夠有效地檢測到會話劫持攻擊。
關鍵詞:會話劫持; 網絡攻擊; 路由; RTT
中圖分類號:TP301.6文獻標志碼:A
文章編號:1001-3695(2009)09-3506-02
doi:10.3969/j.issn.1001-3695.2009.09.087
Session hijack analysis and detecting in untrusted route
PANG Sheng, CHEN Chang-jia
(School of Electric Information Engineering, Beijing Jiaotong University, Beijing 100044, China)
Abstract:This paper described the behavior of session hijack, simulated the hijack process and analysed the RTTs of the process according to the results of simulation, and come up with CRD to detect session hijack.
Key words:session hijack; network attack; route; RTT(round trip time)
0 引言
會話劫持是一種結合了嗅探以及欺騙技術在內的攻擊手段。廣義上說,會話劫持就是在一次正常的通信過程中,黑客作為第三方參與到其中,或者是在數據流(如基于TCP的會話)里注入額外的信息,或者是將雙方的通信模式暗中改變,即從直接聯系變成有黑客聯系。中國防火墻通過會話劫持的方式結束一些特殊的連接[1],從中可以看出中國政府和一些組織能夠獲取路由上的關鍵路由節點資源。
會話劫持利用了TCP/IP工作原理來設計攻擊[2]。TCP使用端到端的連接,即TCP用(源IP,源TCP端口號,目的IP,目的TCP端號)來惟一標志每一條已經建立連接的TCP鏈路。另外,TCP在進行數據傳輸時,TCP報文首部的兩個字段序號(seq)和確認序號(ackseq)非常重要,它們是與所攜帶TCP數據凈荷(payload)的多少有數值上的關系:序號字段指出了本報文中傳送的數據在發送主機所要傳送的整個數據流中的順序號;確認序號字段指出了發送本報文的主機希望接收的對方主機中下一個八位組的順序號。因此,對于一臺主機來說,其收發的兩個相鄰TCP報文之間的序號和確認序號的關系為:它所要發出的報文中的seq值應等于它剛收到的報文中的ackseq的值;它所要發送報文中ackseq的值應為它所收到報文中seq的值加上該報文中所發送的TCP凈荷的長度。
在這里提供了一種非常有效的會話劫持檢測方法CRD。這種方法利用攻擊點不會劫持ping包的特點,在下載過程中以ts為間隔抽樣ping原始服務器獲得RTT統計特征。同時通過被動測量的方法獲得下載過程的RTT統計特征[3],用直方圖的形式比較兩種RTT的統計特征獲取它們的最小值的差值特征來判斷是否遭到攻擊。
1 會話劫持分析
通常,會話劫持攻擊是作為病毒和木馬的傳播手段。一般的會話攻擊是基于代理結構的。攻擊者提供代理服務在用戶的網絡連接中實施會話劫持攻擊[4]。由于代理結構的會話劫持本身的局限性,這種攻擊造成的影響也不大,但是攻擊者擁有路由器資源的話,他們就可以大范圍地進行會話劫持攻擊。
本文分析一種常用的會話劫持攻擊。會話劫持利用TCP/IP本身機制進行網絡攻擊。簡單地講,攻擊者在攻擊目標和其所信任的主機會話的過程中,通過冒充主機的IP地址估算出下一個序列號完成與攻擊目標的三次握手過程[5],從而劫持整個會話進行攻擊[2]。圖1為會話劫持的簡單物理連接圖,C為客戶機,S為服務器,R是C和S鏈路所經過的路由中的一個路由器,A是直接連接在路由器R上的攻擊機。
分析一下會話劫持的具體過程。圖2顯示出會話劫持的TCP包交換過程。C向S發送HTTP請求下載文件,路由節點R為C和S所建立連接的中間節點,A為監聽路由節點R并實施攻擊的機器,A對C和S的連接進行會話劫持攻擊。在C向S發送下載請求時,A識別出此命令就立即在鏈路中間做兩件事:首先,A會偽裝成S以Sa身份向C發送冗余數據包改變了序列號劫持本次鏈接,在此過程中Sa的地址就是S的地址,與此同時,A偽裝成C以Ca的身份發送RST包給S結束C和S的鏈接,并且A發送C最初發送給S的下載請求;然后A實時地將下載的文件以Sa的身份轉發給C,當然在這個過程中A已經將木馬或者病毒感染到了C要下載的文件中。在圖2中忽略了從A到路由器R的延遲是為了畫圖方便也能夠更容易地理解會話劫持過程。
2 會話劫持檢測方法
在C從Sa下載文件的過程中,以每隔5 s發送ping包到S,而會話劫持不會識別ping包并對其進行劫持。
圖3顯示了延遲采樣檢測的具體TCP包交換過程。實線箭頭為被會話劫持了的下載過程中的TCP包交換過程,虛線箭頭表示以每隔5 s發送的ping包ICMP交換過程。在C端計算出兩者的RTT值[3,6],為了方便ping RTT和hijacked RTT分別表示ping包的RTT值和會話劫持攻擊后的網絡連接的RTT值。同樣也要注意在實際中從A到路由器R還有一個延遲未能在圖上表現出來。獲得了這兩個RTT特性,經過仿真分析,能夠分辨出鏈路是否被會話劫持攻擊。
3 會話劫持仿真
因為條件限制,無法獲得實際的不可靠路由的會話劫持,所以采用NS-2.28來仿真劫持過程,并通過分析仿真數據的RTT特性來驗證CRD檢測方法的有效性。
3.1 仿真平臺
會話劫持仿真網絡結構如圖4所示,節點0為客戶端C,節點1為劫持攻擊端A,節點2為路由器R,節點3為服務端S。節點2與3之間帶寬為1 bps。在節點2中作路由監控,由節點1會話劫持攻擊。在節點2和3之間,引入了expoo開關信源[7]來仿真實際網絡流量。
開關信源expoo的參數包含packet_size、burst_time、 idle_time 和 rate。圖4所示的仿真網絡的配置參數為A[d02, d23, d1, burst_time, rate]。其中:d02為節點0與2之間的網絡延遲;d23表示節點2與3之間的網絡延遲。當攻擊者劫持節點0與3之間的會話時引入了延遲d1。開關信源的關時間(idle_time)和包大小[packet_size]設置為常數分別為1 s和1 400 Byte,而開時間(burst_time)和比特率(rate)作為參數配置在數組A中。
3.2 仿真數據分析
在圖5、6、8的(a)中,X軸為時間,Y軸為RTT值。圖5、6、8的(b)為RTT直方圖,X軸為RTT值,Y軸為RTT值的統計次數。從圖5(a)和圖8(a)中能看出,ping RTT和hijack RTT并不是同時增大和減小,即不同步,這是由網絡擁塞導致的。但是也能看出兩者的最小值之間的差近似于由攻擊者進行會話劫持而導入的網絡延遲,圖5(a)和圖6(a)中約為4 ms,圖7中約為10ms,圖8(a)中約為20 ms,都近似于每個圖中d1的配置值。圖5(b)中的直方圖看出ping RTT在總測試次數為58中有14次達到最小值,而hijack RTT在總測試次數為58中有17次達到最小值。由于最小值占有相當大的比重,能夠推斷出這些最小值是在鏈路負荷不大,沒有造成擁塞(流量900 kbs<帶寬1000 kbs)的情況下得到的最小值。類似的現象也出現在圖6和7上。
當開關信源expoo的開時間達到29 s,流量達到1 100時,就沒有很大比例的最小值,因此無法用上面辦法推斷會話劫持攻擊。但在假設會話劫持引入的時間d1足夠大,達到20 ms時,從圖8可以看出ping RTT和hijack RTT明顯地分為兩塊沒有重疊的RTT區間。根據此方法也能推斷出會話劫持攻擊。
4 結束語
由于政府和一些組織利用路由器資源設置防火墻[1],他們同樣也可以利用這些資源來作會話劫持攻擊。本文提出一種檢測會話劫持攻擊的方法CRD,使用NS顯示出這種方法能夠鑒別會話攻擊并估計出由攻擊所引入的時延值,但是只能通過長時間的統計觀察才能得出結果,并且在實際網絡中攻擊引入的時延可能是變化的。在以后的工作中,筆者將在實際網絡中進行仿真,改善CRD方法,用來檢測短期的會話劫持攻擊。
參考文獻:
[1]CLAYTON R, MURDOCH S J, WATSON R N M. Ignoring the Great Firewall of China[C]// Proc of the 6th Workshop on Privacy Enhancing Technologies. 2006.
[2]BELLOVIN S. RFC 1948, Defending against sequence number attacks[S]. United Staes:RFC,1996.
[3]YAN Hai-jin, LI Kang, WATTERSON S, et al. Improving passive estimation of TCP round-trip times using TCP timestamps[C]// Proc of IP Operations and Management. 2004:181-185.
[4]JAMMALAMADAKA R C, Van Der HORST T W, METHROTRA S, et al. Delegate: a proxy based architecture for secure website access from an untrusted machine[C]// Proc of ACSAC’06. 2006:57-66.
[5]POSTEL J. RFC,793, Transmission control protocol[S]. 1981.
[6]JIANG Hao, DOVROLIS C. Passive estimation of TCP round-trip times[C]// Proc of ACM SIGCOMM Computer Communication Review. New York:ACM Press,2002:75-88.
[7]FALL K, VARADHAN K. The NS manual (formerly NS notes and documentation)[R]. 2007.