施 帆 王軼駿 薛 質(zhì) 姜開達(dá)
(上海交通大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 上海 200240)
在網(wǎng)絡(luò)普及帶來便利的同時,一些非法的網(wǎng)絡(luò)傳輸需要進(jìn)行控制。為防止非法的信息傳輸造成信息泄密,監(jiān)管者需要對異常的流量進(jìn)行審查過濾,阻止非法信息的網(wǎng)絡(luò)傳輸以保障信息安全。Tor是當(dāng)前最常用的匿名通信網(wǎng)絡(luò)之一,其通信協(xié)議具有強(qiáng)大的逆蹤性使得通信雙方無法知曉對方的真實(shí)網(wǎng)絡(luò)地址[1],因此充斥著大量的非法信息資源,同時還能夠被攻擊者用于建立與命令控制服務(wù)器的隱蔽傳輸信道[2]。網(wǎng)絡(luò)監(jiān)管方會對管理范圍內(nèi)的Tor網(wǎng)絡(luò)流量進(jìn)行識別和阻攔,一方面防止個人用戶訪問非法的網(wǎng)絡(luò)資源,另一方面防止內(nèi)網(wǎng)中可能存在的滲透行為發(fā)生或重要信息的泄露。
由于Tor沒有將協(xié)議設(shè)計(jì)重點(diǎn)放在如何掩蓋用戶使用Tor網(wǎng)絡(luò)的事實(shí)上,原生的Tor協(xié)議具有一定的顯著特征。何高峰等[3]提出了基于Tor的TLS指紋特征和報文長度分布的檢測方法,利用Tor的密碼套件、證書序列號、起效時間和定長數(shù)據(jù)包等固定特征識別Tor流量;Kwon等[4]基于數(shù)據(jù)包往來特征和連接建立時長,依據(jù)Tor通信協(xié)議特有的連接握手方式和鏈路切換進(jìn)行檢測。這些固有特征使得當(dāng)前在工程上部署對Tor流量的檢測識別已經(jīng)較為成熟。
為了彌補(bǔ)Tor協(xié)議在上述方面的不足,Tor社區(qū)通過部署代理網(wǎng)橋節(jié)點(diǎn)以隱藏或破壞原始Tor協(xié)議的特征,通過對原始Tor流量的編碼混淆以在技術(shù)上增加檢測的難度。但是目前各網(wǎng)橋技術(shù)因存在一定局限性而被陸續(xù)挖掘出檢測特征,文獻(xiàn)[6,17,27]中歸納了Tor及相關(guān)隱蔽網(wǎng)橋的檢測特征。
檢測方在利用黑特征檢測非法協(xié)議之外,一些企業(yè)網(wǎng)絡(luò)管理員還會對TLS等加密連接的通信方證書進(jìn)行記錄與校驗(yàn),部署強(qiáng)制中間人審查[7]以及對通信方的白名單規(guī)則過濾,使得直接向網(wǎng)橋建立TLS連接并使用加密信道轉(zhuǎn)發(fā)Tor網(wǎng)絡(luò)包易被監(jiān)管者發(fā)現(xiàn)。一些企業(yè)安全管理人員因此認(rèn)為白名單檢測機(jī)制足以阻擋非法數(shù)據(jù)的傳輸。
本文設(shè)計(jì)并實(shí)現(xiàn)了能夠自適應(yīng)當(dāng)前網(wǎng)絡(luò)環(huán)境特征的擬態(tài)網(wǎng)橋(Self-Adaptive Mimicry Bridge,SAMB),能基于用戶使用環(huán)境動態(tài)確定特征和擬態(tài)規(guī)則。SAMB采用當(dāng)前常見的HTTP協(xié)議進(jìn)行擬態(tài)混淆,其動態(tài)自適應(yīng)擬態(tài)協(xié)議能夠避免當(dāng)前主流網(wǎng)橋協(xié)議靜態(tài)特征被二次發(fā)現(xiàn)的問題,同時也將論證當(dāng)前基于特征的對特定流量的檢測技術(shù),即使是使用白名單規(guī)則部署,也仍然存在一定的檢測盲區(qū)和缺陷。
當(dāng)前Tor的網(wǎng)橋協(xié)議設(shè)計(jì)主要集中于傳輸層和應(yīng)用層。盡管在隱蔽信道方面有部分工作聚焦在更底層的協(xié)議或是字段時序上[8-9],但是由于數(shù)據(jù)的攜帶效率較低而不適用較大數(shù)據(jù)量的隱蔽傳輸場景。
圖1為Tor網(wǎng)橋部署架構(gòu),用戶試圖與訪問目標(biāo)即Tor的節(jié)點(diǎn)進(jìn)行數(shù)據(jù)傳輸,管理者將在網(wǎng)絡(luò)邊界如網(wǎng)關(guān)上部署檢測系統(tǒng)。網(wǎng)橋分為客戶端與服務(wù)器兩部分,分別位于檢測者監(jiān)管區(qū)域內(nèi)和區(qū)域外。網(wǎng)橋的目標(biāo)是在客戶端上將用戶發(fā)送的原始數(shù)據(jù)包執(zhí)行編碼混淆,并在服務(wù)器上進(jìn)行譯碼恢復(fù),以繞過檢測者部署的檢測系統(tǒng),成功完成用戶預(yù)期的隱蔽通信。當(dāng)前主流的Tor網(wǎng)橋技術(shù)分為流量混淆、流量擬態(tài)、隧道技術(shù)三大類型。
圖1 Tor網(wǎng)橋部署架構(gòu)
流量混淆技術(shù)將數(shù)據(jù)包內(nèi)容加密混淆,使得處理后的數(shù)據(jù)包內(nèi)容隨機(jī)化,以此破壞原始協(xié)議的數(shù)據(jù)包內(nèi)容特征。
當(dāng)前已有實(shí)際工程部署的混淆技術(shù)有ScrambleSuit[10]和Obfs4[11]等,其中Obfs4作為Tor的主流網(wǎng)橋之一,能夠在對數(shù)據(jù)包進(jìn)行加密混淆的同時以拆分或填充的方式隨機(jī)化包的長度,并在發(fā)送時隨機(jī)化發(fā)送時間間隔。由于其加密混淆的實(shí)現(xiàn)原理為流異或運(yùn)算,因此處理速度快、計(jì)算開銷較低,針對單純的黑名單規(guī)則檢測非常有效。
Wang等[5]提出基于計(jì)算數(shù)據(jù)報文熵值的方法來檢測此類純隨機(jī)化混淆技術(shù)。被Obfs4等混淆技術(shù)隨機(jī)化后的數(shù)據(jù)包雜亂程度遠(yuǎn)高于普通網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)包,而且混淆流量不具備TLS等加密協(xié)議應(yīng)有的密鑰交換與身份認(rèn)證過程?;煜夹g(shù)生成的隨機(jī)化數(shù)據(jù)包由于不具備任何協(xié)議特征本身可以作為一個特征用于檢測。
當(dāng)前最有效的隧道傳輸技術(shù)之一是Tor網(wǎng)橋中的Meek[12]。Meek采用域前置技術(shù),將受審查限制的URL置于TLS協(xié)議的HTTP Host Header字段,將TLS中的前置SNI字段設(shè)置為可信任的域名,從而檢測者能看到的僅是前置SNI字段中的受信任域名,而可信任服務(wù)器解析出真實(shí)URL后將數(shù)據(jù)包轉(zhuǎn)發(fā)至真實(shí)通信目標(biāo)地址。
Wang等[5]在實(shí)驗(yàn)中論證基于ACK頻率特征的方法可以檢測Meek協(xié)議流量。而另一方面,由于域前置技術(shù)經(jīng)常被用于網(wǎng)絡(luò)攻擊等其他非法用途上,云服務(wù)器廠商正試圖阻止域前置技術(shù)的被濫用。谷歌已于2018年4月禁止了其云服務(wù)上的域前置技術(shù)[13],此類傳輸技術(shù)因過于依賴服務(wù)提供商的特性而欠缺通用性,并在今后的適用空間會越加狹窄。
流量擬態(tài)是指將將黑名單協(xié)議偽裝成其他協(xié)議以繞過審查檢測。FTE[13]是Tor曾經(jīng)常用的流量擬態(tài)技術(shù)之一,可以在最大長度允許的情況下將任意輸入字符序列轉(zhuǎn)換成符合指定的正則表達(dá)式規(guī)則的字符串。通過將任意輸入數(shù)據(jù)包基于HTTP數(shù)據(jù)包的正則規(guī)則偽裝變形后輸出,將Tor流量擬態(tài)成HTTP流量以試圖繞過檢測。
在實(shí)際應(yīng)用中FTE生成的擬態(tài)流量與正常HTTP流量存在以下主要差異:
1) URL長度與熵值。FTE生成包中的URL因需攜帶實(shí)際負(fù)載,長度明顯高于普通數(shù)據(jù)包;由于不具備可讀特征,字符串的雜亂程度高于正常狀況,導(dǎo)致字段熵值過高。Wang等[5]基于URI的熵識別的方法,在實(shí)驗(yàn)中達(dá)到了100%的識別率。
2) 協(xié)議字段的不匹配性。由于FTE只是擬態(tài)了HTTP的正則規(guī)則特征,從而被擬態(tài)協(xié)議中多數(shù)字段都不具有實(shí)際意義。
3) 協(xié)議的語義性。靜態(tài)正則特征使得生成的擬態(tài)數(shù)據(jù)包都具有固定樣式,例如客戶端與服務(wù)器之間單一重復(fù)的Get請求與HTTP 200響應(yīng)來回并不符合正常的流量特征[20]。
Dyer等設(shè)計(jì)了可編程網(wǎng)絡(luò)混淆系統(tǒng)Marionette[14]以優(yōu)化上述問題。其在FTE擬態(tài)基礎(chǔ)上使用狀態(tài)機(jī)模擬HTTP的語義狀態(tài),增加擬態(tài)的靈活性,使生成流量在協(xié)議語義上具有一定隨機(jī)變動而更接近真實(shí)情況。但是Marionette并沒有將工作重點(diǎn)放在熵值對抗上,并且使用單一規(guī)則文件屬于靜態(tài)規(guī)則特征,在較長時間分析中仍能提取到檢測特征。
根據(jù)先前的工作研究,隱蔽傳輸技術(shù)的突破點(diǎn)如下:
1) 增加混淆規(guī)則的動態(tài)性,避免在混淆時引入固定特征。Shahbak等[15]通過各網(wǎng)橋協(xié)議的專有指紋特征在實(shí)驗(yàn)中有效識別檢測出了Tor的各常用網(wǎng)橋流量。提升混淆的變化性可有效加強(qiáng)檢測難度。
2) 提升特征擬態(tài)的深度。檢測系統(tǒng)通常需要面向海量流量數(shù)據(jù),采用的檢測維度主要為直觀淺顯的特征。相對地,混淆方需要處理的數(shù)據(jù)少,通過少量的額外計(jì)算開銷可以大幅提高檢測所需的復(fù)雜度。
3) 考慮混淆時網(wǎng)絡(luò)環(huán)境的差異。部分檢測系統(tǒng)采用白名單特征,通用的混淆方式難以適用于所有應(yīng)用場景。例如用戶主機(jī)中不同瀏覽器、訪問目標(biāo)系統(tǒng)語言等特征或不同主機(jī)中能夠出現(xiàn)的正常網(wǎng)絡(luò)協(xié)議的差異。
綜上,隱蔽傳輸技術(shù)可以通過在客戶端增加復(fù)雜性,依賴當(dāng)前網(wǎng)絡(luò)環(huán)境的流量特征自適應(yīng)生成混淆特征,從而加大被檢測的難度。本文設(shè)計(jì)基于網(wǎng)絡(luò)環(huán)境自適應(yīng)的動態(tài)規(guī)則特征擬態(tài)方法,將流量擬態(tài)偽裝工作的核心聚焦在對當(dāng)前網(wǎng)絡(luò)環(huán)境的流量特征提取與學(xué)習(xí)上,取代當(dāng)前單一靜態(tài)規(guī)則的擬態(tài)或混淆方法。鑒于多數(shù)情況下各檢測方案中存在如HTTP等白名單明文協(xié)議,本文將重點(diǎn)探討與實(shí)現(xiàn)對此部分協(xié)議的自適應(yīng)擬態(tài)偽裝,以試圖繞過當(dāng)前檢測機(jī)制。
SAMB基于當(dāng)前網(wǎng)絡(luò)環(huán)境中的真實(shí)流量特征預(yù)測該環(huán)境下正常數(shù)據(jù)包的特征,并以此對隱蔽傳輸數(shù)據(jù)進(jìn)行擬態(tài)偽裝。
圖2是SAMB網(wǎng)橋客戶端的總體架構(gòu)設(shè)計(jì),共分?jǐn)?shù)據(jù)包特征提取、特征學(xué)習(xí)預(yù)測和擬態(tài)執(zhí)行三個主要模塊。圖2中的白色與黑色箭頭分別表示自適應(yīng)特征學(xué)習(xí)與數(shù)據(jù)包發(fā)送擬態(tài)過程中的數(shù)據(jù)流向,虛線箭頭表示網(wǎng)橋客戶端數(shù)據(jù)包接收流程。接收過程中的數(shù)據(jù)解碼采用通用方法,與具體的擬態(tài)規(guī)則無關(guān),不依賴于預(yù)測特征的輸入。
圖2 SAMB客戶端總體架構(gòu)圖
數(shù)據(jù)包特征提取模塊將對當(dāng)前環(huán)境的進(jìn)出數(shù)據(jù)包進(jìn)行搜集,過濾并提取所需擬態(tài)協(xié)議樣本的流量特征。
特征學(xué)習(xí)與預(yù)測模塊根據(jù)提取到的真實(shí)流量協(xié)議特征,分析擬態(tài)特征規(guī)則,生成預(yù)測特征并輸出到特征模板隊(duì)列。
擬態(tài)執(zhí)行模塊異步讀取特征模板隊(duì)列中的預(yù)測特征,對需要隱蔽傳輸?shù)牧髁炕煜用?。最終生成的擬態(tài)流量先放入發(fā)送隊(duì)列,并基于給定的間隔時間發(fā)送至網(wǎng)橋服務(wù)器。
SAMB采用HTTP作為擬態(tài)目標(biāo)協(xié)議,數(shù)據(jù)包特征提取模塊更適合作為瀏覽器插件過濾提取并處理網(wǎng)頁訪問過程中的HTTP流量。本文使用火狐瀏覽器插件HAR Export Trigger[25],在Firefox 43.0上將用戶在瀏覽器中的網(wǎng)頁訪問流量以HAR格式保存至本地,并提供給后續(xù)模塊處理。保存的HAR文件中將包含或可推算得到所需要的特征信息。特征學(xué)習(xí)與預(yù)測模塊將以上信息作為輸入,基于馬爾可夫狀態(tài)模型挖掘該環(huán)境下正常用戶的網(wǎng)頁訪問數(shù)據(jù)包特征,預(yù)測后續(xù)可能會產(chǎn)生的正常流量數(shù)據(jù)包特征作為輸出。
SAMB基于當(dāng)前網(wǎng)絡(luò)環(huán)境中的真實(shí)流量特征,推斷預(yù)測該環(huán)境下正常數(shù)據(jù)包的特征,以此對隱蔽傳輸數(shù)據(jù)進(jìn)行擬態(tài)偽裝。本節(jié)將介紹SAMB的自適應(yīng)特征學(xué)習(xí)方法和流程。
SAMB擬態(tài)網(wǎng)橋自適應(yīng)學(xué)習(xí)以下數(shù)據(jù)包特征:
1) 數(shù)據(jù)包長度。不經(jīng)混淆的Tor流量具有大量定長數(shù)據(jù)包[18],隨機(jī)化混淆產(chǎn)生的數(shù)據(jù)包長度仍然具有最小長度等可辨別特征[5]。正常通信協(xié)議的數(shù)據(jù)包長度在時序上也應(yīng)服從一定分布特征而非完全隨機(jī)化。
2) 數(shù)據(jù)包負(fù)載熵值?;煜驍M態(tài)后的數(shù)據(jù)包因不可讀而熵值高于正常數(shù)據(jù)包。檢測方也可通過特定時序上的數(shù)據(jù)包熵值進(jìn)行辨別正常TLS加密協(xié)議與混淆協(xié)議[5,20]。
3) 協(xié)議字段與語義的合法性。正常協(xié)議中會帶有特定固有字段,并且與服務(wù)器之間的通信狀態(tài)也可作為被檢測的特征[20,26]。
4) 發(fā)包間隔時間。Tor流量在數(shù)據(jù)包之間存在時間特征[4]。Lashkari等[21]基于流持續(xù)時間、報文間隔時間等多項(xiàng)特征維度識別Tor流量,并取得一定效果。
相關(guān)檢測工作還有圍繞其他深層特征維度的分析,如文獻(xiàn)[22-24]使用基于大量維度的機(jī)器學(xué)習(xí)算法。盡管這些算法模型在實(shí)驗(yàn)中都取得了較高的準(zhǔn)確度,但在工程應(yīng)用中因?yàn)閿?shù)據(jù)集規(guī)模小、擴(kuò)展性差,所以其真實(shí)部署效果有待驗(yàn)證[17]。本文只對以上檢測最常用特征進(jìn)行處理,其他維度的特征混淆將在未來工作中進(jìn)一步擴(kuò)展。
SAMB自適應(yīng)特征學(xué)習(xí)流程如下:
(1) 根據(jù)采集到的HAR文件根據(jù)訪問目標(biāo)劃分分組;
(2) 對同一訪問目標(biāo)的分組計(jì)算其平均請求包熵值,建立HTTP狀態(tài)和請求包大小預(yù)測模型。
在完成特征學(xué)習(xí)后,生成預(yù)測特征的流程如下:
(1) 隨機(jī)從已保存的預(yù)測模型中選取一個模型;
(2) 按時序預(yù)測該組通信中的HTTP請求方式和響應(yīng)狀態(tài)直到預(yù)測到HTTP請求方式為結(jié)束狀態(tài),即得到該序列的預(yù)測長度;
(3) 根據(jù)請求包長度組的馬爾可夫模型預(yù)測每個請求數(shù)據(jù)包的長度;
(4) 根據(jù)熵值分布設(shè)置請求包的平均熵值;
(5) 將預(yù)測的數(shù)據(jù)包的具體序列緩存至特征隊(duì)列中供后續(xù)模塊使用。
不同的網(wǎng)頁后臺邏輯的差異化設(shè)計(jì)將表現(xiàn)出不同的數(shù)據(jù)包特征,因此特征學(xué)習(xí)預(yù)測將對不同子域名的網(wǎng)站分別提取特征。圖3是特征序列分組的示意圖,HAR Export Trigger插件會將用戶在瀏覽器中不同頁面的訪問流量分別保存在一個HAR文件中并存儲至指定目錄,SAMB將根據(jù)這些文件中請求數(shù)據(jù)包的高頻Host字段確定對應(yīng)訪問目標(biāo),并將同一目標(biāo)的所有HAR文件作為后續(xù)特征學(xué)習(xí)預(yù)測的一組輸入數(shù)據(jù)。
圖3 基于HOST子域名的特征序列分組
定義數(shù)據(jù)包的一組特征序列為用戶在瀏覽器的一個頁面中使用網(wǎng)頁服務(wù)所產(chǎn)生的數(shù)據(jù)包特征的有序集合,即瀏覽器頁面創(chuàng)建至關(guān)閉的整個過程中產(chǎn)生的數(shù)據(jù)包特征按產(chǎn)生時間順序排列的集合。一個HAR文件對應(yīng)一組特征序列。
對于特征序列中的請求數(shù)據(jù)包中Host字段,從頂級域名起往前匹配至第一個非通用域名后綴為止,作為該請求數(shù)據(jù)的訪問網(wǎng)站域名,以屏蔽子域名的差別。在訪問一個網(wǎng)頁時除了收發(fā)來自網(wǎng)頁服務(wù)器的數(shù)據(jù)包外,還可能會伴隨一定數(shù)量的CDN節(jié)點(diǎn)的數(shù)據(jù)包,因此無法僅依據(jù)訪問最頻繁的域名來識別訪問目標(biāo),故選取特征序列分組中出現(xiàn)頻率最高的三個域名一起作為該特征分組的訪問目標(biāo)標(biāo)簽,用于標(biāo)識該特征序列分組對應(yīng)的訪問目標(biāo)。
1) HTTP協(xié)議語義特征擬態(tài)。SAMB網(wǎng)橋在Marionette使用狀態(tài)機(jī)模型模擬真實(shí)環(huán)境下HTTP數(shù)據(jù)包請求與響應(yīng)狀態(tài)序列的基礎(chǔ)之上,基于當(dāng)前環(huán)境歷史流量的協(xié)議狀態(tài)預(yù)測來確定擬態(tài)數(shù)據(jù)包協(xié)議的狀態(tài)轉(zhuǎn)移,從而增加擬態(tài)流量的真實(shí)性,減少靜態(tài)特征被檢測發(fā)現(xiàn)的可能。
SAMB使用馬爾可夫模型表示數(shù)據(jù)包請求方式和相應(yīng)狀態(tài)的轉(zhuǎn)移關(guān)系,依據(jù)數(shù)據(jù)包在一組特征序列分組的出現(xiàn)時序與前一響應(yīng)包的狀態(tài)來預(yù)測下一請求包的請求方式,依據(jù)出現(xiàn)時序和當(dāng)前請求包的請求方式預(yù)測對應(yīng)響應(yīng)包的狀態(tài)。如圖4所示,使用馬爾可夫模型表示該狀態(tài)轉(zhuǎn)移關(guān)系,圖中每一節(jié)點(diǎn)表示請求包方式或響應(yīng)包狀態(tài),每一節(jié)點(diǎn)都只和前一節(jié)點(diǎn)狀態(tài)有關(guān)。
圖4 HTTP數(shù)據(jù)包狀態(tài)值的馬爾可夫模型
上述基于前一節(jié)點(diǎn)的狀態(tài)次序來預(yù)測下一節(jié)點(diǎn)狀態(tài)的方法,是考慮到訪問同一網(wǎng)站時瀏覽器發(fā)起請求資源的順序因服務(wù)端的固有設(shè)計(jì)邏輯而相對固定,而且在一些異常情況發(fā)生時也會有相似的處理流程。例如:在有些業(yè)務(wù)處理中遇到404錯誤狀態(tài)后會立即結(jié)束,而一些可能會用其他地址的資源代替;有些網(wǎng)站加載資源時可能會有重定向或使用本地緩存操作,使得初始的數(shù)據(jù)包狀態(tài)出現(xiàn)差異。
圖4中的馬爾可夫模型中各狀態(tài)轉(zhuǎn)移矩陣的定義為:
(1)
(2)
2) 請求包長度預(yù)測。SAMB同樣采用馬爾可夫模型預(yù)測客戶端向服務(wù)器發(fā)送的請求包數(shù)據(jù)長度。先將數(shù)據(jù)包長度劃分聚類后,通過預(yù)測請求包長度的所屬類別確定預(yù)測長度。
在實(shí)驗(yàn)中觀測發(fā)現(xiàn),一次HTTP服務(wù)過程中請求包的長度會出現(xiàn)聚集效應(yīng),即在一定時間內(nèi)連續(xù)多個請求包的長度固定或僅有極小幅度偏差。例如圖5是某一正常HTTP特征序列分組的請求包大小分布,橫坐標(biāo)為請求包次序,縱坐標(biāo)表示請求包長度。可觀察到該特征序列分組的請求包分別在750和1 500字節(jié)處出現(xiàn)聚集。這一般出現(xiàn)在加載網(wǎng)頁時對多個同一類資源文件的請求,如向服務(wù)器請求網(wǎng)頁中的各圖片資源。此類請求包一般具有同樣的結(jié)構(gòu),且資源文件的URI也相似,使得連續(xù)請求包的大小固定。
圖5 一正常HTTP特征序列分組的請求包大小分布
由于同一訪問目標(biāo)的各頁面設(shè)計(jì)相似,特征序列分組中請求包長度聚集處較為類似,且多數(shù)網(wǎng)站的訪問請求包長度一般聚集在2至3處。在特征學(xué)習(xí)階段,SAMB采用算法1將給定的同一訪問目標(biāo)的所有特征序列分組基于請求包大小執(zhí)行簡單聚類,以標(biāo)識出上述聚集效應(yīng)顯著的數(shù)據(jù)包。
簡單聚類的算法的目標(biāo)是將給定的特征序列分組請求包長度劃分為出現(xiàn)頻率最高的若干類和其他。給定一個請求包長度值,尋找均值距其最小的類別,并判斷該類別的均值和極值是否超過設(shè)定的最大比例α和β,若不存在符合條件的類別則新建一個新的類別,并將該長度值作為該類別初始元素。α和β參數(shù)用于控制類別的上下界范圍大小,值越大則產(chǎn)生的類別跨度越大,最終劃分的總類別數(shù)量越小。在算法1中動態(tài)調(diào)整該參數(shù)可以控制所得到的類別數(shù)量以及出現(xiàn)頻率最高兩類中元素數(shù)量占總體的比例。如果在多次嘗試后無法得到合適的α和β以滿足所定需求,則丟棄該特征序列分組數(shù)據(jù)。
SAMB進(jìn)一步依據(jù)歷史狀態(tài)轉(zhuǎn)移預(yù)測擬態(tài)數(shù)據(jù)包的請求包長度類別?;谙惹皟蓚€請求包的長度類別預(yù)測下一個類別。在特征學(xué)習(xí)過程中計(jì)算同一訪問目標(biāo)的請求包長度類別條件概率如下:
0≤i,j,m≤3
(3)
式中:φk表示第i個請求包長度類別,φk=0至2分別表示算法1中的三種類別;定義φ-1和φ-2的值為3表示初始狀態(tài)。在確定預(yù)測數(shù)據(jù)包長度的類別后,根據(jù)特征學(xué)習(xí)時對應(yīng)類別組中長度分布的均值和方差使用高斯分布預(yù)測具體數(shù)值,將該預(yù)測值寫入預(yù)測特征序列中。
算法1請求包長度的分類算法
輸入:請求包長度陣列Ln,其中Li是第i個請求包的長度。
輸出:標(biāo)簽陣列Mn,其中Mi是第i個包的長度類別。
1.C←φ
2.fori=1:ndo
5.c.element.add(i)
6.else
7.c 8.c.element.add(i) 9.C.append(c) 10.endif 11.endfor 12.ifC.size<3then 13. (α,β)←0.9×(α,β) 14.gototop 15.endif 17.ifc1.size+c2.size 18. (α,β)←1.1×(α,β) 19.gototop 20.endif 21.Mn←{CLUSTER_TAG_OTHER(2)} 22.foriinc1.elementdo 23.Mi←CLUSTER_TAG_1(0) 24.endfor 25.foriinc2.elementdo 26.Mi←CLUSTER_TAG_2(1) 27.endfor 28.returnMn; 隱蔽傳輸數(shù)據(jù)的實(shí)際負(fù)載將附加在請求字段和POST數(shù)據(jù)中。但在實(shí)驗(yàn)中發(fā)現(xiàn)HTTP的請求包中POST方法使用頻率較低,隱蔽傳輸數(shù)據(jù)主要附加在GET方法中的頭部字段。 特征學(xué)習(xí)模塊統(tǒng)計(jì)正常環(huán)境HTTP請求中各字段的出現(xiàn)頻率,篩選出固定字段、可變字段、自定義字段三類。其中固定字段如User-Agent、Connection等幾乎必定出現(xiàn)且值固定,保存這些字段和值用于在擬態(tài)包中重放;可變字段為高頻出現(xiàn)但值經(jīng)常變化的字段,保存這些字段和出現(xiàn)值作隨機(jī)化重放;自定義字段為出現(xiàn)過但頻率極低的自定義協(xié)議字段,用于擬態(tài)中附加實(shí)際傳輸數(shù)據(jù)。這一過程用于確定模仿當(dāng)前環(huán)境類似的HTTP數(shù)據(jù)包所必需的字段和可用于攜帶數(shù)據(jù)的自定義字段,生成數(shù)據(jù)包擬態(tài)模板記錄擬態(tài)數(shù)據(jù)包中的冗余添加字段。 特征預(yù)測序列提供了擬態(tài)完成后的數(shù)據(jù)包大小、熵值、請求方式、所需具備的固定字段與值、可依附數(shù)據(jù)的自定義字段名、期望服務(wù)器回復(fù)數(shù)據(jù)包的響應(yīng)狀態(tài)和期望數(shù)據(jù)包發(fā)送間隔時間。擬態(tài)執(zhí)行模塊將按圖6的流程分別使用以上預(yù)測提供的特征將原始隱蔽傳輸數(shù)據(jù)包擬態(tài)偽裝。 圖6 擬態(tài)執(zhí)行流程圖 擬態(tài)執(zhí)行模塊根據(jù)預(yù)測數(shù)據(jù)包長度、熵值和需要附加的固定字段長度推算出該次擬態(tài)中可以攜帶的最大負(fù)載數(shù)據(jù)長度;將原始數(shù)據(jù)包拆分或填充至推算長度,并執(zhí)行熵值混淆編碼;根據(jù)擬態(tài)特征構(gòu)造與服務(wù)器通信協(xié)商的數(shù)據(jù)包頭部,以通知服務(wù)器擬態(tài)返回包時所需信息;將編碼后數(shù)據(jù)拆分后附加在可依附的自定義字段中,并按一定順序增添固定字段,生成擬態(tài)數(shù)據(jù)包;最后根據(jù)預(yù)測時延將數(shù)據(jù)包發(fā)往服務(wù)器。 SAMB通過調(diào)整編碼字符空間大小來控制輸出熵值。在FTE使用正則規(guī)則的編碼方式的基礎(chǔ)上進(jìn)行簡化,將固定字段與編碼可變字段分離,以提供更高效和靈活的編碼方式。 編碼效果等同于限定正則規(guī)則為[α-β]*的FTE編碼,其中α與β為可讀英文字符或數(shù)字。假設(shè)編碼字符空間數(shù)量為m,編碼首先將輸入數(shù)據(jù)以字節(jié)二進(jìn)制轉(zhuǎn)化成整型大數(shù)結(jié)構(gòu)X;隨后將X轉(zhuǎn)換為m進(jìn)制,并用可讀字符一一代替。解碼則是同樣的反向進(jìn)制轉(zhuǎn)換。 當(dāng)輸入數(shù)據(jù)字節(jié)均勻隨機(jī)分布時,編碼輸出的熵值完全由字符空間大小決定。假設(shè)編碼字符空間大小為m,且所有字符服從均勻分布出現(xiàn)。給定編碼輸出長度為n字節(jié)和所需控制熵值E,則編碼字符空間m和輸入長度最大字節(jié)數(shù)k計(jì)算式分別如下: m=2E (4) (5) 在完成負(fù)載數(shù)據(jù)編碼后,在數(shù)據(jù)前附加自定義頭部實(shí)現(xiàn)服務(wù)器與客戶端的混淆通信?;煜龜?shù)據(jù)包頭部定義為如圖7所示的10個字節(jié)的定長結(jié)構(gòu),其中除了前2個字節(jié)的熵節(jié)字段外,后續(xù)字段在發(fā)送過程中為編碼后的狀態(tài)。 圖7 混淆數(shù)據(jù)包頭部定義 頭部中的熵節(jié)為2個可讀字符,用以確定熵值編碼參數(shù)。SAMB網(wǎng)橋客戶端與服務(wù)器通過事先約定該字段的參數(shù)解析方法,確定后續(xù)數(shù)據(jù)熵混淆時所使用的編碼字符空間。對于給定的2個熵節(jié)字段字符x1和x2,首先按照字符在可讀字符中的出現(xiàn)次序得到y(tǒng)1和y2,將其以特定進(jìn)制拼接得后取其二進(jìn)制的前11位作為有效參數(shù)。其中低6位表示編碼字符空間大小,高5位表示編碼起始字符(即最高支持32種編碼起始字符)。根據(jù)該兩個參數(shù)可以確定編碼所用的字符空間,并對后續(xù)數(shù)據(jù)采用相應(yīng)編碼或解碼方式。 解碼后的magic字段用于校驗(yàn)數(shù)據(jù)包;總分片與當(dāng)前分片記錄單個數(shù)據(jù)包的分片重組信息;原始長度記錄該混淆包的實(shí)際負(fù)載長度,用于去掉最后分片末尾的填充字節(jié);序列號用于標(biāo)識原始數(shù)據(jù)包的序號,同一序列號的包的總分片字段值應(yīng)為一致。最后一個字段在客戶端發(fā)送的擬態(tài)請求包中為標(biāo)識服務(wù)器應(yīng)發(fā)送的擬態(tài)響應(yīng)包狀態(tài),由特征序列決定;在服務(wù)器發(fā)送的擬態(tài)響應(yīng)包中為處理錯誤碼,標(biāo)識流程的處理結(jié)果是否正常,或者是否要求客戶端盡快發(fā)送下一個請求包以響應(yīng)回復(fù)傳輸數(shù)據(jù)。 圖8所示為網(wǎng)橋服務(wù)器端收發(fā)數(shù)據(jù)流程。服務(wù)器在接收擬態(tài)數(shù)據(jù)包后,按順序提取請求包中自定義字段的值并拼接,依據(jù)4.2節(jié)的方式提取熵值信息并解碼校驗(yàn)。保存當(dāng)前鏈路和數(shù)據(jù)包頭部中的響應(yīng)狀態(tài)的對應(yīng)關(guān)系,按分片和實(shí)際長度信息重組完一個完整的原始數(shù)據(jù)包后發(fā)送至隱蔽通信目標(biāo)。 圖8 網(wǎng)橋服務(wù)器收發(fā)數(shù)據(jù)流程 隱蔽通信鏈路可能是異步雙工,但是需擬態(tài)的HTTP協(xié)議在多數(shù)情況下需要客戶端與服務(wù)器之間發(fā)送數(shù)據(jù)包的配對。當(dāng)服務(wù)器接收到來自隱蔽通信目標(biāo)的數(shù)據(jù)時,先查看當(dāng)前鏈路是否有保存的響應(yīng)狀態(tài),若存在則根據(jù)相應(yīng)狀態(tài)構(gòu)造擬態(tài)響應(yīng)數(shù)據(jù)包,并將該保存的響應(yīng)狀態(tài)刪除;若不存在則表示當(dāng)前沒有請求包能對應(yīng)發(fā)往客戶端的響應(yīng)包,此時通信阻塞,需要等待客戶端發(fā)送新的數(shù)據(jù)包或者心跳包時才可繼續(xù)發(fā)送數(shù)據(jù)。 圖7中由服務(wù)器發(fā)往客戶端的數(shù)據(jù)包頭部中的狀態(tài)碼記錄當(dāng)前隊(duì)列中需要發(fā)送給客戶端拆分后的數(shù)據(jù)包個數(shù)。當(dāng)要發(fā)送的數(shù)據(jù)包有多個時,客戶端應(yīng)盡快回復(fù)對應(yīng)數(shù)量的擬態(tài)請求包,否則客戶端將按照間隔時間特征不定時發(fā)送心跳擬態(tài)包。 擬態(tài)響應(yīng)包的長度僅依據(jù)服務(wù)器設(shè)定的預(yù)期值決定。服務(wù)器端特征無須考慮與運(yùn)行環(huán)境正常流量特征的相似度,因此采用隨機(jī)化長度與熵值的編碼方式,以此減少數(shù)據(jù)包拆分并提高傳輸效率。但是在一些以客戶端上傳流量為主的隱蔽傳輸中,盡管服務(wù)器需要發(fā)送至客戶端的數(shù)據(jù)量較小,但仍需填充大量數(shù)據(jù)以擬態(tài)真實(shí)環(huán)境下網(wǎng)頁服務(wù)器與客戶端之間的上下行流量比。 本節(jié)通過理論分析和實(shí)驗(yàn)數(shù)據(jù)評估自適應(yīng)網(wǎng)橋的數(shù)據(jù)效率和擬態(tài)相似度。由于本文主要工作聚焦在流量的變形與重組,并在設(shè)計(jì)目標(biāo)上對應(yīng)用層透明,因此不涉及如建立連接或加密校驗(yàn)等針對傳輸應(yīng)用層面的協(xié)議設(shè)計(jì)。本節(jié)中所討論的實(shí)際傳輸負(fù)載數(shù)據(jù)均為包含應(yīng)用層的協(xié)議封裝后生成的最終數(shù)據(jù)。 本實(shí)驗(yàn)中的環(huán)境流量是基于用戶在兩個小時內(nèi)訪問網(wǎng)頁所產(chǎn)生的HTTP數(shù)據(jù)包,共采集到230個特征序列,根據(jù)域名被劃分至22個特征序列分組。通過擬態(tài)網(wǎng)橋執(zhí)行隱蔽文件傳輸。本節(jié)將主要從傳輸效率以及預(yù)測特征與真實(shí)流量的相似度兩方面進(jìn)行評估。 定義隱蔽傳輸?shù)臄?shù)據(jù)效率為實(shí)際傳輸負(fù)載的初始長度與擬態(tài)后數(shù)據(jù)包總長度的比值。假設(shè)原始數(shù)據(jù)包字節(jié)數(shù)為x,F(xiàn)TE編碼字符空間為m,由4.1可知FTE的輸出長度為: (6) 若HTTP擬態(tài)中混淆所需的冗余字段與數(shù)據(jù)頭部的字節(jié)數(shù)之和為s,特征預(yù)測模塊提供的輸出預(yù)測長度為ypre,則該擬態(tài)包可攜帶的實(shí)際數(shù)據(jù)字節(jié)數(shù)x0為: (7) 對一個隱蔽原始數(shù)據(jù)包所需要拆分的數(shù)據(jù)包個數(shù)為: (8) 單工上傳信道的傳輸數(shù)據(jù)效率為: (9) 式中:預(yù)測擬態(tài)包長度ypre、冗余字段長度s和混淆熵值所采用編碼字符空間m都是由特征預(yù)測模塊在實(shí)驗(yàn)中基于環(huán)境流量特征所得。實(shí)驗(yàn)中s的值在300字節(jié)附近小幅波動,m均值為45.78,ypre均值為644.64字節(jié)。 實(shí)驗(yàn)分別測試了單工上傳文件與使用網(wǎng)頁服務(wù)兩種業(yè)務(wù)模式下的數(shù)據(jù)效率。其中上傳文件的傳輸效率為原始文件大小與客戶端實(shí)際發(fā)送流量大小之比;網(wǎng)頁服務(wù)的數(shù)據(jù)效率為原始收發(fā)數(shù)據(jù)和與實(shí)際收發(fā)數(shù)據(jù)和之比。當(dāng)使用單工信道上傳文件時,擬態(tài)數(shù)據(jù)效率與傳輸量大小關(guān)系如圖9所示,當(dāng)傳輸量大于一組擬態(tài)特征序列的總請求長度時,數(shù)據(jù)效率約穩(wěn)定為40%;在傳輸1 MB以內(nèi)數(shù)據(jù)時由于擬態(tài)需至少發(fā)送完一組預(yù)測特征序列的數(shù)據(jù)包,因此冗余數(shù)據(jù)比例較高,數(shù)據(jù)效率較低。 圖9 實(shí)驗(yàn)上傳文件擬態(tài)數(shù)據(jù)效率 表1列舉了不同業(yè)務(wù)場景下網(wǎng)頁傳輸?shù)脑L問效率。一般的網(wǎng)頁服務(wù)以下行數(shù)據(jù)為主,由于服務(wù)器端的擬態(tài)效率較高,因此總體效率較高,可在70%以上。對于以上載數(shù)據(jù)為主的網(wǎng)頁服務(wù)時,較高的上傳數(shù)據(jù)量可以充分利用每組擬態(tài)特征制定的請求長度,因此上行效率更高。但是因?yàn)樾枰獮榉?wù)器響應(yīng)發(fā)送冗余請求包,數(shù)據(jù)效率低于單工上傳文件時的效率。同樣,服務(wù)端需要為每個請求包發(fā)送較多冗余響應(yīng)數(shù)據(jù),下行效率低于正常網(wǎng)頁服務(wù)。從總數(shù)據(jù)效率看,SAMB網(wǎng)橋在大容量的隱蔽傳輸中的額外傳輸開銷可在實(shí)際的接受范圍之內(nèi)。 表1 網(wǎng)頁訪問擬態(tài)傳輸效率 本節(jié)主要從客戶端發(fā)送的擬態(tài)請求包長度、協(xié)議狀態(tài)和熵值特征評估自適應(yīng)網(wǎng)橋預(yù)測特征與實(shí)際被擬態(tài)流量的相似度。 1) 預(yù)測狀態(tài)相似度。在衡量預(yù)測長度序列和HTTP狀態(tài)序列的準(zhǔn)確性上,本文采用萊文斯坦距離計(jì)算預(yù)測序列和實(shí)際序列的相似度。兩個序列的相似度r定義如下: (10) 式中:l為兩個序列的長度和;d為兩個序列的萊文斯坦距離。當(dāng)d為0時,相似度r為1,此時兩個序列完全一致;當(dāng)r為0時兩個序列無相關(guān)性。 萊文斯坦距離常用于衡量兩個不定長字符串的相似度。在實(shí)驗(yàn)中將長度和狀態(tài)序列轉(zhuǎn)換為字符串后計(jì)算萊文斯坦距離作為兩個序列的相似程度。這是因?yàn)閷?shí)驗(yàn)中的預(yù)測序列在長度上不固定,且長度本身為預(yù)測的重要指標(biāo)之一;另一方面在實(shí)際場景中僅增或刪一個數(shù)據(jù)包特征對整體的相似度并不會產(chǎn)生太大的影響,類似于在計(jì)算萊文斯坦距離時增與刪的權(quán)重等同于改一個字符的權(quán)重,而漢明距離、歐氏距離等效果并不佳,且無法計(jì)算不同長度的序列之間距離。 實(shí)驗(yàn)測試了真實(shí)HTTP請求狀態(tài)分別與預(yù)測狀態(tài)系列和FTE擬態(tài)中采用的固定特征的狀態(tài)序列的相似度。由于在FTE擬態(tài)中不存在序列長度的設(shè)定,實(shí)驗(yàn)分別取等同預(yù)測狀態(tài)和隨機(jī)兩種情況下的長度值。實(shí)驗(yàn)計(jì)算預(yù)測序列、等同預(yù)測序列長度的固定序列和隨機(jī)長度的固定序列分別與采集到的部分真實(shí)環(huán)境HTTP流量狀態(tài)序列相似度的最大值,以表示測試序列與真實(shí)流量中最相似序列的近似度。 實(shí)驗(yàn)數(shù)據(jù)如表2所示,分別測試整體環(huán)境與基于特定購物、社交和視頻業(yè)務(wù)網(wǎng)站的相似度。SAMB的預(yù)測狀態(tài)序列在相同長度下相似度略高于固定序列,而考慮固定序列的隨機(jī)長度時相似度優(yōu)勢更顯著。由此表明基于馬爾可夫模型的狀態(tài)預(yù)測和序列長度預(yù)測可提高擬態(tài)流量的真實(shí)度。 表2 預(yù)測序列和FTE序列與真實(shí)流量的相似度 在整體環(huán)境下同樣長度的預(yù)測序列與固定序列的近似度都達(dá)到了1,這是因?yàn)楫?dāng)采集到的對比真實(shí)流量較多時更容易出現(xiàn)一組完全以GET和200OK組成的狀態(tài)序列,即出現(xiàn)于固定序列完全相符的狀況。但預(yù)測系列的近似度達(dá)到了1,表明SAMB在具有隨機(jī)性的動態(tài)預(yù)測狀態(tài)仍可在真實(shí)流量中匹配到相類似的流量樣本,在避免靜態(tài)特征的同時具有較高偽裝性。 2) 預(yù)測長度相似度。實(shí)驗(yàn)測試對比擬態(tài)流量與真實(shí)流量在整體分布上的相似程度。圖10所示為實(shí)驗(yàn)中預(yù)測請求長度在擬態(tài)生成流量、參照的自適應(yīng)環(huán)境流量和測試實(shí)際普通流量的對比,其中測試流量為不被包括在自適應(yīng)環(huán)境流量內(nèi)的實(shí)際訪問網(wǎng)頁產(chǎn)生的流量。圖10表明基于聚類分塊后的馬爾可夫預(yù)測模型在總體分布上與真實(shí)流量具有較高相似度。 圖10 擬態(tài)請求長度分布與真實(shí)流量對比 為了對比序列的相似度,實(shí)驗(yàn)采用算法1得到擬態(tài)輸出序列的數(shù)據(jù)包長度狀態(tài)序列,計(jì)算與真實(shí)流量狀態(tài)序列之間的萊文斯坦距離。其中Obfs4網(wǎng)橋采用默認(rèn)配置,在同一個序列中長度取值為自適應(yīng)網(wǎng)橋預(yù)測的長度。圖11中橫坐標(biāo)為實(shí)驗(yàn)次數(shù),縱坐標(biāo)為擬態(tài)數(shù)據(jù)長度序列與真實(shí)流量中最接近的長度序列的相似度。由于不同網(wǎng)站設(shè)計(jì)邏輯差異,序列的相似度存在一定變化范圍,但是預(yù)測序列的相似度多數(shù)在0.7以上,并且穩(wěn)定高于當(dāng)前網(wǎng)橋采用的隨機(jī)序列。 圖11 擬態(tài)長度序列與真實(shí)流量相似度 取上述實(shí)驗(yàn)中真實(shí)流量中與擬態(tài)序列相似度最高的一組數(shù)據(jù)包序列,對比序列中請求包長度的均值與方差,數(shù)據(jù)如表3所示,其中真實(shí)序列1為真實(shí)流量中與預(yù)測序列相似度最高的序列;真實(shí)序列2同樣相對應(yīng)于隨機(jī)序列。SAMB的擬態(tài)序列請求包長度在均值與方差上都要比當(dāng)前Obfs網(wǎng)橋的固定隨機(jī)序列更為接近真實(shí)值。 表3 擬態(tài)序列與最相似的真實(shí)序列均值方差 以上實(shí)驗(yàn)表明,每次預(yù)測的擬態(tài)序列數(shù)據(jù)包長度都可以在真實(shí)的環(huán)境流量中找到一組相近似的序列。生成的擬態(tài)請求包大小相比隨機(jī)化的混淆擬態(tài)方法更具有對當(dāng)前環(huán)境真實(shí)流量的偽裝性。 3) 預(yù)測熵值相似度。圖12為預(yù)測擬態(tài)請求與真實(shí)請求在熵值分布上的對比。實(shí)驗(yàn)發(fā)現(xiàn)預(yù)測的擬態(tài)流量熵值略高于真實(shí)流量。這是因?yàn)樵跀M態(tài)中執(zhí)行熵值混淆的字段僅為附加實(shí)際傳輸數(shù)據(jù)的字段,未完全考慮附加的固定字段,由此總體熵值存在約0.05的誤差。但相比Obfs4與FTE網(wǎng)橋等完全不對熵值處理的混淆方法,SAMB在熵值相似度上具有顯著優(yōu)勢。 圖12 擬態(tài)請求熵值分布與真實(shí)流量對比 本文提出與設(shè)計(jì)了基于當(dāng)前用戶真實(shí)網(wǎng)絡(luò)環(huán)境流量特征的自適應(yīng)擬態(tài)網(wǎng)橋SAMB。相比較于當(dāng)前的靜態(tài)規(guī)則網(wǎng)橋,SAMB能自動生成與環(huán)境流量相似特征的擬態(tài)規(guī)則,對于生成的擬態(tài)流量的偽裝性與對抗靜態(tài)特征的可檢測性都具有優(yōu)勢。 本文中將擬態(tài)特征的學(xué)習(xí)聚焦于上行數(shù)據(jù)包大小、協(xié)議狀態(tài)轉(zhuǎn)換和熵值控制上,生成擬態(tài)HTTP數(shù)據(jù)包,模仿瀏覽器向網(wǎng)頁服務(wù)器發(fā)包以實(shí)現(xiàn)隱蔽數(shù)據(jù)傳輸。實(shí)際上還有時間間隔、服務(wù)器端響應(yīng)包長度等特征可進(jìn)一步完善或?qū)崿F(xiàn)自適應(yīng)學(xué)習(xí),擬態(tài)的協(xié)議類型也可不局限于HTTP。但本文提出的核心設(shè)計(jì)理念是隱蔽傳輸端可以通過提高擬態(tài)規(guī)則的動態(tài)復(fù)雜度對抗當(dāng)前基于特征的檢測系統(tǒng),隱蔽傳輸模型與算法復(fù)雜度提升的可行性遠(yuǎn)高于相應(yīng)檢測系統(tǒng)算法與規(guī)則的復(fù)雜度提升。因此即使在強(qiáng)制代理轉(zhuǎn)發(fā)與白名單過濾規(guī)則的企業(yè)網(wǎng)絡(luò)出口部署中仍然可能存在一定的安全風(fēng)險。3.5 協(xié)議特殊字段采集
4 擬態(tài)執(zhí)行方法
4.1 熵值控制編碼
4.2 擬態(tài)數(shù)據(jù)包頭部定義
4.3 擬態(tài)服務(wù)器響應(yīng)方式
5 實(shí) 驗(yàn)
5.1 傳輸效率
5.2 預(yù)測特征相似度
6 結(jié) 語