应用层网络通信的过滤方法和装置的制作方法

文档序号:7855296阅读:205来源:国知局
专利名称:应用层网络通信的过滤方法和装置的制作方法
技术领域
本发明涉及对网络应用程序Socket通信的过滤,尤其涉及在客户端针对应用程序的通信过滤。
背景技术
过滤技术是实现通信数据分析、防火墙、网络代理、网络加速的基础,这些程序都是利用某种过滤技术取到上层传递下来的数据包,做协议分析的就成为分析工具、做风险评估选择放过或拦截的成为防火墙、做转发的成为代理工具、做转发到快速代理服务器的成为加速器。Windows平台常见的网络过滤技术,按从高层到底层排列,主要有WinSock API Hook、LSP (Layered Service Provider,分层服务提供程序)、TDI (Transport DriverInterface)驱动、WFP (Windows Filtering Platform)>NDIS IMD (Intermediate Driver)驱动、NDIS Hook、虚拟网卡和VPN技术。按各自需求,分析工具和防火墙倾向用底层的过滤技术,以得到更多数据,代理和加速器倾向使用高层过滤技术,以便专注做数据转发、并能够区分进程,同时降低导致系统崩溃的风险。也有一些加速器使用VPN技术,但缺点是VPN无法针对应用程序进程,所以一般需要配合LSP。使用高层过滤技术做代理和加速器的现有例子SocksCap,代理,使用WinSockAPI Hook方式;ProXyCap,代理,使用LSP ;二七代理,网游加速器,使用LSP。LSP是Windows系统本身提供的机制,WinSock API Hook是第三方方案,要实现好比较困难,兼容性也较差;而1^的缺陷在于虽然本身是很优秀的机制,但是安装却存在各种困难,比如多个LSP抢夺安装位置导致冲突、不良的LSP安装程序强行删除其它LSP导致无法共存。LSP分为IFS LSP (Installable File Systems可安装文件系统)和Non-IFSLSP (非可安装文件系统)两种。

发明内容
本发明的目的在于解决上述问题,提供了一种应用层网络通信的过滤方法,在具有LSP优点的同时却没有LSP的安装困难问题,主要应用于网络代理和网络加速器,也可用于协议分析工具、家长控制类软件。本发明的另一问题在于提供了一种应用层网络通信的过滤装置,在具有LSP优点的同时却没有LSP的安装困难问题,主要应用于网络代理和网络加速器,也可用于协议分析工具、家长控制类软件。本发明的技术方案为本发明揭示了一种应用层网络通信的过滤方法,包括网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32.dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自WinSock2. 0库,myws2_32. dll文件直接调用ws2_32. dll文件中的工具类函数;运行myws2_32. dll文件,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载;运行ws2_32. dl I 文件。本发明还揭示了一种应用层网络通信的过滤方法,包括网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock.dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接调用mswsock. dll文件的函数;运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载;运行mswsock. dll 文件。 本发明揭示了一种应用层网络通信的过滤装置,包括第一重定向模块,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32. dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自WinSock2. 0库,myws2_32. dll文件直接调用ws2_32. dll文件中的工具类函数;第二重定向模块,运行myws2_32.dll文件,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载;运行模块,运行ws2_32. dll文件。本发明还揭示了一种应用层网络通信的过滤装置,包括第一重定向模块,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock. dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接调用mswsock. dll文件的函数;第二重定向模块,运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载;运行模块,运行mswsock. dll文件。本发明对比现有技术有如下的有益效果本发明的技术方案是采用两次文件重定向的技术手段来实现对应用层网络通信的过滤,相较于现有技术,本发明在具有LSP优点的同时却没有LSP的安装困难问题,主要应用于网络代理和网络加速器,也可用于协议分析工具、家长控制类软件。


图I示出了本发明的应用层网络通信的过滤方法的第一实施例的流程图。图2示出了本发明的应用层网络通信的过滤方法的第二实施例的流程图。图3示出了本发明的应用层网络通信的过滤装置的实施例的结构图。
具体实施例方式下面结合附图和实施例对本发明作进一步的描述。应用层网络通信的过滤方法的第一实施例当采用Non-IFS LSP做网络数据过滤时,会安装一个LSP到系统中,以下是正常流程
(I)网络应用调用WinSockAPI,必然加载ws2_32. dll(2)ffs2_32. dll 检查注册表,发现 LSP,假设叫 mynonifslsp. dll,于是 Ws2_32. dll加载了 mynonifslsp. dll,并调用 mylsp. dll 实现的 WSPStartup 函数。(3) mynonifslsp. dll也是检查注册表,发现下层是BSP (基础服务提供程序),就加载mswsock. dll,然后调用它的WSPStartup函数。但只要安装LSP就有麻烦,发明没有安装LSP,我们利用的是WinSock应用程序都要加载 WinSock API 库(ws2_32. dll)。图I示出了本发明的应用层网络通信的过滤方法的第一实施例。请参见图1,本实施例的应用层网络通信的过滤方法包括如下的步骤。网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32.dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自 WinSock2. 0库,myWS2_32. dll文件直接调用ws2_32. dll文件中的工具类函数,只有收发数据相关的API要自己实现,最后调用ws2_32. dll对应的函数。第一处文件重定向是关键加载ws2_32. dll被重定向到自行实现的myws2_32. dll,从而拥有了介入的机会,但是实现myws2_32. dll并非按照Non-IFS LSP规范,而是WinSock API Hook的方式,它可以起到和Non-IFS类似的效果。然后,运行myWS2_32. dll文件,接着,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载。注意到对ws2_32. dll的加载已经被重定向了,myws2_32. dll里不能直接加载,应该改为加载realws2_32. dll,文件系统过滤驱动会把这个加载重定向为原本的ws2_32. dll。最后,运行ws2_32. dl I文件。在本实施例中,做了两个重定向ws2_32. dll重定向为myws2_32. dll ;realws2_32. dl I重定向为ws2_32. dl I。在应用层访问ws2_32. dl I都会被重定向,所以为了加载真正的ws2_32. dll,必须给它取个别名,再让过滤驱动根据这个别名,转想访问真正的 ws2_32. dll。为了过滤,如果使用Non-IFS LSP方案,我们的程序叫mynonifslsp. dll,采用本发明方案,自定义的程序叫myWS2_32. dll,实现方式不同,但是可以起到一样的效果,其实现方法是WinSock API Hook (应用程序编程接口挂钩),这是一项成熟的技术。此方案本质上是WinSock API Hook,创新点在于使用文件系统重定向做dll的注入,不同于一般的创建远程线程、动态修改导入表、全局挂钩的注入方式。本方案更不容易被安全软件拦截。应用层网络通信的过滤方法的第二实施例当系统中没有安装任何LSP时,以下是正常流程(I)网络应用调用WinSockAPI,必然加载ws2_32. dll(2)ffs2_32. dll检查注册表,发现没有任何LSP,就加载默认的BSP(Base ServiceProvider),并调用它的 WSPStartup 函数,这个 BSP 的文件就是 mswsock. dll, WSPStartup函数也是WinSock2. 0规范约定好的。(3) BSP实现更底层的网络通信。当采用IFS LSP做网络数据过滤时,会安装一个LSP到系统中(I)网络应用调用WinSockAPI,必然加载ws2_32. dll
(2)ffs2_32. dll检查注册表,发现我们的LSP,假设叫myifslsp. dll,于是Ws2_32.dll 加载了 myifslsp. dll,并调用 mylsp. dll 实现的 WSPStartup 函数。(3)myifslsp. dll也是检查注册表,发现下层是BSP,就加载mswsock. dll,然后调用它的WSPStartup函数。上述流程中至少有两个问题(I)LSP的实现者可能不按照规范来实现,在现实中也确实如此。上层的LSP可以不加载下层的LSP,而直接就加载BSP,所以下层的LSP可能失效。举例系统有两个LSP,申请人希望的调用顺序是LSP1->LSP2->BSP,但是LSPl的实现者不希望他下层有其它LSP起作用,所以他可以跳过LSP2,直接加载BSP,使调用顺序变成LSP1->BSP。(2)安装LSP是比较敏感的行为,很容易被杀毒软件拦截,导致无法安装。
请参见图2,本实施例的应用层网络通信的过滤方法的实现步骤如下。网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock.dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接调用mswsock. dll文件的函数。mswsock. dll有很多函数,但是申请人的mymswsock. dll不需要都实现,除了 WSPStartup函数都可以直接调用原来mswsock. dll的对应函数,WSPStartup函数的实现方法和IFS LSP是一样,这就保留了 LSP的优点。第一处文件重定向是关键加载mswsock. dll被重定向到mymswsock. dll,mymswsock. dll是一个IFS LSP,它最终又会调用真正的BSP。之所以申请人要实现是IFS LSP,因为BSP本质上就是一个IFS LSPoWSPStartup函数是WinSock2. OSPI规范定义的(SPI=Service Provider Interface服务提供程序接口)运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载。注意到对mswsock. dll的加载已经被重定向了,mymswsock. dll里不能直接加载,应该改为加载realmswsock. dll,文件系统过滤驱动会把这个加载重定向为原本的mswsock. dll。本实施例做了两个重定向mswsock. dll重定向为mymswsock. dll ;realmswsock. dll 重定向为mswsock. dll。在应用层访问mswsock. dll都会被重定向,所以为了加载真正的mswsock. dll,必须给它取个别名,再让过滤驱动根据这个别名,转想访问真正的mswsock. dll。运行mswsock. dll 文件。此方案的优点是mymswsock. dll本质上就是一个IFS LSP,但不需要LSP的安装,不管系统存在多少流饭的LSP,都不能影响到我们的mymswsock. dll。为了过滤,如果使用IFS LSP方案,自定义的程序叫myifslsp. dll,采用本发明方案,自定义的程序叫mymswsock. dll,但其实现方法大致是一样的,区别在于对BSP的调用,使用的名字不一样myifslsp. dll会直接调用mswsock. dll ;mymswsock. dll应该调用realmswsock. dll,再让文件过滤驱动把名字改为mswsock. dll。应用层网络通信的过滤装置的第一实施例请参见图3,本实施例的应用层网络通信的过滤装置包括第一重定向模块、第二重定向模块以及运行模块。其中在第一重定向模块中,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32. dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自WinSock2. 0库,myws2_32. dll文件直接调用ws2_32.dll文件中的工具类函数。在第二重定向模块中运行myWS2_32. dll文件,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载;在运行模块中运行ws2_32. dll文件。应用层网络通信的过滤装置的第二实施例本实施例的应用层通信的过滤装置的结构和第一实施例一样,如图3所示,只是模块具体的实现内容不同。本实施例的过滤装置包括第一重定向模块、第二重定向模块以及运行模块。其中在第一重定向模块中,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock. dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接 调用mswsock. dll文件的函数。第二重定向模块中运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载;运行模块中运行mswsock. dll文件。上述实施例是提供给本领域普通技术人员来实现和使用本发明的,本领域普通技术人员可在不脱离本发明的发明思想的情况下,对上述实施例做出种种修改或变化,因而本发明的保护范围并不被上述实施例所限,而应该是符合权利要求书所提到的创新性特征的最大范围。
权利要求
1.一种应用层网络通信的过滤方法,包括 网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32. dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自WinSock2. O库,myws2_32. dll文件直接调用ws2_32. dll文件中的工具类函数; 运行myws2_32. dll文件,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载;运行ws2_32. dll文件。
2.一种应用层网络通信的过滤方法,包括 网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock. dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接调用mswsock. dll文件的函数;运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载; 运行mswsock. dll文件。
3.一种应用层网络通信的过滤装置,包括 第一重定向模块,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32. dll文件的加载重定向到对myws2_32. dll文件的加载,其中ws2_32. dll文件来自WinSock2. 0库,myws2_32. dll文件直接调用ws2_32. dll文件中的工具类函数; 第二重定向模块,运行myws2_32. dll文件,文件系统过滤驱动将对自定义的realws2_32. dll文件的加载重定向到对ws2_32. dll文件的加载; 运行模块,运行ws2_32. dll文件。
4.一种应用层网络通信的过滤装置,包括 第一重定向模块,网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对mswsock. dll文件的加载重定向到对mymswsock. dll文件的加载,其中mswsock. dll文件是微软默认的基础服务提供程序的文件名,mymswsock. dll文件直接调用mswsock.dll文件的函数; 第二重定向模块,运行mswsock. dll文件,文件系统过滤驱动将对自定义的realmswsock. dll文件的加载重定向到对mswsock. dll文件的加载; 运行模块,运行mswsock. dll文件。
全文摘要
本发明公开了应用层网络通信的过滤方法和装置,在具有LSP优点的同时却没有LSP的安装困难问题。其技术方案为方法包括网络应用调用视窗套接字应用程序接口,文件系统过滤驱动将预设的对ws2_32.dll文件的加载重定向到对myws2_32.dll文件的加载,其中ws2_32.dll文件来自WinSock2.0库,myws2_32.dll文件直接调用ws2_32.dll文件中的工具类函数;运行myws2_32.dll文件,文件系统过滤驱动将对自定义的realws2_32.dll文件的加载重定向到对ws2_32.dll文件的加载;运行ws2_32.dll文件。
文档编号H04L29/06GK102739685SQ20121023063
公开日2012年10月17日 申请日期2012年7月4日 优先权日2012年7月4日
发明者洪珂, 郑明 申请人:网宿科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1