







摘要:計算機在遭受各式各樣的惡意攻擊時,其內部保存的重要信息容易受到未經授權的數據訪問、惡意軟件傳播等安全威脅。文章主要實現了對局域網內網絡數據包的嗅探,并將所收集到的數據包進行解析展示,同時對網絡內數據流量進行統計,并以折線圖形式進行可視化呈現。該系統在Windows 10 1903版本環境下開發。應用程序可運行于Windows 7及以后版本的Windows系統中,同時也可以以兼容模式運行于較早版本中。系統能夠完成對局域網內數據包的嗅探、解析、展示,以及流量統計和可視化。經測試,數據包捕獲率、解析準確率均達到預期目標,可有效輔助網絡安全工作。
關鍵詞:網絡安全;NDIS驅動;Npcap;流量監測;網絡嗅探;Qt框架
中圖分類號:TP393" " " 文獻標識碼:A
文章編號:1009-3044(2025)08-0086-04
開放科學(資源服務) 標識碼(OSID)
0 引言
網絡嗅探,其實是指在網絡設備通信過程中,利用專業的網絡抓包工具得到在網絡中流動的二進制數據包,進而對數據包進行解析,收集到分析此網絡設備所必需的數據的過程[1]。不過嗅探攻擊一般只能對未加密的通信進行探測,如果通信過程有加密,如通過IPSEC或SSL協議,則嗅探攻擊無法成功。
近年來,網絡的組網方式由共享型逐漸轉換為交換型,傳統的嗅探技術已經開始呈現它的不足和問題。因此,網絡嗅探技術也在不斷產生新的變化,主要有對交換機的內存表進行不斷攻擊,占用大量內存使得交換模式失效的MAC泛濫技術;端口鏡像嗅探技術;以偽造的ARP應答來欺騙目標主機,使其更新ARP緩存的ARP欺騙技術即冒充數據傳送源地址或目的地址,從而欺騙交換機將數據發送給嗅探者;利用偽造的MAC地址進行對交換機的欺詐的技術等[2]。
本工具實現了對局域網內網絡數據包的嗅探,并將所收集到的數據包進行解析展示,以及流量統計和可視化。數據包捕獲率、解析準確率均能達到預期目標,可以有效地輔助網絡安全工作。
1 技術分析
文中的基于NDIS的網絡數據包分析工具所使用的技術主要可以分成兩個模塊。一個是用于實現過濾數據包并進行流量統計的驅動部分,該部分功能主要基于NDIS協議,依賴Npcap庫實現;第二部分是用于實現人機交互界面并對截獲的數據包進行解析,該部分功能主要基于QT框架,提供數據包的各項數據的列表展示及流量的可視化分析。
1.1 NDIS Filter框架簡述
NDIS 6.87 協議是網絡驅動程序接口規范(NDIS) 庫在Windows 7以后的Windows版本所支持的版本。NDIS 6.87 包含在 Windows 11 的 22H2 版本中。其他功能已過時,已從更高版本的 NDIS 中刪除。其以后的Windows系統就不繼續支持NDIS5.0協議[3]。NDIS 指定了內核程序和應用程序模式之間網絡驅動程序的標準API接口。NDIS 還可以設定處于上層的協議驅動程序,進而減少了管理硬件的復雜性。
NDIS Filter Drivers的協議驅動棧中必需包括處于上層的協議驅動和處于下層的微端口驅動。然而中間層驅動NDIS Filter并不是必需的,這樣的結構設計提供了針對微端口驅動的有選擇的過濾服務,并對底層的物理網卡機制進行了屏蔽。在6.87的NDIS協議版本以前,中間層驅動是實現網絡數據過濾服務的基本手段,在6.87之后的版本均可用NDIS Filter Drivers代替中間層驅動來實現,且相比較更為簡潔。
1.2 Qt框架
Qt框架是一個較為常見的C++應用程序開發框架,具有十分多樣的API接口,使程序的開發更加安全、簡潔,被人們大量運用于GUI程序的開發[4]。Qt框架具有較高的運行時性能,能生成高可重用、易維護和可讀性的代碼,且內存占用小,可用于GUI開發、數據可視化等。
2 系統分析
此基于NDIS的網絡數據包分析工具所需要實現的功能主要是兩個方面,一方面是驅動功能部分,實現對所有通過網卡的數據包的過濾;另一部分是人機交互部分,實現對捕獲數據包的分析與可視化以及對驅動的操作指令。
2.1 驅動功能部分
此工具驅動部分考慮以下兩種情況。
當計算機網卡處于非混雜模式的情況下時,此網卡只能接收目的地址為本機地址的數據包,因此需要將網絡適配器的工作模式調整為混雜模式,來獲取所有通過本機的數據包。
對經由網絡適配器捕獲的所有數據包,依據其數據包結構特性和網絡協議特性,建立網絡數據包數據的結構體,進行初步的轉碼,并保存以便進行數據解析與分類。
2.2 人機交互部分
人機交互程序將捕獲的數據包的數據結構依據網絡協議的特征進行詳細的解析,將捕獲的數據結構以捕獲時間戳、長度、目的IP地址、源IP地址、源MAC地址、目的MAC地址、數據包協議、數據包信息、數據流向[5]。此處的數據流向指的是捕獲的數據的源地址和目標地址之間的路徑。
將解析完成的數據包信息以列表的方式直觀地展示出來,并支持通過點擊單一數據包查看數據詳細信息,包括使用端口、源數據的ASCII碼值和16進制數據等。
3 系統設計
3.1 系統總體分析
3.1.1 系統框架設計
系統框架大致可分為兩個部分,一是驅動功能部分,主要負責捕獲和復制流經本機的網絡數據包;二是用戶交互部分,主要負責將驅動捕獲的數據包進行解析,數據詳情的展示以及對網絡流量的實時展示。框架結構如圖1所示。
本系統工作流程為:NDIS Filter驅動通過網絡適配器將流經本機的所有數據包捕獲,并將這些數據包傳遞給應用程序,隨后通過應用程序的解析,獲得詳細數據并將數據直觀地以表格顯現出來,同時統計網絡中數據包總量并以折線圖的方式展現。用戶能夠通過過濾功能有選擇地顯示所屬類別的數據包信息。
3.1.2 系統功能設計
系統功能設計可分為兩個模塊設計,即驅動功能的設計和人機交互的設計,功能設計如圖2所示。
3.2 驅動功能設計
網卡有以下4種工作模式:多播傳送(MultiCast Model) 、廣播模式(Broad Cast Model) 、混雜模式(Promiscuous Model) 、直接模式(Direct Model) 。為了能獲取本網絡中的所有數據包,需要將網卡的工作模式設置為混雜模式以獲取全部經由本機網卡的幀。
本驅動模塊是系統最核心關鍵的功能模塊,需要通過框架和接口庫提供的接口獲取經由網卡的數據包,交由人機交互部分進行解析。
3.3 人機交互設計
3.3.1 數據包解析
當今以太網已經占據世界的絕大部分市場,已經成為TCP/IP所采用的主流局域網技術,因此本系統也采用基于以太網的數據幀的數據結構對所獲取的數據包進行解析[6]。常見以太網數據幀結構如圖5所示。
如圖5所示,數據鏈路層首部占用14個字節,數據鏈路層尾部占用4個字節(NDIS Filter框架獲取數據幀時會自動刪去) 。網絡層首部最少占用20個字節(無可選字段) ,傳輸層首部最少占用20個字節(無可選字段) ,信息部分占用46~1 500個字節。通過對上述各個部分依據數據結構特性進行解析即可獲得數據包的各項信息。
數據包解析部分結構圖如圖6所示。
3.3.2 數據包展示
解析完成的數據包信息需要以直觀方式進行展示,本系統主要通過QT框架下的QTreeWidget類和QStringList類進行展示。
數據包展示結構圖如圖7所示。
首先初始化UI界面,顯示各個信息的列名以及數據包詳情的標頭。
進行數據解析的同時,調用QStringList類函數將信息動態添加至用戶界面。
點擊具體信息包所在行時,發送信號調用QTreeWidget類函數實現詳細信息的樹形顯示。
設置不同數據類型的數據包行的背景顏色以獲取更直觀的觀察體驗。
4 系統測試與實現
本系統使用C/C++語言進行編程,系統可運行在Windows 7(版本 6.1 7600) 以上的平臺,本文設定為Windows 10 1703(RS2) 。
系統測試其目的在于通過將理想情況下系統運行情況與實際運行環境下系統運行情況相對比,發現系統或是軟件中與設計分析所得出的需求有不一致的地方,并進行改進。
功能測試旨在分別測試系統設計中的功能需求,檢測本系統是否能正常捕獲局域網內數據包,能否正常解析數據包信息,能否正常展示數據包信息,展示數據是否實時更新準確,能否正常過濾數據包,對不同協議類型的數據包是否正常分類,由于驅動功能部分的測試可以使用用戶界面的測試結果顯現,故本文僅使用用戶界面的測試結果以所得出的結果推斷驅動功能的正常與否。測試結果如表1所示。
流量展示測試:該測試用于檢驗流量顯示是否準確且實時,有無嚴重延遲。測試結果如表2所示。
如上述測試所示,此數據包分析工具可以實現對同一局域網下的網絡設備發出的網絡數據包進行抓取,并顯示其數據包的各項信息,滿足本系統設計預期目標。
5 總結與發展
本文實現了Windows 7以上平臺的基于NDIS的網絡數據包分析工具,系統實現了對局域網內網絡數據包的獲取、解析、展示,同時對網絡內數據包個數進行了統計以顯示網絡內數據流量的大小。系統可簡要分為驅動功能和人機交互功能兩塊內容。
未來研究方向是如何改進數據包解析、如何實現數據包攔截等。
本文基于NDIS的網絡數據包分析工具的設計與實現雖然完成,但限于精力有限,還是留下一些缺陷和值得改進的地方。
1) 捕獲的網卡名稱與實際命名有出入:主要是在無線網卡上,其名稱均為microsoft on local host,經實際檢驗其為無線網卡,其實際功能未受影響,即仍能正常工作,原因可能為解析過程所致。
2) 數據包解析只是依據數據包協議特征獲取了一些關鍵指標,諸如源與目的地址,收發端口等,對信息部分處理較少,實際上數據包中還有許多信息未被挖掘。
3) 數據包攔截功能未能在本系統中得到體現,作為數據包工具,數據包攔截功能是十分有用的,可惜本系統未能實現此功能。希望未來能夠優化此功能。
參考文獻:
[1] 蔣昳芃.計算機網絡安全及防范措施研究[J].網絡安全技術與應用,2020(1):2-3.
[2] 林錚.IPv6網絡環境下網絡攻擊探討[J].數字通信世界,2019(12):1.
[3] 李溪.云計算環境下數據安全與隱私保護分析[J].網絡安全技術與應用,2021(8):70-72.
[4] 吳信東,應澤宇,盛紹靜,等.數據中臺框架與實踐[J].大數據,2023,9(6):137-159.
[5] 馮浩.計算機網絡信息安全隱患及防火墻技術研究[J].計算機產品與流通,2019(8):25.
[6] 張志偉,張賀勛,吳澤江,等.基于云計算的數據安全與隱私保護[J].網絡安全技術與應用,2019(7):63-64.
【通聯編輯:謝媛媛】