引言
隨著網路技術的快速發展,網路安全問題日益凸顯。Windows Filtering Platform(WFP)作為 Windows 作業系統的重要安全元件,是目前主流的網路過濾框架,為保護使用者網路安全提供了強大支援。很多網路驅動都是基於此框架進行的開發,本文將從測試工程師的角度出發,探討網路驅動的 WFP 測試方法,幫助大家瞭解如何有效地評估和測試網路驅動,以確保網路安全。
原理介紹
1.首先看 WFP 的精簡原理圖
WFP 框架的核心元件是過濾引擎(Filte Engine),它與作業系統中的網路堆疊進行互動,並對系統網路堆疊中的資料進行處理,實現資料過濾等功能。過濾引擎能夠在七層網路模型中與每一層進行互動,並在不同層次上處理網路資料。
2.下面再來具體看下 WFP 體系結構
WFP 主要分為兩大層次模組:使用者態基礎過濾引擎(BFE)、核心態過濾引擎(KM Filtering Engine)。實際工作的是核心態的過濾引擎,使用者可以在使用者層透過其提供的 API 與 BFE 互動(BFE 會與 KM FE 互動),或直接在核心層 KM FE 互動。
3.WFP 框架中包含幾大概念
①.墊片
墊片是一種特殊的核心模組,被安插在系統的網路協議棧的不同層中,將不同層的資料傳給 WFP 過濾引擎,並將過濾引擎的反饋操作傳回到網路協議棧中,最後對流做出最終的動作,例如 drop。這部分 WFP 開發者不需要為其做任何事,這些都由 WFP 框架完成。
②.Callout
Callout 是指執行特定過濾規則或動作的函式,由程式設計師自定義或使用預定義函式。這些函式可以執行包分析、修改等功能。可以在任何 WFP 核心層註冊 callouts 函式,並返回一個動作值或對網路流量進行修改。比如 “Block”、“Permit”、“Need more data” 等等
③.分層
系統的網路協議棧是分為多層的,WFP 的過濾引擎也是分開為多層 (Layer),我們在註冊自己的 Callout 時需要制定網路的具體哪一層,對該層的資料進行操作。
④.子層
子層是在分層基礎上新增的,一個分層中可以由多個子層組成。每個子層有它的名字以及 GUID,並且還有權重,這裡的權重指的是優先順序,優先順序越高就會在同一分層中被優先呼叫。
⑤.過濾器
Filter 字面意思就是過濾器,實際上就是一條用於匹配特定出/入流量的規則。這些規則會告訴過濾引擎在匹配到特定資料包後應該執行什麼動作。例如,如果匹配到特定的資料包,過濾引擎就會呼叫一個 callout 模組來執行深度包檢測。
過濾器引擎包含大約 10 個使用者模式篩選層,包含大約 50 個核心模式篩選層。
下面我們舉例展示一下資料傳輸過程中,Filter 在實際場景的使用情況。
當應用層要傳輸資料時,根據應用層的服務型別選擇 TCP 或 UDP 傳輸協議。以 TCP 為例,資料進入到核心處理時首先到達 WFP 的 FWPM_LAYER_STREAM_V4 層,而後把資料傳給 FWPM_LAYER_OUTBOUND_TRANSPORT_V4 層進行資料分片封裝,最後透過 FWPM_LAYER_ONBOUND_IPPACKET_V4 層傳送出去。資料接收過程則與傳送資料經過的過濾層類似,資料傳輸方向相反。
三、測試方法
現在的網路防護驅動大多基於 WFP 框架實現,這裡將我們從網路底層框架角度來看網路驅動的測試方法,主要包括功能測試、相容性測試、效能測試和安全測試等。
1.功能測試主要針對網路驅動各項功能的完備性和正確性進行驗證。
①.網路連線測試:測試網路驅動是否能夠正確地建立和斷開網路連線,包括本地連線和遠端連線。
②.資料傳輸測試:測試網路驅動是否能夠正確地傳輸資料,包括文字、影像、音訊、影片等不同型別的資料。
③.網路協議測試:測試網路驅動是否能夠正確地支援各種網路協議,例如 TCP/IP、UDP、HTTP 等。
④.網路管理測試:測試網路驅動是否能夠正確地管理網路裝置,例如停用、啟用等。
需要注意的是測試環境的搭建,需要搭建一個真實的網路環境,以確保測試結果的準確性。
2.相容性測試則關注網路驅動在不同作業系統版本、硬體配置及網路環境下的表現。
①.作業系統相容性測試:測試網路驅動在不同作業系統下的相容性,例如不同版本的 Windows 作業系統等
②.硬體配置相容性測試:測試網路驅動在不同硬體配置下的相容性,例如百兆網路卡、千兆網路卡等。
③.網路裝置相容性測試:測試網路驅動在不同網路裝置下的相容性,例如乙太網、無線網路、藍芽等。
④.第三方軟體相容性測試:測試網路驅動與第三方軟體的相容性,例如網路管理工具、防火牆等。
⑤.應用程式相容性測試:測試網路驅動與應用程式的相容性,例如網路遊戲、影片播放器等。
3.效能測試側重於評估網路驅動在不同負載下的處理能力和響應時間。
①.吞吐量測試:測試網路驅動的吞吐量,即單位時間內能夠傳輸的資料量。
②.延遲測試:測試網路驅動的延遲,即資料從傳送端到接收端的時間差。
③.壓力測試:測試網路驅動在高負載情況下的效能表現,例如大量資料的傳輸、大量併發連線等。
④.網路環境測試:測試網路驅動在不同網路環境下的效能表現,例如不同的網路頻寬、不同的網路延遲等。
4.安全測試則透過專業工具檢查網路驅動是否存在漏洞,及模擬各種攻擊場景來檢驗網路驅動的安全防護能力。
①.漏洞掃描:使用專業的漏洞掃描工具對網路驅動進行掃描,以發現網路驅動中存在的安全漏洞。
②.滲透測試:透過模擬駭客攻擊的方式,對網路驅動進行安全性測試,以發現網路驅動中的安全漏洞和安全隱患。
③.惡意軟體防護測試:測試網路驅動的惡意軟體防護功能,以確保網路驅動能夠有效地防止惡意軟體的攻擊。
四、案例分析
在本文中,我們將提供一個實際案例來演示網路驅動測試過程中遇到的問題和解決方案。假設在功能測試過程中,發現網路驅動進行網路防護的同時會影響網路的速度,致使網速下降。
那麼該如何在進一步定位和分析呢?透過上面關於 WFP 介紹中可知,過濾器是對網路流量的篩選,多加一層的過濾,可能會影響到流量資料的傳輸速度,然而過濾器涉及一百多種,我們該從哪入手進行排查呢?
這裡的場景問題是傳輸速度下降,那麼我們重點關注傳輸過程中有哪些 Filter,透過上面圖三看到資料傳輸過程中的過濾器行為,到底是哪一層的過濾影響了網速,我們就需要進行一一排查,這裡可以借用 WfpEnu 工具,分別將各層的 filter 移除,
每移除一層就記錄一組資料,最後分析每組資料找出最影響網速的 Filter。
這個案例告訴我們,在實際測試過程中,遇到問題時要善於利用官方文件和社群資源,瞭解功能實現原理和框架,方便找到問題的根本原因並解決它。同時,也提醒我們除了驗證功能的實現外,也要重點考慮使用者使用質量是否下降,合理平衡這倆之間的關係。
總結
本文從測試工程師的角度探討了網路防護驅動(基於 WFP 框架)測試方法的相關內容。透過基礎知識掌握、制定測試計劃、實施測試及結果分析等步驟,我們可以全面評估 WFP 的效能和安全性。隨著網路安全威脅的不斷演變,掌握有效的 WFP 測試方法將有助於提高網路安全防護能力,為構建安全、穩定、高效的計算機網路環境提供有力保障。