王文奇,潘 恒,鄭秋生,關云云
(1.中原工學院 計算機信息系統安全評估河南省工程實驗室,河南 鄭州450007;2.中原工學院 鄭州市計算機網絡安全評估重點實驗室,河南 鄭州450007;3.中原工學院圖書館,河南 鄭州450007)
網絡取證[1]近年網絡取證逐漸成為研究的熱點。國內如田志宏等針對證據推理網絡實時取證進行了研究[2];楊珺等基于人工免疫原理對過濾網絡證據進行了研究[3];楊化志等利用Linux的防火墻機制對在線還原基于HTTP 協議的文件進行了研究[4];王文奇等提出網絡取證的完整性技術并對網絡取證的規則進行了探討[5];國外研究方面,Pilli E.S等提出了網絡取證的通用模型及對應的工具,其側重點是研究網絡取證的特征[6];Palomoa等則采用自組織映射技術對網絡數據特征進行了研究[7]。國內外對瀏覽器內容取證研究相對較少。
目前已開發的網絡監控取證工具相對較多,網絡監控僅僅監控犯罪嫌疑人訪問的鏈接,應用于取證存在如下問題:①由于頁面可能隨時更新,無法獲得其訪問網頁原始內容;②許多Web服務 (如各類色情網站)返回的頁面內容需要客戶提供用戶和密碼,之后客戶端及與服務器端會話依靠Cookie來維持,而Cookie是有生存周期的,僅靠監控鏈接無法獲取其瀏覽內容。因此有必要針對網絡犯罪,如何獲取其網絡數據并還原網絡內容進行研究。
在前期研究中,主要是為保證取證網絡會話的完整性,設計了基于二維鏈表的多隊列高速網絡數據緩存算法[5],解決了高效緩存網絡數據的關鍵問題。因此本次研究是在前期研究的基礎上進行網絡取證研究,包括捕獲的網絡數據高效匹配算法、網絡數據重組和HTTP數據還原恢復技術。通過還原被取證用戶的瀏覽器活動過程和活動現場,為司法單位相關部門提供新的追蹤犯罪分子、偵破違法事件的手段和方法。
當使用瀏覽器瀏覽頁面時,作為瀏覽器作為客戶端訪問服務器過程如下:瀏覽器析取URL (uniform resource locator)地址中主機域名,利用DNS協議訪問DNS服務器并獲取其IP地址,基于HTTP 協議利用GET 命令向服務器發送獲取訪問頁面請求。對于靜態頁面,服務器端將存儲于服務器端對應的頁面文件傳回;對于動態頁面 (如需要用戶登錄的郵箱系統、論壇等頁面),服務器端則依據會話的cookie,自動生成動態頁面并傳回客戶端。客戶端瀏覽器獲取Web 頁面的HTML 文本后解析并緩存于本地,Web頁面一般不是只有文字組成,而且包含圖片、音頻、視頻以及PHP、CGI、JSP甚至是HTML 等腳本語言構成的內嵌文件,這些資源在Web頁面中以鏈接的形式內嵌。瀏覽器解析這些鏈接后再次利用GET 命令獲得對應的服務器端文件,直至獲得Web 頁面中所有內嵌資源,并根據HTML腳本描述顯示,從而呈現豐富多彩的頁面內容。客戶端向服務器提交內容時,則通過POST、PUT 命令提交。因此,由中間監控者看來,瀏覽器訪問服務器并顯示Web頁面的過程,實際上就是客戶端利用HTTP 協議的GET命令不斷獲取服務文件,以及少量POST、PUT 命令向服務器提交內容的過程。
由于IPSEC等安全協議的復雜性 (如需要服務器及客戶端證書),除少數電子商務性質涉及金融交易的網絡服務外,為方便用戶的訪問,實際應用中,當前提供Web服務的網絡幾乎全部采用明文傳輸,甚至這些門戶網站 (如新浪、網易等)提供的郵件傳輸服務也是明文傳輸,對特定用戶提供Web服務的各種論壇、OA 系統等網站,也絕大部分采用明文傳輸,明文傳輸的特征為實時取證及根據內容恢復網頁提供了可能。
在文獻 [5]中,我們定義了網絡取證模型,以及網絡取證必須遵循證據的客觀性規則、完整性規則。在此基礎上,我們認為,由于網絡數據的易逝性、通信的復雜性及電子數據易修改特征,網絡證據還必須遵循證據的有效性規則,為此有以下規則:
網絡證據有效性規則:一個由網絡數據包構成的網絡證據集合只有同時包含以下兩部分,網絡證據才是有效的:
網絡證據:E= {S∪C};其中:E 表示網絡數據包組成的證據集;S由會話內容組成的網絡數據包集;C 網絡控制的數據包集,是在網絡內容傳輸過程中產生的必要的網絡控制數據包集,包含了豐富的控制信息,且難以完整地偽造,用于證明S并能夠形成一條完整的證據鏈。
如在進行瀏覽器進行網頁瀏覽時,基于DNS協議客戶端需要先獲得服務器的IP 地址,基于TCP 協議雙方需要先進行三次握手協議,會產生大量的網絡控制信息;基于HTTP協議,客戶端使用GET 命令獲取服務器資源時,雙方需要交換大量相關信息。這些數據包是獲得網頁內容過程中必要的網絡通信,不包含證據內容,但可以用于證明網絡數據的真實性,從而間接證明網絡數據的司法有效性。
根據網絡取證的對象,網絡取證可以分為兩種:特定主機監控取證、關鍵詞分析取證。特定主機監控取證,需將該主機所有網絡數據取證保存,適用于已掌握取證對象主機的取證,取證方式較為簡單。關鍵詞取證分析,適用于根據關鍵詞在特定的網絡段內監控海量網絡數據包,從中實時分析網絡數據取證,設計相對較為復雜。
針對后者,設計如圖1所示的網絡取證框架。

圖1 網絡取證框架
框架系統描述如下:
(1)零拷貝技術
其主要功能是從網絡中提取鏈路層原始網絡數據。由于取證網絡數據一般是從高速網絡中提取,WinPcap在高速網絡下存在一定的丟包現象[8],基于此,采用零拷貝技術捕獲鏈路層網絡數據,以盡量減少丟包。
(2)高速網絡數據緩存系統
由于網絡數據包的易逝性,當判斷到網絡數據需要取證時,之前相關網絡數據包早已流過,造成網絡數據不完整而無法將網絡數據還原到應用層。為此利用計算機資源盡可能地緩存網絡數據包,需要取證時,再把相關網絡數據保存到證據庫。
(3)關鍵詞取證分析系統
先查看該會話是否處于取證會話列表,如是則直接取證保存;否則,將捕獲的鏈路層數據還原到應用層,根據預設的關鍵詞判斷是否需要取證,如果需要取證則將該會話信息及其它相關會話信息加入取證會話列表,并通知高速網絡數據緩存系統,將所有相關的網絡數據包保存到證據庫,高速網絡數據緩存系統不再緩存這些相關會話。
(4)證據庫保存系統
采用加密簽名技術,對原始網絡證據加密簽名,以防止網絡證據保存、復制及傳輸過程中被篡改,保證其司法有效性。由于捕獲的是鏈路層數據,保存數據格式采用tcpdump等工具使用的通用網絡數據存儲格式。
(5)還原顯示系統
將捕獲的鏈路層數據根據TCP/IP 協議將鏈路層數據還原到應用層,還原瀏覽器使用過程及內容,并以可視的方式呈現給取證用戶。
上述系統中,零拷貝技術已是相對成熟技術;證據保存技術也采用成熟的加密簽名技術及通用存儲格式;高速網絡數據緩存系統已在文獻 [5]中進行描述和論證。因此本文主要就其它兩個系統中未解決的關鍵問題進行分析和論述。
關鍵詞取證分析系統是根據取證關鍵詞對海量高速網絡數據析取分析,從而判斷網絡數據是否為要取證網絡數據。其主要目標是識別與證據相關網絡數據。
基于1.1分析,訪問一次Web頁面需要客戶端/服務器端 多 次GET 會 話 交 互 完 成,經 對IE (6.0 以 上)、Chrome(20.0以上)及Mozilla等測試分析,HTTP 層多次GET 會話在TCP 層可能是同一個TCP 會話 (源/目的IP地址,源/目的端口號),也可能是不同TCP會話 (并行實現GET 命令)。監控端表現為僅是客戶端端口號不同,取證分析就是盡量將這些相關會話分析出來以便保存。
根據HTTP協議,服務器向客戶端傳輸數據過程中,可以采用多種編碼方式如UTF 系列編碼、GB2312、BIG5等,因此不能直接對網絡數據包進行關鍵詞匹配,為提高匹配速度,先把取證關鍵詞轉換成不同編碼,根據會話的編碼方式,提取對應編碼的取證關鍵詞匹配分析。對于以明文傳輸的網絡數據,可以直接對每一個網絡數據包進行取證關鍵詞匹配;對于壓縮網絡數據,則需要將整個會話緩存后,解壓再匹配取證關鍵詞。
對網絡數據的處理是以TCP 層網絡會話為單位處理,需要保存網絡會話的相關信息,高速網絡下可能保存大量的會話,為盡快定位到相關會話,設計哈希函數定位。
TCP層網絡會話一般通過4個域標識:目的/源IP 地址、目的/源端口號。由于Web 服務器端口號一般為80,所以只考慮另外3個域。取證系統針對某一網段監控取證時,IP地址的中高位部分即網絡地址部分變化較小,所以可以舍棄不予考慮,客戶端端口號一般是由客戶端操作系統根據當前運行情況自動生成,一般是連續的,即表示端口號的二進制字段中低位更富于變化。
基于以上分析,設計IP哈希函數如圖2所示,首先是客戶端和服務器端IP地址低2字節相異或,然后與客戶端的端口號交錯異或,這是由于IP地址、端口號均在低字節變化性更強,有助于將TCP會話均勻分布到目的空間。

圖2 哈希函數設計
當捕獲到鏈路層數據包后,解析出IP層數據包,根據報頭中上層協議標識,拋棄非TCP 協議網絡數據,解析TCP包頭,拋棄不含80端口網絡數據。解析會話信息,如果屬于取證會話列表則直接取證,否則在應用層匹配分析,其中取證會話列表的定位采用上述哈希函數。
應用層匹配時,根據分析會話列表查看會話狀態,如果列表中沒有該會話信息,先根據HTTP協議析取該會話客戶端相關信息,這時應該獲得GET 命令請求數據包。當匹配網絡數據應用層前4個字符 “GET” (包含空格)時,判斷為客戶端GET 請求,根據其各個域的值獲得客戶端相關信息,如圖3為利用GET 請求訪問163服務器圖片文件的HTTP頭信息。利用服務器對客戶端的響應獲取服務器的相關信息。根據這些頭信息可以獲取以下會話相關信息:傳輸方式、是否壓縮傳輸、壓縮算法、雙方采用的編碼方式、瀏覽器類型等。

圖3 GET 訪問數據包頭
匹配取證關鍵詞時,為充分發揮多核計算機優勢,采用并行計算模式進行檢索。目前有多種并行編程方式,如多線程技術、蘋果公司發起的并行異構編程OpenCL 以及微軟推出C++加速大規模并行計算 (accelerated massive parallelism,AMP)[9]等,鑒于系統在Windows系統上采用C++語言開發,采用AMP 并行編程模式,AMP 實際上是由系統從底層啟動多線程對容器中的數據并行計算并由系統對計算任務優化處理。同時實測結果表明,Windows系統下AMP相對于應用程序采用多線程技術并行計算有一定的優勢[10]。對于本算法,字符串匹配可以作為相同的計算任務,數據包則是一個并行計算的數據,因此,可以考慮將網絡數據分段而有利于并行計算。基于以上分析,將網絡數據分割成n段,考慮到程序效率和當前CPU 大多采用超線程技術的現狀,這里n設計CPU 個數的2倍;為保證包含關鍵詞的數據內容分到同一數據段,分段時采用冗余分段,不同段之間至少重復的字符長度是最長取證關鍵詞長度。將分段后的n段網絡數據置于容器,利用boost函數庫將匹配函數綁定為函數對象[11],調用該函數對象進行并行搜索匹配。
如果匹配成功,則認為是需要取證網絡會話,將該會話加入取證會話列表,并通知高速網絡數據緩存系統將之前緩存的相關網絡數據包存入證據庫。
由于HTML支持格式復雜性,不同的瀏覽器存在不同的顯示風格,全新開發能夠解析鏈路層數據到應用層并顯示的瀏覽器是不現實的。基于瀏覽器都是將Web內容緩存于本地并顯示,同時目前的主流瀏覽器提供了其瀏覽器內核插件如IE、Chrome、Firefox等。為此,將網絡數據中的服務器資源還原到本地,利用插件技術,將這些網頁重構并顯示。
基于以上分析,設計還原網絡數據過程如圖4 所示。主要包含兩部分:①根據網絡數據還原服務器資源;②重構Web頁面。
主要功能是利用IP/TCP 各層協議將網絡會話重組到應用層,還原服務器資源。網絡數據在傳輸過程中,由于網絡的復雜性,可能會出現不同的異常狀況,如數據的重傳、網絡數據異常斷開等。因此,需要根據控制信息對異常數據處理。

圖4 網絡數據還原顯示流程
從證據文件讀取數據為鏈路層數據包,鏈路層包含客戶端和服務器相關物理信息 (如MAC 地址、物理網絡類型等),因此利用鏈路層信息可以用于還原取證環境,從而間接證明取證過程的司法有效性。
根據通信雙方的IP地址、端口號確定同一會話;同一會話中,根據數據包的序列號和確認號對網絡數據重新排序,并丟棄重傳數據,重組網絡數據還原服務器端資源。
傳輸層通過控制位FIN/RST 終止會話,可能產生不完整文件;同時在高速網絡環境下捕包,可能會產生少量丟包現象,利用TCP序列號無法重組文件。因此需要對這些不完整文件進一步處理,采取以下措施:所有正常數據處理完成之后,根據其序列號之差以及應用層獲得文件長度判斷丟棄數據的大小,并根據文件類型填充不同數據,使之符合該文件格式。
根據HTTP服務器響應頭可以獲取以下信息:文件的傳輸方式是壓縮傳輸還是正常傳輸,采用的字符集、文件的長度,如果是chunked方式編碼則沒有文件長度,需要根據chunked協議判斷文件傳輸是否結束,因此正常網絡通信過程中,在應用層判斷文件傳輸是否已經完成。
瀏覽的頁面一般為HTML文件,頁面內嵌了圖片、音頻等資源,根據HTTP 協議的各個域值來分析這種關聯性:根據 “GET”域值和 “Host”域值合成本次訪問的URL地址,如圖3合成的URL 地址為 “news.2hua.com/adiframe/163/index08/images/a1.jpg”;根 據 “Referer”域值獲取 該 鏈 接 源URL 地 址,為news.2hua.com/adiframe/163/index08/index.htm,該HTML 頁 面 源 碼 中 應 包 含 本URL地址鏈接,為該頁面的內嵌圖片。
基于1.1分析,瀏覽器訪問頁面時,獲得頁面HTML腳本,解析編碼內容,進一步獲取其中的服務器資源。由于這些資源已經還原并保存于本地,為此可以修改頁面腳本,將其修改為訪問還原的本地 “服務器資源”。如圖3中,還 原 的 網 頁"news.2hua.com/adiframe/163/index08/index.htm"中 一 定 含 有 鏈 接 “news.2hua.com/adiframe/163/index08/images/a1.jpg”。將訪問服務器的鏈接修改為訪問本地文件a1.jpg,瀏覽器將直接顯示本地a1.jpg。為此首要任務是在HTML腳本中析取出這些鏈接。根據HTML語法,表示獲取資源語句位于HTML 屬性值中,這些屬性值可以用雙引號、單引號、圓括號等不同的邊界標識來區分屬性值,同時對空格等字符忽略解析。為準確析取網頁中鏈接資源,采用正則表達式表示網頁中內嵌鏈接資源:"(\s*?=\s*?)*? ([’" =\ (]) (http://)(.+?)([’" \)])"。
正則搜索函數采用boost庫中正則搜索函數 (boost::regex_search)[10],上述正則表達式中,函數匹配結果將析取服務器端資源URL以及網絡資源類型如:HREF (超文本引用)、內嵌資源類型 (如bgsound為背景音樂、img為圖片)。根據搜索結果,當網絡資源類型為超文本引用時,表示用戶可以通過本頁面訪問其它資源;如為內嵌資源,需要更改頁面編碼使之替換為已還原的本地“服務器資源”。
對于JS (javascript)、XML 以 及FALSH 等 內 嵌 的 腳本語言代碼,由于其訪問資源標識可能用變量來表示,需要解析其變量訪問資源標識,為此設計了分析資源標識的正則表達式如下:" (src\d:\s*?")(.*?)(")";
獲取變量標識后將其指向對應的服務器資源修改為指向已還原的本地 “服務器資源”。
取證系統運行及開發環境為操作系統為64 位Windows7.0,采用Visual Studio 2013;實現語言采用C++11。取證系統運行于某高校出口處,交換機為千兆以太網交換機,流量最大為750 Mb/s左右。取證主機的內存采用DDR3代16G 內存,CPU 采用酷睿內核i7。
首先對并行關鍵詞分析算法的有效性進行測試,圖5顯示了不同關鍵詞個數在不同流量下的數據包未檢測率,實測結果顯示,采用AMP 并行分析技術即使在500 Mbps流量下,也有較好的檢測效果,而采用串行分析時,4 個關鍵詞在100 Mbps流量時,未檢測率就會有明顯提高,因此,AMP并行分析能夠較大幅度地提高檢測效果。

圖5 關鍵詞并行處理算法測試
同時還對頁面還原有效性進行了測試,圖6 (a)為對捕獲的鏈路層數據重構并通過IE 提供的COM 控件還原顯示的163主頁效果。該頁面內嵌了JS腳本、圖片,聲音等資源,并包含了彈出頁面,重構結果顯示,上述算法能夠較好地還原原頁面內容。圖6 (b)為重構某學校OA 系統用戶登錄后的頁面,并還原了用戶下載文件的過程及內容,由于該系統網絡數據沒有加密,重構時,獲取了用戶登錄時的用戶名和密碼。

圖6 IE瀏覽器還原結果
本文采用監控網絡方式對瀏覽器訪問過程進行了取證和內容還原研究,通過取證用戶瀏覽時所產生的網絡數據,將取證的鏈路層數據還原到應用層并重構頁面。實驗結果顯示,設計的系統能夠對瀏覽器用戶的上網過程進行初步的取證和還原,基本達到了設計的目的。但是由于網頁是一種非常復雜且靈活的腳本語言,瀏覽器用戶行為也是復雜多變,因此需要后續的工作中對不同復雜頁面和不同瀏覽器用戶行為進行大量測試,以期進一步驗證系統的有效性并改進算法,進而實用化。
[1]Casey E.Digital evidence and computer crime:Forensic science,computers and the internet[M].Academic press,2011.
[2]TIAN Zhihong,YU Xiangzhan,ZHANG Hongli,et al.A real time network intrusion forensics method based on evidence reasoning network [J].Chinese Journal of Computers,2014,37 (5):1184-1186 (in Chinese). [田 志宏,余翔 湛,張 宏莉,等.基于證據推理網絡的實時網絡入侵取證方法 [J].計算機學報,2014,37 (5):1184-1186.]
[3]YANG Jun,MA Qinsheng,WANG Min,et al.Filtering for network forensics data on artificial immune network clustering[J].Engineering Journal of Wuhan University,2012,45(1):123-127 (in Chinese). [楊珺,馬秦生,王敏,等.網絡取證數據的人工免疫網絡聚類過濾方法 [J].武漢大學學報工學版,2012,45 (1):123-127.]
[4]YANG Huazhi,XU Lan,LI Peifeng,et al.Design and realisation of IPQueue-based real-time Web pages restoring system[J].Computer Applications and Software,2011,28 (10):23-26 (in Chinese). [楊化志,許蘭,李培峰,等.基于IPQueue實時網頁還原系統的設計與實現 [J].計算機應用與軟件,2011,28 (10):23-26.]
[5]WANG Wenqi,MIAO Fengjun,PAN Lei,et al.The research on integrity technique of network based forensic [J].Chinese Journal of Electronics,2010,38 (11):2529-2534(in Chinese).[王文奇,苗鳳君,潘磊,等.網絡取證完整性技術研究 [J].電子學報,2010,38 (11):2529-2534.]
[6]Pilli ES,Joshi RC,Niyogi R.Network forensic frameworks:Survey and research challenges [J].Digital Investigation,2010,7 (1):14-27.
[7]Palomoa EJ,Northb J,Elizondob D,et al.Application of growing hierarchical SOM for visualisation of network forensics traffic data[J].Neural Networks,2012,32:275-284.
[8]Orosz P,Skopko T,Imrek J.Performance evaluation of the nanosecond resolution time stamping feature of the enhanced lib-pcap [C]//The Sixth International Conference on Systems and Networks Communications,2011:220-225.
[9]Gregory K,Miller A.C++AMP:Accelerated massive parallelism with microsoft visual C++ [M].O’Reilly Media,Inc,2012.
[10]WANG Wenqi,XU Xiangyi.Parallel search technology research based on multi-core processor[J].Journal of Zhongyuan University of Technology,2014,24 (3):54-57 (in Chinese). [王文奇,徐香義.基于多核處理器的文本并行搜索技術研究 [J].中原工學院學報,2014,24 (3):54-57.]
[11]Jrvi J,Freeman J.C++lambda expressions and closures[J].Science of Computer Programming,2010,75 (9):762-772.