楊皓云,王俊峰 ,劉嘉勇,唐彰國(guó)3,
1.四川大學(xué) 網(wǎng)絡(luò)空間安全學(xué)院,成都 610065
2.四川大學(xué) 計(jì)算機(jī)學(xué)院,成都 610065
3.四川師范大學(xué) 物理與電子工程學(xué)院,成都 610066
作為信息隱藏領(lǐng)域下的一個(gè)分支,基于網(wǎng)絡(luò)協(xié)議的隱蔽通道技術(shù)已經(jīng)是當(dāng)前一個(gè)比較熱門的研究方向。使用網(wǎng)絡(luò)協(xié)議作為載體,利用協(xié)議的字段和語(yǔ)義來(lái)隱藏信息,從而實(shí)現(xiàn)在非授權(quán)情況下的信息傳遞。這種信息傳遞的方式違反了網(wǎng)絡(luò)中的安全傳輸策略,能夠?qū)Ψ阑饓?,入侵檢測(cè)系統(tǒng)等網(wǎng)絡(luò)監(jiān)聽設(shè)備進(jìn)行穿透攻擊[1]。目前基于各類協(xié)議的各種字段的隱蔽通道已經(jīng)是層出不窮。
本文提出了一種基于SSL協(xié)議的隱蔽通道,通過(guò)訪問(wèn)HTTPS服務(wù)來(lái)傳遞秘密信息。在SSL協(xié)議進(jìn)行握手協(xié)商密鑰的過(guò)程中,使用握手報(bào)文的隨機(jī)數(shù)字段來(lái)建立隱蔽域。并設(shè)計(jì)了一種一包一密對(duì)填充數(shù)據(jù)進(jìn)行循環(huán)對(duì)稱加密的算法,使其符合隨機(jī)數(shù)字段的特性,能夠有效抵抗針對(duì)該字段的統(tǒng)計(jì)畫像檢測(cè)。通過(guò)模擬用戶發(fā)送時(shí)延和流量混淆來(lái)平衡流量分布。實(shí)驗(yàn)結(jié)果表明,該隱蔽通道能應(yīng)用在HTTPS 的場(chǎng)景下,在復(fù)雜的網(wǎng)絡(luò)環(huán)境中可靠地傳遞信息,能夠?qū)Ψ阑饓Φ染W(wǎng)絡(luò)監(jiān)聽設(shè)備進(jìn)行穿透,有著較高的傳輸速率,較強(qiáng)的隱蔽性和魯棒性。
隱蔽通道首次在1973 年被Lampson[2]提出,指在系統(tǒng)中,以違反主機(jī)安全策略的方式來(lái)傳遞信息。最初關(guān)注的是系統(tǒng)中程序安全性問(wèn)題,即在未授權(quán)的情況下向其他程序傳遞信息。文獻(xiàn)[1]將網(wǎng)絡(luò)隱蔽通道定義為在網(wǎng)絡(luò)中使用公開的信道以違反通信規(guī)則和安全策略的方式來(lái)傳遞非法的信息。隱蔽通道的雙方可以在網(wǎng)絡(luò)中的公共設(shè)備如網(wǎng)關(guān)、路由器等數(shù)據(jù)包流經(jīng)設(shè)備上建立隱蔽通道的發(fā)送端和接收端來(lái)進(jìn)行數(shù)據(jù)的收發(fā)。應(yīng)用場(chǎng)景也是多種多樣,如內(nèi)網(wǎng)和外網(wǎng)之間的相互訪問(wèn)。場(chǎng)景不同會(huì)導(dǎo)致構(gòu)建隱蔽通道所使用的協(xié)議方法、傳輸速率、魯棒性的不同[3]。
經(jīng)典的網(wǎng)絡(luò)隱蔽通道分為兩類,基于時(shí)間和基于存儲(chǔ)的[3-4]。存儲(chǔ)型隱蔽通道的構(gòu)建思想是把信息附在協(xié)議的特定字段,封裝成正常的數(shù)據(jù)包發(fā)出。如使用TCP協(xié)議和IP 協(xié)議來(lái)構(gòu)建存儲(chǔ)型隱蔽通道,使用IP 協(xié)議的ID號(hào)、初始化序列號(hào)、服務(wù)類型等字段。TCP協(xié)議的發(fā)送序號(hào)、Flags字段、緊急指針和確認(rèn)序號(hào)等字段來(lái)構(gòu)建存儲(chǔ)型隱蔽通道[5]。時(shí)間型隱蔽通道主要是通過(guò)數(shù)據(jù)包之間的時(shí)間特性來(lái)表達(dá)秘密信息。最早通過(guò)發(fā)送特定時(shí)間延遲的數(shù)據(jù)包來(lái)傳遞消息[6],后來(lái)通過(guò)改進(jìn)對(duì)時(shí)間間隔序列進(jìn)行去規(guī)律化,發(fā)送經(jīng)過(guò)統(tǒng)計(jì)收集的時(shí)間間隔,去模擬正常網(wǎng)絡(luò)數(shù)據(jù)包的發(fā)送時(shí)間[7]。
除了兩種經(jīng)典類型的隱蔽通道,后期又出現(xiàn)了許多新型隱蔽通道,新型隱蔽通道的構(gòu)建大都結(jié)合了當(dāng)前的最新協(xié)議和技術(shù)。如適用于P2P 網(wǎng)絡(luò)的存儲(chǔ)型隱蔽通道[8]和基于區(qū)塊鏈技術(shù)的時(shí)間型隱蔽通道[9]。這一類新型隱蔽通道主要是運(yùn)用了最新技術(shù)來(lái)達(dá)到穿透的目的,但隱藏方法還是基于傳統(tǒng)的隱藏方法。而基于FTP 協(xié)議和HTTP協(xié)議的隱蔽通道,這類新型隱蔽通道不同于存儲(chǔ)型和時(shí)間型。其構(gòu)建思想是利用通信雙方在通信時(shí)產(chǎn)生語(yǔ)法上的差異來(lái)表達(dá)信息,而這些語(yǔ)法的差異不會(huì)影響正常的通信。這類隱蔽通道多基于應(yīng)用層的協(xié)議?;贔TP 協(xié)議的隱蔽通道使用對(duì)不同目錄的訪問(wèn)序列來(lái)表達(dá)信息[10-11]?;贖TTP協(xié)議的隱蔽通道使用HTTP協(xié)議中請(qǐng)求頭中字段的位置和序列來(lái)表達(dá)信息[12]。
隱蔽通道構(gòu)建技術(shù)的研究主要分為兩條路,一是針對(duì)原有的隱蔽通道進(jìn)行改進(jìn)。二是使用新的技術(shù)或者協(xié)議來(lái)構(gòu)建一種未使用過(guò)的隱蔽通道。對(duì)協(xié)議的選取思路分為兩點(diǎn):一是該協(xié)議有良好的開放性,即較高的使用率。二是該協(xié)議的實(shí)際應(yīng)用場(chǎng)景多樣,可應(yīng)用于內(nèi)外網(wǎng)等眾多復(fù)雜的網(wǎng)絡(luò)環(huán)境中。傳統(tǒng)隱蔽通道自身存在一些問(wèn)題,如基于TCP和IP協(xié)議的存儲(chǔ)型隱蔽通道,這類協(xié)議在網(wǎng)絡(luò)中被大量使用,同時(shí)也是防火墻和監(jiān)聽設(shè)備高度檢測(cè)的協(xié)議,協(xié)議本身隱蔽性和穿透性并不強(qiáng),面對(duì)復(fù)雜網(wǎng)絡(luò)環(huán)境穩(wěn)定性也不高。并且協(xié)議使用的隱蔽字段有特定的含義和取值范圍,簡(jiǎn)單進(jìn)行信息隱藏會(huì)破壞字段的特性,構(gòu)造字段特性也相對(duì)復(fù)雜。本文選擇使用SSL協(xié)議來(lái)構(gòu)建隱蔽通道,協(xié)議本身有較高的開放度,并且屬于安全類協(xié)議,有較高的隱蔽性和穿透性。選擇隨機(jī)數(shù)高隱蔽域字段,易滿足字段特性且不影響通信,十分適合用來(lái)隱藏秘密信息。
SSL 協(xié)議[13]的全稱是 Secure Sockets Layer 安全套接層協(xié)議,為網(wǎng)絡(luò)通信提供安全性保障。SSL協(xié)議提供的服務(wù)主要有:一是通信雙方的身份認(rèn)證,防止三方假冒。二是傳輸數(shù)據(jù)加密,確保機(jī)密性。三是數(shù)據(jù)完整性驗(yàn)證,確保數(shù)據(jù)不被篡改。SSL協(xié)議的基本結(jié)構(gòu)由記錄層和握手層構(gòu)成。底層的記錄層為SSL記錄協(xié)議,高層握手層包括應(yīng)用數(shù)據(jù)協(xié)議、SSL 握手協(xié)議、SSL 告警協(xié)議、SSL修改密文協(xié)議。SSL記錄協(xié)議建立在TCP和IP協(xié)議之上,SSL 握手協(xié)議被封裝在SSL 記錄協(xié)議中,通信雙方使用握手協(xié)議進(jìn)行算法密鑰的協(xié)商、身份認(rèn)證等工作。SSL協(xié)議體系結(jié)構(gòu)如圖1所示。
圖1 SSL協(xié)議體系結(jié)構(gòu)
SSL 協(xié)議的整個(gè)握手過(guò)程是由客戶端發(fā)起的向服務(wù)器進(jìn)行請(qǐng)求協(xié)商,雙方進(jìn)行安全參數(shù)的協(xié)商,建立并初始化通信的環(huán)境。協(xié)商使用的協(xié)議版本,加密密鑰算法,進(jìn)行客戶端和服務(wù)器的身份認(rèn)證等工作。只有通過(guò)SSL協(xié)議的握手通信協(xié)商,才能建立安全可靠的通信環(huán)境來(lái)進(jìn)行數(shù)據(jù)傳輸。
文獻(xiàn)[14]將隱蔽通道與SSL 協(xié)議相結(jié)合,提出了一種傳輸層的混合隱蔽通道,但實(shí)際思想還是將秘密信息嵌于TCP協(xié)議字段,但嵌入前使用SSL協(xié)議進(jìn)行加密操作從而提高隱蔽性。文獻(xiàn)[15-16]基于隧道的思想,在正常完成SSL握手后進(jìn)行加密數(shù)據(jù)的傳輸,把秘密信息經(jīng)過(guò)加密處理后填充到數(shù)據(jù)報(bào)文的負(fù)載部分。這種方法存在的問(wèn)題是,利用隧道技術(shù)將信息填充到了本該傳輸數(shù)據(jù)的負(fù)載部分,這種傳輸?shù)男袨楸旧硎潜┞兜?,隱蔽性較低,而隱蔽通道的本質(zhì)是將信息填充到本來(lái)不用于傳輸數(shù)據(jù)的字段。并且網(wǎng)絡(luò)檢測(cè)設(shè)備也會(huì)針對(duì)其加密的負(fù)載數(shù)據(jù)進(jìn)行檢測(cè),對(duì)基于SSL、SSH、VPN等加密流量可通過(guò)負(fù)載隨機(jī)性、流量統(tǒng)計(jì)、主機(jī)行為、數(shù)據(jù)分組大小等方法進(jìn)行惡意加密流量的識(shí)別[17]。信息隱藏技術(shù)與隧道技術(shù)之間的區(qū)別在于通信行為的可見性,為提高其隱蔽性,隱藏?cái)?shù)據(jù)通信的行為,本文選擇使用SSL 協(xié)議頭部的高隱蔽字段來(lái)進(jìn)行信息隱藏,而不直接采用加密通信。
SSL協(xié)議通信可分為握手和數(shù)據(jù)傳輸兩步,握手過(guò)程并沒有建立完整的連接和產(chǎn)生數(shù)據(jù)通信行為,所以在握手過(guò)程中來(lái)傳遞秘密信息相比于數(shù)據(jù)傳輸過(guò)程,能更好地隱匿其行為。SSL 隱蔽通道的構(gòu)建思想是在SSL客戶端和服務(wù)器進(jìn)行握手密鑰協(xié)商的過(guò)程中傳遞信息,使用SSL 協(xié)議握手協(xié)商的第一個(gè)報(bào)文進(jìn)行隱蔽通道的構(gòu)建,第一個(gè)報(bào)文為客戶端的請(qǐng)求協(xié)商報(bào)文,傳遞客戶端生成的隨機(jī)數(shù)和一系列協(xié)商信息??蛻舳税衙孛苄畔㈦[藏在第一個(gè)報(bào)文的隨機(jī)數(shù)字段。修改隨機(jī)數(shù)字段的值不會(huì)影響后期的通信,只要滿足隨機(jī)數(shù)的特性就能使信息得到充分的隱藏。偽造的報(bào)文可以發(fā)往任意HTTPS 服務(wù)器,接收端可以安置在流量過(guò)往的任意節(jié)點(diǎn)上,通過(guò)特定的算法來(lái)標(biāo)識(shí)SSL 隱蔽通道的流量,而不影響數(shù)據(jù)包的正常通信,使得接收端的使用更為靈活。接收端根據(jù)客戶端發(fā)出的第一個(gè)SSL 隱蔽通道數(shù)據(jù)包進(jìn)行協(xié)商并同步,根據(jù)客戶端預(yù)先協(xié)商好的規(guī)則進(jìn)行數(shù)據(jù)的發(fā)送和接收。
SSL 隱蔽通道構(gòu)建方法為偽造Client_Hello 握手協(xié)商報(bào)文,該報(bào)文主要由3 個(gè)部分構(gòu)成:第一個(gè)部分為握手協(xié)議的類型,由1 個(gè)字節(jié)組成,取值不同代表不同的握手協(xié)議。第二部分使用3 個(gè)字節(jié)來(lái)表示以字節(jié)為單位的報(bào)文長(zhǎng)度。剩下的所有部分為內(nèi)容字段,內(nèi)容字段包含版本號(hào)、隨機(jī)數(shù)、會(huì)話ID長(zhǎng)度、會(huì)話ID、加密套件長(zhǎng)度、加密套件列表、壓縮方法長(zhǎng)度、壓縮方法、擴(kuò)展字段長(zhǎng)度、擴(kuò)展字段等,具體報(bào)文格式如圖2所示。
圖2 SSL握手報(bào)文格式
將秘密信息隱藏在Client_Hello握手報(bào)文的32 Byte Random 隨機(jī)數(shù)字段中。該隨機(jī)數(shù)由客戶端生成,后期將使用該隨機(jī)數(shù)來(lái)生成用于通信加密的對(duì)稱密鑰。該字段被修改不會(huì)影響報(bào)文本身。整個(gè)隱蔽通信過(guò)程只涉及到SSL 握手的前2 步和5 個(gè)報(bào)文,具體通信過(guò)程如圖3所示。
圖3 SSL隱蔽通信過(guò)程
雖然數(shù)據(jù)直接填充不影響報(bào)文本身,但會(huì)破壞該字段的本質(zhì),即破壞隨機(jī)數(shù)的隨機(jī)性。并且傳輸?shù)奈募ǔS蓄^文件或者一些特殊的標(biāo)識(shí),如PDF 文件的頭部4 Byte為0x25504446用ASCII碼表示就是%PDF。傳輸過(guò)程中如果直接填充明文,很容易就能被檢測(cè)出該字段在傳遞特定數(shù)據(jù)。并且隨機(jī)數(shù)字段內(nèi)數(shù)據(jù)并不隨機(jī),對(duì)該字段數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析其隨機(jī)性,就能夠檢測(cè)出報(bào)文的隨機(jī)數(shù)字段存在異常。所以為了使填充的數(shù)據(jù)更符合字段的性質(zhì),即使數(shù)據(jù)具有隨機(jī)性,需要使用某種算法對(duì)數(shù)據(jù)進(jìn)行處理使其變?yōu)閭坞S機(jī)數(shù)。接收端提取數(shù)據(jù)后使用相同的規(guī)則解密就可以得到原始信息。
如圖4所示,為了讓相同的信息每次經(jīng)過(guò)處理后能變成不同的偽隨機(jī)數(shù),每個(gè)報(bào)文都將使用一個(gè)不同的密鑰進(jìn)行加密。并且為了讓加密后的數(shù)據(jù)更具有隨機(jī)性,本文設(shè)計(jì)了一種循環(huán)對(duì)稱加密算法來(lái)進(jìn)行消息的處理。隨機(jī)數(shù)字段為32 Byte,保留前4 Byte作為消息加密的對(duì)稱密鑰,該密鑰由隨機(jī)數(shù)生成器生成,僅使用后面28 Byte 來(lái)傳輸數(shù)據(jù)。將后面的28 Byte 分為7 段信息,每一段為 4 Byte。32 Byte 隨機(jī)數(shù)字段的第 1~4 Byte 為生成的隨機(jī)對(duì)稱加密密鑰,第5~8 Byte 為第一段信息。使用1~4 Byte的密鑰對(duì)5~8 Byte的信息進(jìn)行對(duì)稱加密,加密后的密文填充到5~8 Byte,再用加密后的5~8 Byte即第一段密文信息作為后面9~12 Byte的對(duì)稱密鑰進(jìn)行加密,依次循環(huán)直到7段信息28 Byte加密完成。經(jīng)過(guò)變換后的28 Byte為最終傳遞的密文信息。由于每個(gè)報(bào)文初始化時(shí)都將生成不同的隨機(jī)對(duì)稱密鑰,所以就算對(duì)于相同信息,也能經(jīng)過(guò)處理后變?yōu)椴煌膫坞S機(jī)數(shù),從而增強(qiáng)SSL 隱蔽通道的隱蔽性,使隨機(jī)數(shù)字段具有隨機(jī)性,能夠有效抵御針對(duì)該字段的統(tǒng)計(jì)分析檢測(cè)。
圖4 循環(huán)對(duì)稱加密算法
SSL 協(xié)議在實(shí)際中多為HTTPS 提供服務(wù),HTTPS(Hypertext Transfer Protocol Secure)超文本安全傳輸協(xié)議就是將HTTP和SSL相結(jié)合,使用SSL協(xié)議來(lái)保障HTTPS 服務(wù)器與客戶端之間的通信安全。本文使用HTTPS 服務(wù)來(lái)承載SSL 協(xié)議的隱蔽通道,偽裝成HTTPS的客戶端和服務(wù)器來(lái)進(jìn)行隱蔽通信。由于短時(shí)間內(nèi)產(chǎn)生大量的握手報(bào)文相比正常握手時(shí)的通信流量來(lái)說(shuō)是異?,F(xiàn)象,采集相關(guān)流量進(jìn)行統(tǒng)計(jì)分析就能發(fā)現(xiàn)其異常。所以需要平衡通信時(shí)的流量,主要通過(guò)兩種方式實(shí)現(xiàn):一是通過(guò)增加時(shí)間成本來(lái)平衡流量。主要方法是通過(guò)收集正常用戶訪問(wèn)HTTPS 服務(wù)器的時(shí)間間隔,在數(shù)據(jù)包發(fā)送時(shí)隨機(jī)選擇時(shí)延進(jìn)行發(fā)送,來(lái)模擬用戶訪問(wèn)并均衡流量。二是通過(guò)流量混淆的方式,在進(jìn)行隱蔽通信的過(guò)程中,使用同一客戶端或者不同客戶端進(jìn)行正常HTTPS的訪問(wèn),從而實(shí)現(xiàn)流量的混淆。
實(shí)驗(yàn)設(shè)計(jì)了一組SSL隱蔽通道的驗(yàn)證場(chǎng)景,將隱蔽通道的客戶端放置在處于內(nèi)網(wǎng)環(huán)境的任意一臺(tái)主機(jī)。并設(shè)計(jì)了兩類隱蔽通道的接收端,第一類為內(nèi)網(wǎng)用戶訪問(wèn)互聯(lián)網(wǎng)公共HTTPS 服務(wù)器,在與互聯(lián)網(wǎng)公共HTTPS服務(wù)器建立SSL 握手連接的過(guò)程中偽造數(shù)據(jù)包來(lái)傳遞秘密信息。這類隱蔽通道的接收端放置在數(shù)據(jù)包的流經(jīng)設(shè)備上,如主機(jī)或者路由器。隱蔽通道的接收端對(duì)來(lái)往的流量進(jìn)行分析和篩選,識(shí)別偽造的SSL數(shù)據(jù)包并解析,解密重組還原秘密信息。第二類使用同一隱蔽通道客戶端來(lái)進(jìn)行數(shù)據(jù)的發(fā)送,但沒有數(shù)據(jù)包流經(jīng)設(shè)備的使用權(quán)限,通過(guò)搭建一個(gè)公網(wǎng)的私人HTTPS 服務(wù)器作為隱蔽通道的接收端。這類隱蔽通道的接收端偽裝成HTTPS 服務(wù)器,并且同時(shí)提供正常的HTTPS 服務(wù)和SSL隱蔽通道的接收工作,從所有訪問(wèn)HTTPS服務(wù)的主機(jī)流量中進(jìn)行隱蔽流量的篩選和識(shí)別,對(duì)秘密信息進(jìn)行提取重組和還原,具體實(shí)驗(yàn)驗(yàn)證場(chǎng)景如圖5所示。
OpenSSL[18]是一套功能強(qiáng)大的、開源的基于密碼學(xué)的工具集合,通過(guò)它可以設(shè)計(jì)和實(shí)現(xiàn)SSL 協(xié)議,進(jìn)行安全的通信,以及證書和密鑰的管理。OpenSSL 包含了Crypto加密算法庫(kù)和數(shù)字證書的模塊、SSL各版本協(xié)議的實(shí)現(xiàn)模塊等,并提供了許多方便的API接口供編程開發(fā)人員使用。目前,在市場(chǎng)上有許多安全領(lǐng)域的應(yīng)用軟件都是依賴OpenSSL的庫(kù)來(lái)進(jìn)行開發(fā)的,使用OpenSSL的API 接口或者對(duì)源碼進(jìn)行改造來(lái)開發(fā)基于特定場(chǎng)景或使用特定加密算法的安全通信軟件。
實(shí)驗(yàn)使用OpenSSL 1.0.2k-fips在Linux的系統(tǒng)下進(jìn)行SSL 隱蔽通道客戶端和接收端的構(gòu)建。將需要傳遞的秘密信息按照每28 Byte 一個(gè)數(shù)據(jù)包進(jìn)行分段,并對(duì)每一段信息進(jìn)行循環(huán)對(duì)稱加密處理使其隨機(jī)化。最后進(jìn)行數(shù)據(jù)填充并偽裝成握手報(bào)文,隨機(jī)添加用戶訪問(wèn)時(shí)延進(jìn)行發(fā)送。實(shí)驗(yàn)成功偽裝成訪問(wèn)HTTPS服務(wù)器的客戶端,并將秘密信息隱藏于握手報(bào)文的隨機(jī)數(shù)字段。HTTPS服務(wù)器成功默認(rèn)為正常的SSL握手通信,并試圖與客戶端繼續(xù)進(jìn)行通信協(xié)商。但SSL 隱蔽通道只涉及到握手通信的前5個(gè)報(bào)文,在客戶端收到服務(wù)器證書進(jìn)行證書驗(yàn)證的環(huán)節(jié)便終止,不需要建立完整的SSL連接。
實(shí)驗(yàn)成功構(gòu)建了兩類隱蔽通道的接收端。第一種實(shí)驗(yàn)租用了一臺(tái)外網(wǎng)的云服務(wù)器,在服務(wù)器上搭建HTTPS 服務(wù)的環(huán)境,在提供正常HTTPS 服務(wù)的同時(shí)進(jìn)行SSL隱蔽通道數(shù)據(jù)的接收,成功將隱蔽通道接收端偽裝成一臺(tái)HTTPS服務(wù)器。第二種通過(guò)訪問(wèn)互聯(lián)網(wǎng)公共HTTPS 服務(wù)器,向其發(fā)送偽造的報(bào)文進(jìn)行SSL 握手協(xié)商,將隱蔽通道接收端放置在報(bào)文流經(jīng)設(shè)備上。實(shí)驗(yàn)中使用一臺(tái)Linux雙網(wǎng)卡主機(jī)作為局域網(wǎng)主機(jī)共同的一個(gè)出口轉(zhuǎn)發(fā)設(shè)備,在該主機(jī)上部署防火墻進(jìn)行數(shù)據(jù)包的路由轉(zhuǎn)發(fā),并且搭建了開源的Snort 入侵檢測(cè)系統(tǒng)模擬一個(gè)安全的環(huán)境以測(cè)試SSL 隱蔽通道的穿透能力。實(shí)驗(yàn)結(jié)果表明SSL隱蔽通道能夠順利穿透審計(jì)監(jiān)聽設(shè)備,并能夠在流量經(jīng)過(guò)的主機(jī)設(shè)備上進(jìn)行秘密信息的接收。
圖5 SSL隱蔽通道驗(yàn)證場(chǎng)景
隱蔽通道構(gòu)建工作完成后需要對(duì)其進(jìn)行分析與評(píng)估。針對(duì)時(shí)間型和存儲(chǔ)型隱蔽通道通常會(huì)從隱蔽性、可靠性、信道容量三個(gè)方面進(jìn)行評(píng)估[19]。隱蔽性是指隱蔽通道的數(shù)據(jù)包是否可以穿透網(wǎng)絡(luò)中的審計(jì)監(jiān)聽設(shè)備,不被發(fā)現(xiàn)也不會(huì)產(chǎn)生告警,并且能針對(duì)相應(yīng)的檢測(cè)方法具有抗檢測(cè)的性能??煽啃允侵鸽[蔽通道能夠在復(fù)雜的網(wǎng)絡(luò)環(huán)境中可靠地傳輸數(shù)據(jù),不會(huì)受到網(wǎng)絡(luò)中噪聲、延時(shí)、丟包的影響。信道容量是指隱蔽通道在一段時(shí)間內(nèi)能傳輸?shù)男畔⒘?,可使用一個(gè)報(bào)文隱藏的信息數(shù)量或者隱蔽通道在網(wǎng)絡(luò)中的傳輸速率作為信道容量的評(píng)定指標(biāo)。實(shí)驗(yàn)同樣根據(jù)這3 個(gè)指標(biāo)來(lái)對(duì)構(gòu)建的基于SSL 協(xié)議隱蔽通道進(jìn)行評(píng)估。
本文使用SSL 協(xié)議作為隱蔽通道的承載協(xié)議。由于SSL協(xié)議本身就是一個(gè)基于安全傳輸?shù)膮f(xié)議,普通的防火墻和NAT設(shè)備基本不會(huì)對(duì)其進(jìn)行過(guò)濾和攔截。并且基于SSL 協(xié)議的HTTPS 服務(wù)在目前應(yīng)用十分普及,已經(jīng)成為了主流的業(yè)務(wù),大部分瀏覽網(wǎng)頁(yè)的操作都會(huì)涉及到HTTPS 服務(wù)。經(jīng)測(cè)試,短時(shí)間瀏覽網(wǎng)頁(yè)就會(huì)產(chǎn)生大量的SSL 相關(guān)流量。HTTPS 服務(wù)所使用的443 端口也具有較高的開放度,所以就協(xié)議本身而言具備隱蔽性的特定。
并且實(shí)驗(yàn)通過(guò)隨機(jī)數(shù)字段的數(shù)據(jù)進(jìn)行變換處理來(lái)增強(qiáng)SSL 隱蔽通道的隱蔽性。本文設(shè)計(jì)了一種一包一密鑰對(duì)28 Byte 數(shù)據(jù)進(jìn)行分段循環(huán)加密的方法,使得隨機(jī)數(shù)字段填充的數(shù)據(jù)更符合該字段本身隨機(jī)數(shù)的性質(zhì),對(duì)秘密信息本身也是一種隱藏。為了驗(yàn)證循環(huán)加密后的隨機(jī)數(shù)字段的數(shù)據(jù)是否具有隨機(jī)性,設(shè)計(jì)了一組對(duì)比驗(yàn)證實(shí)驗(yàn)。分別收集了三種隨機(jī)數(shù)字段的數(shù)據(jù):第一種為正常SSL握手報(bào)文的隨機(jī)數(shù),通過(guò)正常瀏覽網(wǎng)頁(yè)采集了980個(gè)SSL協(xié)議的Client_Hello握手報(bào)文,提取報(bào)文中的隨機(jī)數(shù)字段。第二種和第三種為使用同一傳輸文件,分別采取直接明文傳輸和經(jīng)過(guò)循環(huán)對(duì)稱加密后傳輸兩種方式。采集傳輸過(guò)程中偽造握手報(bào)文的隨機(jī)數(shù)字段。采集后對(duì)3組數(shù)據(jù)進(jìn)行相同處理,采用16進(jìn)制字符串的形式來(lái)表示隨機(jī)數(shù),并進(jìn)行字符統(tǒng)計(jì),統(tǒng)計(jì)0~F 這16 個(gè)字符出現(xiàn)的次數(shù),最后計(jì)算出每個(gè)字符的出現(xiàn)頻率。三組數(shù)據(jù)的字符出現(xiàn)頻率如表1 所示,圖6 更為直觀地表現(xiàn)出三組隨機(jī)數(shù)字段數(shù)據(jù)的字符頻率差異。
表1 三種字符頻率對(duì)比
圖6 字符頻率對(duì)比圖
通過(guò)圖表的對(duì)比分析,可以看出正常的隨機(jī)數(shù)字段的16 個(gè)字符的出現(xiàn)頻率十分相似,具有隨機(jī)性。而未經(jīng)過(guò)任何處理的數(shù)據(jù)的字符頻率波動(dòng)明顯,在使用了循環(huán)對(duì)稱加密后字符頻率同正常隨機(jī)數(shù)的字符頻率相趨近。分析結(jié)果表明使用循環(huán)對(duì)稱加密算法能夠使數(shù)據(jù)更具有隨機(jī)性,符合該字段的特性,能夠有效地抵抗對(duì)該字段進(jìn)行統(tǒng)計(jì)分析檢測(cè)。
圖7為采集的正常用戶發(fā)送握手報(bào)文的間隔,通過(guò)模擬用戶的正常瀏覽網(wǎng)頁(yè)時(shí)延來(lái)發(fā)送數(shù)據(jù)包,從而平衡流量。加入流量混淆技術(shù),使用同一客戶端或者不同客戶端進(jìn)行正常HTTPS服務(wù)的訪問(wèn)。在進(jìn)行SSL隱蔽通信的過(guò)程中產(chǎn)生正常的SSL 通信流量來(lái)進(jìn)行流量的混淆,從而提高隱蔽性。
圖7 正常用戶發(fā)送SSL握手包間隔
可靠性要求隱蔽通道能在復(fù)雜的網(wǎng)絡(luò)環(huán)境中把秘密信息從客戶端可靠地傳遞給接收端,而不會(huì)出現(xiàn)信息的丟失、亂序等情況。由于SSL協(xié)議作為構(gòu)建協(xié)議本身就是一個(gè)可靠的傳輸協(xié)議,是基于TCP可靠傳輸協(xié)議基礎(chǔ)上的,所以協(xié)議本身是具備可靠傳輸?shù)臋C(jī)制,能夠確保把秘密消息準(zhǔn)確有序地傳遞給接收端。通過(guò)實(shí)驗(yàn)也證明數(shù)據(jù)能從內(nèi)網(wǎng)主機(jī)準(zhǔn)確完整地傳遞到互聯(lián)網(wǎng)環(huán)境的主機(jī)中。
信道容量表達(dá)了隱蔽通道在單位時(shí)間內(nèi)傳遞數(shù)據(jù)的信息量。SSL隱蔽通道的本質(zhì)是存儲(chǔ)型隱蔽通道,使用SSL 握手協(xié)議的隨機(jī)數(shù)字段來(lái)作為秘密消息的填充字段。該字段為32 Byte,前4 Byte作為循環(huán)對(duì)稱加密的密鑰,剩余的28 Byte 來(lái)進(jìn)行數(shù)據(jù)的填充。所以每個(gè)報(bào)文可以承載28 Byte秘密信息。表2對(duì)經(jīng)典的存儲(chǔ)型隱蔽通道的容量進(jìn)行了比較,除去本該用于數(shù)據(jù)傳輸?shù)淖侄魏腿我馓畛涞淖侄?,使用具有特定意義的字段來(lái)進(jìn)行信息隱藏,統(tǒng)計(jì)TCP、IP[5]、ICMP[20]協(xié)議中可用于構(gòu)建隱蔽通道的字段,以字節(jié)為單位作為隱藏容量,選取協(xié)議中最高容量的字段進(jìn)行對(duì)比。SSL 隱蔽通道相比于經(jīng)典的TCP/IP 存儲(chǔ)型隱蔽通道在容量上有較大提升,通過(guò)模擬用戶發(fā)送時(shí)延后的隱蔽通道的平均傳輸速率能到達(dá)464 bit/s,即58 Byte/s。
表2 存儲(chǔ)型隱蔽通道容量比較
本文提出了一種基于SSL協(xié)議的隱蔽通道。在SSL協(xié)議進(jìn)行握手密鑰協(xié)商的過(guò)程中來(lái)傳遞秘密信息,使用握手報(bào)文中的隨機(jī)數(shù)字段來(lái)傳遞信息。并且設(shè)計(jì)了一種一包一密的循環(huán)對(duì)稱加密算法來(lái)增強(qiáng)該字段數(shù)據(jù)的隨機(jī)性,能夠有效抵抗該字段的統(tǒng)計(jì)畫像檢測(cè)。模擬用戶發(fā)送時(shí)延和流量混淆技術(shù)來(lái)增加流量層面的隱蔽性。本文提出的方法也有一定的局限性,如果傳輸大文件,依然會(huì)產(chǎn)生大量的流量。所以未來(lái)的工作將繼續(xù)從隱蔽性入手,在流量的層面去研究如何平衡流量,可借助分布式等技術(shù),例如將傳輸一個(gè)文件的任務(wù)分布給多個(gè)客戶端,從而平衡流量分布,以此提高隱蔽通道在流量層面上的隱蔽性和抗檢測(cè)能力。并且由于SSL 隱蔽通道僅僅是模仿SSL 的握手過(guò)程,并沒有進(jìn)行完整HTTPS業(yè)務(wù)即應(yīng)用數(shù)據(jù)的交互,所以后期對(duì)SSL的隱蔽通道進(jìn)行研究的重點(diǎn)依然是如何去完善整個(gè)隱蔽通信的通信流程。