摘 要:IP Trap是用來(lái)截獲TCP/IP層數(shù)據(jù)信息的軟件,可以把連接發(fā)起端和終端的數(shù)據(jù)信息無(wú)修改地保存下來(lái)供管理者分析。通過(guò)對(duì)IP Trap技術(shù)及網(wǎng)絡(luò)互聯(lián)協(xié)議的學(xué)習(xí)、總結(jié)和研究,采用套接字編程,設(shè)計(jì)出自己的IP Trap軟件。軟件采用客戶/服務(wù)器(C/S)模式,實(shí)現(xiàn)了IP地址的動(dòng)態(tài)捕獲,使服務(wù)器端能準(zhǔn)確地截獲并保存客戶端的相關(guān)數(shù)據(jù),增強(qiáng)網(wǎng)絡(luò)安全分析的可實(shí)施性。關(guān)鍵詞:套接字; IP地址; 服務(wù)器; 協(xié)議
中圖分類號(hào):TN915-34文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2010)16-0091-03
Implementation and Application of IP Trap
FENG Guo-liang
(Xi’an Railway Vocational Technical Institute, Xi’an 710016, China)
Abstract:The computer network with its fast development makes the network security become the focus. IP Trap(IP data interception )as the data source and basis for network security analysis becomes one of the most important research subjects. IP Trap is a kind of software used for intercepting TCP/IP level data message, which may conserve the data message that joint the initiate extremity to the terminal end without mending for administrator to analysis. IP Trap software was designed with socket programming by studying, summarizing and researching IP Trap technique and the network protocol. The software adopts C/S(Client-Server)pattern to capture dynamic IP address,the server can exactly intercept and conserve the data associated to the client, and improve the performance of network security analysis. Keywords: socket; IP address; server; protocol
收稿日期:2010-04-26
計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,使得網(wǎng)絡(luò)安全已成為業(yè)內(nèi)關(guān)注的焦點(diǎn)[1],IP數(shù)據(jù)截獲(IP Trap)作為網(wǎng)絡(luò)安全分析的數(shù)據(jù)來(lái)源和基礎(chǔ),自然成為研究的重點(diǎn)之一。
網(wǎng)絡(luò)中任一結(jié)點(diǎn)的身份標(biāo)識(shí)與結(jié)點(diǎn)之間的信息交流都要通過(guò)IP地址,這使得IP地址成為非常重要的網(wǎng)絡(luò)資源,給網(wǎng)絡(luò)安全及網(wǎng)絡(luò)配置[2-3]帶來(lái)極大的影響。盡管現(xiàn)在有不少軟件介紹了如何防止其他人隨意更改IP地址,防止通過(guò) IP地址進(jìn)行非法攻擊[4],但是對(duì)IP地址的動(dòng)態(tài)活動(dòng)情況以及數(shù)據(jù)捕獲和及時(shí)分析方面還存在很大差距,這就使IP Trap的研究迫在眉睫。
IP Trap是用來(lái)截獲TCP/IP層數(shù)據(jù)信息的軟件,可以把連接發(fā)起端和終端的數(shù)據(jù)信息無(wú)修改地保存下來(lái)供分析。通過(guò)研究IP Trap,可以從服務(wù)器端清楚地統(tǒng)計(jì)出網(wǎng)絡(luò)用戶的數(shù)量,準(zhǔn)確地查找出進(jìn)行安全攻擊的主機(jī)地址信息,提高網(wǎng)絡(luò)的安全度。
1 相關(guān)基礎(chǔ)知識(shí)的介紹
1.1 TCP/IP協(xié)議的介紹
傳輸控制/網(wǎng)際協(xié)議(transfer controln protocol/internet protocol,TCP/IP協(xié)議)又稱網(wǎng)絡(luò)通信協(xié)議,這個(gè)協(xié)議是Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。
TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。雖然從名字上看TCP/IP包括兩個(gè)協(xié)議,傳輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP),但實(shí)際上TCP/IP是一組協(xié)議,它包括上百個(gè)各種功能的協(xié)議,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。通常說(shuō)TCP/IP是Internet協(xié)議族[5],而不單是TCP和IP,包括TCP,IP,UDP,ICMP,RIP,TELNETFTP,SMTP,ARP,TFTP等許多協(xié)議。
1.2 點(diǎn)對(duì)點(diǎn)TCP/IP連接
一個(gè)運(yùn)行TCP/IP協(xié)議接入因特網(wǎng)的計(jì)算機(jī)必須擁有一個(gè)惟一的IP地址,才能與網(wǎng)上的其他計(jì)算機(jī)進(jìn)行網(wǎng)絡(luò)通信。實(shí)際上,在任何時(shí)刻,Internet連接都能由4個(gè)要素來(lái)描述: 源IP地址、源地址端口號(hào)、目的IP地址和目的地址端口號(hào)。
(1) 點(diǎn)對(duì)點(diǎn)TCP/IP連接的間接實(shí)現(xiàn)
由于大多數(shù)上網(wǎng)用戶每次上網(wǎng)都自動(dòng)獲得一個(gè)動(dòng)態(tài)IP地址,這就使兩臺(tái)計(jì)算機(jī)之間建立直接、方便的點(diǎn)對(duì)點(diǎn)TCP/IP連接存在一定障礙。解決的辦法是通過(guò)間接的方式進(jìn)行連接,即通信雙方同時(shí)登錄到某個(gè)提供服務(wù)的主機(jī)上,由該主機(jī)建立雙方的間接連接,網(wǎng)絡(luò)電話、網(wǎng)絡(luò)尋呼、網(wǎng)絡(luò)游戲大都使用這一方法。隨著技術(shù)的成熟和發(fā)展,這種網(wǎng)絡(luò)連接服務(wù)可以提供諸如網(wǎng)絡(luò)會(huì)議、多方通話、多方游戲等服務(wù),已經(jīng)突破了雙機(jī)連接的局限。
(2) 點(diǎn)對(duì)點(diǎn)TCP/IP連接的直接實(shí)現(xiàn)
支持直接TCP/IP連接的軟件很多,例如微軟的網(wǎng)絡(luò)電話軟件NetMeeting,惟一的前提就是雙方必須在聯(lián)網(wǎng)時(shí)相互獲得對(duì)方的動(dòng)態(tài)IP地址,或者更簡(jiǎn)單地,只要知道被呼叫方的IP地址即可,這類似于知道被叫方的電話號(hào)碼即可建立電話聯(lián)系。于是關(guān)鍵問(wèn)題就是捕捉和交換各自的動(dòng)態(tài)IP地址,或者捕捉和發(fā)布自己的動(dòng)態(tài)IP地址,以等待呼叫進(jìn)而建立連接。
1.3 動(dòng)態(tài)IP地址的捕捉
有許多方法和工具來(lái)實(shí)現(xiàn)動(dòng)態(tài)IP地址的捕捉[6-7],Windows 系統(tǒng)提供了一個(gè)IP配置 (WINIPCFG) 實(shí)用程序。使用方法是單擊“開(kāi)始→運(yùn)行”,在“打開(kāi)”框中鍵入:winipcfg,出現(xiàn)程序窗口后,可以單擊“詳細(xì)信息”進(jìn)行查看。IP配置實(shí)用程序允許用戶或管理員查看當(dāng)前IP地址和其他與網(wǎng)絡(luò)配置有關(guān)的有用信息。有關(guān)配置信息包括主機(jī)名、DNS 服務(wù)器、IP地址、網(wǎng)絡(luò)掩碼等??梢灾刂靡粋€(gè)或多個(gè)IP地址?!搬尫拧被颉案隆卑粹o分別釋放或更新一個(gè)IP地址。如果希望釋放或更新所有IP地址,可單擊“全部釋放”或“全部更新”。其他工具也可以實(shí)現(xiàn)本機(jī)IP地址的查詢。
2 軟件的總體設(shè)計(jì)
2.1 軟件設(shè)計(jì)思想
本軟件用套接字[8](API)嵌套C語(yǔ)言編程創(chuàng)建客戶服?jiǎng)?wù)器連接,使用TCP/IP協(xié)議創(chuàng)建一個(gè)循環(huán)的、面向連接的服務(wù)器。
在創(chuàng)建主套接字后,服務(wù)器主程序進(jìn)入一個(gè)無(wú)限循環(huán)。在每次循環(huán)中,服務(wù)器調(diào)用accept從主套接字上獲得下一個(gè)請(qǐng)求。為了防止服務(wù)器在等待客戶的連接時(shí)耗費(fèi)資源,accept調(diào)用將阻塞服務(wù)器直到有一個(gè)連接到來(lái)。當(dāng)有連接到來(lái)時(shí),TCP協(xié)議進(jìn)行三次握手來(lái)建立連接,在握手過(guò)程完成時(shí),服務(wù)器端的主程序已抓獲了來(lái)訪的數(shù)據(jù)包,并對(duì)其進(jìn)行分析,以獲得終端的IP地址,但不給終端任何回應(yīng);并且系統(tǒng)為到來(lái)的連接分配了一個(gè)新的套接字后,accept調(diào)用返回新套接字的描述符,并允許服務(wù)器繼續(xù)執(zhí)行。如果沒(méi)有連接到達(dá),服務(wù)器線程就在accept調(diào)用處一直阻塞。
2.2 軟件的主要功能
本軟件的主要功能是在服務(wù)器端抓獲終端的來(lái)訪數(shù)據(jù)包,并對(duì)其進(jìn)行分析,以提取并記錄下終端數(shù)據(jù)包的IP地址。
2.3 軟件的設(shè)計(jì)構(gòu)架
(1) 設(shè)計(jì)構(gòu)架
軟件的設(shè)計(jì)架構(gòu)如圖1所示,客戶端(網(wǎng)絡(luò)中有很多)在訪問(wèn)服務(wù)器時(shí),發(fā)送數(shù)據(jù)包到服務(wù)器,服務(wù)器通過(guò)截獲數(shù)據(jù)包,對(duì)其分析[9-10]從中獲得客戶端的IP地址,并記錄其IP地址和訪問(wèn)次數(shù),將數(shù)據(jù)保存下來(lái)供管理員分析。
圖1 網(wǎng)絡(luò)物理圖
(2) 軟件數(shù)據(jù)流向
客戶端發(fā)送數(shù)據(jù)包給服務(wù)器端,服務(wù)器端截獲數(shù)據(jù)包將其存儲(chǔ)在數(shù)據(jù)庫(kù)中并對(duì)其進(jìn)行數(shù)據(jù)分析,以獲得終端的IP地址,數(shù)據(jù)流向如圖2所示。
圖2 軟件數(shù)據(jù)流向
3 軟件設(shè)計(jì)實(shí)現(xiàn)
程序用套接字創(chuàng)建客戶/服務(wù)器模式,主體用C語(yǔ)言編寫(xiě),最后在VC++環(huán)境中編譯運(yùn)行。
3.1 套接字API的簡(jiǎn)介
應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù),為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱為套接字(socket)的接口。
區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。socket原意是“插座”。通過(guò)將這3個(gè)參數(shù)結(jié)合起來(lái),與一個(gè)“插座”socket綁定,應(yīng)用層就可以和傳輸層通過(guò)套接字接口區(qū)分來(lái)自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。
3.2 程序中使用的套接字調(diào)用
圖3說(shuō)明了使用TCP的客戶端和服務(wù)器在各自使用套接字調(diào)用時(shí)的順序。客戶端創(chuàng)建套接字后調(diào)用connnect連接到服務(wù)器,然后調(diào)用send發(fā)送請(qǐng)求,調(diào)用recv 接收響應(yīng)。使用完該連接后,調(diào)用closesocket,而服務(wù)器調(diào)用bind 指定將要使用的本地協(xié)議端口,調(diào)用 listen 設(shè)置隊(duì)列的長(zhǎng)度,然后進(jìn)入循環(huán)。
在該循環(huán)里,服務(wù)器調(diào)用 accept 等待下一個(gè)連接請(qǐng)求,調(diào)用 recv和send與客戶交互,最后調(diào)用closesocket終止該連接。然后,服務(wù)器返回到調(diào)用accept處,等待下一個(gè)連接。
圖3 使用TCP的客戶端和服務(wù)器的
套接字系統(tǒng)調(diào)用的使用序列
3.3 客戶端設(shè)計(jì)及算法實(shí)現(xiàn)
構(gòu)建戶軟件往往比構(gòu)建服務(wù)器軟件容易的多,因?yàn)門(mén)CP處理了所有的可能性和流量控制問(wèn)題。TCP客戶程序使用如下算法建立和服務(wù)器的連接,并與它進(jìn)行通信。步驟如下:
(1) 找到要與其通信的服務(wù)器IP地址和協(xié)議端口號(hào);
(2) 分配套接字;
(3) 指明此連接需要本地機(jī)器中的任意的、未使用的協(xié)議端口,并允許TCP選擇其中一個(gè);
(4) 將套接字連接到服務(wù)器;
(5) 使用應(yīng)用層協(xié)議與服務(wù)器通信(這往往包含發(fā)送請(qǐng)求和等待響應(yīng));
(6) 關(guān)閉連接。
3.4 服務(wù)器端設(shè)計(jì)及算法實(shí)現(xiàn)
TCP面向連接傳輸?shù)难h(huán)服務(wù)器算法步驟如下:
(1) 創(chuàng)建套接字,并將其綁定到服務(wù)所使用的熟知地址上;
(2) 將套接字設(shè)置為被動(dòng)模式,使其準(zhǔn)備為服務(wù)器所用;
(3) 從該套接子上接收下一個(gè)連接請(qǐng)求,獲取該連接中新的套接字;
(4) 重復(fù)地接受客戶的請(qǐng)求,構(gòu)造應(yīng)答,按照應(yīng)用協(xié)議向客戶發(fā)回響應(yīng);
(5) 完成與某個(gè)客戶的交互后,關(guān)閉連接,回到步驟(3),以接受新的連接;
4 結(jié) 語(yǔ)
本文從網(wǎng)絡(luò)互聯(lián)協(xié)議的介紹開(kāi)始,通過(guò)對(duì)網(wǎng)絡(luò)安全的分析,以及對(duì)IP Trap技術(shù)的總結(jié)和研究,采用套接字編程,設(shè)計(jì)了IP Trap算法,實(shí)現(xiàn)了IP地址的動(dòng)態(tài)捕獲,使服務(wù)器端能準(zhǔn)確、高效地截獲并保存客戶端的入侵?jǐn)?shù)據(jù)信息,為網(wǎng)絡(luò)安全分析提供了有力的支持。
參考文獻(xiàn)
[1]中國(guó)互聯(lián)網(wǎng)絡(luò)消息中心.第18 次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[ EB/OL ].[2008 - 05 - 11 ].http://www.cnnic.net.cn.
[2]王石.局域網(wǎng)安全與攻防[M].北京:電子工業(yè)出版社,2006.
[3]麥克勞爾,措哈.黑客攻擊與防御[M].技橋,譯.北京:清華大學(xué)出版社,2004.
[4]IHEAGWARA C, BLYTH A, SINGHAL M. A comparative experimental evaluation study of intrusion detection system performance in a gigabit environment [J].Journal of Computer Security,2003,11(1):1-33.
[5]凌力.網(wǎng)絡(luò)協(xié)議與網(wǎng)絡(luò)安全[M].北京:清華大學(xué)出版社,2007.
[6]郭麗蓉,李杰.動(dòng)態(tài)IP地址的捕獲及其應(yīng)用[J].科技情報(bào)開(kāi)發(fā)與經(jīng)濟(jì),2005,15(2):254-255.
[7]王佰玲,方濱興,云曉春.零拷貝報(bào)文捕獲平臺(tái)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)學(xué)報(bào),2005,28(1):46-52.
[8]COMER D E, STEVENS D L. TCP/IP網(wǎng)絡(luò)互連技術(shù)(卷3):客戶-服務(wù)器編程與應(yīng)用(Windows套接字版)[M].北京:清華大學(xué)出版社,2004.
[9]陶小梅,羅曉曙,陳元琰,等.IP網(wǎng)絡(luò)中的顯式擁塞指示算法研究[J].計(jì)算機(jī)應(yīng)用研究,2005(1):55-58 .
[10]張永波,尚大影.MRTG在校園網(wǎng)絡(luò)流量監(jiān)控中的應(yīng)用[J].科技信息,2007(1):51.