張秉興
[摘要]隨著計算機網(wǎng)絡(luò)技術(shù)的發(fā)展,網(wǎng)絡(luò)規(guī)模不斷擴大,網(wǎng)絡(luò)中節(jié)點的類型和節(jié)點之間的互連技術(shù)多種多樣,這使得網(wǎng)絡(luò)的拓撲結(jié)構(gòu)日益復(fù)雜,而且處于不斷的變化之中,網(wǎng)絡(luò)本身的安全性問題日益突出。局域網(wǎng)類型探測已作為網(wǎng)絡(luò)安全研究的一項重要內(nèi)容。在局域網(wǎng)中,傳統(tǒng)的網(wǎng)絡(luò)探測技術(shù)緊密依賴SNMP協(xié)議,而SNMP協(xié)議本身就存在著技術(shù)上的缺陷,導(dǎo)致傳統(tǒng)的網(wǎng)絡(luò)探測技術(shù)存在較大的局限性。
[關(guān)鍵詞]計算機局域網(wǎng)探測
中圖分類號:TP3文獻標識碼:A文章編號:1671—7597(2009)1020077--02
網(wǎng)絡(luò)類型探測是依靠計算機軟件和程序自動確定網(wǎng)絡(luò)中各元素相互之間的動態(tài)關(guān)系,其中網(wǎng)絡(luò)元素是指網(wǎng)絡(luò)中的路由器(底層網(wǎng)關(guān))、交換機、網(wǎng)關(guān)(高層網(wǎng)關(guān)),還有子網(wǎng)、網(wǎng)橋、Hub、主機。確定網(wǎng)絡(luò)類型時,首先要分析網(wǎng)絡(luò)拓撲結(jié)構(gòu)時,常把網(wǎng)絡(luò)中的路由器、子網(wǎng)、主機、交換機等設(shè)備抽象成為一個點。把連接這些設(shè)各的信道抽象成兩點之間的邊,這樣網(wǎng)絡(luò)拓撲就抽象成一個圖。網(wǎng)絡(luò)中有主干網(wǎng)、局域網(wǎng)、子網(wǎng)等,其使用的互連設(shè)備不同。而局域網(wǎng)多是由路由器一路由器連接或路由器一子網(wǎng)連接。而子網(wǎng)一般是不同結(jié)構(gòu)的LAN網(wǎng),子網(wǎng)內(nèi)多是主機。所以,針對不同規(guī)模的局域網(wǎng),所需拓撲信息的詳略,探測速度的快慢,探測開銷的大小,而設(shè)計不同的探測算法。
一、計算機局域網(wǎng)類型探測的基本技術(shù)
(一)ARP協(xié)議
地址解析協(xié)議(ARP)實現(xiàn)IP地址和物理地址(MAC)之間的映射。所有網(wǎng)絡(luò)設(shè)備的以太網(wǎng)接口都支持ARP協(xié)議,并且在本機維持著該接口的ARP地址緩存表(ARP緩存),ARP表中的網(wǎng)絡(luò)設(shè)各地址都是晟近活動過的有效IP地址與其MAC地址的對應(yīng)關(guān)系。網(wǎng)絡(luò)拓撲探測中,根據(jù)路由器或交換機的ARP緩存,可以獲得與其以太網(wǎng)端口相連的以太局域網(wǎng)中的網(wǎng)絡(luò)設(shè)備。由于ARP緩存是動態(tài)刷新的,路由器或交換機中無法包括網(wǎng)絡(luò)中實際存在的所有網(wǎng)絡(luò)設(shè)備的信息,所以在網(wǎng)絡(luò)拓撲探測中通過ARP緩存獲取的網(wǎng)絡(luò)拓撲是不完整的,但它可以作為進一步拓撲探測的有效節(jié)點集合。當某主機要向局域網(wǎng)中另一臺主機發(fā)送IP數(shù)據(jù)時,它首先根據(jù)目的主機的IP地址在ARP高速緩存中查詢相應(yīng)的局域網(wǎng)地址,ARP高速緩存是主機維護的一個IP地址到相應(yīng)局域網(wǎng)地址的映射表。如果查到匹配的結(jié)點,則相應(yīng)的局域網(wǎng)地址被寫入局域網(wǎng)幀首部,數(shù)據(jù)報被加入到輸出隊列等候發(fā)送。如果查詢失敗,ARP會先保留待發(fā)送的IP數(shù)據(jù)報,然后廣播一個詢問目的主機硬件地址的ARP報文,等收到回答后再將IP數(shù)據(jù)報發(fā)送出去。
ARPI作時分為四種情況:
1、發(fā)送端是主機,希望將分組發(fā)送給同一網(wǎng)絡(luò)上的另一主機。在這種情況下,數(shù)據(jù)報首部中的邏輯地址即目的IP地址必須映射為物理地址。
2、發(fā)送端是主機,希望將分組發(fā)送給另一個網(wǎng)絡(luò)上的另一個主機。在這種情況下,這個主機要查找它的路由表,要找出到這個目的端的下一跳(路由器)的IP地址。若這個主機沒有路由表,它就要查找默認路由器的IP地址。這個路由器的IP地址就是必須映射為物理地址的那個邏輯地址。
3、發(fā)送端是路由器,它已收到了數(shù)據(jù)報,該數(shù)據(jù)報要發(fā)送給另一個網(wǎng)絡(luò)上的主機。它先檢查它的路由表,找出下一個路由器的IP地址。這個IP地址就是必須映射為物理地址的那個邏輯地址。
4、發(fā)送端是路由器,它已收到了數(shù)據(jù)報,該數(shù)據(jù)報要發(fā)送給同一網(wǎng)絡(luò)上的一個主機,數(shù)據(jù)報的目的IP就是必須映射為物理地址的那個邏輯地址。
(二)ARP欺騙技術(shù)
ARP欺騙技術(shù)是利用ARP協(xié)議的漏洞來實現(xiàn)的。ARP協(xié)議雖然是一個高效的數(shù)據(jù)鏈路層協(xié)議,但是在局域網(wǎng)中,它的工作基礎(chǔ)是各主機相互信任,這就為網(wǎng)絡(luò)監(jiān)聽提供了機會。在設(shè)計ARP協(xié)議時,為了減少網(wǎng)絡(luò)上過多的ARP數(shù)據(jù)通信,對一臺主機來說,即使收到的ARP應(yīng)答并非因自己請求而得到的,它也會將其插入到自己的ARP地址轉(zhuǎn)換表中,ARP欺騙技術(shù)正是利用這一漏洞來實現(xiàn)的。當同一網(wǎng)段內(nèi)的兩臺主機之間的通信時,會分別給這兩臺主機發(fā)送一個ARP應(yīng)答包,讓兩臺主機都把第三方誤認為是對方,這樣,雙方看似直接地實施了通信連接,而實際上中間夾著其他主機(也稱為監(jiān)聽主機)。此時,監(jiān)聽主機不僅可以完成監(jiān)聽,而且監(jiān)聽者還可以隨意更改數(shù)據(jù)包中的某些信息,并成功完成數(shù)據(jù)包轉(zhuǎn)發(fā)。具體來說,ARP欺騙是向被欺騙主機發(fā)送ARP REPLY數(shù)據(jù)包,把數(shù)據(jù)包中的源IP地址改成被欺騙主機IP地址,源MAC地址還是自己的MAC地址。假設(shè)被欺騙主機A,B,欺騙主機c發(fā)送一個ARPREPLY數(shù)據(jù)報給A,其中源IP地址為B的IP地址,源MAC地址為c的機器的MAC地址,那么A發(fā)送到B的數(shù)據(jù)報就發(fā)到c的機器上了,同樣對B做相同到操作,那么A和B之間的數(shù)據(jù)就會源源不斷的通過c的機器轉(zhuǎn)發(fā),直到一個正常的ARP包更改了A,B的ARP緩存為止。
(三)Ping探測工具
Ping程序是對兩個TCP/IP系統(tǒng)連通性進行測試的基本工具,它只利用ICMP回顯請求和回顯應(yīng)答報文。Ping程序的原理是任何支持TCP?IP的設(shè)各在收到一個回顯請求報文的時候,都會返回一個回顯應(yīng)答報文,請求報文和應(yīng)答報文的格式相同。應(yīng)答報文可以簡單的從請求報文中導(dǎo)出,方法是將IP報文中的源地址和目的地址交換,將類型ECHO換成ECHO—REPLAY,將請求報文里收到的數(shù)據(jù)作為應(yīng)答報文中的數(shù)據(jù),然后重新計算出新的IP值以及校驗和,便得到了正確的回顯應(yīng)答報文。若發(fā)送方能夠收到正確的應(yīng)答報文,則報告目的主機運行正常,并計算出發(fā)送請求與接收應(yīng)答報文之間的時間差作為一次交互通信所花費的時間。大多數(shù)Ping程序都提供了一個R選項,其功能是記錄路由的功能。它使得Ping程序在發(fā)送出去的IP數(shù)據(jù)包中設(shè)置的IPRR選項。這樣每個處理該數(shù)據(jù)包的路由器都把它的IP地址放入選項字段中,當數(shù)據(jù)包到達目的端時,IP地址清單應(yīng)該復(fù)制到ICMP回顯應(yīng)答中,這樣返回途中所經(jīng)過的路由器地址也被加入到清單中。當Ping程序收到回顯應(yīng)答時,它就得到了這份IP地址清單,清單中記錄IP地址為路由器轉(zhuǎn)發(fā)報文的出口的IP地址。
(四)Tranceroute探測工具
Traceroute檢測并記錄到達某個指定網(wǎng)絡(luò)目標的路徑。它使用ICMP報文和IP首部的TTL字段,并試圖從沿路由到達目標的每個主機處獲得一個ICMP的TIME—EXCEEDED消息。隨著試圖連接目標的一個不可達端口,將導(dǎo)致沿路每個路由器在丟棄UDP數(shù)據(jù)報時都返回一個ICMP超時報文。其工作過程描述如下:
1、發(fā)送40字節(jié)的UDP報文(TTL=I)至探測目標點:2、第一個接收該報文的路由器丟棄該報文,發(fā)送ICMP超時報文至源節(jié)點:3、源節(jié)點接收IcMP超時報文,并記下超時報文的發(fā)源地,將它作為通向探測目標點的第
一站路由器;4、再次發(fā)送40字節(jié)的UDP報文(TTL=2)至探測目標點:5、第二個接收該報文的路由器丟棄該報文,發(fā)送ICMP超時報文至源節(jié)點:6、源節(jié)點接收該超時報文,并記下超時報文的發(fā)源地,將它作為通向探測目標點的第二站路由器;7、TTL每次加1,重復(fù)上述步驟,直至目標點有回應(yīng),或者未成功到達目標點但己經(jīng)過了最大跳數(shù)。如果報文到達目標點,則會有ICMP超時報文發(fā)送至源節(jié)點(因為報文的目的端口對于TCP/IP系統(tǒng)來說正常情況下是不使用的)。源節(jié)點根據(jù)ICMP超時報文來判別與目標點的連接是否成功。
二、計算機局域網(wǎng)類型探測系統(tǒng)的實現(xiàn)
(一)需求分析
1、工作環(huán)境的建立。為對該系統(tǒng)從需求到設(shè)計有一個全面、清晰的認識,需對該系統(tǒng)做一個全面、深入的研究,進而對其工作的機制和性能有較好的評估。首先從系統(tǒng)的需求以及開發(fā)環(huán)境對軟件系統(tǒng)進行分析。開發(fā)基于Windows平臺下局域網(wǎng)網(wǎng)絡(luò)類型探測系統(tǒng),網(wǎng)絡(luò)環(huán)境是很容易獲得的,因為大多數(shù)局域網(wǎng)都是基于Windows平臺的。在Windows環(huán)境下的局域網(wǎng)(網(wǎng)絡(luò)底層的支持協(xié)議為以太網(wǎng),上層使用的是TCP/IP協(xié)議)對網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)進行截取,獲得在網(wǎng)絡(luò)底層傳輸?shù)囊蕴珟袷綌?shù)據(jù):然后對獲得的以太幀進TCP/IP協(xié)議的解析,主要分析以下幾種協(xié)議的數(shù)據(jù):IP數(shù)據(jù)報、ICMP數(shù)據(jù)報以及TCP協(xié)議的報文段。對它們的目的地址及源地址和端口進行分析,并將結(jié)果輸出到用戶指定的文件和屏幕上。數(shù)據(jù)環(huán)境配置方面,需要一臺或一臺以上的WindowsI作站[具有至少一塊Ether網(wǎng)卡),若干臺工作在TCP/IP協(xié)議下的主機。組成一個小型工作在同一網(wǎng)段的局域網(wǎng),或者該局域網(wǎng)可以通過網(wǎng)關(guān)或路由跟外部網(wǎng)絡(luò)建立連接。本系統(tǒng)研究所要求的運行環(huán)境如下:
軟件環(huán)境:操作系統(tǒng)windows2000;底層驅(qū)動Winpcap3.0。winpcap(windows Packet Capture)是windows平臺下一個免費、公共的網(wǎng)絡(luò)訪問系統(tǒng),是為Linux下的1ibpcap移植到windows平臺下實現(xiàn)數(shù)據(jù)包捕獲而設(shè)計的函數(shù)庫。硬件環(huán)境;網(wǎng)絡(luò)環(huán)境;一臺Pc機:一塊以太網(wǎng)網(wǎng)卡。
2、用戶需求。根據(jù)對網(wǎng)絡(luò)數(shù)據(jù)環(huán)境的分析,局域網(wǎng)類型探測系統(tǒng)的用戶主要分為以下兩種:一種是專業(yè)網(wǎng)站管理中心。網(wǎng)站管理中心進行正常的網(wǎng)絡(luò)管理:網(wǎng)絡(luò)管理員為了更好的維護網(wǎng)絡(luò)的正常工作。對網(wǎng)絡(luò)類型進行及時的探測,并用于診斷網(wǎng)絡(luò)故障。另一種是非專業(yè)小型局域網(wǎng)的用戶。由于局域網(wǎng)的規(guī)模不大,一個公司沒有必要購買昂貴的商業(yè)軟件或硬件產(chǎn)品。借助于局域網(wǎng)類型探測系統(tǒng)就可以解決網(wǎng)絡(luò)管理中可能會出現(xiàn)的問題。
(二)系統(tǒng)概要設(shè)計
1、功能設(shè)計。該網(wǎng)絡(luò)類型探測系統(tǒng)實現(xiàn)的主要功能可以概括為以下幾點:
(1)首先根據(jù)設(shè)置的過濾條件對經(jīng)過主機的網(wǎng)絡(luò)數(shù)據(jù)包進行截獲,實現(xiàn)抓取敏感數(shù)據(jù)包的目的。
(2)然后把截獲的數(shù)據(jù)包暫時保存在用戶指定的文件中。
(3)加載在上一步中保存的數(shù)據(jù)包到軟件,根據(jù)ARP協(xié)議及TcP/IP協(xié)議中各數(shù)據(jù)包的格式對加載的數(shù)據(jù)包進行包分析,獲得數(shù)據(jù)包的長度、發(fā)送的源IP地址、目的IP地址以及發(fā)送時間等相關(guān)信息。
(4)對獲得的報頭中源IP地址、目的lP地址、源端口、目的端口等信息顯示并保存到用戶指定的文件中,以實現(xiàn)將來對相關(guān)內(nèi)容的分析,由此可以判定該局域網(wǎng)是何種類型(共享式還是交換式局域網(wǎng))。
2、模塊設(shè)計。根據(jù)系統(tǒng)所需要實現(xiàn)的功能,將系統(tǒng)劃分為以下幾個主要模塊:初始化模塊。過濾模塊,數(shù)據(jù)報截獲模塊,協(xié)議分析模塊,存儲、判定類型模塊。
初始化模塊:初始化模塊主要的功能是獲得主機上可用的網(wǎng)絡(luò)設(shè)備,根據(jù)用戶的選擇,成對用戶選擇的網(wǎng)卡的混雜工作模式的設(shè)置:并且完成WinPcap的初始化以及啟動工作。數(shù)據(jù)包截獲的一系列準備工作都在這個模塊中完成。
過濾模塊;過濾模塊主要是實現(xiàn)過濾條件的設(shè)置。在此設(shè)置的過濾條件在下面數(shù)據(jù)報截獲模塊中發(fā)揮著重要作用。正是因為本模塊設(shè)置的過濾條件,所以才會實現(xiàn)捕獲敏感數(shù)據(jù)包或是用戶感興趣數(shù)據(jù)包的功能,而不是將網(wǎng)上經(jīng)過本機所有的數(shù)據(jù)包都抓取并保存到文件中。設(shè)置過濾條件在一定程度上也降低了丟包的可能性。
數(shù)據(jù)報截獲模塊:該模塊的功能是根據(jù)設(shè)置的過濾條件截獲數(shù)據(jù)包。并將其存放到用戶指定的文件中。
協(xié)議分析模塊:協(xié)議分析模塊的功能主要是從用戶指定的文件中加載截獲的數(shù)據(jù)包,并根據(jù)ARP協(xié)議及TCP/IP協(xié)議中各個數(shù)據(jù)包的格式對以上加載的數(shù)據(jù)包進行解析,獲得數(shù)據(jù)包的發(fā)送地址,目的地址,發(fā)送時間,源端口號、目的端口號等等。其中這里主要實現(xiàn)了對數(shù)據(jù)包的分析,為判定局域網(wǎng)類型提供信息保證。
存儲、判定類型模塊:根據(jù)上一個模塊分析所得的IP地址、端口等各項信息內(nèi)容判定局域網(wǎng)類型,并按照規(guī)定的格式寫到用戶指定的文件中。這樣劃分模塊的目的是更好的滿足用戶的需求同時便于后期程序的編程實現(xiàn)。通過對各模塊的設(shè)計利于在后期的實現(xiàn)過程中對各個功能的把握,這樣能更優(yōu)的實現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)包的過濾和截獲,協(xié)議分析,以及數(shù)據(jù)的輸出和網(wǎng)絡(luò)類型的判定。
(三)系統(tǒng)性能分析
隨著Internet的飛速發(fā)展,網(wǎng)絡(luò)帶寬的不斷增大,網(wǎng)絡(luò)上數(shù)據(jù)流量越來越大,因此,對網(wǎng)絡(luò)類型進行探測的要求也越來越高。提高網(wǎng)絡(luò)類型探測系統(tǒng)的性能是使其適應(yīng)現(xiàn)代及未來網(wǎng)絡(luò)環(huán)境的必然要求。網(wǎng)絡(luò)類型探測系統(tǒng)主要是通過捕獲網(wǎng)絡(luò)上的鏈路數(shù)據(jù)報,再分析其內(nèi)容,從而檢測其類型是共享式網(wǎng)絡(luò)類型還是交換式網(wǎng)絡(luò)類型。在整個探測過程中,也實現(xiàn)了對網(wǎng)絡(luò)的狀態(tài)、數(shù)據(jù)流動情況的檢測、并在需要的時候由相應(yīng)組件做出適當?shù)捻憫?yīng),或者暫時將違規(guī)者的IP地址過濾掉。
三、結(jié)束話
局域網(wǎng)的廣播機制和網(wǎng)卡的特定的混雜工作模式?jīng)Q定了網(wǎng)絡(luò)數(shù)據(jù)捕獲的可能性,同時可以采取調(diào)用API函數(shù)庫的方式來完成底層的功能和驅(qū)動來實現(xiàn)有關(guān)網(wǎng)絡(luò)數(shù)據(jù)捕獲和分析系統(tǒng)的編程,這樣可以很大的簡化編程過程,提高編程的效率也能提高程序本身的健壯性。