本站小編為你精心準備了TCP協議的網絡隱蔽通道研究參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。
《計算機工程與科學雜志》2014年第六期
1網絡隱蔽通道的基本原理
早期對隱蔽通道的定義只局限于操作系統內部,研究的重點也是針對操作系統的安全。隨著網絡技術的快速發展,隱蔽通道已經被應用到網絡技術中。由于網絡協議在設計時存在漏洞,如網絡協議的首部存在冗余字段,而網絡設備對這些字段的限制比較寬松,由此可以通過精心的構造,利用這些字段實現隱蔽通信,就形成了網絡隱蔽通道[5]。因此,廣義地講,網絡隱蔽通道是指各種利用非正常的通信手段在網絡中傳遞信息的通道。圖1為隱蔽通道模型。
2建立網絡隱蔽通道的方法
建立隱蔽通道的方法一般就是利用網絡傳輸協議設計中存在的一些不嚴密的地方來隱藏信息,以躲過網絡安全防護系統和防火墻系統,達到傳輸非法信息的目的[6]。由于防火墻或入侵檢測系統往往只注重對數據部分的檢測,而忽略了對首部息的檢測,因此就可以從以下途徑來建立隱蔽通道:一是利用tcp/IP協議的首部中的一些很少使用或不使用的域來隱藏信息;二是可以利用數據傳輸時數據包頭中的一些必須強制填充的域(如IP數據包頭中的源地址、目的地址和TCP數據包頭中的源端口域、目的端口域、序列號域等)來隱藏信息;此外,還可以利用第三方合法主機中轉建立隱蔽通道,利用Ping命令隱藏信息建立隱蔽通道等方法。
3基于TCP協議首部的隱蔽通道
3.1TCP協議首部隱蔽通道設計思想基于TCP協議模型網絡隱蔽通道的設計思想主要是利用該模型中的協議來進行的,而雙方的通信方式則是“合法的”,通信前雙方約定好用以隱藏或解析隱蔽信息的規則,然后發送端依據該規則對要發送的隱蔽信息進行編碼、偽裝、發送,接收端收到經過編碼的信息后,便會依據發送端產生的規則來解析隱蔽信息。TCP協議首部就是用于隱蔽信息的首選目標。圖2為TCP協議首部的結構,主要包括源端口和目標端口字段、確認序列號、首部長度、標志位、窗口、檢驗和及緊急指針等字段。在TCP協議首部的這些字段中,很多字段在通常情況下根本不用或很少使用,可以用來隱藏信息。本文選擇序列號字段和確認序列號字段作為隱蔽通道的載體,主要有兩方面的原因:一是它們的長度達到32bit,可以隱藏更多信息,同時數據位很多,往往難以檢測;二是它們的值在數據傳輸過程中的變化具有規律性,接收端還原數據比較容易。假設要在網絡中的客戶端A和服務端B之間構建隱蔽通道,還需要借助第三方受信的Web服務器C。利用TCP序列號來實現數據隱蔽傳輸的方法是:首先客戶端A構造自己的SYN數據包,向受信的Web服務器C發出建立連接的請求,而服務端B也捕獲到該SYN包,就偽造Web服務器C向客戶端A發送返回的SYN+ACK數據包,并在TCP序列號字段中攜帶加密的隱秘信息;客戶端A從服務端B偽造的Web服務器返回數據包中捕獲隱秘信息或指令解析并執行,從而實現了將信息從客戶端A到服務端B之間的隱蔽傳輸。由于在整個數據通信過程中并沒有形成任何一個完整的TCP三次握手,并且返回的SYN+ACK包可看作對每個SYN包的響應,因此可以達到規避防火墻,實現隱藏信息的目的。
3.2隱蔽通道的構建利用TCP協議首部構建隱蔽傳輸通道,主要就是要在發送端生成包數據包時將隱秘信息嵌入,然后在接收端捕獲含有隱秘信息的數據,并將其解碼出來。由于在數據傳輸過程中使用了第三方受信的Web服務器,隱秘信息是隱藏在向Web服務器發送請求的數據包中,又通過接收方偽造Web服務器向發送方返回應答數據包,同時也將隱秘信息隱藏在返回的應答數據包中。在隱秘信息傳輸過程中沒有形成完整的三次握手,因此不會給正常通信造成影響,也不會引起防火墻的反應。而將隱秘信息嵌入TCP數據包首部的序列號字段和確認序列號字段,這兩個字段長度均為32bit,因而可以隱藏更多信息,同時數據位多,更加難以檢測。
3.2.1數據包的生成和發送生成網絡數據包的方法有基于原始套接字的方法、基于WinPcap的方法和基于Libnet的方法等[7]。本文采用基于WinPcap的方法,具體包括兩個部分:(1)在客戶端生成獲取網關MAC地址的ARP請求數據包,目的是為了獲取本機、服務端以及網關的MAC地址。由于局域網中ARP數據包大量存在,且機器中的動態ARP表需要不斷更新,正常的ARP數據包不會引起防火墻等設備的懷疑,因此只需要生成正常的ARP請求數據包即可。使用Winsock庫提供的SendARP()函數能十分方便地生成ARP請求數據包,獲取與IP地址對應的物理地址。(2)生成手工制作的TCP數據包,各字段符合TCP協議的定義,發起對受信的Web服務器的建立連接請求,在服務端則偽造Web服務器,返回嵌入了隱秘信息的SYN+ACK數據包到客戶端。
3.2.2數據包的捕獲客戶端捕獲數據包后,需要對其進行分解,對每層協議進行解析,然后讀取所傳送的數據內容,最后再對數據進行解碼和處理。捕獲數據包的方法也有多種,對應發送端,也采用了基于WinPcap的方法。其步驟為:首先使用pcap_findalldevs()獲得主機的網絡設備列表,然后使用pcap_open_live()打開網絡設備,使用函數pcap_compile()編譯過濾規則和使用函數pcap_setfilter()設置過濾規則。之后使用pcap_loop()和pcap_next_ex()捕獲數據包。捕獲到數據包后就可以對其進行分解和解析,將TCP首部中含有隱秘信息的序列號或確認序列號的內容取出,經解密后就得到隱秘信息。
4基于TCP首部的隱蔽通道系統的實現
實現基于TCP首部的隱蔽通道就是采用第3節中所述的思想和方法,在發送端偽造TCP協議發送包含有隱秘信息數據包,在接收端對接收的數據包中的隱蔽信息進行相應處理。
4.1系統的總體構架系統的功能原理如圖3所示。通過數據包生成技術,客戶端將隱藏信息加密后嵌入TCP協議首部的序列號字段或確認號字段,對可信的第三方Web服務器發起連接請求。服務端則偽造Web服務器向客戶端返回SYN+ACK數據包。通過數據包捕獲技術,服務端從客戶端發往Web服務器的請求數據包中捕獲隱秘信息并還原。客戶端則從服務端偽造Web服務器的返回數據包中捕獲隱秘信息或指令解析并執行。
4.2系統功能及實現
系統功能模塊系統可分為數據包生成模塊、數據包捕獲模塊、管理與控制模塊和指令解析模塊,如圖4所示。其中,數據包的生成和捕獲模塊利用多線程技術實現,執行時不會造成MFC界面假死。管理與控制模塊負責處理網絡設備的獲取與控制。指令解析模塊對傳遞的信息進行顯示和執行指令。秘密信息經加密后嵌入數據包發往公開信道,接收端在公開信道捕獲數據包并對其進行解密。
5實驗結果及分析
經過實驗,通信功能方面,雙方互發的消息都能正確接收。控制功能方面,能夠通過在客戶端發送命令來實現對服務端的控制。經測試,該系統在WindowsXPSP2和Windows7操作系統中運行良好。實驗結果見表1和表2。實驗結果表明,該系統不僅可以實現信息傳輸和遠程控制的功能,而且能夠成功躲避各種安全防護系統的防范。
6結束語
網絡隱蔽通道的存在違背了系統安全策略,給網絡信息安全帶來了極大的隱患。從攻擊者角度出發去檢驗網絡安全防護系統的性能,是消除安全隱患的一條良好途徑。通過對網絡隱蔽通道及相關技術進行研究,提出了基于TCP首部中的序列號和確認號字段設置網絡隱蔽通道的方法,通過與第三方受信的Web服務器進行通信,偽造Web服務器的響應來構建隱蔽通道。設計并實現了原型系統。經過實驗測試,系統能夠成功繞過多種殺毒軟件和防火墻,傳輸隱蔽信息和實現遠程控制。這將對提高網絡安全防護系統的性能提供很好的決策依據。
作者:張令通羅森林單位:云南大理學院工程學院北京理工大學信息安全與對抗技術實驗室