陳淼
西南科技大學(xué)信息工程學(xué)院 621000
基于數(shù)據(jù)包分析的網(wǎng)頁還原技術(shù)研究
陳淼
西南科技大學(xué)信息工程學(xué)院 621000
本文結(jié)合應(yīng)用環(huán)境和實(shí)際需求,研究了網(wǎng)絡(luò)數(shù)據(jù)包信息還原涉及的數(shù)據(jù)包捕獲技術(shù)、數(shù)據(jù)包分析技術(shù)、數(shù)據(jù)包重組技術(shù)、http信息識(shí)別技術(shù)。
網(wǎng)絡(luò)數(shù)據(jù)包捕獲;數(shù)據(jù)包重組;http信息提取
在信息社會(huì)中,信息是維持生產(chǎn)活動(dòng)、經(jīng)濟(jì)活動(dòng)以及社會(huì)活動(dòng)的重要資源,對(duì)政治、經(jīng)濟(jì)和文化都有著深遠(yuǎn)影響。不斷探索網(wǎng)絡(luò)信息監(jiān)聽與還原技術(shù)有助于建立可靠、高效的信息安全保障體系,對(duì)于維護(hù)社會(huì)政治穩(wěn)定和國家信息安全具有重要的現(xiàn)實(shí)意義。因此,對(duì)因特網(wǎng)中一些重要數(shù)據(jù)信息進(jìn)行還原和提取,是保證網(wǎng)絡(luò)應(yīng)用的健康發(fā)展和打擊網(wǎng)絡(luò)犯罪的一個(gè)重要手段。
基于數(shù)據(jù)包分析的網(wǎng)頁還原系統(tǒng)主要分以下幾個(gè)模塊:
1、網(wǎng)絡(luò)數(shù)據(jù)包捕獲模塊
2、網(wǎng)絡(luò)數(shù)據(jù)包協(xié)議分析與數(shù)據(jù)包重組模塊
3、HTTP協(xié)議信息還原模塊
數(shù)據(jù)包捕獲模塊負(fù)責(zé)捕獲流經(jīng)用戶所選網(wǎng)絡(luò)設(shè)備的全部數(shù)據(jù)包,并將捕獲得到的數(shù)據(jù)按照相應(yīng)的規(guī)則以文件格式存儲(chǔ)起來,以供后續(xù)模塊進(jìn)行分析、重組和還原。
數(shù)據(jù)重組模塊首先讀入數(shù)據(jù)包捕獲得到的數(shù)據(jù),分析每一個(gè)捕獲到的數(shù)據(jù)包,將具有相同的源 IP 地址、源端口號(hào)、目的 IP地址和目的端口號(hào)的數(shù)據(jù)包按照先后順序存儲(chǔ)在一起,重組成一個(gè)完整的數(shù)據(jù)包。
HTTP 協(xié)議信息還原模塊通過一層層的數(shù)據(jù)包分解出來,讀取出應(yīng)用層http的負(fù)載信息,通過分析http請(qǐng)求頭得到seq,并為此創(chuàng)建一個(gè)臨時(shí)文件,保存數(shù)據(jù)包的簡(jiǎn)要信息,然后分析http響應(yīng)頭,得到contentencoding、conteng-type、content-length字段值,再存入臨時(shí)文件,最后把http負(fù)載信息與具有相同seq、sport、dport的臨時(shí)文件簡(jiǎn)要信息匹配,若匹配成功,則進(jìn)行相應(yīng)的數(shù)據(jù)插入,還原出相關(guān)網(wǎng)頁信息??偭鞒虉D如圖1所示。
圖1 總流程圖
從降低系統(tǒng)設(shè)計(jì)復(fù)雜性和提高開發(fā)效率的角度考慮,結(jié)合實(shí)際需求出發(fā),本系統(tǒng)沒有采用數(shù)據(jù)庫軟件存儲(chǔ)捕獲到的網(wǎng)絡(luò)數(shù)據(jù)包,而是直接以某種自定義文件格式將其存放在硬盤中。HTTP 協(xié)議信息還原模塊既支持對(duì)于老版本 HTTP/1.0 協(xié)議網(wǎng)頁信息的還原,也支持針對(duì)新版本 HTTP/1.1 協(xié)議的網(wǎng)頁信息還原。
原始數(shù)據(jù)包捕獲是進(jìn)行數(shù)據(jù)挖掘研究的基礎(chǔ),數(shù)據(jù)的可靠性決定了挖掘分析的準(zhǔn)確度。在本次研究中我們利用winpcap提供的用戶接口捕獲校園網(wǎng)絡(luò)拓?fù)渲泄蚕砭W(wǎng)絡(luò)上主機(jī)的收/發(fā)數(shù)據(jù)包。經(jīng)過測(cè)試,我們結(jié)合winpcap接口開發(fā)的數(shù)據(jù)包捕獲軟件捕包效率可以達(dá)到99.63%以上,見下表1[1],可以忽略漏掉的少量數(shù)據(jù)包對(duì)實(shí)驗(yàn)結(jié)果的影響。
表1 數(shù)據(jù)包獲取實(shí)驗(yàn)數(shù)據(jù)
由于IP不能保證可靠、有序的包傳輸,因此包有可能會(huì)被破壞或在到達(dá)時(shí)是無序的。另外,在捕獲過程中會(huì)將重復(fù)的包視為TCP重發(fā)的結(jié)果,也可能會(huì)捕獲那些不會(huì)到達(dá)到預(yù)定接收器的包。在這兩種情況下,捕獲過程都可能會(huì)接收重復(fù)的包。更復(fù)雜的是,TCP不能保證重新傳輸?shù)陌鼤?huì)按照原始數(shù)據(jù)的同一方式再將這些數(shù)據(jù)分組。因此重構(gòu)有序流就顯得尤為重要。
如果一個(gè)流有起始、結(jié)束和兩者間的所有東西,它就是完整的流。根據(jù)S Y N可以確定包連接的TCP包所有字節(jié)流。
為了方便應(yīng)用數(shù)據(jù)的恢復(fù),需要將無序的數(shù)據(jù)片流有序化,使其表現(xiàn)為一個(gè)有序的數(shù)據(jù)片流(或者說是數(shù)據(jù)流)。在軟件實(shí)現(xiàn)數(shù)據(jù)片有序化時(shí),本設(shè)計(jì)采用了一個(gè)帶頭結(jié)點(diǎn)的雙向鏈表隊(duì)列,隊(duì)列中的每個(gè)結(jié)點(diǎn)存儲(chǔ)一個(gè)完整的TCP數(shù)據(jù)流的內(nèi)容,另外還有兩個(gè)元素,分別是指向前導(dǎo)和后續(xù)結(jié)點(diǎn)的結(jié)構(gòu)體指針。
根據(jù)消息體與消息頭之間有兩個(gè)連續(xù)的回車換行符(ASCII 碼為 )作為分隔的特征,利用匹配函數(shù)strstr()找到兩個(gè)連續(xù)的回車換行符出現(xiàn)的位置,從此位置開始,到服務(wù)器端數(shù)據(jù)文件結(jié)尾的全部數(shù)據(jù)均為HTTP 消息體數(shù)據(jù)。
本模塊首先使用find(ack,sport,dport)獲得該數(shù)據(jù)包的信息,通過函數(shù)node_isempty()判斷該數(shù)據(jù)包的data有效長(zhǎng)度是否為0,如果不為0,則通過函數(shù)have_inserted_first_data ()判斷該數(shù)據(jù)包是否已經(jīng)加入過http data內(nèi)容,如果沒有,則調(diào)用函數(shù)init_first_seq()初始化seq,然后使用函數(shù)insert_first_data插入數(shù)據(jù)包的第一條data內(nèi)容;如果已經(jīng)加入過data內(nèi)容,則繼續(xù)加入當(dāng)前分片的data內(nèi)容。然后通過函數(shù)get_complete_percent()判斷當(dāng)前數(shù)據(jù)包是否完整,如果不完整則完成data內(nèi)容的處理;如果是完整的,則通過函數(shù)serialstream()重組當(dāng)前數(shù)據(jù)包,最后把所有分片的內(nèi)容整合在一起,寫入文件。
本文結(jié)合應(yīng)用層http協(xié)議為例,進(jìn)行了協(xié)議分析,通過編寫程序?qū)崿F(xiàn)了對(duì)網(wǎng)絡(luò)中的http數(shù)據(jù)包進(jìn)行捕獲、分析和提取有用信息,得到了網(wǎng)絡(luò)協(xié)議分析技術(shù)實(shí)際應(yīng)用的結(jié)果。實(shí)現(xiàn)了一個(gè)融合解決 HTTP/1.0 和HTTP/1.1 協(xié)議網(wǎng)頁信息還原的通用HTTP協(xié)議信息還原系統(tǒng)。
[1]Miao Chen, Shun-hua Tan, Guo-hai Yang , Yi-zhi Wang. Research on network business identification technology based on IP packets. IEEE ICACIA2010
[2]譚敏生,湯亮.基于HTTP的網(wǎng)絡(luò)數(shù)據(jù)包還原技術(shù)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展.2007年,第17卷(6期):176
10.3969/j.issn.1001-8972.2011.16.045