叢小亮 余翔湛
Abstract: HTTPS network is one of the most widely used Web security protocol.For the HTTPS traffic identification,a more effective traffic identification method is using the sequence of HTTP packet size as the page fingerprint to identify traffic.For collecting page fingerprint, the paper designs and implements the page fingerprint extraction system.Experiments show that the system can extract page fingerprints very well, which provides a good foundation for the page traffic identification work.
引言
高速、豐富且多元的信息傳播在給人們帶來(lái)便捷的同時(shí),也制造了潛在隱患。許多不法分子,利用Web站點(diǎn)發(fā)布大量的混雜問(wèn)題信息,因而對(duì)時(shí)下的網(wǎng)絡(luò)安全運(yùn)行保障機(jī)制提出了更高要求。
在早期,由于Web站點(diǎn)采用明文的HTTP協(xié)議傳輸數(shù)據(jù),在多數(shù)情況下研究將采取關(guān)鍵字檢測(cè)等方式,過(guò)濾出訪問(wèn)不良站點(diǎn)的流量,進(jìn)一步地,發(fā)現(xiàn)含有不良信息的站點(diǎn)頁(yè)面。然而隨著SSL/TLS安全協(xié)議的成熟,HTTP協(xié)議與SSL/TLS協(xié)議的混合協(xié)議-HTTPS協(xié)議也隨即獲得了廣泛使用。當(dāng)前,HTTPS協(xié)議正快速發(fā)展成為網(wǎng)絡(luò)中應(yīng)用最多的Web安全協(xié)議之一。
HTTPS協(xié)議采用對(duì)稱加密方式傳輸應(yīng)用層信息,這就使得基于關(guān)鍵字的檢測(cè)技術(shù)已然不再適用。另一方面,通過(guò)HTTPS協(xié)議封裝的信息,其應(yīng)用層負(fù)載的特點(diǎn)是尺寸很大,由此即會(huì)導(dǎo)致傳輸層頻繁產(chǎn)生尺寸為MTU大小的分片,綜上分析可知基于傳輸層包負(fù)載大小的傳統(tǒng)流量識(shí)別方法將難以達(dá)到理想應(yīng)用效果。而由于代理服務(wù)器等原因,通過(guò)觀察網(wǎng)絡(luò)通信目的地址和端口的流量分析方法也已不再具備應(yīng)用優(yōu)勢(shì)意義。
文獻(xiàn)[1-3]均提出了基于Web站點(diǎn)指紋匹配的方法來(lái)識(shí)別訪問(wèn)目標(biāo)頁(yè)面產(chǎn)生的流量,尤其是文獻(xiàn)[3]中論述的以訪問(wèn)頁(yè)面過(guò)程中產(chǎn)生的HTTP請(qǐng)求應(yīng)答對(duì)象大小的序列作為指紋的方式,實(shí)踐效果較好。
在上述背景下,本課題設(shè)計(jì)并實(shí)現(xiàn)了頁(yè)面指紋特征主動(dòng)提取系統(tǒng)。實(shí)驗(yàn)表明,本系統(tǒng)能夠有效采集頁(yè)面站點(diǎn)指紋,為頁(yè)面訪問(wèn)流量識(shí)別工作提供了良好基礎(chǔ),具有一定的實(shí)際意義。
1系統(tǒng)總體設(shè)計(jì)
1.1系統(tǒng)輸入輸出
本系統(tǒng)的功能是針對(duì)給定頁(yè)面,采集頁(yè)面指紋,作為從旁路流量中匹配識(shí)別訪問(wèn)該頁(yè)面產(chǎn)生的流量的特征。而關(guān)于單個(gè)頁(yè)面,本系統(tǒng)的輸入是目標(biāo)頁(yè)面的URL,輸出是訪問(wèn)該頁(yè)面過(guò)程中,產(chǎn)生的TCP連接個(gè)數(shù)N,以及每個(gè)TCP鏈路上傳輸?shù)腍TTP請(qǐng)求,應(yīng)答報(bào)文對(duì)象大小序列。圖1給出了針對(duì)單個(gè)頁(yè)面的系統(tǒng)輸入輸出示意圖。
1.2系統(tǒng)工作流程
本系統(tǒng)的核心是一個(gè)能夠與客戶端瀏覽器以及服務(wù)器端進(jìn)行SSL通訊的本地代理程序,其設(shè)計(jì)理念借鑒了中間人攻擊的思想[4-5]。文獻(xiàn)[6]指出SSL代理程序與瀏覽器進(jìn)行SSL通訊的基礎(chǔ)是生成一個(gè)自簽發(fā)的CA證書,且將證書插入到瀏覽器信任的證書列表中。代理程序可以通過(guò)監(jiān)聽(tīng)本地端口截獲瀏覽器發(fā)出的HTTP CONNECT請(qǐng)求。通過(guò)解析請(qǐng)求的HOST域,可獲得請(qǐng)求報(bào)文的轉(zhuǎn)發(fā)目的地。接下來(lái)代理程序會(huì)與HOST域指向的服務(wù)器進(jìn)行SSL通訊,獲取服務(wù)器證書。通過(guò)篡改該證書的簽名,生成一個(gè)受客戶端信任的server證書,這是代理程序與瀏覽器建立SSL通訊、獲取明文HTTP請(qǐng)求的重要基礎(chǔ)。在獲取HTTP請(qǐng)求報(bào)文后,代理程序首先解析請(qǐng)求報(bào)文的大小,而后將報(bào)文轉(zhuǎn)發(fā)給服務(wù)器端,并截獲服務(wù)器的響應(yīng)報(bào)文。獲取響應(yīng)報(bào)文后代理作解析與轉(zhuǎn)發(fā)操作。系統(tǒng)工作流程如圖2所示。
2系統(tǒng)模塊設(shè)計(jì)
系統(tǒng)的核心組成部分有:控制模塊,請(qǐng)求解析模塊,客戶端連接轉(zhuǎn)換模塊,請(qǐng)求處理模塊。本節(jié)將逐一闡釋論述各個(gè)模塊邏輯和功能。
2.1控制模塊
控制模塊主要負(fù)責(zé)控制開(kāi)啟/關(guān)閉代理程序和控制瀏覽器訪問(wèn)給定URL對(duì)應(yīng)的站點(diǎn)頁(yè)面。每當(dāng)瀏覽器加載一個(gè)站點(diǎn)結(jié)束時(shí), 代理程序會(huì)向控制模塊發(fā)送一個(gè)SIGUSER信號(hào),控制模塊收到信號(hào)后,將調(diào)用瀏覽器訪問(wèn)相鄰URL集合中下一個(gè)URL對(duì)應(yīng)的站點(diǎn)頁(yè)面,如果當(dāng)前訪問(wèn)的URL已經(jīng)是URL集合中的最后一個(gè)URL,控制模塊在關(guān)閉代理程序后執(zhí)行退出??刂颇K流程圖如圖3所示。
2.2客戶端連接轉(zhuǎn)換模塊
客戶端連接轉(zhuǎn)換模塊的主要功能是將客戶端與代理程序的socket連接轉(zhuǎn)變?yōu)閟sl-socket連接。這里的一個(gè)技術(shù)難點(diǎn)是如何能夠使瀏覽器信任代理程序生成的證書。在啟動(dòng)系統(tǒng)以前,要生成一個(gè)自簽名的ca根證書,這個(gè)證書的擁有者和簽發(fā)者完全一致,證書簽發(fā)使用的私鑰與證書本身含有的公鑰匹配成一對(duì)公鑰私鑰對(duì)。代理系統(tǒng)中要保留這個(gè)公鑰私鑰對(duì),而ca根證書要導(dǎo)入到瀏覽器當(dāng)中??蛻舳诉B接轉(zhuǎn)換模塊啟動(dòng)時(shí),先要獲取服務(wù)器提供的證書,并提取這個(gè)證書中的組織名、備用組織名等信息。然后用這些信息和代理系統(tǒng)中保留的公鑰組成一張新的證書,同時(shí)再用系統(tǒng)保留的私鑰進(jìn)行簽名。這樣,ca根證書的公鑰即可準(zhǔn)確解密驗(yàn)證新生成證書的簽名,從而形成一個(gè)閉合的證書驗(yàn)證鏈??蛻舳诉B接轉(zhuǎn)換模塊的設(shè)計(jì)流程如圖4所示。
2.3請(qǐng)求解析模塊
請(qǐng)求解析模塊負(fù)責(zé)讀取瀏覽器發(fā)來(lái)的請(qǐng)求報(bào)文,如果請(qǐng)求報(bào)文的請(qǐng)求方法為connect方法,說(shuō)明當(dāng)前瀏覽器在訪問(wèn)一個(gè)受SSL協(xié)議保護(hù)的站點(diǎn)頁(yè)面,這個(gè)時(shí)候解析模塊先要返回給瀏覽器一個(gè)響應(yīng)碼為200的響應(yīng)報(bào)文,緊接著調(diào)用客戶端連接轉(zhuǎn)換模塊將現(xiàn)有的tcp連接轉(zhuǎn)換成SSL-Socket連接,而當(dāng)與瀏覽器建立SSL連接以后則再次獲取請(qǐng)求報(bào)文。此時(shí)需注意的是,要對(duì)瀏覽器的請(qǐng)求報(bào)文頭做適當(dāng)?shù)奶幚?,為了消除緩存?duì)訪問(wèn)的影響,應(yīng)該刪除請(qǐng)求頭字段和ifnonematch字段,同時(shí)也要將proxyconnection字段改為connection 字段。在重組報(bào)文頭的同時(shí),還應(yīng)該統(tǒng)計(jì)瀏覽器請(qǐng)求報(bào)文的原始報(bào)文長(zhǎng)度。請(qǐng)求解析模塊流程如圖5所示。
2.4請(qǐng)求處理模塊
圖6給出了請(qǐng)求處理模塊的主要流程。值得注意的是,在現(xiàn)實(shí)的網(wǎng)絡(luò)環(huán)境中,有些站點(diǎn)頁(yè)面的頁(yè)面結(jié)構(gòu)比較復(fù)雜,所以在網(wǎng)絡(luò)傳輸過(guò)程中會(huì)采用chunked分塊編碼傳輸?shù)牟呗赃M(jìn)行傳輸,代理程序需要緩存并重組各個(gè)應(yīng)答報(bào)文塊,同時(shí)去掉應(yīng)答報(bào)文頭的transfer-encoding字段,將應(yīng)答報(bào)文一次性地發(fā)回給瀏覽器。
3系統(tǒng)運(yùn)行效果
本節(jié)中,使用HTTPS頁(yè)面指紋特征對(duì)象主動(dòng)提取系統(tǒng)提取url為https://login.live.com 的頁(yè)面指紋。觀察系統(tǒng)的運(yùn)行效果。
首先,在系統(tǒng)的輸入文件dst_url.txt中寫入待采集頁(yè)面url,然后運(yùn)行browser_control.py。系統(tǒng)開(kāi)始運(yùn)行并輸出采集結(jié)果文件result.txt。result.txt 用于記錄訪問(wèn)站點(diǎn)時(shí)間里的TCP連接數(shù),以及每個(gè)連接中請(qǐng)求應(yīng)答報(bào)文對(duì)象的大小。系統(tǒng)運(yùn)行結(jié)果result.txt內(nèi)容如圖7所示。
分析日志結(jié)果可知,在訪問(wèn) https://login.live.com/ 的過(guò)程中,瀏覽器與服務(wù)器共建立了7條TCP連接,在每個(gè)TCP通道上,系統(tǒng)統(tǒng)計(jì)了每一個(gè)連接中傳遞的請(qǐng)求、應(yīng)答報(bào)文對(duì)的大小。如在連接1中,本機(jī)49820端口與login.live.com所在服務(wù)器上的443端口建立了TCP連接,該連接上瀏覽器發(fā)出了一個(gè)大小為182字節(jié)的請(qǐng)求報(bào)文,其請(qǐng)求的目的url為login.live.com。服務(wù)器對(duì)此請(qǐng)求響應(yīng)一個(gè)3 755字節(jié)大小的應(yīng)答報(bào)文。特別地,可以發(fā)現(xiàn)TCP連接7并沒(méi)有用來(lái)傳輸數(shù)據(jù),經(jīng)過(guò)分析可知,其作用是用于表示整個(gè)訪問(wèn)過(guò)程的結(jié)束。另外可以看到,在TCP連接2、3、5中,存在一個(gè)連接通道上傳輸多個(gè)請(qǐng)求應(yīng)答對(duì)的情況,這種現(xiàn)象叫做TCP連接的復(fù)用。該特性由HTTP協(xié)議1.1版本引入,旨在提高TCP信道利用率,降低HTTP服務(wù)器TCP連接數(shù),從而達(dá)到降低服務(wù)器負(fù)載,提高服務(wù)器性能的目的。
4結(jié)束語(yǔ)
本文首先明確了以頁(yè)面HTTP報(bào)文大小序列作為站點(diǎn)指紋,用于識(shí)別訪問(wèn)特定頁(yè)面時(shí)產(chǎn)生的HTTPS流量。然后明確了本課題的目的,即設(shè)計(jì)并實(shí)現(xiàn)HTTPS頁(yè)面指紋特征對(duì)象主動(dòng)提取系統(tǒng)。此后,本文給出了頁(yè)面指紋提取系統(tǒng)的總體設(shè)計(jì)以及各個(gè)模塊的詳細(xì)設(shè)計(jì)和技術(shù)原理。最后以特定頁(yè)面為例,演示了系統(tǒng)的運(yùn)行效果。
目前,本系統(tǒng)作為代理程序運(yùn)行在本機(jī)特定端口時(shí),可以成功代理瀏覽器訪問(wèn)和 HTTPS 站點(diǎn),并能夠動(dòng)態(tài)統(tǒng)計(jì)收集訪問(wèn)指定站點(diǎn)時(shí) TCP 連接個(gè)數(shù),請(qǐng)求應(yīng)答報(bào)文對(duì)象大小,URL 請(qǐng)求依賴關(guān)系等可以作為站點(diǎn)指紋的數(shù)據(jù)。實(shí)際運(yùn)行結(jié)果表明,本系統(tǒng)能夠長(zhǎng)時(shí)間運(yùn)行,并且批量采集給定站點(diǎn)集合的指紋信息。當(dāng)前系統(tǒng)的一個(gè)不足之處在于,針對(duì)同一個(gè)頁(yè)面的2次采集結(jié)果可能出現(xiàn)偏差。其原因是瀏覽器之間的個(gè)體差異,使用不同的瀏覽器,由于加載策略的不同,會(huì)導(dǎo)致觀察到的 HTTP 報(bào)文個(gè)數(shù)出現(xiàn)偏差。此外,本系統(tǒng)工作的原理是作為代理程序轉(zhuǎn)發(fā)報(bào)文,并在轉(zhuǎn)發(fā)的過(guò)程中進(jìn)行統(tǒng)計(jì)。瀏覽器與服務(wù)器直接通信和與代理程序通信的訪問(wèn)行為有所不同,這也會(huì)導(dǎo)致最后的輸出結(jié)果與真實(shí)的情況存在一定偏差。
參考文獻(xiàn)
[1] HERRMANN D, WENDOLSKY R, FEDERRATH H. Website fingerprinting: Attacking popular privacy enhancing technologies with the multinomial nave-bayes classifier[C]//Proceedings of the 2009 ACM workshop on cloud computing security. New York, NY, USA:ACM, 2009: 31-42.
[2] LU L,CHANG E C, CHAN M C. Website fingerprinting and identification using ordered feature sequences[M]. Berlin/Heidelberg:Springer, 2010.
[3] 吳家順. Website 指紋識(shí)別攻擊與防護(hù)[D]. 南京:南京郵電大學(xué), 2013.
[4] CALLEGATI F, CERRONI W, RAMILLI M. Maninthemiddle attack to the HTTPS protocol[J]. IEEE Security and Privacy, 2009, 7(1): 78-81.
[5] PRANDINI M, RAMILLI M, CERRONI W, et al. Splitting the HTTPS stream to attack secure web connections[J]. IEEE Security & Privacy, 2010, 8(6): 80-84.
[6] 曲波,吳兆芝. 面向安全Web服務(wù)的SSL代理服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[J]. 華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2003,31(Supp):114-116.