WINDOWS网络包过滤技术

WINDOWS网络包过滤技术
              
(原文: http://www.ndis.com/papers/winpktfilter.htm)
//似乎是翻译的#转者注:)
//作  者:  sevencat (七猫)  //原文作者不详#转者注

一、user-mode网络包过滤
1、winsock分层service provider
参照Microsoft Platform SDK上有关文档和例子
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/)
这里有好几个microsoft lsp 例子,最新(可能最bug-free)的经常在这里能找到。需要
知道的是可以通过TDI调用核心TCPIP驱动,而且可以完全绕开WINSOCK,在大多数情况下这
不是一个问题。例如:QOS的实现可以在WINSOCK LSP上。
然而,这样做的话,程序必须察看和操作每个包,而不能依靠WINSOCK LSP,他们要以一
种接近核心态的方法来实现。
2、win2000包过滤接口
  WIN2000包过滤接口提供了一种机制,这种机制允许用户态程序或者服务指定一系列的
"过滤原则",这些过滤原则会被低层的TCPIP实现用来过滤包。这种过滤工主要是对IP原地
址、目标地址、端口号(或者端口号范围)进行pass或者drop操作。
Windows Developer s Journal
《用iphlpapi.dll进行包过滤》作者:Ton plooy,October,2000,Volume 11, Number 10

  WIN2000提供了一个较好对TCPIP的可编程控制,其中包括包过滤。不幸的是,有关这
个新的API的文档并不是很容易能找到。这篇文章向你演示了怎样对特定IP地址或者特定T
CP端口的包进行阻塞的编程。
链接:www.wdj.com
上面这个例子的下载: ftp://ftp.wdj.com/pub/webzip/1110/plooy.zip
Hollis 的解决方案:
  HTS W2K IpHook例子演示了IP过滤和它的HOOK API,包含原文件,而且是免费的,
需要HtsCpp运行时库(免费),下载地址: http://www.hollistech.com/
3、winsock替代DLL
  在使用WINSOCK LSP之前,唯一的办法是用自己的DLL取代微软的WINSOCK DLL,假如
实现顺利的话,自己的DLL会接收用户的WINSOCK调用请求,然后还可以调用原来的WINSOC
K DLL来处理。
  不过这样的实现是比较费力的,其中有个困难就是微软的WINSOCK DLL里面经常有一
些未公开的内部使用的函数,一个WINSOCK代替DLL至少要处理其中的一些未公开函数。

  随着WINDOWS系统结构的变化,有些方面得到了加强,比如系统文件保护,这使得这种
技术变得不太可行。总的说来,使用WINSOCK DLL替换不是一个坏主意。(Xfilter就是用
的这种技术,原代码可能在网上有流传,我以前看到过的)
二、kernel-mode网络包过滤
1、Transport Data Interface (TDI)
  这主要是一个直接在核心TCPIP驱动上面的一层过滤驱动。在WINXP上TDI驱动是一种传
统的NT风格的驱动,使用了基于IRP的API,这里有两种方法来实现。
A、使用核心模式服务的IoAttachDeviceXYZ函数族在TDI上实现一个过滤。
B、对TDI驱动IRP DISPATCH表进行过滤。
  IoAttachDeviceXYZ函数在许多WINNT驱动开发的书上提到。这两种技术都需要对WINN
T驱动开发编程技术十分了解,对TDI函数也要相当的了解。
2、NDIS中间层(IM)
具体请看NDIS IM FAQ: http://www.pcausa.com/resources/ndisimfaq.htm
3、WIN2000 FILTER-HOOK
  请参照有关DDK文档,系统中只能有一个活动的Filter-Hook存在,这点使这种技术的
使用有严重的限制。(平时所见的drvipflt就是用的这个)
4、WIN2000 FIREWALL-HOOK 
  Firewall-Hook Driver函数在文档里介绍得很少,而且在有些win2000版本中不可用。
请参照微软有关文档: http://msdn.microsoft.com/library/default.asp?url=/library
/en-us/network/hh/network/firewall_3wfb.asp
5、NDIS-HOOKING  (费尔防火墙就是用的这种技术吧,据我所知,虽然我没看过原码。

NDIS-Hooking驱动拦截或者叫"HOOK"一些由NDIS封装程序导出的函数。虽然从实现手段上
来说有些不正规,但一个有系统的NDIS-Hooking过滤会非常有效。
另外:NDIS-Hooking过滤驱动有下面的好处:
A、容易安装(可以动态装卸,不过有时候会出问题,里面有些情况现在还未知。)
B、支持拨号-ppp适配器。
  Ndis-Hooking技术在98和ME系统下非常有效和实用。在这些平台上,DDK文档和provi
ded services都能很有用的帮你HOOK由Ndis wrapper导出的函数。
  Ndis-Hooking技术在NT,2000和XP上同样有效和实用。这种技术很像核心模式的调试
器。文档支持较少,而且基本上不会被WHQL认证。
PCAUSA提供了一套NDIS PIM驱动例子,这些例子能在现有的WIN平台上运行成功(从95到
XP)。地址: http://www.pcausa.com/ndispim/Default.htm

其他:
Network操作和进程信息:
  有许多人想知道网络上的操作和WIN进程(就是应用程序啦)之间怎样联系起来,举例
来说,可能会想知道是哪个进程在一个特定的IP端口上发送或接收数据。
  先不考虑这种技术是否有用,或者是否可靠,我们认为核心模式TCPIP驱动上层的过滤
程序可以处理这个问题。而TCPIP驱动下层的过滤程序根本看不到进程信息。特别要注意的
是有些网络服务操作生成一个新的进程attach到系统进程上的。在这种情况下进程信息并
不能告诉我们原先是哪个进程生成的。特别是单独在核心模式下的WIN服务(TDI客户)
主要研究如何通过基于Windows操作系统内核的过滤防火墙系统来实现网络安全 防护。基于操作系统内核的过滤防火墙系统是基于网络层实现的过滤防火墙系统,该系统要求 能够对所有进出计算机的IP数据进行灵活控制,实现过滤的核心问题是如何截获所有的IP数据 。首先介绍了过滤防火墙的基本结构和原理,然后在剖析操作系统内核的基础上,研究并设计了 基于Windows操作系统内核的过滤防火墙系统。 关键词:操作系统内核,过滤防火墙,NDIS,NIC,TCP/IP 中图分类号:TP393.08 0引言 2l世纪是网络信息安全的世纪,信息获取能力和 信息安全保障能力是当今世界各国奋力抢占的制高 点。目前我国使用的交换机、路由器等网络互联设备 几乎都是国外产品,一些国内的应用系统也是建立在 国外操作系统基础之上的。所以,建立我国自主的网 络信息安全保障体系具有重要意义。 当前使用Windows操作系统的用户占90%以上, 如何保护这些用户的信息安全,特别是解决由TCP/IP 协议的缺陷引起的Intemet安全问题具有重要意义。 本文主要研究如何通过基于Windows操作系统内核的 过滤防火墙系统来实现网络安全防护。 1过滤防火墙 典型的防火墙是通过执行访问控制策略来达到网 络安全的一个或一组软、硬件系统,它隔离了内部和外 部网络,是内外网络通信的唯一途径。它能根据制定 的访问控制规则对经过它的信息流进行监控和审查, 过滤掉任何不符合控制规则的信息,以保护内部网络 不受外界的非法访问和攻击。 过滤防火墙往往可以用一台过滤路由器来实 现,对所接收的每个数据做允许/拒绝的决定。路由 器审查每个数据,以便确定其是否与某一条过滤 规则匹配。过滤规则基于可以提供给IP转发过程的 头信息。头信息中括IP源地址、IP目的地址、 内装协议(ICP、UDP、ICMP或IP Tunnel)、TCP/UDP目 标端口、ICMP(网际控制报文协议)消息类型和TCP 收稿
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值