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

2021-01-07 電子發燒友

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

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

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

相關焦點

  • 扒一扒「簡訊嗅探器」的真面目
    近日,河北省唐山市警方搗毀了一個使用「簡訊嗅探器」流竄作案的電信詐騙團夥。據嫌疑人交待,他們是趁受害人夜間熟睡時,使用「簡訊嗅探設備」,截取用戶手機簡訊內容。隨後,利用各銀行、行動支付平臺等存在的漏洞,竊取個人帳戶信息,並通過截取簡訊驗證碼,盜刷受害人資金。據了解,近年來通過這一手段實施詐騙的案例不在少數。
  • 螺旋鑽機工作原理是什麼?鑽機原理解析
    螺旋鑽機也可以叫做鑽土機,我們在使用鑽土機的時候想要知道鑽土機工作原理是什麼?其實鑽土機原理很簡單哦,下面小編就為大家帶來了鑽土機原理解析,一起來看看吧!鑽土機工作原理是什麼?液壓螺旋鑽機液壓螺旋鑽機套件包括主機快速連結器、液壓驅動頭、方形安裝連結頭、螺旋鑽杆、螺旋葉片、易裝齒座、輔助群齒、主鑽齒。主機快速連結器上設有滑道和平衡杆,可以使下垂的鑽機可以快速的多方位工作,保證鑽孔的垂直度。
  • 隔膜泵工作原理,隔膜泵原理圖
    隔膜泵工作原理隔膜泵工作時,曲柄連杆機構在電動機的驅動下,帶動柱塞作往復運動,柱塞的運動通過液缸內的工作液體(一般為油)而傳到隔膜,使隔膜來回鼓動。隔膜泵工作原理圖氣動隔膜泵工作原理氣動隔膜泵缸頭部分主要由一隔膜片將被輸送的液體和工作液體分開,當隔膜片向傳動機構一邊運動,泵缸內工作時為負壓而吸入液體,當隔膜片向另一邊運動時,則排出液體。
  • 等離子發動機工作原理
    等離子發動機工作原理是怎樣的呢?有的朋友在科學雜誌上看到等離子發動機這個概念,就很想知道等離子發動機的原理是怎樣的呢?其有什麼用途?下面讓我們一起去了解吧。操作方法01等離子發動機的能量來自電力,可以來自太陽能電池板,或者核電池,通過從發動機尾部噴射出陽離子來推動飛船前進,所以等離子發動機的驅動方式也被叫做電力驅動方式。
  • 別把單眼相機想複雜了,一文帶你弄懂它的工作原理
    數位相機是一種集眾多技術於一體的高科技設備,對於學習攝影的人來說,要想熟練地使用數位相機,就必須對它的結構與工作原理有一定的了解。在了解數位相機工作原理前,首先要深入了解相機的內部結構。自動對焦系統相機自動驅動鏡頭調整焦點並完成精確對焦,這種技術被稱為自動對焦。自動對焦系統在攝影技術發展歷程中具有裡程碑的意義。數碼單眼相機自動對焦系統十分複雜,且功能強大,對焦系統的性能已成為劃分數碼單眼相機檔次高低的重要標準之一。
  • 柴油發電機的工作原理及用途
    在現代生活中很多地方都需要持續可靠的電源,比如購物中心,商務大廈、大型國際國內展覽中心、金融中心、廣播中心、網絡數據中心、交通指揮中心、學校、酒店和醫院等。害怕每天使用商業能源。然而,商業電力維護或自然災害或設備故障導致的停電都需要一個良好的備用電力系統,即發電機組。
  • 「優能工程師」告訴你比亞迪E6驅動電機控制器結構及工作原理
    其關鍵零flB{牛lGBT(絕緣柵雙極電晶體)實際為大電容,作用為控制電流工作,保證能夠按意願輸出合適的電流參數。更多新能源乾貨知識,在「優能工程師」,由易到難,由淺入深,全方位學習,維信館主。同B,Ii,I-電機進行保護; 3、通過CAN與其他控制模塊通訊,接收並發送相關的信號,間接地控制車上相關系統正常運行; 4、制動能量加饋控制; 5、自身內部故障的檢測和處理; 6、最高工作轉速:在額定電壓,運行所能達到的最高轉速為7 500r/min;
  • 網絡分析系列之二_網絡通訊工作原理
    為了更好的理解網絡分析技術,了解並掌握網絡通訊原理是必須的。這一節我們將講述網絡通訊基礎知識,涉及到協議、OSI參考模型及數據封裝。 網絡通訊定義了計算機如何接入到網絡中,以及接入網絡中的通信標準,主要包含協議、OSI七層參考模型和數據通信時的協議封裝過程。
  • 防火牆工作原理
    導讀:本文主要介紹的是防火牆的工作原理,感興趣的童鞋們快來學習一下吧~~很漲姿勢的哦~~本文引用地址:http://www.eepw.com.cn/article/283324.htm1.防火牆工作原理--簡介  所謂防火牆指的是一個由軟體和硬體設備組合而成
  • 波峰焊工作原理是什麼
    波峰焊是大家比較常見的電子設備,那麼關於它的工作原理你知道多少呢?本文就來為你介紹波峰焊的工作原理,以及波峰焊的內部結構示意圖。接下來,晉力達給大家見識一下波峰焊工作原理是什麼波峰焊工作原理是什麼波峰焊機是指將熔化du的軟釺焊料(鉛錫合金),經電動泵或電磁泵噴流成設計要求的焊料波峰,亦可通過向焊料池注入氮氣來形成,使預先裝有元器件的印製板通過焊料波峰,實現元器件焊端或引腳與印製板焊盤之間機械與電氣連接的軟釺焊。
  • 潷水器工作動畫的特點和原理
    潷水器工作動畫的特點和原理 ,「13ilo9」   宜興益芳環保設備有限公司專業生產各類格柵除汙機、旋轉潷水器、無軸螺旋輸送機、旋流除砂機、鑄鐵鑲銅閘門、砂水分離器、機械過濾器、淨水器、無閥過濾器、氣浮、三腔式自動加藥裝置、攪拌混合器;各類中心轉動、周邊傳動刮泥機、濃縮機、汙泥脫水機、轉刷曝氣機、離子交換器等等。
  • 「優能工程師」告訴你比亞迪E6驅動電機控制器結構及工作原理_易車網
    其關鍵零flB{牛lGBT(絕緣柵雙極電晶體)實際為大電容,作用為控制電流工作,保證能夠按意願輸出合適的電流參數。更多新能源乾貨知識,在「優能工程師」,由易到難,由淺入深,全方位學習,維信館主。;4、制動能量加饋控制;5、自身內部故障的檢測和處理;6、最高工作轉速:在額定電壓,運行所能達到的最高轉速為7 500r/min;7、半坡起步功能;8、防止電機飛車、防止l PM受損害;9、採集P、R、N、D擋位信號;10、採集油門深度傳感器和剎車深度傳感器信號。
  • D/A與A/D轉換器工作原理解析
    打開APP D/A與A/D轉換器工作原理解析 發表於 2017-11-24 11:16:57   轉換器介紹
  • 液壓馬達的工作原理
    ④低速大轉矩徑向柱塞馬達排量大,體積大,轉速低,不需要減速箱,可直接用於驅動負載。二、液壓馬達的工作原理液壓馬達和液壓泵從工作原理上來說是一致的,都是通過密封工作腔的容積變化來實現能量轉換。從原理上來說,除閥式配流的液壓泵(具有單向性)外,其他形式的液壓泵和液壓馬達可以通用。下面以葉片式液壓馬達為例,對液壓馬達的工作原理作簡單介紹。高量葉片式液壓馬達的結構一般是雙作用定量馬達,在上圖中,當壓力油進人壓油腔後,在葉片1、3、5、7上,一面作用有壓力油,另一面為排油腔的低壓油。
  • 熱板焊接機工作原理_熱板焊接機的組成
    打開APP 熱板焊接機工作原理_熱板焊接機的組成 網絡整理 發表於 2020-12-17 15:52:54   熱板焊接機工作原理   熱板焊接機主要通過一個由溫度控制的加熱板來焊接塑料件。
  • 步進電機的基本工作原理及發熱原理是怎樣的呢?
    步進電機電磁損耗小,轉換效率高,動態特性好,控制方案集成度高,設計靈活,控制穩定,定位準確等特點,正是由於這些優點的存在,所以在日常生活中應用比較廣泛,那麼步進電機的工作原理和發熱原理是怎樣的呢?步進電機工作原理通常,電動機的轉子是永磁體,當電流流過定子繞組時,定子繞組會產生矢量磁場,磁場將驅動轉子旋轉一個角度,以使轉子的一對磁場方向與定子的磁場方向一致,當定子的矢量磁場旋轉一個角度時,轉子也與磁場旋轉一個角度,每次輸入電脈衝時,電動機都會旋轉角度向前移動一步,其輸出角位移與輸入脈衝數成正比,速度與脈衝頻率成正比
  • 潷水器工作示意動畫的工作原理及結構
    潷水器工作示意動畫的工作原理及結構 ,「13ilo9」   宜興益芳環保設備有限公司專業生產各類格柵除汙機、旋轉潷水器、無軸螺旋輸送機、旋流除砂機、鑄鐵鑲銅閘門、砂水分離器、機械過濾器、淨水器、無閥過濾器、氣浮、三腔式自動加藥裝置、攪拌混合器;各類中心轉動、周邊傳動刮泥機、濃縮機、汙泥脫水機、轉刷曝氣機、離子交換器等等。
  • 一文帶你了解電磁隔膜泵的工作原理
    它一般由控制部分、驅動部分、傳動部分及過流部分組成,電磁隔膜計量泵與其他計量泵的主要區別是驅動部分。電磁隔膜計量泵是由電磁鐵為驅動,為輸送小流量低壓力液體而設計的一種計量泵。電磁隔膜泵結構簡單、易於控制、能耗小、計量準確、調節方便,同時性價比非常高,在業內深受廣大消費者的青睞,已被廣泛運用於各行各業。
  • 增程式電動汽車的工作原理
    由電機直接驅動車輛,發電機不參與驅動,可以看作是一輛小容量的純電動車,再額外增加了一臺發電機讓車輛邊行駛邊充電。當電池電量不足時,通過増程器發電機工作來發電,將所發出的電能一部分用於直接驅動電機,另一部分為蓄電池進行充電。
  • 轉子發動機工作原理
    那今天小編就來跟大家說一說轉子發動機工作原理。操作方法01工作原理一般發動機是往復運動式發動機,工作時活塞在氣缸裡做往復直線運動,為了把活塞的直線運動轉化為旋轉運動,必須使用曲柄滑塊機構。轉子發動機則不同,它直接將可燃氣的燃燒膨脹力轉化為驅動扭矩。與往復式發動機相比,轉子發動機取消了無用的直線運動,因而同樣功率的轉子發動機尺寸較小,重量較輕,而且振動和噪聲較低,具有較大優勢。