李佳靜 孫陽陽 楊功江 趙彥 高潤智


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