利用wfp拦截网络数据的方法

文档序号:7620186阅读:3280来源:国知局
专利名称:利用wfp拦截网络数据的方法
技术领域
本发明涉及网络安全领域,尤其涉及一种利用WFP拦截网络数据的方法。
背景技术
目前网络数据的安全监控软件可以设在很多层次,根据ISO的七层结构(包括应用层、表示层、会话层、传输层、网络层、链路层、物理层),可以设在比如NDIS(Network Driver Interface Specification,网络驱动接口规范)的协议层、中间层以及TDI层(传输层)或者应用层。它们都能够过滤特定进程的网络数据,对这些数据以及发包进程进行安全扫描,以便决定这些网络数据是否继续发送等。这些方法足可以帮助我们阻止不安全进程的第三方通信软件发送非法数据,防止盗窃本地数据。但是这些方法都存在一定的缺陷,比如说SPI (服务提供者接口)过滤,任何工具都可以恢复原来的注册表,使其失去监控的作用。对于TDI过滤来说,对WIN7的兼容性几乎没有,并且该方法极其复杂,更不能过滤ICMP(Internet Control Message Protocol, hternet控制消息协议)包。NDIS Η00Κ的缺陷在于在不同的平台上面,它的接收函数、发送函数等一系列的API偏移不一样。NDIS IMD的缺陷在于编程的复杂度远远超过了任何一个,而且不能兼容3G网络,WiFi网络。并且NDIS IMD方法不提供对进程标识(PID)的访问,也就是说我们无法得到网络数据对应的进程信息。更不能通过KeGetCurrentID来得到 PID,因为网络模块的实现方式是异步的,即当前的PID并不是发送数据包的进程。

发明内容
(一 )要解决的技术问题本发明要解决的技术问题是如何提供一种实现方法简单、安装方便,可兼容任意第三方的安全网络产品的拦截网络数据的方法。( 二 )技术方案为解决上述技术问题,本发明提供了一种利用WFP拦截网络数据的方法,包括以下步骤Si、开启一个Windows内核中WFP过滤引擎的会话,然后在该会话中增加一个子层,并且在WFP过滤引擎的ALE层和传输层分别注册一个标注,将两个标注添加到所述子层中,然后设置所述两个标注的过滤信息,所述过滤信息包括过滤条件;S2、在ALE层的标注中设置回调函数,并在回调函数中得到端口和进程的对应关系,并根据进程策略来判定这个端口的数据是否能成功发送,接下来记录这个端口能否发送数据,以便接下来查询使用;S3、在传输层的标注中设置过滤回调函数,对所述过滤回调函数中的数据包进行解析,解析出该数据包对应的端口,然后根据S2中记录的信息来判断该数据包对应的端口能否发送数据。 所述过滤条件是拦截所有发送的数据。
在步骤S2中,在回调函数中,把端口和该端口能否发送数据记录下来。所述进程策略为如果进程路径在进程白名单中,则放行这个数据包,否则不放行这个数据包。(三)有益效果本发明通过利用了现有的过滤引擎(只需要设置这个过滤引擎的过滤条件即可) 实现了对特定进程的网络数据的拦截,实现方法简单,可以兼容普通网线上网、无线网卡、 无线上网卡等应用。并且加载简单,安装时不会有断网现象,且可以与第三方安全厂商兼容。


图1是本发明的方法流程图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细说明。以下实施例用于说明本发明,但不用来限制本发明的范围。如图1所示,本发明实施例如下1)使用FwpmEngineOpenO API打开一个回会话(session)。也就是说我们将要注册标注(callout) |lj WFP(Windows Filter Platform, Windows 过滤平台)过滤引擎,首先
要开启一个会话。2)使用FwpmTransactionBeginO API来说明已经开始一个注册的标注(callout) 驱动。3)使用FwpmSublayerAddO API增加一个子层,以便NDIS能够很快地找到我们将要注册的标注(callout)。4) ^ ffl FwpsCalloutRegesterO API ALE layer(ApplicationLayer Enforcement layer,应用程序层执法层)注册一个标注(callout)。5)使用FwpmCalloutAddO增加这个标注(callout)到过滤引擎的上述3)中增加的子层中。6)使用FwpmFilterAddO来对这个加入到过滤引擎的标注(callout)设置过滤条件。在此考虑了所有数据包IP地址的种类,比如单播地址、多播地址、任播地址、有效地址、 未指定的地址(0.0.0.0)等等,这样就可以拦截所有发送出去的数据包。7)重复4)-6) —次,完成在传输层注册一个新的标注(callout),然后执行步骤 8)。8)使用 FwpmTransactionCommitO API 提交这个会话。9)在ALE层的标注中设置回调函数,并且在回调函数中得到端口和进程的对应关系,并根据进程策略来判定这个端口的数据是否能成功发送,接下来记录这个端口能否发送数据,以便10)查询使用。10)在传输层的标注中设置,在所设置的过滤回调函数中解析出数据包对应的端口,然后根据9)中的记录的信息来判断该端口能否发送数据。进程策略为如果进程路径在进程白名单中,则放行这个数据包,否则不放行这个数据包。另外对于系统的发包进程一律放行,不然系统很多功能无法使用,比如系统升级。需要说明的是,在ALE层注册callout是为了拦截到数据包的时候可以查询该数据包对应的PID (进程标识),而在这一层拦截数据包只会拦截到这个连接的第一个数据包,对于之后的数据包都不会拦截到。为了达到拦截所有数据包的目的,必须要拦截所有发送出去的包,即在传输层注册自己的callout。由以上实施例可以看出,本发明通过利用了现有的过滤引擎实现了对特定进程的网络数据的拦截,实现方法简单,可以兼容普通网线上网、无线网卡、无线上网卡等应用。并且加载简单,安装时不会有断网现象,且可以与第三方安全厂商兼容。以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种利用WFP拦截网络数据的方法,其特征在于,包括以下步骤S1、开启一个Windows内核中Windows过滤平台WFP过滤引擎的会话,然后在该会话中增加一个子层,并且在WFP过滤引擎的应用程序层执法层ALE层和传输层分别注册一个标注,将这两个标注添加到所述子层中,然后设置所述两个标注的过滤信息,所述过滤信息包括过滤条件;S2、在ALE层的标注中设置回调函数,并在回调函数中得到端口和进程的对应关系, 并根据进程策略来判定这个端口的数据是否能成功发送,接下来记录这个端口能否发送数据,以便接下来查询使用;S3、在传输层的标注中设置过滤回调函数,对所述过滤回调函数中的数据包进行解析, 解析出该数据包对应的端口,然后根据S2中记录的信息来判断该数据包对应的端口能否发送数据。
2.如权利要求1所述的方法,其特征在于,所述过滤条件是拦截所有发送的数据。
3.如权利要求1所述的方法,其特征在于,在步骤S2中,在回调函数中,把端口和该端口能否发送数据记录下来。
4.如权利要求1 3任一项所述的方法,其特征在于,所述进程策略为如果进程路径在进程白名单中,则放行这个数据包,否则不放行这个数据包。
全文摘要
本发明公开了一种利用WFP拦截网络数据的方法,属于网络安全领域,包括以下步骤S1、开启Windows内核中WFP过滤引擎的会话,在会话中增加一个子层,并且在WFP过滤引擎的ALE和传输层分别注册一个标注,将标注添加到子层中,设置标注的过滤信息,所述过滤信息包括过滤条件;S2、在ALE的标注中设置回调函数,并在回调函数中得到端口和进程的对应关系,并根据进程策略判定这个端口的数据是否能成功发送,接下来记录这个端口能够发送数据;S3、在传输层的标注中设置过滤回调函数,对过滤回调函数中的数据包进行解析,解析出数据包对应的端口,根据S2中记录的信息判断数据包对应的端口能否发送数据。本发明实现简单、安装方便,可兼容任意第三方的安全网络产品。
文档编号H04L29/06GK102195972SQ201110072859
公开日2011年9月21日 申请日期2011年3月24日 优先权日2011年3月24日
发明者万雪松, 于晓军, 赵辰清 申请人:北京思创银联科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1