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

2021-01-08 電子發燒友

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

  網絡嗅探器(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閱讀更多精彩內容

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

相關焦點

  • Snort 2.8.6 發布,網絡嗅探器 - OSCHINA - 中文開源技術交流社區
    Snort是美國Sourcefire公司開發的發布在GPL v2下的IDS(Intrusion Detection System)軟體Snort有三種工作模式:嗅探器、數據包記錄器、網絡入侵檢測系統模式。
  • 網絡安全技術產品之網絡協議分析工具Sniffer
    Sniffer,也可以稱為嗅探器,它是一種基於「被動偵昕」原理的網絡分析方式。其能夠快速定位網絡故障,並能捕獲網絡故障數據包,幫助網管人員分析和處理故撞數據包,有效提高網絡管理水平。於中陽Mercina-zy。Sniffer,也可以稱為嗅探器,它是一種基於「被動偵昕」原理的網絡分析方式。
  • 繼電器的工作原理及驅動電路解析
    一、繼電器(relay)的工作原理和特性1、電磁繼電器的工作原理和特性電磁式繼電器一般由鐵芯、線圈3、 電晶體驅動驅動電路3.1 電路原理圖當電晶體用來驅動繼電器時,推薦用NPN三極體原理是電路閉合的瞬間,電容 C 兩端電壓不能突變可視為短路,這樣就將比繼電器線圈額定工作電壓高的電源電壓加到線圈上, 從而加快了線圈中電流增大的速度,使繼電器迅速吸合。電源穩定之後電容 C 不起作用,電阻 R 起限流作用。二、繼電器額定工作電壓的選擇繼電器額定工作電壓是繼電器最主要的一項技術參數。
  • 開源網絡嗅探器Wireshark 2.6穩定版發布
    Wireshark是全球最知名的開源網絡嗅探器,近日公司發布了2.6穩定版,引入了諸多新功能和改進,並支持諸多新協議。首先相比較Wireshark 2.5版本,新版在用戶界面上進行了較大改進,是支持傳統GTK+圖形用戶界面的最後版本,在下個重磅更新Wireshark 3.0中將不再繼續支持。
  • 新款塗布機用途原理以及工作流程
    輥式塗布機的類型:  1、壓榨輥式塗布頭  2、逆轉輥式塗布頭  3、傳遞輥式塗布頭  4、凹版輥式塗布頭  用途原理  自動塗布機的用途  適用於鞋材、電子行業、海棉、EVA、PE、布料等塗膠。用PLC或同步控制器來控制驅動輥變頻器速度,同時作為其他變頻器的線速度信號。  S350閉環張力控制(有感矢量控制)輕鬆實現加減速過程中的張力恆定,節省安裝張力  輥的空間,降低機械成本,同時高精度控制確保了塗布效果高度均勻。  雙工位收放卷具有預驅動功能,可滿足高速不停機自動換卷、提高生產效率的需求。
  • 一步一步教你寫BT種子嗅探器--DHT篇
    之前寫了原理篇,在原理篇裡簡單的介紹了一下DHT,但是還不夠詳細。今天我們就專門詳細的講一下嗅探器的核心-DHT,這裡默認原理篇你已經讀了。
  • "小說識人"網絡走紅,電子書嗅探器下書最新穎
    out啦,網絡時代識人看小說,準確的應該說是"小說識人"。70後文藝青年喜歡山藥蛋派系農村背景描繪、80後憤青喜歡韓寒反思派小說、90後小蘿莉著迷奢華虛幻的郭敬明傷痕小說,更多還有玄幻、武俠、科幻等等,不同的作者有不同的風格,不同身份的讀者有不同的喜好,通過看小說的類型及下載方式的不同對其性格及身份就能窺探一二!
  • 變頻驅動(VFD)變頻器的工作原理
    了解變頻器(VFD)的工作原理非常重要,因為它們廣泛用於交流電機驅動的應用中,例如變頻驅動器用於電機控制,因為它們具有各種各樣的特性。與傳統的電機驅動器相比,VFD具有更大的功能和操作能力。除了可調速度控制外,變頻器還提供相保護,欠壓保護和過壓保護。
  • 全橋電機驅動電路的工作原理詳解
    本篇文章將主要介紹H橋電機驅動的工作原理,從逆時針和順時針兩個方面來進行全面的分析。本文引用地址:http://www.eepw.com.cn/article/201612/327538.htm按圖中電流箭頭所示,該流向的電流將驅動電機順時針轉動。
  • 液晶顯示屏驅動IC的工作原理解析
    打開APP 液晶顯示屏驅動IC的工作原理解析 今日頭條 發表於 2020-05-19 14:37:23   驅動IC其實就是一套集成電路晶片裝置,用來對透明電極上電位信號的相位、峰值、頻率等進行調整與控制,建立起驅動電場,最終實現液晶的信息顯示。
  • 步進電機的工作原理,它是如何驅動的?
    ,一般大一點的負載要加三極體驅動或者三極體配合其他開關管控制負載,但是驅動步進電機的話一般需要專門的驅動晶片,如果步進電機功率非常小的話可以用驅動能力大一點的主IC驅動,但是步進電機一般功率不是很小,它的驅動一般使用專門的驅動器來驅動步進電機,因為步進電機的驅動不僅涉及到控制部分,同時還有功率驅動部分,最重要的還是電機保護電路,這也是為了電機以及整機可靠性涉及考慮。
  • tomcat學習筆記之原理與工作流程
    前言:前面我們說了tomcat的內存,線程池和io優化,這期我們深入了解下tomcat的工作原理和運行機制Tomcat簡介Tomcat是一個JSP/Servlet容器。其作為Servlet容器,有三種工作模式:獨立的Servlet容器、進程內的Servlet容器和進程外的Servlet容器,它的結構比較複雜,但是又比較模塊化,所以只要我們找到了最核心的模塊,對於tomcat的整體架構和工作原理就很好理解了,Tomcat頂層架構我們先來看下結構圖從上圖可以看出Tomcat的兩個核心組件: connector(連接器
  • K8S架構原理及其工作流程
    K8S整體架構Kubernetes採用主從分布式架構,包括Master(主節點)、Worker(從節點或工作節點運行在每個工作節點上的kubelet也會定期與etcd同步bound pod信息,一旦發現應該在該工作節點上運行的bound pod對象沒有更新,則調用Docker API創建並啟動pod內的容器8、POD創建完成K8S各組件工作流程
  • 扒一扒「簡訊嗅探器」的真面目
    近日,河北省唐山市警方搗毀了一個使用「簡訊嗅探器」流竄作案的電信詐騙團夥。據嫌疑人交待,他們是趁受害人夜間熟睡時,使用「簡訊嗅探設備」,截取用戶手機簡訊內容。隨後,利用各銀行、行動支付平臺等存在的漏洞,竊取個人帳戶信息,並通過截取簡訊驗證碼,盜刷受害人資金。據了解,近年來通過這一手段實施詐騙的案例不在少數。
  • C語言嗅探器帶報告
    關鍵代碼通過C語言,實現了一個網絡的嗅探器的基本功能。可以做到能檢測計算機中的所有網卡,實現了網卡的選擇並打開混雜模式。監聽網絡中所有的數據包,並解析出數據包是使用的協議為哪種,以及每種協議首部的各種欄位,如源IP位址、目的IP位址、源埠、目的埠、源MAC地址、目的MAC地址、數據包的長度等。同時能解析出數據包數據部分的內容,並儘可能的以可讀的方式輸出。此外,還可以選擇要監聽的數據包協議的類型,在監聽的過程中可以檢測到 ping 命令等。
  • 變頻空調電路的工作原理
    變頻電路的變頻工作是利用二次逆變得到交流電源,通過改變逆變電流值的頻率來控制壓縮機的轉速,從而達到製冷或制熱的要求。變頻空調器按照壓縮機採用的電動機是交流電動機還是直流電動機的驅動方式劃分,所以變頻電路有交流變頻和直流變頻兩種。
  • 空調工作原理
    1,在了解空調壓縮機的工作原理之前,先認識下空調壓縮機的工作迴路。空調壓縮機的工作迴路分為蒸發區和冷凝區,空調壓縮機在空調製冷劑迴路中起壓縮驅動製冷劑的作用。
  • 耳機工作原理
    但是問題來了,耳機的工作原理是什麼呢?、靜電式耳機,接下來我們就來看看比較常見的幾種耳機類型的工作原理是怎麼樣的呢?五、耳機工作原理- -等磁式  等磁式耳機的驅動單元相當於一個體型較小的平面揚聲器,將平面音圈嵌入薄膜中使得驅動力分布得以均勻,磁體位于振膜的一邊或兩邊,
  • 光電色選機工作原理
    本文主為大家簡單介紹彩色光電色選機及其工作原理。彩色CCD光電色選機,系列數位化智能色選機是集光電技術、微電子技術、計算機技術和精密機械製造技術為一體的高科技產品。是當今世界上,集成電路設計技術和現代數位訊號處理技術的完美結合。
  • 對講機工作原理
    到底是什麼工作原理使得對講機不同於手機呢?對講機又是如何工作的呢?本文引用地址:http://www.eepw.com.cn/article/274276.htm  對講機,英文名稱為two way radio,在二十年代由John Kermode在Westinghouse的實驗室發明出來,是一種無需任何網絡支持的雙向移動通信工具,主要可分為模擬對講機、數字對講機和IP對講機三大類,現已得到廣泛的應用。