網絡嗅探器工作原理及驅動流程

2020-12-24 電子發燒友

  嗅探器是一種監視網絡數據運行的軟體設備,協議分析器既能用於合法網絡管理也能用於竊取網絡信息。網絡運作和維護都可以採用協議分析器:如監視網絡流量、分析數據包、監視網絡資源利用、執行網絡安全操作規則、鑑定分析網絡數據以及診斷並修復網絡問題等等。非法嗅探器嚴重威脅網絡安全性,這是因為它實質上不能進行探測行為且容易隨處插入,所以網絡黑客常將它作為攻擊武器。

  網絡嗅探器(Sniffer)是利用計算機網絡接口截獲所需網絡內部數據報文的一種工具,他廣泛地應用於流量分析、安全監控、網管分析、防火牆等的實現中。Sniffer主要被用來在網絡上截獲位於OSI協議模型中各個協議層次上的數據包,通過對截獲數據包的分析,嗅探器可以掌握目標主機的信息。由於與具體平臺的網絡協議棧密切相關,並涉及網絡安全的敏感問題,網絡嗅探一般沒有通用的實現方法。

  隨著計算機網絡應用的普及,和Windows網絡作業系統的廣泛應用,使得在Window下保障網絡通信安全成為一個迫切需要解決的問題。本文基於NDIS中間層驅動程序實現網絡嗅探器,為滿足上述需求提供了充分的可能。

  網絡嗅探器的基本工作原理

  網絡嗅探器利用的是共享式的網絡傳輸介質。共享即意味著網絡中的一臺機器可以嗅探到傳遞給本網段(衝突域)中的所有機器的報文。例如最常見的乙太網就是一種共享式的網絡技術,乙太網卡收到報文後,通過對目的地址進行檢查,來判斷是否是傳遞給自己的,如果是,則把報文傳遞給作業系統;否則,將報文丟棄,不進行處理;網卡存在一種特殊的工作模式,在這種工作模式下,網卡不對目的地址進行判斷,而直接將他收到的所有報文都傳遞給作業系統進行處理,這種特殊的工作模式,就稱之為混雜模式。網絡嗅探器通過將網卡設置為混雜模式來實現對網絡的嗅探。

  一個實際的主機系統中,數據的收發是由網卡來完成的,當網卡接收到傳輸來的數據包時,網卡內的單片程序首先解析數據包的目的網卡物理地址,然後根據網卡驅動程序設置的接收模式判斷該不該接收,認為該接收就產生中斷信號通知CPU,認為不該接收就丟掉數據包,所以不該接收的數據包就被網卡截斷了,上層應用根本就不知道這個過程。CPU如果得到網卡的中斷信號,則根據網卡的驅動程序設置的網卡中斷程序地址調用驅動程序接收數據,並將接收的數據交給上層協議軟體處理。

  NDIS中間層驅動程序

  訪問位於網絡底層的傳輸協議是網絡嗅探器的基本功能。網絡嗅探器必須能夠接收並分析來自數據鏈路層、網絡層、傳輸層等底層的數據包,本文介紹的網絡嗅探器採用了網絡驅動程序接口規範(NDIS)中間層驅動程序技術設計。

  NDIS是Windows網絡協議棧構件間的接口規範,基於NDIS的核心態包過濾技術具有較高的結構性和可擴展性。從NDIS4.0開始,NDIS開始支持中間層驅動程序(Intermediate Driver),為NDIS體系帶來了很多的靈活性,他是位於一個或者多個NIC驅動之上和傳輸層驅動之下的驅動程序,即位於鏈路層和協議層之間,對上面的協議層提供一個虛擬的微埠網卡驅動接口(MiniportDriver),而對下面的鏈路層則提供一個協議驅動接口(Protocol Driver)。所有經過網卡發送到網絡和從網絡接收的數據包都要由此通過,因此中間層驅動程序可以對所有網絡數據包進行過濾和處理。從NDIS中間層在Windows中的位置來看,其處於核心層,處於與作業系統同等級別的核心態。

  使用微軟提供的驅動程序開發包DDK進行NDIS中間層驅動程序編程。具體流程為:

  (1)NDIS驅動程序在主入口函數DirverEntry中調用NdisMinitializeWrapper函數註冊輸出函數集入口,得到設備句柄;

  (2)輸入(1)得到的句柄調用NdisIMRegisterLayeredMiniport,為NDIS中間層驅動程序註冊一套Miniport回調函數,這樣上層Protocol協議就認為中間層驅動程序是網卡,並通過NDIS庫調用這些回調函數;

  (3)調用NdisRegisterProtocol,為NDIS中間層驅動程序註冊一套Protocol回調函數,這樣下層網卡就認為中間層驅動程序是一個協議,並通過NDIS庫調用這些函數;

  (4)當作業系統發現NIC時,NDIS調用中間層驅動程序註冊的ProtocolAdapterBind函數,該函數內部需要調用NdisOpenAdapt打開適配器,保證了網卡和中間層的綁定關係;

  (5)調用PtReceivePacket接收網卡收到的數據包;

  (6)數據包與所設置過濾規則進行比較,不滿足規則時調用函數返回NDIS_STATUS_NOT_ACCEPTED,該宏在ndis.h中定義,這樣就結束了本接收函數的調用。

  基於NDIS中間層驅動程序的網絡嗅探器實現

  1、網絡嗅探器的結構模型

  本文實現的網絡嗅探器主要由運行於Ring0層的NDIS中間層驅動程序模塊和運行於Ring3層的應用層包處理模塊構成。在Windows 2000平臺下實現了對流經指定網絡適配器的各種網絡協議、任意/指定IP位址和埠的數據包的嗅探:

  (1)應用層包處理模塊:處於應用層,負責過濾準則的設置和數據包的處理分析。

  (2)數據包捕獲及過濾實現模塊:基於NDIS中間層驅動程序完成底層數據的截獲功能,並依據數據包過濾準則實現對數據包的接收過濾,向上層應用程式遞交數據包。

  2、應用層包過濾準則設置

  網絡嗅探器中採用包過濾技術的目的主要是為了有選擇地接收網絡數據包,屏蔽偵聽者不關心的網絡數據包,從而提高系統的監聽效率,減輕高層應用對數據包的分析處理負擔。數據包的過濾是對捕獲的數據包的報頭進行分析,依據過濾準則來決定數據包是否需要提交高層應用進行處理。

  過濾準則的設置主要分為IP位址過濾、協議過濾、埠過濾三個方面,可分別進行設置,並通過CFile::Open(″。。/data/filter″,CFile::modeCreate|CFile::modeRead-Write)和CFiIe::Write(&m_Filter,sizeof(m_Filter))分別寫入配置文件。過濾準則依照以下方式進行工作:

  (1)當數據包到達NIC時,對數據包的各級包頭進行協議分析。

  (2)過濾準則無設置時,默認接收該準則權限內的所有數據包。

  (3)若3個過濾準則中的任一個有設置,數據包將依次與IP位址過濾準則、協議過濾準則、埠過濾準則匹配,若存在一條準則拒絕接收該數據包,並丟棄。

  (4)如果一個數據包滿足所有數據包過濾準則,則該數據包被提交給高層應用。

  3、數據包捕獲及過濾實現

  當過濾規則設置完成後,核心態的驅動程序就可以根據上層的要求來截獲數據包。具體步驟為:

  (1)用戶態程序啟動驅動服務程序;

  (2)用戶態程序調用CFile::Read(&m_Filter,sizeof(m_Filter))讀取過濾準則;

  (3)調用DeviceloControl(hFile,IOCTL_ENUM_ADAPTERS,NULL,0,buffer,MAX_ADAPTERS*256,&BytesTxd,NULL)從註冊表中獲取網絡適配器的信息,並顯示到用戶界面;

  (4)用戶選擇適配器綁定並設置適配器為混雜模式;

  (5)創建事件對象,接收數據包線程ReadProcessProc()和發送讀請求線程ReadRequestProc()使用事件機制來同步、協調工作,使得讀隊列不太長,也不為空;

  (6)ReadRequestProc()調用WaitForSingleObject函數等待事件發生,當讀請求隊列長度小於設定的最小長度時,調用SetEvent沒置事件為有信號狀態,線程不斷地發出讀請求,保持驅動程序的讀隊列不為空,防止丟包發生;當讀請求隊列長度超出設定的最大長度時,調用ResetEvent設置事件為無信號狀態,線程停止發送讀請求;

  (7)ReadProcessProc()檢查完成埠狀態,有讀請求時,在PtReceive/PtReceivePacket函數中處理收到的數據包,當有數據包符合所有的過濾條件時,將其複製到共享內存,收取數據並按照過濾準則考慮是否通知用戶界面程序讀取數據;

  (8)應用層接到NDIS中間層驅動程序的事件通知後,獲取共享內存隊列中的數據,做進一步的處理,繼續循環等待。

  總結

  實現基於NDIS中間層驅動程序的網絡嗅探器,具有良好的結構性、擴展性、並行性、效率性和可編程性,能夠對網絡中的各層進行訪問,並且能收發基於這些層的各種協議數據包。該嗅探器運行於系統的核心層,最大限度地提高了系統的數據處理效率,在單位內部網絡安全監控以及網絡入侵檢測等方面發揮了重要的作用。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 電動汽車是用電驅動車輛行駛,其工作原理如何
    打開APP 電動汽車是用電驅動車輛行駛,其工作原理如何 侃聊車吧 發表於 2019-11-26 09:04:52 (文章來源:侃聊車吧
  • 新款塗布機用途原理以及工作流程
    輥式塗布機的類型:  1、壓榨輥式塗布頭  2、逆轉輥式塗布頭  3、傳遞輥式塗布頭  4、凹版輥式塗布頭  用途原理  自動塗布機的用途  適用於鞋材、電子行業、海棉、EVA、PE、布料等塗膠。用PLC或同步控制器來控制驅動輥變頻器速度,同時作為其他變頻器的線速度信號。  S350閉環張力控制(有感矢量控制)輕鬆實現加減速過程中的張力恆定,節省安裝張力  輥的空間,降低機械成本,同時高精度控制確保了塗布效果高度均勻。  雙工位收放卷具有預驅動功能,可滿足高速不停機自動換卷、提高生產效率的需求。
  • 汽車前輪驅動原理,汽車前輪驅動結構圖
    汽車前輪驅動原理是什麼?熟悉汽車的朋友應該都了解汽車的驅動方式會決定這款車適合在什麼地域行駛。目前在市場上的車型可謂是千奇百怪,花樣百出,每一家的驅動系統又是名字各異,實在是讓不熟悉朋友們有點眼花繚亂,難以選擇。
  • 餘熱鍋爐原理、鍋爐結構與流程
    北極星環保網訊:鍋爐的基本原理下面是鍋爐的原理模型圖,模型包括上升管、汽包、下降管主要部件。上升管是由密集的管道排成的管簇,由上聯箱、下聯箱連成一體;上聯箱通過汽水引入管連通汽包,汽包再通過下降管連到下聯箱;上升管管簇、汽包、下降管構成了一個環路。上升管管簇在爐膛內,汽包與下降管在爐體外面。
  • 對講機工作原理
    到底是什麼工作原理使得對講機不同於手機呢?對講機又是如何工作的呢?本文引用地址:http://www.eepw.com.cn/article/274276.htm  對講機,英文名稱為two way radio,在二十年代由John Kermode在Westinghouse的實驗室發明出來,是一種無需任何網絡支持的雙向移動通信工具,主要可分為模擬對講機、數字對講機和IP對講機三大類,現已得到廣泛的應用。
  • 發電機工作原理
    四、發電機工作原理  在柴油發電機中,經空氣濾清器過濾產生潔淨空氣,由噴油嘴噴射出高壓霧化柴油,這兩種氣體在汽缸內進行充分的混合,活塞向上運動擠壓該混合氣體,體積縮小使得溫度升高,溫度升高至一定溫度後點燃柴油,混合氣體劇烈燃燒使得體積膨脹
  • uln2003有什麼作用_引腳圖及功能_工作原理及驅動應用電路
    打開APP uln2003有什麼作用_引腳圖及功能_工作原理及驅動應用電路 發表於 2017-12-12 10:54:24
  • 汽車空調工作原理圖解,最全面汽車空調工作原理解析
    下面就和電動邦小編一起看下汽車空調工作原理圖解吧。汽車空調工作原理圖解——空調組成部分汽車空調工作原理圖解——汽車空調類型1、按驅動方式分為:獨立式(專用一臺發動機驅動壓縮機,多用於大、中型客車)和非獨立式(空調壓縮機由汽車發動機驅動,多用於小型客車和轎車)。
  • 產品驅動20倍增長背後的哲學原理
    上面黑箱模型其實就是一個負反饋模型,你可能會覺得,這麼簡單的模型和產品驅動的20倍增長有個毛的關係?別急,我們將這個模型在產品領域演化一下:這個演化後的負反饋模型,就是20倍增長背後的哲學原理,按這個模型我們只需4步就就能實現產品驅動的20倍增長:(把大象裝進冰箱裡攏共分幾步?)
  • 擺鐘工作原理
    擺鐘工作原理1. 引言 2. 擺鐘部件 3. 鍾錘 4.事實上,了解時鐘工作原理時,您可以想像時鐘設計者們是如何面對和解決大量有趣的問題,並設計出準確的計時設備的。本文將幫助您了解是什麼使時鐘發出嘀嗒聲,所以下次看到時鐘內部結構時您就會明白一切了。 擺鐘部件從1656年起,人們便開始使用擺鐘計時了,但是此後擺鐘的發展一直沒有太大的變化。擺鐘是第一款具有一定精確度的時鐘。
  • 乾式混凝土噴漿機的構成及工作原理
    乾式混凝土噴漿機的構成及工作原理乾式混凝土噴漿機的工作原理:將攪拌好的物料由配料攪拌機卸料口經過振動篩網供入噴漿機料鬥中,由撥料器撥動注入轉子總成的橡膠料腔中,再隨著轉子體旋轉到出料口處乾式混凝土噴漿機的構成及工作原理乾式混凝土噴漿機主要由驅動裝置,轉子總成、壓緊機構、給料系統、氣路系統、輸料系統等組成。 驅動裝置由電動機和減速器組成。
  • 無刷電機篇:BLDC與PMSM工作原理
    無刷電機篇:BLDC:即無刷直流電機(Brushless Direct Current)與PMSM:永磁同步電動機(Permanent-Magnet Synchronous Motor)區別術語解釋BLDC電機工作原理PMSM電機工作原理
  • 柴油發電機的工作原理及用途
    在現代生活中很多地方都需要持續可靠的電源,比如購物中心,商務大廈、大型國際國內展覽中心、金融中心、廣播中心、網絡數據中心、交通指揮中心、學校、酒店和醫院等。害怕每天使用商業能源。然而,商業電力維護或自然災害或設備故障導致的停電都需要一個良好的備用電力系統,即發電機組。
  • 汽車差速器工作原理
    先看幾張動圖車輛直線行駛時,差速器的工作狀態車輛轉彎時,差速器的工作狀態氣動差速器鎖match什麼是差速器?根據力學原理,轉彎時內側車輪勢必會轉的慢些,此時驅動軸轉速不變,行星輪此時一邊繞半軸公轉,一邊自轉。汽車轉彎時,前輪較之後輪,走過的距離是不相同。部分四輪驅動車前後輪之間沒有差速器。相反的,他們被固定聯結在一起,以至於前後輪轉向時能夠以同樣的平均轉速轉動。這就是為什麼當四輪驅動系統忙碌時,這種車輛轉向困難的原因。
  • 異步電動機的工作原理
    導讀:異步電動機作為一種動力驅動設備,現已存在廣泛應用,家用電器、工具機、水泵等都是靠異步電動機提供動力來運作的,那麼問題來了,異步電動機為什麼會將機械能轉換為動能呢
  • MOS管工作原理,就是這麼簡單
    MOS管工作原理--Mos管的結構特點  MOS管的內部結構如下圖所示;其導通時只有一種極性的載流子(多子)參與導電,是單極型電晶體。導電機理與小功率MOS管相同,但結構上有較大區別,小功率MOS管是橫嚮導電器件,功率MOSFET大都採用垂直導電結構,又稱為VMOSFET,大大提高了MOSFET器件的耐壓和耐電流能力。
  • 露天礦山超大電驅動礦用卡車,工作原理展示,長見識
    工作原理:柴油發動機以發動機轉速驅動一臺直列式交流發電機。交流發電機產生交流電,此電流在主控制櫃內被整流為直流電。經整流的直流電源又被一組稱為「逆變器」的裝置轉換回交流電,也在主控制櫃內完成。
  • 無刷直流電機與永磁同步電動機的工作原理
    打開APP 無刷直流電機與永磁同步電動機的工作原理 電子發燒友 發表於 2019-03-14 15:52:19 無刷電機篇: BLDC:即無刷直流電機(Brushless Direct Current)與PMSM:永磁同步電動機(Permanent-Magnet Synchronous Motor)區別 術語解釋 BLDC電機工作原理 PMSM電機工作原理 無刷電機BLDC
  • 電視棒工作原理很簡單 有網絡就能變身智能電視
    打開APP 電視棒工作原理很簡單 有網絡就能變身智能電視 發表於 2016-09-12 18:54:27   在闡述電視棒原理之前,我們先來了解一下IPTV。IPTV是一種交互式的網絡電視,使用者可以對節目進行點播,隨意選擇自己喜歡看的電視節目。IPTV是一種利用網際網路,使用前提條件是需要有寬帶提供的條件下,集多媒體,通訊,網際網路於一體。IPTV在海外是一種非常流行的技術,而在國內還處於初步階段。   電視棒顧名思義就是可以看電視的USB棒。外觀酷似u盤。
  • 大興機場行李系統實現全流程跟蹤:系統工作原理介紹
    據新華網消息,北京大興機場行李全流程跟蹤系統建設日趨完善。大興機場也成為我國率先使用國產行李系統的大型樞紐機場。大興機場行李系統工作原理在行李全流程跟蹤建設方面,大興機場運用國際先進的 RFID(無線射頻識別技術)行李追蹤技術。每一張行李條的夾層,都增加了一塊 RFID 晶片。RFID 通過行李條內嵌晶片識別行李身份信息,不受行李條碼位置、質量、光線等條件影響,識別率達到 99%。