趙景 王浉錕


摘? 要: 隨著網絡技術的飛速發展和各種應用的出現,網絡安全問題成為各種網絡應用需要考慮的頭等大事,在各種欺騙攻擊中,如何防止TCP會話劫持欺騙攻擊成為防御網絡入侵的重點之一。文中闡述了TCP會話劫持的概念,目的是對其產生的原理和造成的危害進行分析,采用實例分析方法,通過對攻擊者進行一次會話劫持攻擊過程的探討,得到目前針對會話劫持攻擊無法從根本上阻止或消除的結論,進一步提出了針對性相應防御策略的結果,減少攻擊的發生。
關鍵詞: 防御策略; TCP會話劫持; 欺騙攻擊; 原理分析; 危害分析; 網絡安全
Abstract: With the rapid development of network technology and the emergence of various applications, the network security has become a top priority for various network applications. In various spoofing attacks, how to prevent TCP session hijacking spoofing attack becomes one of the focuses of the defense against network intrusion. The concept of TCP session hijacking is expounded, so as to analyze the principle it generates and the harm it causes. The discussion of a session hijacking attack process of the attacker is performed by means of the instance analysis method, so that the conclusion that the session hijacking attacks cannot be prevented or eliminated fundamentally is obtained. Furthermore, the corresponding defense strategies are put forward to reduce the attacks′ occurrence.
Keywords: defending strategy; TCP session hijacking; spoofing attack; principle analysis; hazard analysis; network security
0? 引? 言
在Internet上計算機之間進行相互的交流是建立在認證和信任兩個前提之下的,欺騙是社會工程學的一種體現,本質上就是攻擊者針對認證機制的缺陷,冒充合法用戶的身份,通過認證騙取被攻擊者信任的一種攻擊方式,一般情況下,攻擊者將自己偽裝成可合法用戶,從而與被攻擊者進行正常交流,最終攫取被攻擊者的數據或者展開進一步攻擊。TCP會話劫持欺騙是IP欺騙的高級應用,由于其具有不依賴操作系統和能夠無聲無息的竊取機密信息的特點,危害性巨大,越來越受到黑客的青睞。因此,如何防止TCP會話劫持欺騙攻擊就成為防御網絡入侵的重點之一。
1? TCP會話劫持概述及原理
1.1? TCP會話劫持概述
會話劫持是一種結合了嗅探及欺騙技術在內的攻擊手段,就是在一次正常的通信過程中,攻擊者作為第三方參與到其中,或者是在基于TCP的會話里注入額外的信息,或者是將雙方的通信模式從直接聯系變為由攻擊者聯系[1?2]。簡單來說,整個攻擊過程實質就是合法接管一個現有的動態會話過程,黑客通過一個會話劫持過程完成替代已有的合法用戶,成功后,攻擊者就可以監視并控制整個會話的內容。此時,攻擊者可以對一個被劫持的合法用戶(受害者)的通話內容進行記錄并對其進行應答,以便進行下一步的欺騙和攻擊。
1.2? TCP會話劫持的原理
在基本的基于IP地址欺騙過程中,攻擊者并不把合法用戶掉線來作為對被攻擊者的攻擊,而是僅僅偽裝成一個合法用戶,這樣,當被冒充的合法用戶不在線時,攻擊者在整個攻擊過程中就不冒充任何用戶角色,因此攻擊者不會對它發動任何攻擊。但是,在整個會話劫持過程中,攻擊者為了接管整個會話過程,就會非常積極主動地對被冒充的用戶進行攻擊,從而迫使其被冒充的用戶下線,如圖1和圖2所示。一般欺騙只涉及攻擊者和受害者兩個角色[2],被冒充者不扮演任何角色,而在會話劫持中必然會涉及到被冒充者,從攻擊者的角度來看,它是保證劫持成功的協作者,這也是兩者之間最根本的區別。
對于基于TCP連接的可靠性通信來說,序列號是非常重要的,序列號是一個32位計數器,可以有大約4億種的可能性組合,用來通知接收方在收到一個混亂的數據包時如何排列數據包的順序[3?4]。也就是說,序列號記錄了數據包放入數據流的順序,接收方就可以利用序列號告訴發送方哪些數據包已經收到,哪些數據包還未收到,于是發送方就能夠依此重發丟失的數據包。由于發送方和接收方均有數據包的接收和發送問題,因此需要同時存在一個屬于發送方和接收方的序列號。
在進行TCP會話劫持操作時,必須精確地預測主機和目標機之間使用的序列號,這是一件不太容易的事情。但是,在某些平臺上猜測序列號的增量比較容易,由于序列號是隨著傳輸數據字節數遞增的,而且序列號和應答號之間存在明確的對應關系,這使得預測序列號成為可能,只要攻擊者獲取最近的會話數據包,就可以猜測下一次通話中的SEQ和ACK,這一局面是TCP協議固有缺陷造成的,由此帶來的安全威脅也是無法回避的。
1.3? TCP會話劫持的危害
會話劫持分為被動型和主動型兩種[5]。被動型的劫持攻擊首先劫持會話,然后在后方觀察和記錄雙方所有發送和接收的數據;主動型的劫持攻擊總是以首先完成被動型劫持攻擊作為起步,然后尋找動態的會話并接管它,進而攻入目標主機,由于一般需要迫使會話中被冒充方下線,因此一般伴隨拒絕服務攻擊,其難度較被動型攻擊要大。
就其實現原理而言,任何使用Internet進行通信的主機都有可能受到會話劫持攻擊[6?7],會話劫持在理論上是非常復雜的,但是現在產生了簡單適用的會話劫持攻擊軟件,技術門檻的降低導致了很多“少年攻擊者”的誕生。
會話劫持攻擊具有較大的危害性,一個主要的原因是它不依賴于運行哪種操作系統,只要進行一次TCP/IP連接,攻擊者就有可能接管用戶的會話[8]。另一個原因就是它既可以進行積極性的攻擊,獲得進入系統的可能,也可以進行消極的攻擊,在任何人都不知情的情況下竊取會話中的敏感信息。
2? TCP會話劫持過程
2.1? 進行會話劫持攻擊的步驟
攻擊者要完成一次會話劫持攻擊,一般需要以下5個步驟。
1) 發現攻擊目標。對于會話劫持攻擊者而言,要找到一個合適的攻擊目標有兩個關鍵的問題首先需要解決。第一,攻擊者一般希望攻擊目標是一個準予TCP會話連接的服務器,而且服務器最好能同時和眾多客戶主機進行TCP連接會話,因此這對于攻擊者而言意味著更多的攻擊機會;第二,攻擊者是否能夠對數據流進行檢測也是一個比較重要的問題,因為在實施具體攻擊的時候,攻擊者需要對序列號進行猜測[9],這就需要嗅探其之前通信的數據包,對于交換網絡環境,可能還需要使用ARP欺騙。
2) 確認動態會話。確定合適的攻擊目標后,攻擊者要想接管一個會話,就必須找到可以接管的合法連接,與多數其他黑客攻擊方法不同的是,會話劫持攻擊適合在網絡流通量達到高峰時才會發生的。這種選擇具有雙重原因,首先,網絡流通量大時,說明會話很多很活躍,供攻擊者選擇的會話就會很多;其次,網絡流通量越大,則攻擊者被發現的概率就越小。在網絡流通量不大或者用戶連接數量較小的情況下,如果用戶數次掉線,那很有可能引起該用戶的懷疑,容易暴露;但是,如果網絡流通量很大并且有很多用戶進行連接,那么用戶們很有可能忽略掉線后面隱藏的問題,也許只是認為這是由于網絡流通過大而引起的。
3) 猜測序列號。與一次TCP會話相關的三個重要參數是IP地址、端口號和序列[10]。其中,IP地址和端口號的發現比較簡單且在整個會話工程中保持不變,TCP用來辨別正確數據包和錯誤數據包是通過數據包的SEQ/ACK序列號來實現的,而SEQ/ACK序列號是動態的,會隨著時間的變化而改變。因此,黑客要想獲得序列號,可以通過嗅探或者ARP欺騙來截取。首先,黑客先找到攻擊對象(目標機)正在使用的序列號,其次,獲取序列號后,黑客根據序列號機制原理,猜測出下一對SEQ/ACK序列號,與此同時,黑客如果用某種特定方法擾亂合法用戶主機的SEQ/ACK,就會給服務器造成假象,不再信任客戶主機發送的正確數據包。這樣,黑客就可以偽裝成合法用戶的客戶主機,使用截取的合法用戶正確的SEQ/ACK序列號。此時,黑客的攻擊主機就可以與服務器進行合法連接,從而成功搶劫一個會話連接。
4) 使客戶主機下線。當黑客獲取了合法用戶的SEQ/ACK序列號后,就必須使客戶主機離線,從而徹底接管這個合法會話,要讓合法客戶主機離線,一般采用的最簡單方式就是對合法用戶進行拒絕服務攻擊或者分布式拒絕服務攻擊,從而使客戶機不再繼續響應。此時,服務器仍然會繼續發送響應給合法客戶的主機,但是,由于此時黑客已經控制了客戶主機,因此該客戶機器就不再響應。
5) 接管會話。當黑客已經獲取所需要的一切信息數據以后,就可以連續不斷地向服務器發送數據包并且接管整個會話。黑客在整個會話劫持攻擊中,一般會持續不斷地發送信息數據包,進而在受害服務器上建立一個合法賬戶,甚至為了以后輕松進入留下某些“后門”,通過這種方式,黑客無論在任何時候都可以輕松進入系統。
基于這種TCP會話劫持攻擊是一種盲劫持,因為整個會話一直使用的都是原始通信雙方的IP地址和端口信息,雖然攻擊者可以偽裝成合法的客戶機向服務器發送攻擊數據,但服務器的響應包的目的地址仍是合法客戶機的地址。因此,攻擊者要想獲取信息,需要采取ARP欺騙等特殊手段將自身置于中間人的位置,否則將接收不到服務器的任何響應數據。
2.2? 進行會話劫持攻擊的算法
使用Python語言進行會話劫持攻擊的實現思路是,首先使用scapy制造syn泛洪攻擊,然后計算tcp序列號,隨機生成IP地址、端口并發送SYN數據包,最后偽造tcp連接成功后就可以進行攻擊。算法實現流程如圖3所示。
3? 會話劫持攻擊的防御
對于會話劫持攻擊目前還沒有有效的辦法從根本上阻止或消除,這是因為在該攻擊中,攻擊者能夠直接接管合法用戶的會話,如果要避免被攻擊就需要消除這個會話。但是,一旦消除也就意味著禁止了一個合法用戶的連接,這樣也就背離了使用Internet進行連接的本質目的。因此,只能盡可能地減少由黑客進行會話劫持攻擊所帶來的影響和危害。
目前,進行會話劫持攻擊防御的措施一般有以下幾種:
1) 對會話加密。加密技術是可以防范會話劫持攻擊為數不多的方式之一[5]。當黑客不能截取到合法的數據傳輸時,此時要想進行會話劫持攻擊也不是一件簡單的事。因此,任何用來傳輸敏感數據的關鍵連接都必須進行加密。在理想的情況下,網絡上的所有流通都應該被加密,雖然很多用戶都想要一個能滿足自己安全需要的解決方法,但是,因為成本和煩瑣的原因,含有這項保護技術的工具雖然已經面世有很長時間了,卻至今也沒有推廣。
2) 使用安全協議。無論在任何時候,當合法用戶要與一個遠端的服務器進行連接時,尤其是一個從事敏感工作的用戶或者是管理員,都應當使用安全協議進行連接通信。一般來說,像SSH(Secure Shell)這樣的協議或是安全的Telnet都可以使系統免受會話劫持攻擊,此外,從客戶端到服務器的VPN也是很好的選擇。
3) 限制保護措施。為了避免受到會話劫持攻擊,當用戶或管理員所在單位允許從外部網絡上傳輸到單位內部網絡的數據信息越少,則受到會話劫持攻擊的概率就越少,用戶將會越安全。這是個最小化會話劫持攻擊的方法,黑客越難進入系統,那么系統就越不容易受到會話劫持攻擊。在理想情況下,應該阻止盡可能多的外部連接和連向防火墻的連接。大多數用戶雖然能夠做到這一條,限制了引入連接,但是通常又會允許內部用戶用任何協議去連接外網的主機,這樣可以減少敏感會話被攻擊者劫持的可能性。
4? 結? 語
TCP會話劫持欺騙是IP欺騙的高級應用,由于其具有不依賴操作系統和能夠無聲無息的竊取機密信息的特點,危害性巨大,越來越受到黑客的青睞。本文從會話劫持產生的原理出發,闡述了其攻擊過程和防御策略,目前雖然還沒有有效的辦法從根本上阻止或消除,但進行相應的預防可以在一定程度上減少這種攻擊的發生。
參考文獻
[1] 王歡.基于嵌入式設備的網絡安全機制的研究與實現[D].成都:電子科技大學,2016.
[2] 楊澤明.TCP/IP網絡協議棧常見攻擊技術與防范[J].網絡安全技術與應用,2014(3):26.
[3] 向繼,高能,荊繼武.網站欺騙攻擊技術及其防范研究[C]//第二十次全國計算機安全學術交流會論文集.西寧:[s.n.],2005:59?62.
[4] CHRISTIAN Kanamugire.防止跨站腳本攻擊會話劫持的客戶端解決方案研究[D].長沙:中南大學,2012.
[5] 張慶華.網絡安全與黑客攻防寶典[M].北京:電子工業出版社,2007.
[6] 甘剛.網絡攻擊與防御[M].北京:清華大學出版社,2008.
[7] 劉欽.計算機網絡信息安全及其防護對策探討[J].網絡安全技術與應用,2016(11):16.
[8] 王友亮.目前網絡安全技術的缺陷及整合趨勢分析[J].網絡安全技術與應用,2015(12):38?39.
[9] 王宗楠.網絡攻擊技術與網絡安全分析[J].電子技術與軟件工程,2015(12):212.
[10] 錢志遠.基于計算機網絡安全防ARP攻擊的研究[J].通訊世界,2017(1):99?100.