石健 馬子揚(yáng) 唐屹
摘要:伴隨著HTTP/2協(xié)議的到來(lái),加密網(wǎng)頁(yè)也越來(lái)越廣泛地應(yīng)用于互聯(lián)網(wǎng)。對(duì)加密網(wǎng)頁(yè)的流量分析,有助于幫助網(wǎng)絡(luò)安全管理人員實(shí)現(xiàn)特定網(wǎng)頁(yè)的訪(fǎng)問(wèn)識(shí)定位,網(wǎng)頁(yè)識(shí)別基于網(wǎng)頁(yè)對(duì)象大小的識(shí)別,現(xiàn)有的網(wǎng)頁(yè)對(duì)象識(shí)別基于網(wǎng)絡(luò)包的頭部信息字段,這種特征抽取模式并不適用于利用HTTP/2協(xié)議的數(shù)據(jù)包。該文基于TLS協(xié)議,設(shè)計(jì)實(shí)現(xiàn)一個(gè)識(shí)別HTTP/2傳輸?shù)木W(wǎng)頁(yè)對(duì)象的方法,有助于進(jìn)一步設(shè)計(jì)針對(duì)HTTP/2的流量分析方法。
關(guān)鍵詞:流量分析;網(wǎng)頁(yè)識(shí)別;網(wǎng)頁(yè)對(duì)象;HTTP/2;TLS
中圖分類(lèi)號(hào):TP393.08 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)20-0190-02
On Identifying Web Objects in Encrypted HTTP/2 Traffic
SHI Jian,MA Zi-yang,TANG Yi
(School of Mathematics and Information Science, Guangdong Provincial Key Laboratory Co-sponsored by province and City of Information Security Technology,Guangzhou University, Guangzhou 510006, China)
Abstract:With the advent of HTTP/2 protocol, encrypted web pages are more and more widely used in Internet. Traffic analysis to encrypted web pages helps network security administrator to identify specific web pages. The traditional web page identification techniques are based on the sizes extracted from captured TCP headers. This feature cannot apply to HTTP/2 traffics. Based on the TLS protocol, a method to identify HTTP/2 transmitted web objects is proposed. With this object identification method, an efficient analysis method for HTTP/2 traffic could be proposed.
Key words: traffic analysis; web page recognition; web page object; HTTP/2; TLS
1 HTTP/2簡(jiǎn)介
HTTP/2是2015年正式標(biāo)準(zhǔn)化的新一代的超文本傳輸協(xié)議[1],這個(gè)協(xié)議綜合應(yīng)用了多種技術(shù),實(shí)現(xiàn)網(wǎng)頁(yè)的快速傳輸。現(xiàn)有的主流瀏覽器均支持HTTP/2的解析,而網(wǎng)站方面,依據(jù)W3Techs的統(tǒng)計(jì),截至2018年3月, 至少有24% 的網(wǎng)站支持 HTTP/2的傳輸[2]。
HTTP/2引入了多路復(fù)用、二進(jìn)制分幀、服務(wù)端推送等技術(shù)。多路復(fù)用技術(shù)允許同時(shí)通過(guò)單一的 HTTP/2 連接發(fā)起多重的請(qǐng)求/響應(yīng)消息,實(shí)現(xiàn)多流并行而不用依賴(lài)建立多個(gè) TCP 連接;HTTP/2在應(yīng)用層和傳輸層之間引入二進(jìn)制分幀,將所有傳輸?shù)男畔⒎指顬楦〉牟捎枚M(jìn)制編碼的消息和幀,例如原HTTP1.x 的頭部信息被HPACK壓縮并封裝到 HEADER 幀,請(qǐng)求體則封裝到 DATA幀等;服務(wù)端推送是實(shí)現(xiàn)在客戶(hù)端請(qǐng)求之前發(fā)送數(shù)據(jù)的機(jī)制。在 HTTP/2 中,服務(wù)器可以對(duì)客戶(hù)端的一個(gè)請(qǐng)求發(fā)送多個(gè)響應(yīng)。這樣,一方面,HTTP/2利用多路復(fù)用,采用單連接多資源的方式,減少服務(wù)端的鏈接壓力,使得連接吞吐量更大,另一方面,通過(guò)頭部壓縮和服務(wù)器端推送,雙向減少冗余的數(shù)據(jù)傳輸。
相比于 HTTP 1.x的兩個(gè)版本 ,HTTP/2重新組織了網(wǎng)頁(yè)對(duì)象的傳輸模式,進(jìn)一步減少了網(wǎng)絡(luò)延遲 ,能夠有效提升網(wǎng)頁(yè)訪(fǎng)問(wèn)效率。盡管HTTP/2 協(xié)議本身并沒(méi)有要求必須基于傳輸層安全(TLS) 部署,但由于所有瀏覽器均只支持 TLS上的HTTP/2訪(fǎng)問(wèn),這使得HTTP/2變?yōu)槭聦?shí)上新的HTTPS傳輸標(biāo)準(zhǔn)。
我們注意到HTTP/2所采用的技術(shù)雖然提高了網(wǎng)頁(yè)傳輸?shù)男?,在另一方面,單連接多路復(fù)用的特性模糊化了網(wǎng)頁(yè)對(duì)象邊界,給原有的HTTP流量特征抽取方法帶來(lái)挑戰(zhàn)。
2 加密Web訪(fǎng)問(wèn)的流量分析
Web訪(fǎng)問(wèn)流的生成與HTTP協(xié)議密切相關(guān)。一般而言,依據(jù)瀏覽器的HTTP實(shí)現(xiàn),當(dāng)用戶(hù)訪(fǎng)問(wèn)網(wǎng)頁(yè)時(shí),首先將網(wǎng)頁(yè)對(duì)應(yīng)的HTML文本下載,然后,開(kāi)始順序解析這個(gè)文本,如果遇到對(duì)象資源,則依據(jù)對(duì)象資源對(duì)應(yīng)的URI,發(fā)出HTTP請(qǐng)求以下載這個(gè)對(duì)象,一旦下載完畢就開(kāi)始渲染顯示,如此類(lèi)推,直到所有對(duì)象資源下載完畢,整個(gè)網(wǎng)頁(yè)也就呈現(xiàn)于用戶(hù)的瀏覽器面前了。
流量分析技術(shù)是進(jìn)行網(wǎng)絡(luò)測(cè)量的重要基礎(chǔ),對(duì)加密Web網(wǎng)頁(yè)訪(fǎng)問(wèn)的流量分析,有助于識(shí)別惡意或非法的網(wǎng)頁(yè)訪(fǎng)問(wèn),增強(qiáng)系統(tǒng)的安全防護(hù)能力。然而,加密并不能改變請(qǐng)求響應(yīng)的方向,同時(shí)加密也不能顯著網(wǎng)頁(yè)中對(duì)象的數(shù)量甚至大小,因此通過(guò)HTTP傳輸?shù)木W(wǎng)頁(yè)對(duì)象,只需要簡(jiǎn)單的網(wǎng)頁(yè)頭部信息的分析,可以區(qū)分網(wǎng)頁(yè)對(duì)象邊界從而高效率地識(shí)別網(wǎng)頁(yè)。
在已有的加密Web流量識(shí)別的研究中,Sun等人[3]提出了一個(gè)基于Jaccard系數(shù)相似矩陣的分類(lèi)器,通過(guò)該分類(lèi)器能夠以75%的命中率將某個(gè)網(wǎng)頁(yè)從10000個(gè)網(wǎng)頁(yè)的集合中識(shí)別出來(lái),并且誤判率僅僅是15%。文章選取網(wǎng)頁(yè)中對(duì)象的大小和數(shù)量作為流量的特征,Bissias[4]等人以數(shù)據(jù)包的長(zhǎng)度與數(shù)據(jù)包到達(dá)間隔作為特征,使用交叉關(guān)聯(lián)算法來(lái)確定Web網(wǎng)頁(yè)與已知頁(yè)面的相似性,Liberator[5]等人利用包的長(zhǎng)度和方向作為流量特征,通過(guò)樸素貝葉斯分類(lèi)器對(duì)網(wǎng)頁(yè)進(jìn)行識(shí)別。
我們注意到,上述的研究均基于TCP包的訪(fǎng)問(wèn)長(zhǎng)度,確定網(wǎng)頁(yè)對(duì)象的傳輸特征,這是因?yàn)榛贖TTP 1.x的網(wǎng)頁(yè)訪(fǎng)問(wèn),是逐對(duì)象的訪(fǎng)問(wèn)獲取,即在單個(gè)網(wǎng)頁(yè)對(duì)象傳輸?shù)臄?shù)據(jù)分組中,沒(méi)有摻入其他的網(wǎng)頁(yè)對(duì)象數(shù)據(jù),這使得網(wǎng)頁(yè)對(duì)象可以與TCP包的長(zhǎng)度相關(guān)聯(lián)。然而,這種情況在HTTP/2的傳輸下,會(huì)發(fā)生顯著變化,由于HTTP/2的特性,使得請(qǐng)求/訪(fǎng)問(wèn)也不會(huì)成對(duì)出現(xiàn),更重要的并行傳輸?shù)奶匦?,使得一個(gè)網(wǎng)絡(luò)包中可以包含多個(gè)不同的網(wǎng)絡(luò)對(duì)象的數(shù)據(jù),破壞了TCP包的長(zhǎng)度與原始網(wǎng)頁(yè)對(duì)象的關(guān)聯(lián)。
因此需要設(shè)計(jì)新的策略,實(shí)現(xiàn)HTTP/2下的網(wǎng)頁(yè)對(duì)象識(shí)別。我們將考慮基于底層的TLS協(xié)議的來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)對(duì)象的識(shí)別。
3 基于TLS的網(wǎng)頁(yè)對(duì)象識(shí)別
TLS協(xié)議是進(jìn)行HTTP/2傳輸?shù)幕A(chǔ),目前常見(jiàn)的版本是TLS1.2[3]。TLS協(xié)議由兩層構(gòu)成:TLS 記錄協(xié)議和TLS握手協(xié)議,其中,握手協(xié)議用于客戶(hù)端與服務(wù)器端的相互認(rèn)證,在應(yīng)用程序通信前,協(xié)商加密套件和加密密鑰,記錄協(xié)議用于封裝多種高層協(xié)議,其基本封裝格式如下:
(1)內(nèi)容類(lèi)型(8位): 如 握手協(xié)議 22,應(yīng)用數(shù)據(jù) 23。
(2)版本號(hào)(16位): TLS 1.2 為 0x0303。
(3)數(shù)據(jù)包長(zhǎng)度(16位):表示的是數(shù)據(jù)包以字節(jié)為單位的長(zhǎng)度。
(4)記錄數(shù)據(jù):這個(gè)部分搭載數(shù)據(jù)包中的數(shù)據(jù)。
圖1顯示了一個(gè)TCP分組中包含了一個(gè)完整的HTTP/2數(shù)據(jù)。TCP分組的長(zhǎng)度為75字節(jié),TLS數(shù)據(jù)長(zhǎng)度為70字節(jié),這種場(chǎng)景與TLS上的HTTP 1.x,即傳統(tǒng)意義下的HTTPS,的傳輸形式一致,意味著這個(gè)TCP分組的長(zhǎng)度直接與TLS分組相關(guān),因此,在TLS上的HTTP 1.x的流量分析是可以簡(jiǎn)單地使用TCP分組的長(zhǎng)度來(lái)作為流量特征之一,因?yàn)檫@個(gè)TCP分組的長(zhǎng)度與單個(gè)的網(wǎng)頁(yè)對(duì)象密切相關(guān)。
然而,這種分析方法對(duì)HTTP/2是存在缺陷的,由于HTTP/2的多路復(fù)用,使得一個(gè)TCP分組中,可能包含多個(gè)傳輸?shù)腡LS單元。如圖2所示,圖2顯示了一個(gè)組合的HTTP/2分組數(shù)據(jù),這個(gè)分組包含了三個(gè)TLS對(duì)象,簡(jiǎn)單地使用TCP分組的長(zhǎng)度抽取,實(shí)際上只對(duì)應(yīng)單個(gè)對(duì)象,因此對(duì)傳輸?shù)臄?shù)據(jù)對(duì)象的數(shù)量和大小都存在著誤差。
因此,為準(zhǔn)確實(shí)現(xiàn)對(duì)HTTP/2的流量分析,我們需要對(duì)TCP數(shù)據(jù)分組進(jìn)行深度分析,抽取其中的TLS對(duì)象的長(zhǎng)度作為流量特征而不是簡(jiǎn)單地采用TCP分組長(zhǎng)度。如圖1所示,我們抽取的對(duì)象就不是TCP分組的長(zhǎng)度,而是在TCP載荷中,使用方框框住的對(duì)應(yīng)TLS記錄中的數(shù)據(jù)對(duì)象長(zhǎng)度。
4 原型設(shè)計(jì)與實(shí)現(xiàn)
為實(shí)現(xiàn)基于TLS記錄長(zhǎng)度的網(wǎng)頁(yè)對(duì)象識(shí)別,我們采用python語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)了一個(gè)原型,實(shí)時(shí)抽取HTTP/2流的中TLS數(shù)據(jù)對(duì)象長(zhǎng)度的程序。簡(jiǎn)單起見(jiàn),假定HTTP/2通信是基于TLS 1.2 協(xié)議,我們利用python的socket模塊,嗅探HTTP/2流量,特別的,著重分析TCP分組頭部字段后面的三個(gè)字節(jié),例如,如果這三個(gè)字節(jié)為\x17\x03\x03,這意味著這個(gè)TLS分組為T(mén)LS1.2應(yīng)用數(shù)據(jù)類(lèi)型,包含所需要的HTTP/2數(shù)據(jù)包,由TLS記錄層的結(jié)構(gòu),之后的兩個(gè)字節(jié)即為T(mén)LS分組的長(zhǎng)度;
接著,需要考慮,是否在一個(gè)TCP分組中包含多個(gè)不同的TLS記錄或TLS記錄部分,為此,掃描所捕獲的TCP載荷是否包含\x17\x03\x03串,如果包含,就抽取并記錄后繼的兩個(gè)字節(jié)作為候選的TLS記錄長(zhǎng)度,為避免由于加密而導(dǎo)致偶然出現(xiàn)的\x17\x03\x03串,可以進(jìn)一步地驗(yàn)證候選的TLS記錄長(zhǎng)度是否合法。
為驗(yàn)證我們的對(duì)象長(zhǎng)度抽取方法的有效性,我們以對(duì)維基百科網(wǎng)站的訪(fǎng)問(wèn)為例加以說(shuō)明。維基百科網(wǎng)站www.wikipedia.org 已經(jīng)采用了支持HTTP/2的Web服務(wù)器軟件,可以通過(guò)HTTP/2協(xié)議進(jìn)行訪(fǎng)問(wèn),我們利用所設(shè)計(jì)的長(zhǎng)度抽取程序?qū)υL(fǎng)問(wèn)該網(wǎng)站的HTTP/2流量進(jìn)行了長(zhǎng)度抽取測(cè)試,結(jié)合后臺(tái)的wireshark工具的網(wǎng)絡(luò)包捕獲。
圖3是我們的一次測(cè)試的結(jié)果,左圖為對(duì)維基百科的瀏覽器控制臺(tái)的分析截圖,右圖為我們的程序抽取網(wǎng)頁(yè)對(duì)象邊界的抽取情況,對(duì)比所捕獲的蹤跡數(shù)據(jù),結(jié)果表明,所設(shè)計(jì)實(shí)現(xiàn)的算法能夠?qū)崟r(shí)獲取TLS記錄的長(zhǎng)度。
5 結(jié)束語(yǔ)
通過(guò)對(duì)HTTP/2數(shù)據(jù)包的深度分析,我們?cè)O(shè)計(jì)并實(shí)現(xiàn)了基于TLS記錄層結(jié)構(gòu)的HTTP/2實(shí)時(shí)數(shù)據(jù)包的長(zhǎng)度抽取方法,能夠有效區(qū)分HTTP/2傳輸?shù)木W(wǎng)頁(yè)對(duì)象的數(shù)量和大小,利用所抽取的長(zhǎng)度作為流量識(shí)別的特征,我們將可以進(jìn)一步地實(shí)現(xiàn)HTTP/2網(wǎng)頁(yè)的識(shí)別,增強(qiáng)網(wǎng)頁(yè)瀏覽的安全性。未來(lái),我們將進(jìn)一步地優(yōu)化改進(jìn)算法,提高效率和識(shí)別準(zhǔn)確度,并用于HTTP/2網(wǎng)站的識(shí)別中。
參考文獻(xiàn):
[1] RFC 7540 Hypertext Transfer Protocol Version 2 (HTTP/2)[EB/OL].http://www.ietf.org/rfc/rfc7540.txt
[2] Usage of HTTP/2 for websites. World Wide Web Technology Surveys[EB/OL]. W3Techs. https://w3techs.com/technologies/dtails/ce-http2/all/all
[3] Q. Sun, D. Simon, Y. Wang, W. Russell, V. Padmanabhan, and L. Qiu. Statistical identification of encrypted Web browsing traffic[R]. In: Proceedings of IEEE S&P;,2005.
[4] G. Bissias, M. Liberatore, D. Jensen, and B. Levine. Privacy vulnerabilities in encrypted HTTP streams[R]. In: Proceedings of PET,2005.
[5] Liberatore, M., Levine, B. Inferring the Source of Encrypted HTTP connections[R]. In: Proceedings of ACM CCS,2006:255-263.
[6] RFC 5246 The Transport Layer Security (TLS) Protocol Version 1.2[EB/OL]. http://www.ietf.org/rfc/rfc5246.txt.