徐書欣+趙景
摘 要: 網絡嗅探技術是一把雙刃劍,對于網絡攻擊者和網絡防御者都有著重要的意義。信息安全管理人員可以在網絡安全運維中通過網絡嗅探隨時掌握網絡的實際情況;對攻擊者來說,其良好的隱蔽性是一種有效收集信息的手段,并且可以輔助進行IP欺騙。網絡嗅探對信息安全的威脅來自其被動性和非干擾性,給Internet安全帶來了極大的隱患。闡述網絡嗅探和共享式網絡的定義,目的是進一步分析共享式網絡下的嗅探工作機制,通過采用共享式網絡下基于Unix系統的嗅探程序結構的分析方法,提出使用開發庫LibPcap下的函數設計嗅探軟件的編程流程的結論,進而得到嗅探軟件設計分析的結果。
關鍵詞: 嗅探軟件; 信息安全; Unix系統; IP欺騙; 共享式網絡; 編程流程
中圖分類號: TN711?34; TP393.08 文獻標識碼: 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
網絡嗅探技術目前發展已經非常完善,對信息安全管理人員在監控網絡間的數據傳輸、排除網絡故障方便具有不可替代的協助作用,是網絡監控系統的實現基礎,備受信息安全管理人員的青睞。與此同時,網絡嗅探也給互聯網安全帶來了很大的不安全因素,許多黑客常常直接或間接借助網絡嗅探的方法,造成網絡用戶口令被盜、機密數據被截取等一系列連鎖性安全事件,目前是黑客們常用的手段之一。
1 共享式網絡下的嗅探原理
1.1 網絡嗅探技術
網絡嗅探又叫作網絡監聽 (Network Sniffing)[1?2],是指利用計算機的網絡接口在對方未知的情況下截獲其計算機通信內容的一種技術。在網絡空間安全領域,網絡嗅探技術是一把雙刃劍,對于網絡攻擊者和網絡防御者都有著重要的意義。網絡管理員可以在網絡安全運維中通過網絡嗅探隨時掌握網絡的實際情況;對黑客而言,它是一種有效收集信息的手段,并且可以輔助進行IP欺騙,其只接收不發送的特性也使其擁有良好的隱蔽性。網絡嗅探技術的能力范圍目前只限于局域網[3],在當前以以太網為主的局域網環境下,網絡嗅探技術具有原理簡單、易于實現、難以被察覺的優勢。
1.2 共享式網絡
共享式網絡的典型代表是總線型網絡和星型網絡,采用集線器或交換機進行設備之間的連接,其主要特征是只有一條通信信道[4?5],該信道可以供網絡中的所有節點公用,信道上發送的數據可以被網絡中的所有節點轉發并被所有其他的節點接收,分組的地址地段在分組時應被哪臺機器接收。一旦收到分組,各機器將檢查它的地址地段,如果是發給自己的,則處理該分組,否則將它丟棄。
1.3 共享式網絡下的嗅探原理
在共享傳輸介質的以太網中,所有的通信都是廣播的[6],即該局域網中的任何一臺節點都可以接收到在信道上傳遞的數據幀,網絡中的工作站如何處理接收到的數據幀,取決于該數據幀的真實目的地址和主機網卡的接收方式。數據幀地址一般有兩種類型[7]:一種是發往單機的數據幀,其數據幀的目的地址是接收節點主機的物理地址;另一種是廣播數據幀,其數據幀的目的地址的每一位都為1,表示該數據幀可以讓節點上所有主機接收并處理。endprint
在真實的網絡環境下,報文的收發都是由工作站上的網卡來完成的,與工作站上安裝的OS無關。網卡中的驅動程序翻譯出報文中的目的物理地址,然后按照工作站網卡驅動設置的接收模式來判斷是否應該接收數據。在需要接收數據的同時產生中斷服務信號通知工作站的中央處理器,如果不該接收就丟棄。一般情況下,工作站上的網卡只對目的地址是本機物理地址的數據幀和廣播數據幀進行響應,也就是說,如果想讓局域網內的某臺工作站能夠對數據包進行嗅探,首先要對工作站網卡的接收模式進行相應設置,網卡一般有以下四種接收模式:
1) 廣播模式(Broadcast):在該模式下,網絡中的廣播信息都能夠被網卡接收。
2) 組播模式(Multicast):在該模式下,設網絡中的組播數據網卡都能夠接收。
3) 直接模式(Unicast):在這種模式下,只有目的地址是本機物理地址的數據幀才能被網卡接收。
4) 混雜模式(Promiscuous):在這種模式下,所有通過該網卡的信息都能被接收,而不管該信息是否傳送給它。
一般而言,工作站的網卡都工作在廣播、組播或者直接模式下。網卡接口一般應該只響應與本機物理地址相匹配的數據幀和廣播幀,對于其他數據幀都直接進行簡單的丟棄處理。但是,當用戶把網卡的工作模式設置為“混雜模式”時,網卡就能夠接收所有傳遞給它的報文。這實際上就是嗅探的基本原理:讓網卡接收所有能接收的數據,也就是讓主機處于監聽模式。
當把某工作站的網卡設置為“混雜模式”后,該工作站就可以監聽并嗅探到同一個網段下的所有工作站發送的數據幀[8?9]。網卡接收到數據包后,就會將其傳送到上一層來處理,如果在這一階段使用嗅探軟件來提供一定的捕獲和過濾機制,就可以達到監聽人們所希望知道的信息的目的。
2 共享式網絡下的嗅探機制
網絡嗅探可以通過軟件和硬件兩種方式來實現。硬件嗅探器通常稱為協議分析儀,它的明顯特點恰恰是軟件嗅探器所欠缺的,處理速度很高,但是價格昂貴。軟件嗅探器的優點是價格便宜、易于使用,缺點是功能往往有限,因此會造成可能無法抓取網絡上所有的傳輸數據的后果,或效率容易受限,目前大部分用戶主要以使用軟件嗅探器為主。
2.1 以太網工作協議
共享式以太網的傳輸采用廣播的方式[1],一般情況下,工作站的網絡接口只能接收到發送給自己的數據包,除此之外的其他數據都被過濾丟棄掉。該過濾機制可以作用在合法物理地址層(鏈路層)、合法IP地址層(網絡層)和合法端口層(傳輸層)三個層次,工作流程如圖1所示。
圖1 以太網工作協議
Fig. 1 Work protocol of Ethernet
合法MAC地址層(鏈路層)就是平時接觸的網卡和網卡驅動程序,主要通過網卡驅動程序來判斷所接收到數據包的目標地址進行過濾,正常情況下,網卡只響應與目標區域、本地網絡接口一致的物理地址的數據包以及目標區域內廣播數據包。當網卡接收到這些有用的數據幀時,自身內置的單片程序就解析出數據幀中的目的物理地址,同時產生中斷信號通知CPU,操作系統進行中斷處理后把數據幀中所有的有用數據轉遞給網絡層作下一步處理,否則將數據包丟棄。
合法IP地址層(網絡層)判斷目的IP地址是否為本機固定IP地址,以決定是將數據包傳遞到傳輸層處理還是丟棄。
合法端口層(傳輸層)判斷對應的目標端口是否在本機處于打開狀態,以判斷是根據TCP/UDP協議向應用層提交其內容,還是丟棄。
網卡在混雜模式工作時,所有流經網卡的數據幀不管目的MAC地址是否匹配本地MAC地址,都會被網卡驅動程序上交給網絡層。通過網絡層處理程序判斷目的IP地址是否為本機固定IP地址,來決定是傳遞給傳輸層進行下一步處理還是丟棄,通過這一特定的機制,保證上層應用能夠抓到本不屬于自己的“數據包”。
2.2 嗅探的主要工作機制
如果要讓用戶的嗅探工具能夠真正“抓到”數據包,需要提供一個虛擬的微端口網卡驅動接口。作為網卡驅動與上一協議層應用的“中間層”,它將網卡設置成混雜模式,接收上層應用的各種抓包請求,以保證能夠抓獲所有經過該網卡發送和接收的數據包,并對抓獲的數據包進行過濾,把與嗅探工具要求設置相符合的數據過濾后進行返回。為此,數據鏈路層網卡驅動上傳的數據要么進入正常的TCP/IP協議棧模塊[10],要么傳遞到分組捕獲過濾區域,對于接收到的異地數據包,前者通過比較目的IP地址進行丟棄處理,后者要根據上層應用的需求進行上傳或者丟棄,如圖2所示。
圖2 兩種不同的分組處理模式
Fig. 2 Two different packet processing modes
在實際應用中,流經網卡的數據流量里存在無用或對嗅探主機來說沒用的數據,為了提高嗅探的效率,需要對數據包首先進行過濾處理,網絡嗅探效率的關鍵是網絡嗅探模塊過濾機制的設計是否合理。通常從以下幾個方面對數據包進行過濾:
1) 站過濾:根據網卡的物理地址,專門篩選出來自一臺主機或服務器的數據。
2) 協議過濾:根據傳輸層協議和網絡層協議中的特性進行數據篩選,如選擇UDP數據而非TCP數據。
3) 服務過濾:根據端口號來選擇特定類型服務進行數據包的篩選。
4) 通用過濾:通過數據包中某一特定位置開始(如某一偏移的十六進制值),篩選出具有某些共同數據特征的特定數據包。
數據包的篩選可以在抓獲前進行,用戶首先設置好過濾條件,這樣系統只抓獲滿足篩選條件的數據包,這種方法非常適合于緩沖區空間有限而避免無用數據過多造成溢出現象;也可以在捕獲后進行,首先捕獲所有的數據包,在設置好過濾條件后,只顯示滿足條件的數據包,這種方法廣泛使用于首先抓取數據包,然后再根據要求篩選出有問題的數據來進一步處理。
目前,大多數操作系統都提供有分組捕獲過濾機制(也稱“中間人”機制)。在Unix/Linux類操作系統中,其主要有BSD系統中的BPF(Berkeley Packet Filter)、SVR4中的DLPI(Date Link Interface)和Linux中的SOCK_PACKET類型套接字3種分組捕獲過濾機制。目前大部分嗅探軟件都是依照上述機制來建立的。
3 共享式網絡下的嗅探實現
3.1 系統無關捕獲函數庫
由于數據包捕獲及過濾模塊都工作在內核層,它們的具體實現完全依賴于操作系統本身。而且考慮到系統的可移植性,避免用戶空間程序可以不依賴于具體的操作系統,這就需要提供系統無關捕獲函數庫,而且需要在包捕獲和過濾模塊之上建立該函數庫,保證用戶空間程序能夠使用該函數庫提供的一整套與操作系統無關的調用接口,通過調用接口與系統內核部分傳遞信息。
3.2 基于Unix系統的開發庫LibPcap
Unix系統的典型代表BSD(Berkeley Software Distribution)下的監聽程序結構由網卡驅動程序、BPF捕獲機制和LibPcap三部分構成。當把網卡的接收模式設置為混合模式后,通過網卡驅動程序就可以監聽共享網絡中的所有數據幀,然后BPF通過設置的篩選條件與所有監聽到的數據幀進行對比,若信息一致則將該數據幀從網卡驅動程序的緩沖區中拷貝到核心緩沖區,如圖3所示。
網卡驅動程序和BPF捕獲機制對任何軟件開發者來說都是透明的,因此,最核心的部分是如何在系統中使用LibPcap。在LibPcap模塊中用戶程序和操作系統內核交互用來實現根據用戶要求生成過濾指令、管理用戶緩沖區、負責用戶程序和內核的交互等工作,而這些細節對軟件開發者來說是隱藏的,開發者只需要使用其提供的功能函數即可。使用LibPcap庫捕獲數據包的編程流程如圖4所示。
4 結 語
在共享網絡中,網絡嗅探具有隱蔽性強、網絡信息泄露不易被發現的特點,這主要是網絡安全的主要威脅來自于非主動性和非干擾性,因此對網絡攻防雙方都有實際意義。本文分析共享式網絡下的嗅探原理和嗅探軟件的工作機制,結合共享式網絡下基于UNIX系統的嗅探程序結構,提出使用開發庫LibPcap下的函數設計嗅探軟件的編程流程并給出了實現步驟,為進一步開發設計嗅探軟件提供了理論基礎。
參考文獻
[1] 王敏,甘剛,吳雪,等.網絡攻擊與防御[M].西安:西安電子科技大學出版社,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].網絡安全技術與應用,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] 康文崢,余鵬.交換式網絡嗅探與反嗅探研究[J].數字技術與應用,2013(3):70.
KANG Wenzheng, YU Peng. Switched network sniffer and anti?sniffing [J]. Digital technology and application, 2013(3): 70.
[4] 王友亮.目前網絡安全技術的缺陷及整合趨勢分析[J].網絡安全技術與應用,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] 王宗楠.網絡攻擊技術與網絡安全分析[J].電子技術與軟件工程,2015(12):212.
WANG Zongnan. Network attack technology and network security analysis [J]. Electronic technology and software engineering, 2015(12): 212.
[6] 溫乃寧,龔尚福.基于Winpcap嗅探器技術分析與實現[J].高校實驗室工作研究,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實時應用軟件實時性可靠性關鍵技術[J].自動化技術與應用,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平臺的網絡嗅探器系統的設計與實現[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] 麥丞程.基于嗅探技術的網絡攻擊應對策略研究[J].網絡安全技術與應用,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平臺視頻嗅探下載軟件的設計與實現[D].大連:大連理工大學,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