熱點推薦:
您现在的位置: 電腦知識網 >> 網絡技術 >> 正文

Windows下的個人防火牆-網絡數據包攔截技術概覽

2022-06-13   來源: 網絡技術 

  隨著網絡安全問題日益嚴重網絡安全產品也被人們重視起來防火牆作為最早出現的網絡安全產品和使用量最大的安全產品也受到用戶和研發機構的青睐從防火牆的應用角度來看基本上可以分為兩種網絡級的防火牆和個人防火牆Windows操作系統作為使用最為廣泛的PC操作系統因此在Windows操作系統下開發的個人防火牆產品數不勝數國外比較著名的有AtGuardOutpost FirewallZoneAlarmTiny Personal FirewallNorton Personal Firewall以及Sygate Personal Firewall等國內用的比較多的有天網防火牆等產品
  所有基於Windows操作系統的個人防火牆核心技術點在於Windows操作系統下網絡數據包攔截技術本文主要講述的是Windows操作系統下網絡數據包攔截的技術首先讀者應該對Windows網絡體系結構有一定了解並且對開發Windows驅動程序有一定了解
  Windows 網絡驅動程序結構
  圖顯示了Windows 下的網絡驅動程序結構
  微軟和Com公司在年制定了一套開發Windows下網絡驅動程序的標准稱為NDIS( Network Driver Interface Specification)NDIS為網絡驅動的開發提供了一套標准的接口使得網絡驅動程序的跨平台性更好NDIS提供以下幾個層次的接口
  ?NDIS小端口驅動(Miniport driver)這也就是我們常說的網卡驅動
  ?NDIS 協議驅動(Protocol driver)例如TCPIP協議驅動
  ?NDIS 中間層驅動(Intermediate driver)這是基於鏈路層和IP層之間的驅動
  從圖中我們可以很清楚地看到網絡驅動的分層結構這就給我們提供了攔截網絡數據包的基本思路
  總的來說要攔截Windows下的網絡數據包可以在兩個層面進行用戶態(usermode)和內核態(kernelmode)
  用戶態下的網絡數據包攔截
  在用戶態下進行網絡數據包攔截有以下幾種方法
  ) Winsock Layered Service Provider (LSP)這種方法在MSDN裡有很詳細的文檔並且給出了一個例子(SPICPP)這種方法的好處是可以獲得調用Winsock的進程詳細信息這就可以用來實現QoS數據流加密等目的但是如果應用程序直接通過TDI(Transport Driver Inface)調用TCPIP來發送數據包這種方法就無能為力了對於一些木馬和病毒來說要實現通過TDI直接調用TCPIP是一件很容易的事情因此大多數的個人防火牆都不使用這種方法國內也有使用該方法實現的個人防火牆例如Xfilter()
  ) Windows 包過濾接口Windows IPHLP API提供了安裝包過濾器的功能但是包過濾的規則有很多限制對於個人防火牆來說是遠遠不夠的
  ) 替換系統自帶的WINSOCK動態連接庫這種方法可以在很多文章裡面找到詳細的實現細節
  很顯然在用戶態下進行數據包攔截最致命的缺點就是只能在Winsock層次上進行而對於網絡協議棧中底層協議的數據包無法進行處理對於一些木馬和病毒來說很容易避開這個層次的防火牆
  
  利用驅動程序攔截網絡數據包
  大多數的個人防火牆都是利用網絡驅動程序來實現的從圖中我們馬上可以想到可以從以下幾個方面來做文章
  ? TDI過濾驅動程序(TDI Filter Driver)
  ? NDIS中間層驅動程序(NDIS Intermediate Driver)
  ? Wink FilterHook Driver
  ? NDIS Hook Driver
  以下我們大體介紹這幾種方法具體的實現細節請參見Wink DDK文檔
  TDI過濾驅動程序當應用程序要發送或接收網絡數據包的時候都是通過與協議驅動所提供的接口來進行的協議驅動提供了一套系統預定義的標准接口來和應用程序之間進行交互在Windows /NT下iptcpudp是在一個驅動程序裡實現的叫做tcpsys這個驅動程序創建了幾個設備DeviceRawIpDeviceUdpDeviceTcpDeviceIp DeviceMULTICAST應用程序所有的網絡數據操作都是通過這幾個設備進行的因此我們只需要開發一個過濾驅動來截獲這些交互的接口就可以實現網絡數據包的攔截TDI層的網絡數據攔截還可以得到操作網絡數據包的進程詳細信息這也是個人防火牆的一個重要功能
  NDIS中間層驅動中間層驅動介於協議層驅動和小端口驅動之間它能夠截獲所有的網絡數據包(如果是以太網那就是以太幀)NDIS中間層驅動的應用很廣泛不僅僅是個人防火牆還可以用來實現VPNNATPPPOverEthernet以及VLan中間層驅動的概念是在Window NT SP之後才有的因此對於Windowsx來說無法直接利用中間層驅動的功能Windows DDK提供了兩個著名的中間層驅動例子Passthru以及Mux開發人員可以在Passthru的基礎上進行開發Mux則實現了VLan功能目前個人防火牆的產品還很少用到這種技術主要的原因在於中間層驅動的安裝過於復雜尤其是在Windows NT下Windows 下可以通過程序實現自動安裝但是如果驅動沒有經過數字簽名的話系統會提示用戶是否繼續安裝中間層驅動功能強大應該是今後個人防火牆技術的趨勢所在特別是一些附加功能的實現
  Wink FilterHook Driver這是從Windows開始系統所提供的一種驅動程序該驅動程序主要是利用ipfiltdrvsys所提供的功能來攔截網絡數據包FilterHook Driver在結構非常簡單易於實現但是正因為其結構過於簡單並且依賴於ipfiltdrvsysMicrosfot並不推薦使用FilterHook Driver
  NDIS Hook Driver這是目前大多數個人防火牆所使用的方法Hook的概念在Windowsx下非常流行而且實現也很容易在Windowsx下驅動程序(VxD)通過使用Hook_Device_Service可以掛接NDIS所提供的所有服務在Windows NT/下面如何實現Hook呢?有兩種不同的思路
  ) 通過修改NDISSYS的Export Table在Windows NT/可執行文件(包括DLL以及SYS)都是遵從PE(Portable Executable)格式的所有向其他操作系統組件提供接口的驅動程序都有Export Table因此只要修改NDISSYS的Export Table就可以實現對關鍵NDIS API的掛接由於協議驅動程序在系統啟動的時候會調用NdisRegisterProtocol來向系統進行協議注冊因此這種方法關鍵在於修改NDISSYS所提供的NdisRegisterProtocol/NdisDeRegisterProtocol/NdisOpenAdapter/NdisCloseAdapter/NdisSend函數的起始地址我們知道在用戶態模式要修改PE文件格式可以用一些API來實現而NDISSYS位於系統的核心內存區因此要修改NDISSYS就不得不通過寫驅動程序來實現也就要求我們對PE文件格式有比較深入的了解使用這種方法還要注意驅動程序的加載次序顯然Hook Driver必須在NDISSYS被加載之後而在協議驅動程序如tcpipsys被加載之前另外Windows還提供了系統文件保護機制因此在修改ndissys還需要通過修改注冊表屏蔽系統文件保護機制
  ) 向系統注冊假協議(fake protocol)在Windows內核中所有已注冊的協議是通過一個單向的協議鏈表來維護的這個單向鏈表保存了所有已注冊協議的NDIS_PROTOCOL_BLOCK結構的地址在這個結構中保存了協議驅動所指定的相應的派發函數的地址如RECEIVE_HANDLER等並且每個協議驅動還對應一個NDIS_OPEN_BLOCK的單向鏈表來維護其所綁定的網卡信息當協議驅動調用NdisRegisterProtocol之後NDIS總是會把新注冊的協議放在協議鏈表的表頭並返回這張表所以只要我們注冊一個新的協議通過新協議注冊返回的鏈表頭就可以輕而易舉的遍歷系統中所有協議表但是如果要成功地掛接派發函數還需要對協議所對應的NDIS_OPEN_BLOCK結構裡的派發函數進行掛接因為NDIS並不是直接調用協議驅動在NDIS_PROTOCOL_CHARACTERISTICS所注冊的派發函數地址而是調用NDIS_OPEN_BLOCK裡的派發函數值得注意的是在Windowsx/Me/NT的DDK中NDIS_PROTOCOL_BLOCK的定義是很明確的而在Windows /xp的DDK中並沒有該結構的詳細定義也就是說該結構在Windows/xp下是非公開的因此開發人員需要利用各種調試工具來發掘該結構的詳細定義也正是因為如此這種方法對平台的依賴性比較大需要在程序中判斷不同的操作系統版本而使用不同的結構定義
  總結
  本文重點描述了在WindowsNT//xp下個人防火牆核心技術網絡數據包攔截技術分析了各種可能的方法以及各種方法的優缺點實際上許多個人防火牆結合了幾種不同的技術來在不同層面上進行網絡數據包攔截值得說明的是網絡數據包攔截技術不僅僅可以用來開發個人防火牆還可以用來開發其他的產品
From:http://tw.wingwit.com/Article/Network/201311/30082.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.