|
|
 |
 |
|
|
 |
|
sniffer技术原理及应用(1)
|
|
|
|
编辑:华夏媒体 作者:未知 来源:网络 时间:2006-07-29 总浏览量:1529 |
|
文字大小:[ 大 中 小 ]
文字颜色: 双击滚屏/单击停止 |
|
[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [下一页]
|
一、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地址或者特定TCP端口的包
进行阻塞的编程。 链接: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驱动开发的书上提到。这两种技术都需要对WINNT驱
动开发编程技术十分了解,对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文档和provide
d services都能很有用的帮你HOOK由Ndis wrapper导出的函数。 Ndis-Hooking技术在NT,2000和XP上同样有效和实用。这种技术很像核心模式的调试器。
文档支持较少,而且基本上不会被WHQL认证。 PCAUSA提供了一套NDIS PIM驱动例子,这些例子能在现有的WIN平台上运行成功(从95到X
P)。地址:http://www.pcausa.com/ndispim/Default.htm
其他: Network操作和进程信息: 有许多人想知道网络上的操作和WIN进程(就是应用程序啦)之间怎样联系起来,举例来说,
可能会想知道是哪个进程在一个特定的IP端口上发送或接收数据。 先不考虑这种技术是否有用,或者是否可靠,我们认为核心模式TCPIP驱动上层的过滤程序可
以处理这个问题。而TCPIP驱动下层的过滤程序根本看不到进程信息。特别要注意的是有些网络服
务操作生成一个新的进程attach到系统进程上的。在这种情况下进程信息并不能告诉我们原先是哪
个进程生成的。特别是单独在核心模式下的WIN服务(TDI客户) 最后,有必要看看下面的资料United States Patent 5,987,611; "System and
methodology for managing internet access on a per application basis for client
|
|
[上一页] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [下一页]
|
|
|
打印 收藏 关闭 至顶部 |
|
 |
|