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