







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