叢小亮 余翔湛
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.
引言
高速、豐富且多元的信息傳播在給人們帶來便捷的同時,也制造了潛在隱患。許多不法分子,利用Web站點發(fā)布大量的混雜問題信息,因而對時下的網(wǎng)絡安全運行保障機制提出了更高要求。
在早期,由于Web站點采用明文的HTTP協(xié)議傳輸數(shù)據(jù),在多數(shù)情況下研究將采取關(guān)鍵字檢測等方式,過濾出訪問不良站點的流量,進一步地,發(fā)現(xiàn)含有不良信息的站點頁面。然而隨著SSL/TLS安全協(xié)議的成熟,HTTP協(xié)議與SSL/TLS協(xié)議的混合協(xié)議-HTTPS協(xié)議也隨即獲得了廣泛使用。當前,HTTPS協(xié)議正快速發(fā)展成為網(wǎng)絡中應用最多的Web安全協(xié)議之一。
HTTPS協(xié)議采用對稱加密方式傳輸應用層信息,這就使得基于關(guān)鍵字的檢測技術(shù)已然不再適用。另一方面,通過HTTPS協(xié)議封裝的信息,其應用層負載的特點是尺寸很大,由此即會導致傳輸層頻繁產(chǎn)生尺寸為MTU大小的分片,綜上分析可知基于傳輸層包負載大小的傳統(tǒng)流量識別方法將難以達到理想應用效果。而由于代理服務器等原因,通過觀察網(wǎng)絡通信目的地址和端口的流量分析方法也已不再具備應用優(yōu)勢意義。
文獻[1-3]均提出了基于Web站點指紋匹配的方法來識別訪問目標頁面產(chǎn)生的流量,尤其是文獻[3]中論述的以訪問頁面過程中產(chǎn)生的HTTP請求應答對象大小的序列作為指紋的方式,實踐效果較好。
在上述背景下,本課題設計并實現(xiàn)了頁面指紋特征主動提取系統(tǒng)。實驗表明,本系統(tǒng)能夠有效采集頁面站點指紋,為頁面訪問流量識別工作提供了良好基礎,具有一定的實際意義。
1系統(tǒng)總體設計
1.1系統(tǒng)輸入輸出
本系統(tǒng)的功能是針對給定頁面,采集頁面指紋,作為從旁路流量中匹配識別訪問該頁面產(chǎn)生的流量的特征。而關(guān)于單個頁面,本系統(tǒng)的輸入是目標頁面的URL,輸出是訪問該頁面過程中,產(chǎn)生的TCP連接個數(shù)N,以及每個TCP鏈路上傳輸?shù)腍TTP請求,應答報文對象大小序列。圖1給出了針對單個頁面的系統(tǒng)輸入輸出示意圖。
1.2系統(tǒng)工作流程
本系統(tǒng)的核心是一個能夠與客戶端瀏覽器以及服務器端進行SSL通訊的本地代理程序,其設計理念借鑒了中間人攻擊的思想[4-5]。文獻[6]指出SSL代理程序與瀏覽器進行SSL通訊的基礎是生成一個自簽發(fā)的CA證書,且將證書插入到瀏覽器信任的證書列表中。代理程序可以通過監(jiān)聽本地端口截獲瀏覽器發(fā)出的HTTP CONNECT請求。通過解析請求的HOST域,可獲得請求報文的轉(zhuǎn)發(fā)目的地。接下來代理程序會與HOST域指向的服務器進行SSL通訊,獲取服務器證書。通過篡改該證書的簽名,生成一個受客戶端信任的server證書,這是代理程序與瀏覽器建立SSL通訊、獲取明文HTTP請求的重要基礎。在獲取HTTP請求報文后,代理程序首先解析請求報文的大小,而后將報文轉(zhuǎn)發(fā)給服務器端,并截獲服務器的響應報文。獲取響應報文后代理作解析與轉(zhuǎn)發(fā)操作。系統(tǒng)工作流程如圖2所示。
2系統(tǒng)模塊設計
系統(tǒng)的核心組成部分有:控制模塊,請求解析模塊,客戶端連接轉(zhuǎn)換模塊,請求處理模塊。本節(jié)將逐一闡釋論述各個模塊邏輯和功能。
2.1控制模塊
控制模塊主要負責控制開啟/關(guān)閉代理程序和控制瀏覽器訪問給定URL對應的站點頁面。每當瀏覽器加載一個站點結(jié)束時, 代理程序會向控制模塊發(fā)送一個SIGUSER信號,控制模塊收到信號后,將調(diào)用瀏覽器訪問相鄰URL集合中下一個URL對應的站點頁面,如果當前訪問的URL已經(jīng)是URL集合中的最后一個URL,控制模塊在關(guān)閉代理程序后執(zhí)行退出。控制模塊流程圖如圖3所示。
2.2客戶端連接轉(zhuǎn)換模塊
客戶端連接轉(zhuǎn)換模塊的主要功能是將客戶端與代理程序的socket連接轉(zhuǎn)變?yōu)閟sl-socket連接。這里的一個技術(shù)難點是如何能夠使瀏覽器信任代理程序生成的證書。在啟動系統(tǒng)以前,要生成一個自簽名的ca根證書,這個證書的擁有者和簽發(fā)者完全一致,證書簽發(fā)使用的私鑰與證書本身含有的公鑰匹配成一對公鑰私鑰對。代理系統(tǒng)中要保留這個公鑰私鑰對,而ca根證書要導入到瀏覽器當中。客戶端連接轉(zhuǎn)換模塊啟動時,先要獲取服務器提供的證書,并提取這個證書中的組織名、備用組織名等信息。然后用這些信息和代理系統(tǒng)中保留的公鑰組成一張新的證書,同時再用系統(tǒng)保留的私鑰進行簽名。這樣,ca根證書的公鑰即可準確解密驗證新生成證書的簽名,從而形成一個閉合的證書驗證鏈。客戶端連接轉(zhuǎn)換模塊的設計流程如圖4所示。
2.3請求解析模塊
請求解析模塊負責讀取瀏覽器發(fā)來的請求報文,如果請求報文的請求方法為connect方法,說明當前瀏覽器在訪問一個受SSL協(xié)議保護的站點頁面,這個時候解析模塊先要返回給瀏覽器一個響應碼為200的響應報文,緊接著調(diào)用客戶端連接轉(zhuǎn)換模塊將現(xiàn)有的tcp連接轉(zhuǎn)換成SSL-Socket連接,而當與瀏覽器建立SSL連接以后則再次獲取請求報文。此時需注意的是,要對瀏覽器的請求報文頭做適當?shù)奶幚恚瑸榱讼彺鎸υL問的影響,應該刪除請求頭字段和ifnonematch字段,同時也要將proxyconnection字段改為connection 字段。在重組報文頭的同時,還應該統(tǒng)計瀏覽器請求報文的原始報文長度。請求解析模塊流程如圖5所示。
2.4請求處理模塊
圖6給出了請求處理模塊的主要流程。值得注意的是,在現(xiàn)實的網(wǎng)絡環(huán)境中,有些站點頁面的頁面結(jié)構(gòu)比較復雜,所以在網(wǎng)絡傳輸過程中會采用chunked分塊編碼傳輸?shù)牟呗赃M行傳輸,代理程序需要緩存并重組各個應答報文塊,同時去掉應答報文頭的transfer-encoding字段,將應答報文一次性地發(fā)回給瀏覽器。
3系統(tǒng)運行效果
本節(jié)中,使用HTTPS頁面指紋特征對象主動提取系統(tǒng)提取url為https://login.live.com 的頁面指紋。觀察系統(tǒng)的運行效果。
首先,在系統(tǒng)的輸入文件dst_url.txt中寫入待采集頁面url,然后運行browser_control.py。系統(tǒng)開始運行并輸出采集結(jié)果文件result.txt。result.txt 用于記錄訪問站點時間里的TCP連接數(shù),以及每個連接中請求應答報文對象的大小。系統(tǒng)運行結(jié)果result.txt內(nèi)容如圖7所示。
分析日志結(jié)果可知,在訪問 https://login.live.com/ 的過程中,瀏覽器與服務器共建立了7條TCP連接,在每個TCP通道上,系統(tǒng)統(tǒng)計了每一個連接中傳遞的請求、應答報文對的大小。如在連接1中,本機49820端口與login.live.com所在服務器上的443端口建立了TCP連接,該連接上瀏覽器發(fā)出了一個大小為182字節(jié)的請求報文,其請求的目的url為login.live.com。服務器對此請求響應一個3 755字節(jié)大小的應答報文。特別地,可以發(fā)現(xiàn)TCP連接7并沒有用來傳輸數(shù)據(jù),經(jīng)過分析可知,其作用是用于表示整個訪問過程的結(jié)束。另外可以看到,在TCP連接2、3、5中,存在一個連接通道上傳輸多個請求應答對的情況,這種現(xiàn)象叫做TCP連接的復用。該特性由HTTP協(xié)議1.1版本引入,旨在提高TCP信道利用率,降低HTTP服務器TCP連接數(shù),從而達到降低服務器負載,提高服務器性能的目的。
4結(jié)束語
本文首先明確了以頁面HTTP報文大小序列作為站點指紋,用于識別訪問特定頁面時產(chǎn)生的HTTPS流量。然后明確了本課題的目的,即設計并實現(xiàn)HTTPS頁面指紋特征對象主動提取系統(tǒng)。此后,本文給出了頁面指紋提取系統(tǒng)的總體設計以及各個模塊的詳細設計和技術(shù)原理。最后以特定頁面為例,演示了系統(tǒng)的運行效果。
目前,本系統(tǒng)作為代理程序運行在本機特定端口時,可以成功代理瀏覽器訪問和 HTTPS 站點,并能夠動態(tài)統(tǒng)計收集訪問指定站點時 TCP 連接個數(shù),請求應答報文對象大小,URL 請求依賴關(guān)系等可以作為站點指紋的數(shù)據(jù)。實際運行結(jié)果表明,本系統(tǒng)能夠長時間運行,并且批量采集給定站點集合的指紋信息。當前系統(tǒng)的一個不足之處在于,針對同一個頁面的2次采集結(jié)果可能出現(xiàn)偏差。其原因是瀏覽器之間的個體差異,使用不同的瀏覽器,由于加載策略的不同,會導致觀察到的 HTTP 報文個數(shù)出現(xiàn)偏差。此外,本系統(tǒng)工作的原理是作為代理程序轉(zhuǎn)發(fā)報文,并在轉(zhuǎn)發(fā)的過程中進行統(tǒng)計。瀏覽器與服務器直接通信和與代理程序通信的訪問行為有所不同,這也會導致最后的輸出結(jié)果與真實的情況存在一定偏差。
參考文獻
[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 指紋識別攻擊與防護[D]. 南京:南京郵電大學, 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服務的SSL代理服務器的設計與實現(xiàn)[J]. 華中科技大學學報(自然科學版),2003,31(Supp):114-116.