徐書欣+趙景
摘 要: 網(wǎng)絡(luò)嗅探技術(shù)是一把雙刃劍,對于網(wǎng)絡(luò)攻擊者和網(wǎng)絡(luò)防御者都有著重要的意義。信息安全管理人員可以在網(wǎng)絡(luò)安全運(yùn)維中通過網(wǎng)絡(luò)嗅探隨時(shí)掌握網(wǎng)絡(luò)的實(shí)際情況;對攻擊者來說,其良好的隱蔽性是一種有效收集信息的手段,并且可以輔助進(jìn)行IP欺騙。網(wǎng)絡(luò)嗅探對信息安全的威脅來自其被動(dòng)性和非干擾性,給Internet安全帶來了極大的隱患。闡述網(wǎng)絡(luò)嗅探和共享式網(wǎng)絡(luò)的定義,目的是進(jìn)一步分析共享式網(wǎng)絡(luò)下的嗅探工作機(jī)制,通過采用共享式網(wǎng)絡(luò)下基于Unix系統(tǒng)的嗅探程序結(jié)構(gòu)的分析方法,提出使用開發(fā)庫LibPcap下的函數(shù)設(shè)計(jì)嗅探軟件的編程流程的結(jié)論,進(jìn)而得到嗅探軟件設(shè)計(jì)分析的結(jié)果。
關(guān)鍵詞: 嗅探軟件; 信息安全; Unix系統(tǒng); IP欺騙; 共享式網(wǎng)絡(luò); 編程流程
中圖分類號: TN711?34; TP393.08 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號: 1004?373X(2018)06?0057?04
Abstract: Network sniffer technology is a double?edged sword which is of great significance for both network attackers and defenders. Information security management personnel can keep track of actual network conditions by means of network sniffing during network security operation and maintenance. For attackers, its good concealment is an effective information collection means, and can help with IP spoofing. The threat of network sniffing to information security comes from its passivity and non?interference, which poses a great danger to Internet security. The definitions of network sniffing and shared network are elaborated in this paper for the purpose of further analyzing work mechanism of sniffing in shared network. By adopting the Unix system based analysis method of sniffer program structure in shared network, it concludes that functions in LibPcap development library can be used to design programming flow of sniffer software, so as to obtain the analysis result of sniffer software design.
Keywords: sniffer software; information security; Unix system; IP spoofing; shared network; programming flow
網(wǎng)絡(luò)嗅探技術(shù)目前發(fā)展已經(jīng)非常完善,對信息安全管理人員在監(jiān)控網(wǎng)絡(luò)間的數(shù)據(jù)傳輸、排除網(wǎng)絡(luò)故障方便具有不可替代的協(xié)助作用,是網(wǎng)絡(luò)監(jiān)控系統(tǒng)的實(shí)現(xiàn)基礎(chǔ),備受信息安全管理人員的青睞。與此同時(shí),網(wǎng)絡(luò)嗅探也給互聯(lián)網(wǎng)安全帶來了很大的不安全因素,許多黑客常常直接或間接借助網(wǎng)絡(luò)嗅探的方法,造成網(wǎng)絡(luò)用戶口令被盜、機(jī)密數(shù)據(jù)被截取等一系列連鎖性安全事件,目前是黑客們常用的手段之一。
1 共享式網(wǎng)絡(luò)下的嗅探原理
1.1 網(wǎng)絡(luò)嗅探技術(shù)
網(wǎng)絡(luò)嗅探又叫作網(wǎng)絡(luò)監(jiān)聽 (Network Sniffing)[1?2],是指利用計(jì)算機(jī)的網(wǎng)絡(luò)接口在對方未知的情況下截獲其計(jì)算機(jī)通信內(nèi)容的一種技術(shù)。在網(wǎng)絡(luò)空間安全領(lǐng)域,網(wǎng)絡(luò)嗅探技術(shù)是一把雙刃劍,對于網(wǎng)絡(luò)攻擊者和網(wǎng)絡(luò)防御者都有著重要的意義。網(wǎng)絡(luò)管理員可以在網(wǎng)絡(luò)安全運(yùn)維中通過網(wǎng)絡(luò)嗅探隨時(shí)掌握網(wǎng)絡(luò)的實(shí)際情況;對黑客而言,它是一種有效收集信息的手段,并且可以輔助進(jìn)行IP欺騙,其只接收不發(fā)送的特性也使其擁有良好的隱蔽性。網(wǎng)絡(luò)嗅探技術(shù)的能力范圍目前只限于局域網(wǎng)[3],在當(dāng)前以以太網(wǎng)為主的局域網(wǎng)環(huán)境下,網(wǎng)絡(luò)嗅探技術(shù)具有原理簡單、易于實(shí)現(xiàn)、難以被察覺的優(yōu)勢。
1.2 共享式網(wǎng)絡(luò)
共享式網(wǎng)絡(luò)的典型代表是總線型網(wǎng)絡(luò)和星型網(wǎng)絡(luò),采用集線器或交換機(jī)進(jìn)行設(shè)備之間的連接,其主要特征是只有一條通信信道[4?5],該信道可以供網(wǎng)絡(luò)中的所有節(jié)點(diǎn)公用,信道上發(fā)送的數(shù)據(jù)可以被網(wǎng)絡(luò)中的所有節(jié)點(diǎn)轉(zhuǎn)發(fā)并被所有其他的節(jié)點(diǎn)接收,分組的地址地段在分組時(shí)應(yīng)被哪臺(tái)機(jī)器接收。一旦收到分組,各機(jī)器將檢查它的地址地段,如果是發(fā)給自己的,則處理該分組,否則將它丟棄。
1.3 共享式網(wǎng)絡(luò)下的嗅探原理
在共享傳輸介質(zhì)的以太網(wǎng)中,所有的通信都是廣播的[6],即該局域網(wǎng)中的任何一臺(tái)節(jié)點(diǎn)都可以接收到在信道上傳遞的數(shù)據(jù)幀,網(wǎng)絡(luò)中的工作站如何處理接收到的數(shù)據(jù)幀,取決于該數(shù)據(jù)幀的真實(shí)目的地址和主機(jī)網(wǎng)卡的接收方式。數(shù)據(jù)幀地址一般有兩種類型[7]:一種是發(fā)往單機(jī)的數(shù)據(jù)幀,其數(shù)據(jù)幀的目的地址是接收節(jié)點(diǎn)主機(jī)的物理地址;另一種是廣播數(shù)據(jù)幀,其數(shù)據(jù)幀的目的地址的每一位都為1,表示該數(shù)據(jù)幀可以讓節(jié)點(diǎn)上所有主機(jī)接收并處理。endprint
在真實(shí)的網(wǎng)絡(luò)環(huán)境下,報(bào)文的收發(fā)都是由工作站上的網(wǎng)卡來完成的,與工作站上安裝的OS無關(guān)。網(wǎng)卡中的驅(qū)動(dòng)程序翻譯出報(bào)文中的目的物理地址,然后按照工作站網(wǎng)卡驅(qū)動(dòng)設(shè)置的接收模式來判斷是否應(yīng)該接收數(shù)據(jù)。在需要接收數(shù)據(jù)的同時(shí)產(chǎn)生中斷服務(wù)信號通知工作站的中央處理器,如果不該接收就丟棄。一般情況下,工作站上的網(wǎng)卡只對目的地址是本機(jī)物理地址的數(shù)據(jù)幀和廣播數(shù)據(jù)幀進(jìn)行響應(yīng),也就是說,如果想讓局域網(wǎng)內(nèi)的某臺(tái)工作站能夠?qū)?shù)據(jù)包進(jìn)行嗅探,首先要對工作站網(wǎng)卡的接收模式進(jìn)行相應(yīng)設(shè)置,網(wǎng)卡一般有以下四種接收模式:
1) 廣播模式(Broadcast):在該模式下,網(wǎng)絡(luò)中的廣播信息都能夠被網(wǎng)卡接收。
2) 組播模式(Multicast):在該模式下,設(shè)網(wǎng)絡(luò)中的組播數(shù)據(jù)網(wǎng)卡都能夠接收。
3) 直接模式(Unicast):在這種模式下,只有目的地址是本機(jī)物理地址的數(shù)據(jù)幀才能被網(wǎng)卡接收。
4) 混雜模式(Promiscuous):在這種模式下,所有通過該網(wǎng)卡的信息都能被接收,而不管該信息是否傳送給它。
一般而言,工作站的網(wǎng)卡都工作在廣播、組播或者直接模式下。網(wǎng)卡接口一般應(yīng)該只響應(yīng)與本機(jī)物理地址相匹配的數(shù)據(jù)幀和廣播幀,對于其他數(shù)據(jù)幀都直接進(jìn)行簡單的丟棄處理。但是,當(dāng)用戶把網(wǎng)卡的工作模式設(shè)置為“混雜模式”時(shí),網(wǎng)卡就能夠接收所有傳遞給它的報(bào)文。這實(shí)際上就是嗅探的基本原理:讓網(wǎng)卡接收所有能接收的數(shù)據(jù),也就是讓主機(jī)處于監(jiān)聽模式。
當(dāng)把某工作站的網(wǎng)卡設(shè)置為“混雜模式”后,該工作站就可以監(jiān)聽并嗅探到同一個(gè)網(wǎng)段下的所有工作站發(fā)送的數(shù)據(jù)幀[8?9]。網(wǎng)卡接收到數(shù)據(jù)包后,就會(huì)將其傳送到上一層來處理,如果在這一階段使用嗅探軟件來提供一定的捕獲和過濾機(jī)制,就可以達(dá)到監(jiān)聽人們所希望知道的信息的目的。
2 共享式網(wǎng)絡(luò)下的嗅探機(jī)制
網(wǎng)絡(luò)嗅探可以通過軟件和硬件兩種方式來實(shí)現(xiàn)。硬件嗅探器通常稱為協(xié)議分析儀,它的明顯特點(diǎn)恰恰是軟件嗅探器所欠缺的,處理速度很高,但是價(jià)格昂貴。軟件嗅探器的優(yōu)點(diǎn)是價(jià)格便宜、易于使用,缺點(diǎn)是功能往往有限,因此會(huì)造成可能無法抓取網(wǎng)絡(luò)上所有的傳輸數(shù)據(jù)的后果,或效率容易受限,目前大部分用戶主要以使用軟件嗅探器為主。
2.1 以太網(wǎng)工作協(xié)議
共享式以太網(wǎng)的傳輸采用廣播的方式[1],一般情況下,工作站的網(wǎng)絡(luò)接口只能接收到發(fā)送給自己的數(shù)據(jù)包,除此之外的其他數(shù)據(jù)都被過濾丟棄掉。該過濾機(jī)制可以作用在合法物理地址層(鏈路層)、合法IP地址層(網(wǎng)絡(luò)層)和合法端口層(傳輸層)三個(gè)層次,工作流程如圖1所示。
圖1 以太網(wǎng)工作協(xié)議
Fig. 1 Work protocol of Ethernet
合法MAC地址層(鏈路層)就是平時(shí)接觸的網(wǎng)卡和網(wǎng)卡驅(qū)動(dòng)程序,主要通過網(wǎng)卡驅(qū)動(dòng)程序來判斷所接收到數(shù)據(jù)包的目標(biāo)地址進(jìn)行過濾,正常情況下,網(wǎng)卡只響應(yīng)與目標(biāo)區(qū)域、本地網(wǎng)絡(luò)接口一致的物理地址的數(shù)據(jù)包以及目標(biāo)區(qū)域內(nèi)廣播數(shù)據(jù)包。當(dāng)網(wǎng)卡接收到這些有用的數(shù)據(jù)幀時(shí),自身內(nèi)置的單片程序就解析出數(shù)據(jù)幀中的目的物理地址,同時(shí)產(chǎn)生中斷信號通知CPU,操作系統(tǒng)進(jìn)行中斷處理后把數(shù)據(jù)幀中所有的有用數(shù)據(jù)轉(zhuǎn)遞給網(wǎng)絡(luò)層作下一步處理,否則將數(shù)據(jù)包丟棄。
合法IP地址層(網(wǎng)絡(luò)層)判斷目的IP地址是否為本機(jī)固定IP地址,以決定是將數(shù)據(jù)包傳遞到傳輸層處理還是丟棄。
合法端口層(傳輸層)判斷對應(yīng)的目標(biāo)端口是否在本機(jī)處于打開狀態(tài),以判斷是根據(jù)TCP/UDP協(xié)議向應(yīng)用層提交其內(nèi)容,還是丟棄。
網(wǎng)卡在混雜模式工作時(shí),所有流經(jīng)網(wǎng)卡的數(shù)據(jù)幀不管目的MAC地址是否匹配本地MAC地址,都會(huì)被網(wǎng)卡驅(qū)動(dòng)程序上交給網(wǎng)絡(luò)層。通過網(wǎng)絡(luò)層處理程序判斷目的IP地址是否為本機(jī)固定IP地址,來決定是傳遞給傳輸層進(jìn)行下一步處理還是丟棄,通過這一特定的機(jī)制,保證上層應(yīng)用能夠抓到本不屬于自己的“數(shù)據(jù)包”。
2.2 嗅探的主要工作機(jī)制
如果要讓用戶的嗅探工具能夠真正“抓到”數(shù)據(jù)包,需要提供一個(gè)虛擬的微端口網(wǎng)卡驅(qū)動(dòng)接口。作為網(wǎng)卡驅(qū)動(dòng)與上一協(xié)議層應(yīng)用的“中間層”,它將網(wǎng)卡設(shè)置成混雜模式,接收上層應(yīng)用的各種抓包請求,以保證能夠抓獲所有經(jīng)過該網(wǎng)卡發(fā)送和接收的數(shù)據(jù)包,并對抓獲的數(shù)據(jù)包進(jìn)行過濾,把與嗅探工具要求設(shè)置相符合的數(shù)據(jù)過濾后進(jìn)行返回。為此,數(shù)據(jù)鏈路層網(wǎng)卡驅(qū)動(dòng)上傳的數(shù)據(jù)要么進(jìn)入正常的TCP/IP協(xié)議棧模塊[10],要么傳遞到分組捕獲過濾區(qū)域,對于接收到的異地?cái)?shù)據(jù)包,前者通過比較目的IP地址進(jìn)行丟棄處理,后者要根據(jù)上層應(yīng)用的需求進(jìn)行上傳或者丟棄,如圖2所示。
圖2 兩種不同的分組處理模式
Fig. 2 Two different packet processing modes
在實(shí)際應(yīng)用中,流經(jīng)網(wǎng)卡的數(shù)據(jù)流量里存在無用或?qū)π崽街鳈C(jī)來說沒用的數(shù)據(jù),為了提高嗅探的效率,需要對數(shù)據(jù)包首先進(jìn)行過濾處理,網(wǎng)絡(luò)嗅探效率的關(guān)鍵是網(wǎng)絡(luò)嗅探模塊過濾機(jī)制的設(shè)計(jì)是否合理。通常從以下幾個(gè)方面對數(shù)據(jù)包進(jìn)行過濾:
1) 站過濾:根據(jù)網(wǎng)卡的物理地址,專門篩選出來自一臺(tái)主機(jī)或服務(wù)器的數(shù)據(jù)。
2) 協(xié)議過濾:根據(jù)傳輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議中的特性進(jìn)行數(shù)據(jù)篩選,如選擇UDP數(shù)據(jù)而非TCP數(shù)據(jù)。
3) 服務(wù)過濾:根據(jù)端口號來選擇特定類型服務(wù)進(jìn)行數(shù)據(jù)包的篩選。
4) 通用過濾:通過數(shù)據(jù)包中某一特定位置開始(如某一偏移的十六進(jìn)制值),篩選出具有某些共同數(shù)據(jù)特征的特定數(shù)據(jù)包。
數(shù)據(jù)包的篩選可以在抓獲前進(jìn)行,用戶首先設(shè)置好過濾條件,這樣系統(tǒng)只抓獲滿足篩選條件的數(shù)據(jù)包,這種方法非常適合于緩沖區(qū)空間有限而避免無用數(shù)據(jù)過多造成溢出現(xiàn)象;也可以在捕獲后進(jìn)行,首先捕獲所有的數(shù)據(jù)包,在設(shè)置好過濾條件后,只顯示滿足條件的數(shù)據(jù)包,這種方法廣泛使用于首先抓取數(shù)據(jù)包,然后再根據(jù)要求篩選出有問題的數(shù)據(jù)來進(jìn)一步處理。
目前,大多數(shù)操作系統(tǒng)都提供有分組捕獲過濾機(jī)制(也稱“中間人”機(jī)制)。在Unix/Linux類操作系統(tǒng)中,其主要有BSD系統(tǒng)中的BPF(Berkeley Packet Filter)、SVR4中的DLPI(Date Link Interface)和Linux中的SOCK_PACKET類型套接字3種分組捕獲過濾機(jī)制。目前大部分嗅探軟件都是依照上述機(jī)制來建立的。
3 共享式網(wǎng)絡(luò)下的嗅探實(shí)現(xiàn)
3.1 系統(tǒng)無關(guān)捕獲函數(shù)庫
由于數(shù)據(jù)包捕獲及過濾模塊都工作在內(nèi)核層,它們的具體實(shí)現(xiàn)完全依賴于操作系統(tǒng)本身。而且考慮到系統(tǒng)的可移植性,避免用戶空間程序可以不依賴于具體的操作系統(tǒng),這就需要提供系統(tǒng)無關(guān)捕獲函數(shù)庫,而且需要在包捕獲和過濾模塊之上建立該函數(shù)庫,保證用戶空間程序能夠使用該函數(shù)庫提供的一整套與操作系統(tǒng)無關(guān)的調(diào)用接口,通過調(diào)用接口與系統(tǒng)內(nèi)核部分傳遞信息。
3.2 基于Unix系統(tǒng)的開發(fā)庫LibPcap
Unix系統(tǒng)的典型代表BSD(Berkeley Software Distribution)下的監(jiān)聽程序結(jié)構(gòu)由網(wǎng)卡驅(qū)動(dòng)程序、BPF捕獲機(jī)制和LibPcap三部分構(gòu)成。當(dāng)把網(wǎng)卡的接收模式設(shè)置為混合模式后,通過網(wǎng)卡驅(qū)動(dòng)程序就可以監(jiān)聽共享網(wǎng)絡(luò)中的所有數(shù)據(jù)幀,然后BPF通過設(shè)置的篩選條件與所有監(jiān)聽到的數(shù)據(jù)幀進(jìn)行對比,若信息一致則將該數(shù)據(jù)幀從網(wǎng)卡驅(qū)動(dòng)程序的緩沖區(qū)中拷貝到核心緩沖區(qū),如圖3所示。
網(wǎng)卡驅(qū)動(dòng)程序和BPF捕獲機(jī)制對任何軟件開發(fā)者來說都是透明的,因此,最核心的部分是如何在系統(tǒng)中使用LibPcap。在LibPcap模塊中用戶程序和操作系統(tǒng)內(nèi)核交互用來實(shí)現(xiàn)根據(jù)用戶要求生成過濾指令、管理用戶緩沖區(qū)、負(fù)責(zé)用戶程序和內(nèi)核的交互等工作,而這些細(xì)節(jié)對軟件開發(fā)者來說是隱藏的,開發(fā)者只需要使用其提供的功能函數(shù)即可。使用LibPcap庫捕獲數(shù)據(jù)包的編程流程如圖4所示。
4 結(jié) 語
在共享網(wǎng)絡(luò)中,網(wǎng)絡(luò)嗅探具有隱蔽性強(qiáng)、網(wǎng)絡(luò)信息泄露不易被發(fā)現(xiàn)的特點(diǎn),這主要是網(wǎng)絡(luò)安全的主要威脅來自于非主動(dòng)性和非干擾性,因此對網(wǎng)絡(luò)攻防雙方都有實(shí)際意義。本文分析共享式網(wǎng)絡(luò)下的嗅探原理和嗅探軟件的工作機(jī)制,結(jié)合共享式網(wǎng)絡(luò)下基于UNIX系統(tǒng)的嗅探程序結(jié)構(gòu),提出使用開發(fā)庫LibPcap下的函數(shù)設(shè)計(jì)嗅探軟件的編程流程并給出了實(shí)現(xiàn)步驟,為進(jìn)一步開發(fā)設(shè)計(jì)嗅探軟件提供了理論基礎(chǔ)。
參考文獻(xiàn)
[1] 王敏,甘剛,吳雪,等.網(wǎng)絡(luò)攻擊與防御[M].西安:西安電子科技大學(xué)出版社,2017:19?21.
WANG Min, GAN Gang, WU Xue, et al. Network attack and defense [M]. Xian: Xidian University Press, 2017: 19?21.
[2] 劉欽.計(jì)算機(jī)網(wǎng)絡(luò)信息安全及其防護(hù)對策探討[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2016(11):16.
LIU Qin. Discussion on information security and protection countermeasures of computer network [J]. Network security technology and application, 2016(11): 16.
[3] 康文崢,余鵬.交換式網(wǎng)絡(luò)嗅探與反嗅探研究[J].數(shù)字技術(shù)與應(yīng)用,2013(3):70.
KANG Wenzheng, YU Peng. Switched network sniffer and anti?sniffing [J]. Digital technology and application, 2013(3): 70.
[4] 王友亮.目前網(wǎng)絡(luò)安全技術(shù)的缺陷及整合趨勢分析[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(12):38?39.
WANG Youliang. Defect and integration trend analysis of network security technology [J]. Network security technology and application, 2015(12):38?39.
[5] 王宗楠.網(wǎng)絡(luò)攻擊技術(shù)與網(wǎng)絡(luò)安全分析[J].電子技術(shù)與軟件工程,2015(12):212.
WANG Zongnan. Network attack technology and network security analysis [J]. Electronic technology and software engineering, 2015(12): 212.
[6] 溫乃寧,龔尚福.基于Winpcap嗅探器技術(shù)分析與實(shí)現(xiàn)[J].高校實(shí)驗(yàn)室工作研究,2013(1):45?46.
WEN Naining, GONG Shangfu. Technology analysis and implementation based on Winpcap sniffer [J]. Research on laboratory work in colleges and universities, 2013(1): 45?46.endprint
[7] 孫君亮,童艷,卞光浪.提高Unix實(shí)時(shí)應(yīng)用軟件實(shí)時(shí)性可靠性關(guān)鍵技術(shù)[J].自動(dòng)化技術(shù)與應(yīng)用,2016(4):26?29.
SUN Junliang, TONG Yan, BIAN Guanglang. Key technology of improving real time reliability of Unix real time application software [J]. Techniques of automation and applications, 2016(4): 26?29.
[8] 于鵬飛,孫春靜,薄紅巖,等.基于Windows平臺(tái)的網(wǎng)絡(luò)嗅探器系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].黑龍江科技信息,2017(6):179.
YU Pengfei, SUN Chunjing, BO Hongyan, et al. Design and implementation of network sniffer system based on Windows platform [J]. Heilongjiang science and technology information, 2017(6): 179.
[9] 麥丞程.基于嗅探技術(shù)的網(wǎng)絡(luò)攻擊應(yīng)對策略研究[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2015(6):35?36.
MAI Chengcheng. Research on network attack response strategy based on sniffing technology [J]. Network security technology and application, 2015(6): 35?36.
[10] 祝翹楚.Android平臺(tái)視頻嗅探下載軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2015:52?65.
ZHU Qiaochu. Design and implementation of video sniffer downloading software on Android platform [D]. Dalian: Dalian University of Technology, 2015: 52?65.endprint