李佳靜 孫陽陽 楊功江 趙彥 高潤智
摘 要:協(xié)議還原技術(shù)是進行網(wǎng)絡(luò)安全監(jiān)控的基礎(chǔ)。本文提出了多端口應(yīng)用協(xié)議還原的分析框架,并對多端口協(xié)議還原中的關(guān)鍵問題給出了算法。在實驗部分,本文以FTP協(xié)議為例,證明本文方法對于多端口應(yīng)用協(xié)議還原的有效性。
關(guān)鍵詞:網(wǎng)絡(luò)協(xié)議端口協(xié)議還原技術(shù)
中圖分類號:TP391 文獻標識碼:A 文章編號:1674-098X(2012)07(c)-0057-02
1 引言
隨著各種各樣的網(wǎng)絡(luò)應(yīng)用快速普及,人們在生活和工作中對互聯(lián)網(wǎng)絡(luò)的依賴程度越來越深。同時各種新的安全問題也隨之產(chǎn)生。這要求我們能夠掌握網(wǎng)絡(luò)的狀態(tài)、對網(wǎng)絡(luò)進行管理和監(jiān)控,從而及時的應(yīng)對各種網(wǎng)絡(luò)安全事件,遏制網(wǎng)絡(luò)犯罪行為的發(fā)生。
對網(wǎng)絡(luò)進行管理和監(jiān)控,需要了解網(wǎng)絡(luò)的工作原理?;ヂ?lián)網(wǎng)中,為便于不同系統(tǒng)不同硬件的主機在互聯(lián)網(wǎng)上互聯(lián),在互聯(lián)網(wǎng)上傳送的數(shù)據(jù)包必須符合同一種協(xié)議。例如TCP/IP協(xié)議標準,它是目前互聯(lián)網(wǎng)上廣泛應(yīng)用的一簇協(xié)議的統(tǒng)稱。
協(xié)議還原系統(tǒng)就是捕獲網(wǎng)絡(luò)中的所有報文,根據(jù)標準的協(xié)議規(guī)定對報文進行重組和還原。它在對底層協(xié)議進行解析的基礎(chǔ)上,主要對應(yīng)用層的協(xié)議進行分析。通過網(wǎng)絡(luò)協(xié)議還原技術(shù),可以迅速的了解兩個網(wǎng)絡(luò)的數(shù)據(jù)傳輸和網(wǎng)絡(luò)通信的交互過程。同時協(xié)議還原技術(shù)還可以為其他系統(tǒng)和工具服務(wù)。
應(yīng)用協(xié)議中,有一類協(xié)議在會話的過程中通過多個端口進行服務(wù),例如ftp協(xié)議以及種類繁多的即時通信協(xié)議。對于這類協(xié)議,需要確定數(shù)據(jù)傳送會話和控制命令會話之間的關(guān)聯(lián)。目前很多工具和開發(fā)包提供IP分片重組、TCP流重組以及應(yīng)用協(xié)議重組,對于多端口的協(xié)議還原技術(shù)的研究還較少。
本文提出了一種多端口應(yīng)用協(xié)議還原的分析框架,即基于TCP/IP協(xié)議的分層協(xié)議還原系統(tǒng)。并對多端口協(xié)議中還原中的關(guān)鍵問題給出了算法。在實驗部分,本文以FTP協(xié)議為例,證明本文方法對于多端口應(yīng)用協(xié)議還原的有效性。
2 多端口應(yīng)用協(xié)議還原分析框架
協(xié)議還原系統(tǒng)分析每個應(yīng)用層會話,將會話的交互過程以及其中傳遞的數(shù)據(jù)內(nèi)容部分以一種比較友好直觀的方式顯示或保存。這里的會話定義為一個應(yīng)用從開始對話到結(jié)束對話的整個過程。
目前大多數(shù)的操作系統(tǒng)中都實現(xiàn)了TCP/IP協(xié)議棧。該協(xié)議簇整體上分為五層,從上到下依次是應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。每一層協(xié)議都具有標準固定的協(xié)議格式,這就給分析網(wǎng)絡(luò)上捕獲的數(shù)據(jù)提供了可能。在分析時,從底層開始向上逐層分析每個數(shù)據(jù)包直至應(yīng)用層,這樣每一個數(shù)據(jù)包的概要信息會被分析出來。
本文提出的多端口應(yīng)用協(xié)議還原的系統(tǒng)框架完成如下功能:
*數(shù)據(jù)包捕獲:對流經(jīng)網(wǎng)卡的所有數(shù)據(jù)包進行抓取。對于有多個網(wǎng)卡的監(jiān)控主機,為每個網(wǎng)絡(luò)適配器建立一個進程以獲得經(jīng)過它的數(shù)據(jù)包;
*基本協(xié)議解碼:對網(wǎng)卡獲取的數(shù)據(jù)包進行基本協(xié)議解碼,同時對數(shù)據(jù)進行校驗和檢查;
*應(yīng)用協(xié)議還原:使用數(shù)據(jù)包與應(yīng)用協(xié)議的特征正則表達式進行匹配得到應(yīng)用協(xié)議;同時對每個連接進行流量大小進行統(tǒng)計;
*數(shù)據(jù)庫管理:實時記錄抓取的數(shù)據(jù)到數(shù)據(jù)庫表中;可以通過參數(shù)配置數(shù)據(jù)庫本地連接或網(wǎng)絡(luò)連接。
3 多端口應(yīng)用協(xié)議還原算法設(shè)計
程序利用Libpcap提供的庫函數(shù)捕獲數(shù)據(jù)包。程序從libpcap得到的是一個以太網(wǎng)幀,需要對其解析,找到IP、TCP等協(xié)議的首部,并分析出其中的各個字段,為之后的多端口應(yīng)用協(xié)議還原做準備。下面以FTP協(xié)議為例,對多端口協(xié)議中還原中的關(guān)鍵問題給出了算法。
首先,FTP并不像HTTP協(xié)議那樣,只需要一個端口作為連接(,HTTP的默認端口是80,FTP的默認端口是21),FTP需要2個端口,一個端口是作為控制連接端口,也就是21這個端口,用于發(fā)送指令給服務(wù)器以及等待服務(wù)器響應(yīng);另一個端口是數(shù)據(jù)傳輸端口,用來建立數(shù)據(jù)傳輸通道。其次,FTP的連接模式有兩種,PORT和PASV。下面分別進行說明。
1 PORT模式
當FTP客戶以PORT模式連接服務(wù)器時,用戶動態(tài)的選擇一個端口號連接服務(wù)器的21端口。當經(jīng)過TCP的三次握手后,控制信道被建立。此時用戶會發(fā)出PORT指令告訴服務(wù)器連接自己的什么端口來建立一條數(shù)據(jù)通道。下面是PORT命令的格式:
PORT 127,0,0,1,28,37
其中,PORT 127,0,0,1,28,37告訴服務(wù)器當收到這個PORT指令后,連接FTP客戶的28x256+37=7205這個端口。
2 PASV模式
當FTP客戶以PASV模式連接服務(wù)器時,在建立了控制信道之后,用戶發(fā)送PASV指令。在這個指令中,用戶告訴服務(wù)器自己要連接服務(wù)器的某一個端口。下面為PASV命令的格式:
PASV 227 Entering Passive Mode (127,0,0,1,26,108)
其中,227 Entering Passive Mode (127,0,0,1,26,80)代表客戶機使用PASV模式連接服務(wù)器的26x256+108=6764端口。
(圖1)中給出了解析PORT命令中的端口號的算法。該算法首先判斷數(shù)據(jù)包中是否包含“PORT”命令,然后跳過之前的非數(shù)字部分,將之后的數(shù)據(jù)部分以“,”為分隔符進行分割。協(xié)商的端口即為portdata[4]*256 + portdata[5]。對于PASV模式下的算法相似,只需要修改strstr(data,"PORT")!= NULL為strstr(data,"Entering Passive Mode") != NULL即可。
為了確定不同端口的會話屬于同一個用戶,為它增加一個新的域DataPort,保存經(jīng)過端口協(xié)商得到的端口號(表1)。
4 實驗與分析
基于以上方法,本文實現(xiàn)了一個協(xié)議還原系統(tǒng)。該系統(tǒng)使用C語言實現(xiàn),在Ubuntu 10.10版本下運行,網(wǎng)絡(luò)環(huán)境為包含兩臺主機的小型局域網(wǎng),控制主機配置為Inter Celeron CPU 1.8GHZ, 2.0G RAM。系統(tǒng)運行10分鐘之后,統(tǒng)計得到了286個會話,其中ID是系統(tǒng)為每個會話分配的標識,作為主鍵;srcIP,dstIP,srcPort和dstPort分別表示源IP,目的IP,源端口和目的端口,Protocol表示應(yīng)用協(xié)議,count表示該會話中的報文個數(shù),datas表示該會話中的數(shù)據(jù)字節(jié)數(shù)。dataPort的默認值為-1,當通過PORT或PASV模式端口協(xié)商之后,將dataPort改寫為協(xié)商后的端口,以表示控制信道和數(shù)據(jù)信道之間的關(guān)系。在實驗訪問了ftp://ftp.ctex.org/CTAN/,這是一個Latex的資源網(wǎng)站。在本次連接中,使用PASV模式下載了graphics目錄下的asymptote.zip文件。由于會話過多,省略一些相似的會話,給出部分實驗結(jié)果。
以上數(shù)據(jù)表明,本文的方法可以捕獲局域網(wǎng)內(nèi)部的全部數(shù)據(jù)包,并且以應(yīng)用層會話為單位,進行數(shù)據(jù)包的統(tǒng)計和分析。對于ftp這種多端口協(xié)議,本文的方法能通過對數(shù)據(jù)包的解析獲得協(xié)商端口,從而確定多個端口之間的關(guān)系。
5 結(jié)語
目前對于多端口的協(xié)議還原技術(shù)研究的還較少。本文提出了一種多端口協(xié)議還原的系統(tǒng)框架,針對多端口協(xié)議還中的一些關(guān)鍵問題給出了解決辦法。通過在真實網(wǎng)絡(luò)中的實驗,證明的方法能夠有效地對多端口的協(xié)議進行還原。在協(xié)議還原的基礎(chǔ)上,可以對網(wǎng)絡(luò)進行管理和監(jiān)控,從而改善整個網(wǎng)絡(luò)的狀況。
參考文獻
[1] 謝希仁.計算機網(wǎng)絡(luò)(第五版)[M].北京:電子工業(yè)出版社,2008年1月.
[2] 平震宇.Libpcap數(shù)據(jù)包捕獲機制剖析與研究[J].信息網(wǎng)絡(luò)安全,2008年第08期:37-39.
[3] 王耕.基于通用平臺的TCP/IP協(xié)議還原技術(shù)研究.電子科技大學(xué)研究生學(xué)位論文,2009年.
[4] 張雪梅,關(guān)偉明.基于TCP/IP模型的網(wǎng)絡(luò)協(xié)議還原技術(shù)的研究.廣西輕工業(yè),2011年第2期:68-70.
[5] 楊帆.網(wǎng)絡(luò)數(shù)據(jù)獲取與還原系統(tǒng)的設(shè)計與實現(xiàn).華中科技大學(xué)研究生學(xué)位論文,2009年.