首页 / 专利库 / 防火与消防 / 防火墙 / 网络访问行为的防护系统

网络访问行为的防护系统

阅读:0发布:2021-09-08

专利汇可以提供网络访问行为的防护系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种网络 访问 行为的防护系统,其包括客户端设备和网络侧设备;所述客户端设备包括网络访问行为的防护装置;所述网络侧设备包括: 云 端 数据库 ;网络侧接收模 块 ,适于接收所述客户端设备发送的至少一种域信息;网络侧查询模块,适于查询所述云端数据库中是否保存有所述至少一种域信息中的任一种,得到查询结果;网络侧发送模块适于将所述查询结果发送给所述客户端设备;所述网络访问行为的防护装置包括驱动层模块和应用层模块。本发明直接利用这些高层协议的目标来判断网络访问 请求 是否安全,更能有效地拦截恶意程序的网络访问行为。,下面是网络访问行为的防护系统专利的具体信息内容。

1.一种网络访问行为的防护系统,包括客户端设备和网络侧设备;
所述客户端设备包括网络访问行为的防护装置;
所述网络侧设备包括:
数据库
网络侧接收模,适于接收所述客户端设备发送的至少一种域信息;
网络侧查询模块,适于查询所述云端数据库中是否保存有所述至少一种域信息中的任一种,得到查询结果;
网络侧发送模块,适于将所述查询结果发送给所述客户端设备;
所述网络访问行为的防护装置包括:驱动层模块和应用层模块;
所述驱动层模块包括:
截获模块,适于截获程序发起的网络访问请求的数据包;
驱动层解析模块,适于解析所述数据包,获取所述数据包中的至少一种域信息;
第一发送模块,适于将所述数据包及其至少一种域信息发送给所述应用层模块;
所述应用层模块包括:
第一接收模块,适于接收所述第一发送模块发送的所述数据包及其至少一种域信息;
查询模块,适于查询本地数据库中是否保存有所述至少一种域信息中的任一种;
阻止模块,适于在所述查询模块查询到所述至少一种域信息中的任一种属于本地数据库的黑名单的情况下,阻止所述程序的网络访问请求;
放行模块,适于在所述查询模块查询到所述至少一种域信息都不属于本地数据库的黑名单但所述至少一种域信息中的任一种属于本地数据库的白名单的情况下,放行所述程序的网络访问请求。
2.根据权利要求1所述的防护系统,所述放行模块还适于在所述查询模块查询到所述本地数据库没有保存所述至少一种域信息中的任一种的情况下,表明所述程序为未知程序,放行所述程序的网络访问请求。
3.根据权利要求1所述的防护系统,所述应用层模块还包括:
第二发送模块,适于在所述查询模块查询到本地数据库中没有保存所述至少一种域信息中的任一种的情况下,将所述至少一种域信息发送到网络侧设备;
第二接收模块,适于接收网络侧设备查询云端数据库中是否保存有所述至少一种域信息中的任一种的查询结果;
所述阻止模块还适于在所述第二接收模块接收的查询结果表明所述云端数据库保存有所述至少一种域信息中的任一种且属于黑名单的情况下,阻止所述程序的网络访问请求;
所述放行模块还适于在所述第二接收模块接收的查询结果表明所述云端数据库保存有所述至少一种域信息中的任一种不属于黑名单而属于白名单的情况下,放行所述程序的网络访问请求。
4.根据权利要求3所述的防护系统,所述放行模块还适于在查询到所述本地数据库和所述云端数据库都没有保存所述至少一种域信息中的任一种的情况下,表明所述程序为未知程序,放行所述程序的网络访问请求。
5.根据权利要求2或4所述的防护系统,所述截获模块具体适于截获程序发起的HTTP访问请求的数据包;所述至少一种域信息包括域名;
所述驱动层模块还包括:获取模块,适于获取HTTP访问请求的IP地址和端口。
6.根据权利要求5所述的防护系统,所述应用层模块还包括:应用层解析模块,适于进一步解析数据包,获得以下信息的一种或多种作为至少一种域信息中的一部分:网址、代理程序标识和父页面信息。
7.根据权利要求5或6所述的防护系统,所述驱动层模块还包括:
驱动层内存;
第一判断模块,适于判断在所述驱动层内存中是否记录有与本次所述程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次所述程序的处理状态信息;
所述第一发送模块具体适于在所述第一判断模块判断为否的情况下,或者,在所述第一判断模块判断为是并且上一次所述程序的处理状态信息为上一次所述程序为未知程序的情况下,将所述数据包及其至少一种域信息发送给所述应用层模块;
所述阻止模块还适于在所述第一判断模块判断为是,并且上一次所述程序的处理状态信息为上一次所述程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止所述程序的网络访问请求;
所述放行模块还适于在所述第一判断模块判断为是,并且在上一次所述程序的处理状态信息为上一次所述程序的HTTP访问请求的至少一种域信息中的任一种属于白名单的情况下,放行所述程序的网络访问请求。
8.根据权利要求5或6所述的防护系统,所述驱动层模块还包括:
驱动层内存;
第二判断模块,适于判断在所述驱动层内存中是否记录有与本次所述程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次所述程序的处理状态信息;
第三判断模块,适于在所述第二判断模块判断为是并且上一次所述程序的处理状态信息为上一次所述程序为未知程序的情况下,判断所述程序被确认为未知程序的累计次数是否大于或等于预设值;
所述第一发送模块具体适于在所述第二判断模块判断为否的情况下,或者,在所述第三判断模块判断为否的情况下,将所述数据包及其至少一种域信息发送给所述应用层模块;
所述阻止模块还适于在所述第二判断模块判断为是,并且上一次所述程序的处理状态信息为上一次所述程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止所述程序的网络访问请求;
所述放行模块还适于在所述第二判断模块判断为是,并且在上一次所述程序的处理状态信息为上一次所述程序的HTTP访问请求的至少一种域信息中的任一种属于白名单的情况下,放行所述程序的网络访问请求。
9.根据权利要求5至8任一项所述的防护系统,所述驱动层内存适于记录所述程序的HTTP访问请求的IP地址和端口以及域名,并记录所述程序的处理状态信息,所述程序的处理状态信息为所述程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单或白名单,或者所述程序为未知程序。
10.根据权利要求9所述的防护系统,所述驱动层内存还适于在所述程序的处理状态信息为所述程序为未知程序的情况下,记录所述程序被确认为未知程序的累计次数。
11.根据权利要求2或4所述的防护系统,所述驱动层模块包括:
驱动层内存;
判断模块,适于判断在所述驱动层内存中是否记录有与本次所述程序的网络访问请求具有相同的至少一种域信息的上一次所述程序的处理状态信息;
所述第一发送模块具体适于在所述判断模块判断为否的情况下,将所述数据包及其至少一种域信息发送给所述应用层模块;
所述阻止模块还适于在所述判断模块判断为是,并且上一次所述程序的处理状态信息为上一次所述程序的网络访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止所述程序的网络访问请求;
所述放行模块还适于在所述判断模块判断为是,并且上一次所述程序的处理状态信息为上一次所述程序的网络访问请求的至少一种域信息中的任一种属于白名单或者上一次所述程序的处理状态信息为上一次所述程序为未知程序的情况下,放行所述程序的网络访问请求。
12.根据权利要求11所述的防护系统,所述驱动层内存适于记录所述程序的网络访问请求的至少一种域信息,并记录所述程序的处理状态信息,所述程序的处理状态信息为所述程序的网络访问请求的至少一种域信息中的任一种属于黑名单或白名单,或者所述程序为未知程序。
13.根据权利要求11或12所述的防护系统,
所述网络访问请求为DNS访问请求,所述至少一种域信息包括DNS域名;
或者,所述网络访问请求为SMTP访问请求,所述至少一种域信息包括发件人和/或收件人的邮箱地址。
14.根据权利要求1至13任一项所述的防护系统,所述截获模块具体适于:
通过在客户端注册协议驱动或者创建过滤驱动,截获程序发起的网络访问请求的数据包;
或者,利用操作系统提供的应用程序编程接口函数截获程序发起的网络访问请求的数据包;
或者,通过接管程序调用网络编程接口函数的请求,截获程序发起的网络访问请求的数据包;
或者,利用注册防火墙回调的方式,截获程序发起的网络访问请求的数据包。
15.根据权利要求1至13任一项所述的防护系统,所述截获模块具体适于:通过向网络驱动程序接口规范注册协议驱动,或者在winsock的辅助功能驱动的驱动设备栈、传输分配接口的驱动设备栈或传输控制/网络通讯协议的驱动设备栈上创建过滤驱动,截获程序发起的网络访问请求的数据包。
16.根据权利要求1至13任一项所述的防护系统,所述截获模块具体适于:利用操作系统提供的钩子函数截获系统服务描述符表提供的接口函数、或者传输控制/网络通讯协议提供的服务函数、或者网络驱动程序接口规范提供的导出函数,获得所述程序发起的网络访问请求的数据包。

说明书全文

网络访问行为的防护系统

技术领域

[0001] 本发明涉及网络通信安全技术领域,具体涉及一种网络访问行为的防护系统。

背景技术

[0002] 随着互联网技术的飞速发展与上网成本的普遍降低,互联网已经成为了大多数普通民众日常生活中不可或缺的一个重要组成部分。但是一些程序员为了表现自己和证明自己的能或者其他方面(如政治,军事,宗教,民族,专利等)的需求,往往会编写出一些影响电脑正常运行的恶意程序,从而使得被这些恶意程序侵扰的用户并不能实现自己上网的目的,甚至会使得整个系统出现瘫痪。因而,网络安全就成为了现今关注的焦点。
[0003] 现有的网络防护方法都是基于TCP(Transmission Control Protocol,传输控制协议)/IP(Internet Protocol,因特网协议)或UDP(User Datagram Protocol,用户数据报协议)的IP地址和端口来放行或阻止某个程序的网络访问行为。具体地,当某个程序发起网络访问请求时,首先发起建立连接的请求(socket connect),在socket connect中可以获取待访问目标的IP地址和端口,根据待访问目标的IP地址和端口查询本地保存的数据库来确定是否放行或阻止该程序的网络访问行为。对于未知程序,可提示用户选择是否放行。
[0004] 但是,现有程序使用的网络协议大多数是基于TCP/IP或UDP协议而实现的高层协议,例如HTTP(Hypertext Transport Protocol,超文本传送协议)、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、DNS(DomainName System,域名系统)和FTP(File Transfer Protocol,文件传输协议)等。当程序使用这些高层协议进行网络访问请求时,单纯靠IP地址和端口无法确定网络访问请求的目的;而且,在网络中IP地址和端口的变动非常频繁,如网络供应商更换时IP地址就会随之改变,然而本地数据库的更新都需要一定的时间,因此采用现有的网络防护方法不能及时有效地拦截恶意程序的网络访问行为。

发明内容

[0005] 鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的网络访问行为的防护系统。
[0006] 根据本发明,提供了一种网络访问行为的防护系统,包括客户端设备和网络侧设备;所述客户端设备包括网络访问行为的防护装置;网络侧设备包括:端数据库;网络侧接收模,适于接收客户端设备发送的至少一种域信息;网络侧查询模块,适于查询云端数据库中是否保存有至少一种域信息中的任一种,得到查询结果;网络侧发送模块,适于将查询结果发送给客户端设备;所述网络访问行为的防护装置包括:驱动层模块和应用层模块;驱动层模块包括:截获模块,适于截获程序发起的网络访问请求的数据包;驱动层解析模块,适于解析数据包,获取数据包中的至少一种域信息;第一发送模块,适于将数据包及其至少一种域信息发送给应用层模块;应用层模块包括:第一接收模块,适于接收第一发送模块发送的数据包及其至少一种域信息;查询模块,适于查询本地数据库中是否保存有至少一种域信息中的任一种;阻止模块,适于在查询模块查询到至少一种域信息中的任一种属于本地数据库的黑名单的情况下,阻止程序的网络访问请求;放行模块,适于在查询模块查询到至少一种域信息都不属于本地数据库的黑名单但至少一种域信息中的任一种属于本地数据库的白名单的情况下,放行程序的网络访问请求。
[0007] 根据本发明提供的方案,通过驱动层截获程序发起的网络访问请求的数据包,解析数据包获取其包含的域信息,应用层根据该域信息查询本地数据库来确定阻止或放行该程序的网络访问请求。对于程序使用的基于TCP/IP或者UDP实现的高层协议来说,网络访问请求的数据包中的域信息反映了网络访问请求的目标,本发明直接利用这些高层协议的目标来判断网络访问请求是否安全,更能有效地拦截恶意程序的网络访问行为。而且,网络访问请求的数据包中的域信息不经常变动,所以本地数据库不需要经常更新,从而能更加及时地拦截恶意程序的网络访问行为。
[0008] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明
[0009] 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0010] 图1示出了根据本发明第一个实施例的网络访问行为的防护方法的流程图
[0011] 图2示出了根据本发明第二个实施例的网络访问行为的防护方法的流程图;
[0012] 图3示出了根据本发明第三个实施例的网络访问行为的防护方法的流程图;
[0013] 图4示出了根据本发明第四个实施例的网络访问行为的防护方法的流程图;
[0014] 图5示出了根据本发明第五个实施例的网络访问行为的防护方法的流程图;
[0015] 图6示出了根据本发明第六个实施例的网络访问行为的防护装置的结构示意图;
[0016] 图7示出了根据本发明第七个实施例的网络访问行为的防护装置的结构示意图;
[0017] 图8示出了根据本发明第八个实施例的网络访问行为的防护装置的结构示意图;
[0018] 图9示出了根据本发明第九个实施例的网络访问行为的防护装置的结构示意图;
[0019] 图10示出了根据本发明第十个实施例的网络访问行为的防护系统的结构示意图。

具体实施方式

[0020] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0021] 程序是一个普通的文件,是一个机器代码指令和数据的集合,是一个静态的概念。进程是程序在计算机上的一次执行过程,是一个动态的概念。同一个程序可以同时运行于若干个数据集合上,也就是说同一程序可以对应多个进程。网络访问行为是由运行中的程序(也即进程)所发起的。程序的当前网络访问行为即是由属于该程序的进程所发起的网络访问行为。网络访问行为的种类繁多,包括HTTP访问(常见的有下载文件或上传信息),SMTP请求(例如收发电子邮件),DNS请求(解析域名对应的IP地址等信息)等等。
[0022] 图1示出了根据本发明第一个实施例的网络访问行为的防护方法100的流程图。如图1所示,方法100始于步骤S101,其中驱动层(ring0)截获程序发起的网络访问请求的数据包。驱动层截获的数据包是程序发起的发送数据的请求(socket send)和接收数据的请求(socket receive)中的数据包。
[0023] 通常一个程序如果需要连接网络,需要通过操作系统(如Windows)提供的API(Application Program Interface,应用程序接口)接口发送网络访问请求,操作系统接收到程序的这种网络访问请求后,会接收程序要发送的数据包,并对接收到的数据包进行封装,之后将封装的数据包发送给物理设备(如网卡等),最后由硬件设备将数据包传出。基于这样的程序访问网络的流程,在该流程的任一环节对网络行为的相关信息进行截获都可以实现监控程序的当前网络行为的目的。可选地,驱动层截获程序发起的网络访问请求的数据包可以采用以下几种方式:
[0024] (1)通过在客户端注册协议驱动或者创建过滤驱动,截获程序发起的网络访问请求的数据包。
[0025] 在程序访问网络的过程中,操作系统在处理相关数据时,会使用一些协议驱动或过滤驱动来获取网络访问行为的数据,所以可通过在客户端注册协议驱动或者创建与操作系统相似的过滤驱动,截获程序发起的网络访问请求的数据包。具体地,可通过向NDIS(Network Driver Interface Specification,网络驱动程序接口规范)注册协议驱动,或者在Afd.sys (Ancillary Function Driver for winsock,winsock的辅助功能驱动)的驱动设备栈、Tdi.sys(Transport Dispatch Interface,传输分配接口)的驱动设备栈或Tcpip.sys(Transmission Control Protocol/InternetProtocol,传输控制/网络通讯协议)的驱动设备栈上创建与操作系统相似的过滤驱动,截获程序发起的网络访问请求的数据包。
[0026] 以在Afd.sys的驱动设备栈上创建过滤驱动为例,当发送网络访问请求的数据包时,系统原本调用的Afd.sys的驱动分发函数会先调用创建的过滤驱动的分发函数,利用这种方法来截获数据包。
[0027] (2)利用操作系统提供的应用程序编程接口函数截获程序发起的网络访问请求的数据包。
[0028] 以应用程序编程接口函数为钩子(hook)函数为例,利用操作系统提供的hook函数截获Windows SSDT(System Services Descriptor Table,系统服务描述符表)提供的接口函数(如NtDeviceIoControl函数)、或者Tcpip.sys驱动提供的服务函数、或者NDIS.sys提供的导出函数,获得程序发起的网络访问请求的数据包。
[0029] (3)通过接管程序调用网络编程接口函数(Winsock)的请求,截获程序发起的网络访问请求的数据包。
[0030] (4)利用注册防火墙回调的方式,截获程序发起的网络访问请求的数据包。
[0031] 随后,方法100进入步骤S102,其中驱动层解析截获的数据包,获取数据包中的至少一种域信息,将数据包及其至少一种域信息发送到应用层。本方法中,驱动层(ring0)具有解析socket send和socket receive中的数据包的功能,获取该数据包所包含的一种或多种域信息,将数据包及其域信息发送到应用层(ring3)进行处理。
[0032] 随后,方法100进入步骤S103,其中应用层查询本地数据库中是否保存有至少一种域信息中的任一种,若是,则执行步骤S104;否则执行步骤S106。客户端的本地数据库中存储有大量的域信息以及这些域信息属于黑名单或白名单的标记。可选地,本地数据库中的数据存储格式可以为域信息的md5(Message Digest Algorithm 5,消息摘要算法第五版)值和扩展字节,扩展字节中写入域信息属于黑名单或白名单的标记。
[0033] 在步骤S104中,应用层判断至少一种域信息中的任一种是否属于本地数据库的黑名单,若是,则执行步骤S105;否则执行步骤S106。应用层通过域信息属于黑名单或白名单的标记,判断至少一种域信息中的任一种是否属于本地数据库的黑名单。
[0034] 在步骤S105中,阻止程序的网络访问请求。如果某程序发起的网络访问请求的数据包中至少一种域信息中的任一种属于本地数据库的黑名单,表明该程序为恶意程序,则阻止该程序的网络访问请求,也即阻止该程序的网络访问行为。
[0035] 在步骤S106中,放行程序的网络访问请求。如果某程序发起的网络访问请求的数据包中至少一种域信息都不属于本地数据库的黑名单,但其中任一种属于本地数据库的白名单,表明该程序为正常程序,则放行该程序的网络访问请求,也即放行该程序的网络访问行为。如果应用层查询到本地数据库没有保存至少一种域信息中的任一种,表明该程序为未知程序,可以放行该程序的网络访问请求。作为另一种实施方式,如果程序为未知程序,也可以提示用户进行选择,根据用户的选择的方式阻止或放行该程序的网络访问请求。
[0036] 根据本实施例提供的方法,通过驱动层截获程序发起的网络访问请求的数据包,解析数据包获取其包含的域信息,应用层根据该域信息查询本地数据库来确定阻止或放行该程序的网络访问请求。对于程序使用的基于TCP/IP或者UDP实现的高层协议来说,网络访问请求的数据包中的域信息反映了网络访问请求的目标,本方法直接利用这些高层协议的目标来判断网络访问请求是否安全,更能有效地拦截恶意程序的网络访问行为。而且,网络访问请求的数据包中的域信息不经常变动,所以本地数据库不需要经常更新,从而能更加及时地拦截恶意程序的网络访问行为。
[0037] 图2示出了根据本发明第二个实施例的网络访问行为的防护方法200的流程图。如图2所示,方法200始于步骤S201,其中驱动层(ring0)截获程序发起的网络访问请求的数据包。驱动层截获的数据包是程序发起的发送数据的请求(socket send)和接收数据的请求(socket receive)中的数据包。驱动层截获数据包的方法可以参见方法100的相关描述,在此不再赘述。
[0038] 随后,方法200进入步骤S202,其中驱动层解析截获的数据包,获取数据包中的至少一种域信息,将数据包及其至少一种域信息发送到应用层。本方法中,驱动层(ring0)具有解析socket send和socket receive中的数据包的功能,获取该数据包所包含的一种或多种域信息,将数据包及其域信息发送到应用层(ring3)进行处理。
[0039] 随后,方法200进入步骤S203,其中应用层查询本地数据库中是否保存有至少一种域信息中的任一种,若是,则执行步骤S204;否则执行步骤S205。客户端的本地数据库中存储有大量的域信息以及这些域信息属于黑名单或白名单的标记。可选地,本地数据库中的数据存储格式可以为域信息的md5值和扩展字节,扩展字节中写入域信息属于黑名单或白名单的标记。
[0040] 在步骤S204中,应用层判断至少一种域信息中的任一种是否属于本地数据库的黑名单,若是,则执行步骤S209;否则执行步骤S210。应用层通过域信息属于黑名单或白名单的标记,判断至少一种域信息中的任一种是否属于本地数据库的黑名单。
[0041] 在步骤S205中,应用层将至少一种域信息发送到网络侧设备。网络侧设备的云端数据库中也存储有大量的域信息以及这些域信息属于黑名单或白名单的标记。网络侧设备判断至少一种域信息中的任一种是否属于云端数据库,如果属于云端数据库,则进一步根据域信息属于黑名单或白名单的标记,判断该域信息属于云端数据库的黑名单或白名单,由此得到查询结果返回给客户端。
[0042] 在步骤S205之后,方法200进入步骤S206,其中应用层接收网络侧设备查询云端数据库中是否保存有至少一种域信息中的任一种的查询结果。
[0043] 在步骤S206之后,方法200进入步骤S207,应用层判断查询结果是否表明云端数据库中保存有至少一种域信息中的任一种,若是,执行步骤S208;否则,执行步骤S210。
[0044] 在步骤S208中,应用层判断查询结果是否表明云端数据库保存有至少一种域信息中的任一种且属于黑名单,若是,执行步骤S209;否则,执行步骤S210。
[0045] 在步骤S209中,阻止程序的网络访问请求。如果某程序发起的网络访问请求的数据包中至少一种域信息中的任一种属于本地数据库或云端数据库的黑名单,表明该程序为恶意程序,则阻止该程序的网络访问请求,也即阻止该程序的网络访问行为。
[0046] 在步骤S210中,放行程序的网络访问请求。如果某程序发起的网络访问请求的数据包中至少一种域信息都不属于本地数据库的黑名单但其中任一种属于本地数据库的白名单,或者都不属于云端数据库的黑名单但其中任一种属于云端数据库的白名单,表明该程序为正常程序,则放行该程序的网络访问请求,也即放行该程序的网络访问行为。如果应用层查询到本地数据库和云端数据库都没有保存至少一种域信息中的任一种,表明该程序为未知程序,可以放行该程序的网络访问请求。作为另一种实施方式,如果程序为未知程序,也可以提示用户进行选择,根据用户的选择的方式阻止或放行该程序的网络访问请求。
[0047] 根据本实施例提供的方法,通过驱动层截获程序发起的网络访问请求的数据包,解析数据包获取其包含的域信息,应用层根据该域信息首先查询本地数据库来确定阻止或放行该程序的网络访问请求,如果本地数据库没有保存数据包中包含的域信息,则继续去网络侧查询云端数据库来确定阻止或放行该程序的网络访问请求。对于程序使用的基于TCP/IP或者UDP实现的高层协议来说,网络访问请求的数据包中的域信息反映了网络访问请求的目标,本方法直接利用这些高层协议的目标来判断网络访问请求是否安全,更能有效地拦截恶意程序的网络访问行为。而且,网络访问请求的数据包中的域信息不经常变动,所以本地数据库不需要经常更新,也能及时地拦截恶意程序的网络访问行为。本方法结合本地数据库和云端数据库判断网络访问请求是否安全,进一步的提高了拦截恶意程序的网络访问行为的效率。
[0048] 图3示出了根据本发明第三个实施例的网络访问行为的防护方法300的流程图。在本方法300中,以网络访问请求为HTTP访问请求为例进行说明。如图3所示,方法300始于步骤S301,其中驱动层(ring0)截获程序发起的HTTP访问请求的数据包。驱动层截获的数据包是程序发起的发送数据的请求(socket send)和接收数据的请求(socket receive)中的数据包。驱动层截获数据包的方法可以参见方法100的相关描述,在此不再赘述。
[0049] 随后,方法300进入步骤S302,其中驱动层解析截获的数据包,获取数据包中的域名(host)。驱动层在解析截获的socket send和socket receive中的数据包之前或同时,也可以获取socket connect中的IP地址和端口。
[0050] 随后,方法300进入步骤S303,其中驱动层判断驱动层内存(ring0 cache)中是否记录有与本次程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次该程序的处理状态信息,若是,执行步骤S304;否则执行步骤S306。在本方法中,在处理完一个HTTP访问请求之后,ring0 cache都会记录下这次HTTP访问请求的IP地址和端口以及域名,并记录下该程序针对这次HTTP访问请求的处理状态信息,这里的处理状态信息是指该程序这次HTTP访问请求的域名属于黑名单或白名单,或者在这次HTTP访问请求中该程序被认定为未知程序。基于ring0 cache所做的记录,在步骤S303中,驱动层会先判断ring0 cache是否记录有与本次程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次该程序的处理状态信息。
[0051] 在步骤S304中,驱动层判断上一次该程序的处理状态信息是否为该程序为未知程序,若是,执行步骤S306;否则执行步骤S305。
[0052] 在步骤S305中,驱动层判断上一次该程序的处理状态信息为上一次该程序的HTTP访问请求的域名是否属于黑名单,若是,则执行步骤S314;否则执行步骤S315。
[0053] 在步骤S306中,驱动层将数据包以及域名、IP地址和端口发送到应用层。
[0054] 在步骤S306之后,方法300进入步骤S307,应用层进一步解析数据包,获取更多的域信息,包括网址(URL)、代理程序标识(User-Agent)和父页面信息(Referer)。
[0055] HTTP访问请求的数据包的示例如下:
[0056] GET/index.html HTTP/1.1\r\n
[0057] Host:www.360.cn\r\n
[0058] User-Agent:IE\r\n
[0059] Referer:http://www.qihoo.net/\r\n
[0060] 对于该示例,驱动层解析数据包获得域名为:www.360.cn;应用层进一步解析数据包获得URL:http://www.360.cn/index.html,User-Agent:IE\r\n,以及Referer:http://www.qihoo.net/\r\n。
[0061] 在步骤S307之后,方法300进入步骤S308,其中应用层查询本地数据库中是否保存有域名、IP地址和端口、URL、User-Agent和Referer等域信息中的任一种,若是,则执行步骤S309;否则执行步骤S310。
[0062] 在步骤S309中,应用层判断域名、IP地址和端口、URL、User-Agent和Referer等域信息中的任一种是否属于本地数据库的黑名单,若是,则执行步骤S314;否则执行步骤S315。
[0063] 在步骤S310中,应用层将域名、IP地址和端口、URL、User-Agent和Referer等域信息发送到网络侧设备。网络侧设备的云端数据库中也存储有大量的域信息以及这些域信息属于黑名单或白名单的标记。网络侧设备判断上述域信息中的任一种是否属于云端数据库,如果属于云端数据库,则进一步根据域信息属于黑名单或白名单的标记,判断该域信息属于云端数据库的黑名单或白名单,由此得到查询结果返回给客户端。
[0064] 在步骤S310之后,方法300进入步骤S311,其中应用层接收网络侧设备查询云端数据库的查询结果。
[0065] 在步骤S311之后,方法300进入步骤S312,应用层判断查询结果是否表明云端数据库中保存有域名、IP地址和端口、URL、User-Agent和Referer等域信息中的任一种,若是,执行步骤S313;否则,执行步骤S315。
[0066] 在步骤S313中,应用层判断查询结果是否表明云端数据库保存有域名、IP地址和端口、URL、User-Agent和Referer等域信息中的任一种且属于黑名单,若是,执行步骤S314;否则,执行步骤S315。
[0067] 在步骤S314中,阻止程序的HTTP访问请求。
[0068] 在步骤S315中,放行程序的HTTP访问请求。
[0069] 在步骤S314和步骤S315之后,方法300进入步骤S316,其中在ring0 cache中记录本次程序的HTTP访问请求的IP地址和端口以及域名(对于上述示例,记录的内容为:IP:220.181.24.100,port:80,Host:www.360.cn),并记录本次程序的处理状态信息,本次程序的处理状态信息为本次程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单或白名单,或者本次程序为未知程序。
[0070] 本方法中,在驱动层将数据包和域信息发送到应用层之前,先判断ring0 cache中是否记录有同一个程序上一次HTTP访问请求的处理状态信息,上一次HTTP访问请求是指域名以及IP地址和端口与本次HTTP访问请求相同的最近一次的HTTP访问请求,如有记录且处理状态信息为域信息属于黑名单或白名单,则直接按照上一次的处理状态信息做同样的处理,无需将数据包和域信息再发送到应用层做查询本地数据库和云端数据库的处理,这样能大大减少查询量,降低后台的负担,提高网络访问的效率。而且,本方法中ring0 cache记录的是HTTP访问请求的域名以及IP地址和端口,并未记录URL,对于具有相同域名以及IP地址和端口但具有不同的URL的HTTP访问请求,都可按照上一次的处理状态信息做同样的处理,这样减少了未知URL的查询数据库次数,进一步提高了网络访问的效率。
[0071] 为了进一步提高本方法的处理效率,在上述实施例的基础上,ring0 cache还可以记录同一程序被确认为未知程序的累计次数。在步骤S304中,如果驱动层判断上一次该程序的处理状态信息为该程序为未知程序,那么驱动层进一步判断该程序被确认为未知程序的累计次数是否大于或等于预设值,该预设值优选为4,如果累计次数大于或等于预设值,则放行该程序的网络访问请求;否则,执行步骤S306。对应的,在步骤S316中,如果本次程序的处理状态信息为本次程序为未知程序,那么ring0 cache还需更新程序被确认为未知程序的累计次数,即在原累计次数基础上加1。通过这样的处理,如果某程序被多次确认为未知程序,那么直接放行该程序的网络访问行为,提高了网络访问的效率。
[0072] 本方法中,在应用层接收到数据包后,进一步解析数据包,获得更多的域信息。由于在后续查询本地数据库和云端数据库的过程中,如果这些域信息中的任一种属于黑名单或白名单,对应地就可以确定程序为恶意程序或正常程序,因此域信息越多,网络访问行为的拦截效率也就越高。
[0073] 但也应当可以理解的是,步骤S307是可选步骤。即,应用层在接收到数据包时,可以不再对数据包进行解析,在后续步骤中,应用层处理的域信息包括域名、IP地址和端口,不包括URL、User-Agent和Referer等域信息。
[0074] 上述第三实施例提供的方法是以HTTP访问请求为例进行说明的,但是该方法不仅限应用于HTTP访问请求,其它与HTTP访问请求类似的网络访问请求也可采用第三实施例提供的防护方法。
[0075] 图4示出了根据本发明第四个实施例的网络访问行为的防护方法400的流程图。在本方法400中,以网络访问请求为DNS访问请求为例进行说明。如图4所示,方法400始于步骤S401,其中驱动层(ring0)截获程序发起的DNS访问请求的数据包。驱动层截获的数据包是程序发起的发送数据的请求(socket send)和接收数据的请求(socket receive)中的数据包。驱动层截获数据包的方法可以参见方法100的相关描述,在此不再赘述。
[0076] 随后,方法400进入步骤S402,其中驱动层解析截获的数据包,获取数据包中的DNS域名。
[0077] DNS访问请求的数据包的示例如下:
[0078] Domain Name System(query)
[0079] Transaction ID:0x276b
[0080] Questions:1
[0081] Answer RRs:0
[0082] Authority RRs:0
[0083] Additional RRs:0
[0084] Queries www.360.cn:type A,class IN
[0085] 对于该示例,驱动层解析数据包获得DNS域名为:www.360.cn。
[0086] 随后,方法400进入步骤S403,其中驱动层判断驱动层内存(ring0 cache)中是否记录有与本次程序的DNS访问请求具有相同DNS域名的上一次该程序的处理状态信息,若是,执行步骤S404;否则执行步骤S406。在本方法中,在处理完一个DNS访问请求之后,ring0 cache都会记录下这次DNS访问请求的DNS域名,并记录下该程序对这次DNS访问请求的处理状态信息,这里的处理状态信息是指该程序这次DNS访问请求的DNS域名属于黑名单或白名单,或者在这次DNS访问请求中该程序被认定为未知程序。基于ring0 cache所做的记录,在步骤S403中,驱动层会先判断ring0 cache是否记录有与本次程序的DNS访问请求具有相同DNS域名的上一次该程序的处理状态信息。
[0087] 在步骤S404中,驱动层判断上一次该程序的处理状态信息是否为该程序为未知程序,若是,执行步骤S414;否则执行步骤S405。
[0088] 在步骤S405中,驱动层判断上一次该程序的处理状态信息为上一次该程序的DNS访问请求的DNS域名是否属于黑名单,若是,则执行步骤S413;否则执行步骤S414。
[0089] 在步骤S406中,驱动层将数据包以及DNS域名发送到应用层。
[0090] 在步骤S406之后,方法400进入步骤S407,其中应用层查询本地数据库中是否保存有DNS域名,若是,则执行步骤S408;否则执行步骤S409。
[0091] 在步骤S408中,应用层判断DNS域名是否属于本地数据库的黑名单,若是,则执行步骤S413;否则执行步骤S414。
[0092] 在步骤S409中,应用层将DNS域名发送到网络侧设备。网络侧设备的云端数据库中也存储有大量的DNS域名以及这些DNS域名属于黑名单或白名单的标记。网络侧设备判断DNS域名是否属于云端数据库,如果属于云端数据库,则进一步根据DNS域名属于黑名单或白名单的标记,判断该DNS域名属于云端数据库的黑名单或白名单,由此得到查询结果返回给客户端。
[0093] 在步骤S409之后,方法400进入步骤S410,其中应用层接收网络侧设备查询云端数据库的查询结果。
[0094] 在步骤S410之后,方法400进入步骤S411,应用层判断查询结果是否表明云端数据库中保存有DNS域名,若是,执行步骤S412;否则,执行步骤414。
[0095] 在步骤S412中,应用层判断查询结果是否表明云端数据库保存有DNS域名且该DNS域名属于黑名单,若是,执行步骤S413;否则,执行步骤S414。
[0096] 在步骤S413中,阻止程序的DNS访问请求。
[0097] 在步骤S414中,放行程序的DNS访问请求。
[0098] 在步骤S413和步骤S414之后,方法400进入步骤S415,其中在ring0 cache中记录本次程序的DNS访问请求的DNS域名(对于上述示例,记录的内容为:www.360.cn),并记录本次程序的处理状态信息,本次程序的处理状态信息为本次程序的DNS访问请求的DNS域名属于黑名单或白名单,或者本次程序为未知程序。
[0099] 本方法中,在驱动层将数据包和DNS域名发送到应用层之前,先判断ring0 cache中是否记录有同一个程序上一次DNS访问请求的处理状态信息,上一次DNS访问请求是指DNS域名与本次DNS访问请求相同的最近一次的DNS访问请求。如有记录且处理状态信息为DNS域名属于黑名单或白名单,则直接按照上一次的处理状态信息做同样的处理,如处理状态信息为程序为未知程序,则直接放行该程序的网络访问请求,无需将数据包和域信息再发送到应用层做查询本地数据库和云端数据库的处理,这样能大大减少查询量,降低后台的负担,提高网络访问的效率。
[0100] 上述第四实施例提供的方法是以DNS访问请求为例进行说明的,但是该方法不仅限应用于DNS访问请求,其它网络访问请求也可采用第四实施例提供的防护方法。
[0101] 图5示出了根据本发明第五个实施例的网络访问行为的防护方法500的流程图。在本方法500中,以网络访问请求为SMTP访问请求为例进行说明。如图5所示,方法500始于步骤S501,其中驱动层(ring0)截获程序发起的SMTP访问请求的数据包。驱动层截获的数据包是程序发起的发送数据的请求(socket send)和接收数据的请求(socket receive)中的数据包。驱动层截获数据包的方法可以参见方法100的相关描述,在此不再赘述。
[0102] 随后,方法500进入步骤S502,其中驱动层解析截获的数据包,获取数据包中的发件人和/或收件人的邮箱地址。
[0103] SMTP访问请求的数据包的示例如下:
[0104] "220 smtp.example.com ESMTP Postfix\r\n"
[0105] "HELO relay.example.org\r\n"
[0106] "250Hello relay.example.org,I am glad to meet you\r\n"
[0107] "MAIL FROM:SIZE\r\n"
[0108] "250 Ok\r\n"
[0109] "RCPT TO:\r\n"
[0110] "250Ok\r\n"
[0111] "RCPT TO:\r\n"
[0112] "250Ok\r\n"
[0113] "DATA\r\n"
[0114] "354End data with.\r\n"
[0115] "From:\″Bob Example\″\r\n"
[0116] "To:\″Alice Example\″\r\n"
[0117] "Cc:theboss@example.com\r\n"
[0118] "Date:Tue,15Jan 200816:02:43-0500\r\n"
[0119] "Subject:Test message\r\n"
[0120] "\r\n"
[0121] "Hello Alice.\r\n"
[0122] "This is a test message with 5 header fields and 4 lines in the message body.\r\n"
[0123] "Your friend,\r\n"
[0124] "Bob\r\n"
[0125] ".\r\n"
[0126] "250 Ok:queued as 12345\r\n"
[0127] "QUIT\r\n"
[0128] "221Bye\r\n"
[0129] 对于该示例,驱动层解析数据包获得发件人的邮箱地址为bob@example.org,收件人的邮箱地址为:alice@example.com和theboss@example.com。
[0130] 随后,方法500进入步骤S503,其中驱动层判断驱动层内存(ring0 cache)中是否记录有与本次程序的SMTP访问请求具有相同发件人和/或收件人的邮箱地址的上一次该程序的处理状态信息,若是,执行步骤S504;否则执行步骤S506。在本方法中,在处理完一个SMTP访问请求之后,ring0 cache都会记录下这次SMTP访问请求的发件人和/或收件人的邮箱地址,并记录下该程序对这次SMTP访问请求的处理状态信息,这里的处理状态信息是指该程序这次SMTP访问请求的发件人和/或收件人的邮箱地址属于黑名单或白名单,或者在这次SMTP访问请求中该程序被认定为未知程序。基于ring0 cache所做的记录,在步骤S503中,驱动层会先判断ring0 cache是否记录有与本次程序的SMTP访问请求具有相同发件人和/或收件人的邮箱地址的上一次该程序的处理状态信息。
[0131] 在步骤S504中,驱动层判断上一次该程序的处理状态信息是否为该程序为未知程序,若是,执行步骤S514;否则执行步骤S505。
[0132] 在步骤S505中,驱动层判断上一次该程序的处理状态信息为上一次该程序的SMTP访问请求的发件人和/或收件人的邮箱地址是否属于黑名单,若是,则执行步骤S513;否则执行步骤S514。
[0133] 在步骤S506中,驱动层将数据包以及发件人和/或收件人的邮箱地址发送到应用层。
[0134] 在步骤S506之后,方法500进入步骤S507,其中应用层查询本地数据库中是否保存有发件人和/或收件人的邮箱地址,若是,则执行步骤S508;否则执行步骤S509。
[0135] 在步骤S508中,应用层判断发件人和/或收件人的邮箱地址是否属于本地数据库的黑名单,若是,则执行步骤S513;否则执行步骤S514。
[0136] 在步骤S509中,应用层将发件人和/或收件人的邮箱地址发送到网络侧设备。网络侧设备的云端数据库中也存储有大量的发件人和/或收件人的邮箱地址以及这些发件人和/或收件人的邮箱地址属于黑名单或白名单的标记。网络侧设备判断发件人和/或收件人的邮箱地址是否属于云端数据库,如果属于云端数据库,则进一步根据发件人和/或收件人的邮箱地址属于黑名单或白名单的标记,判断该发件人和/或收件人的邮箱地址属于云端数据库的黑名单或白名单,由此得到查询结果返回给客户端。
[0137] 在步骤S509之后,方法500进入步骤S510,其中应用层接收网络侧设备查询云端数据库的查询结果。
[0138] 在步骤S510之后,方法500进入步骤S511,应用层判断查询结果是否表明云端数据库中保存有发件人和/或收件人的邮箱地址,若是,执行步骤S512;否则,执行步骤514。
[0139] 在步骤S512中,应用层判断查询结果是否表明云端数据库保存有发件人和/或收件人的邮箱地址且该发件人和/或收件人的邮箱地址属于黑名单,若是,执行步骤S513;否则,执行步骤S514。
[0140] 在步骤S513中,阻止程序的SMTP访问请求。
[0141] 在步骤S514中,放行程序的SMTP访问请求。
[0142] 在步骤S513和步骤S514之后,方法500进入步骤S515,其中在ring0 cache中记录本次程序的SMTP访问请求的发件人和/或收件人的邮箱地址(对于上述示例,记录的内容为:bob@example.org,alice@example.com,theboss@example.com),并记录本次程序的处理状态信息,本次程序的处理状态信息为本次程序的SMTP访问请求的发件人和/或收件人的邮箱地址属于黑名单或白名单,或者本次程序为未知程序。
[0143] 本方法中,在驱动层将数据包和发件人和/或收件人的邮箱地址发送到应用层之前,先判断ring0 cache中是否记录有同一个程序上一次SMTP访问请求的处理状态信息,上一次SMTP访问请求是指发件人和/或收件人的邮箱地址与本次SMTP访问请求相同的最近一次的SMTP访问请求。如有记录且处理状态信息为发件人和/或收件人的邮箱地址属于黑名单或白名单,则直接按照上一次的处理状态信息做同样的处理,如处理状态信息为程序为未知程序,则直接放行该程序的网络访问请求,无需将数据包和发件人和/或收件人的邮箱地址再发送到应用层做查询本地数据库和云端数据库的处理,这样能大大减少查询量,降低后台的负担,提高网络访问的效率。
[0144] 上述第五实施例提供的方法是以SMTP访问请求为例进行说明的,但是该方法不仅限应用于SMTP访问请求,其它网络访问请求也可采用第五实施例提供的防护方法。
[0145] 需要说明的是,在上述几个方法实施例中可以不查询云端数据库,仅依靠查询本地数据库对网络访问行为进行阻止或放行处理也是可选的实施方案。
[0146] 图6示出了根据本发明第六个实施例的网络访问行为的防护装置的结构示意图。如图6所示,该网络防护装置600包括驱动层模块610和应用层模块620。其中,驱动层模块610包括截获模块611、驱动层解析模块612和第一发送模块613。截获模块611适于截获程序发起的网络访问请求的数据包;驱动层解析模块612适于解析数据包,获取数据包中的至少一种域信息;第一发送模块613适于将数据包及其至少一种域信息发送给应用层模块620。应用层模块620包括:第一接收模块621、查询模块622、阻止模块623和放行模块624。第一接收模块621适于接收第一发送模块613发送的数据包及其至少一种域信息;查询模块622适于查询本地数据库中是否保存有至少一种域信息中的任一种;阻止模块623适于在查询模块622查询到至少一种域信息中的任一种属于本地数据库的黑名单的情况下,阻止程序的网络访问请求;放行模块624适于在查询模块622查询到至少一种域信息都不属于本地数据库的黑名单但至少一种域信息中的任一种属于本地数据库的白名单的情况下,放行程序的网络访问请求。
[0147] 可选地,放行模块624还适于在查询模块622查询到本地数据库没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0148] 可选地,截获模块611具体适于:通过在客户端注册协议驱动或者创建过滤驱动,截获程序发起的网络访问请求的数据包;或者,利用操作系统提供的应用程序编程接口函数截获程序发起的网络访问请求的数据包;或者,通过接管程序调用网络编程接口函数的请求,截获程序发起的网络访问请求的数据包;或者,利用注册防火墙回调的方式,截获程序发起的网络访问请求的数据包。更为具体地,截获模块611可以具体适于:通过向网络驱动程序接口规范注册协议驱动,或者在winsock的辅助功能驱动的驱动设备栈、传输分配接口的驱动设备栈或传输控制/网络通讯协议的驱动设备栈上创建过滤驱动,截获程序发起的网络访问请求的数据包。截获模块611也可以具体适于:利用操作系统提供的钩子函数截获系统服务描述符表提供的接口函数、或者传输控制/网络通讯协议提供的服务函数、或者网络驱动程序接口规范提供的导出函数,获得程序发起的网络访问请求的数据包。
[0149] 根据本实施例提供的装置,通过驱动层截获程序发起的网络访问请求的数据包,解析数据包获取其包含的域信息,应用层根据该域信息查询本地数据库来确定阻止或放行该程序的网络访问请求。对于程序使用的基于TCP/IP或者UDP实现的高层协议来说,网络访问请求的数据包中的域信息反映了网络访问请求的目标,本装置直接利用这些高层协议的目标来判断网络访问请求是否安全,更能有效地拦截恶意程序的网络访问行为。而且,网络访问请求的数据包中的域信息不经常变动,所以本地数据库不需要经常更新,从而能更加及时地拦截恶意程序的网络访问行为。
[0150] 图7示出了根据本发明第七个实施例的网络访问行为的防护装置的结构示意图。如图7所示,该网络防护装置700包括驱动层模块710和应用层模块720。
[0151] 其中,驱动层模块710包括:截获模块711、驱动层解析模块712和第一发送模块713。截获模块711适于截获程序发起的网络访问请求的数据包;驱动层解析模块712适于解析数据包,获取数据包中的至少一种域信息;第一发送模块713适于将数据包及其至少一种域信息发送给应用层模块720。
[0152] 应用层模块720包括:第一接收模块721、查询模块722、阻止模块723、放行模块724、第二发送模块725和第二接收模块726。第一接收模块721适于接收第一发送模块713发送的数据包及其至少一种域信息;查询模块722适于查询本地数据库中是否保存有至少一种域信息中的任一种;阻止模块723适于在查询模块722查询到至少一种域信息中的任一种属于本地数据库的黑名单的情况下,阻止程序的网络访问请求;放行模块724适于在查询模块722查询到至少一种域信息都不属于本地数据库的黑名单但至少一种域信息中的任一种属于本地数据库的白名单的情况下,放行程序的网络访问请求。第二发送模块725适于在查询模块722查询到本地数据库中没有保存至少一种域信息中的任一种的情况下,将至少一种域信息发送到网络侧设备;第二接收模块726适于接收网络侧设备查询云端数据库中是否保存有至少一种域信息中的任一种的查询结果;阻止模块723还适于在第二接收模块726接收的查询结果表明云端数据库保存有至少一种域信息中的任一种且属于黑名单的情况下,阻止程序的网络访问请求;放行模块724还适于在第二接收模块726接收的查询结果表明云端数据库保存有至少一种域信息中的任一种不属于黑名单而属于白名单的情况下,放行程序的网络访问请求。
[0153] 可选地,放行模块724还适于在查询到本地数据库和云端数据库都没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0154] 可选地,关于截获模块711的相关内容可以参见第六个实施例的描述,在此不再赘述。
[0155] 根据本实施例提供的装置,通过驱动层截获程序发起的网络访问请求的数据包,解析数据包获取其包含的域信息,应用层根据该域信息首先查询本地数据库来确定阻止或放行该程序的网络访问请求,如果本地数据库没有保存数据包中包含的域信息,则继续去网络侧查询云端数据库来确定阻止或放行该程序的网络访问请求。对于程序使用的基于TCP/IP或者UDP实现的高层协议来说,网络访问请求的数据包中的域信息反映了网络访问请求的目标,本装置直接利用这些高层协议的目标来判断网络访问请求是否安全,更能有效地拦截恶意程序的网络访问行为。而且,网络访问请求的数据包中的域信息不经常变动,所以本地数据库不需要经常更新,也能及时地拦截恶意程序的网络访问行为。本装置结合本地数据库和云端数据库判断网络访问请求是否安全,进一步的提高了拦截恶意程序的网络访问行为的效率。
[0156] 图8示出了根据本发明第八个实施例的网络访问行为的防护装置的结构示意图。如图8所示,该网络防护装置800包括驱动层模块810和应用层模块820。
[0157] 驱动层模块810包括:截获模块811、驱动层解析模块812、获取模块813、驱动层内存814、第一判断模块815和第一发送模块816。应用层模块820包括:第一接收模块821、应用层解析模块822、查询模块823、阻止模块824和放行模块825。
[0158] 截获模块811适于截获程序发起的HTTP访问请求的数据包,可选地,关于截获模块811的相关内容可以参见第六个实施例的描述,在此不再赘述;驱动层解析模块812适于解析数据包,获取数据包中包含的域名(host);获取模块813适于获取HTTP访问请求的IP地址和端口;第一判断模块815适于判断在驱动层内存814中是否记录有与本次程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次程序的处理状态信息;第一发送模块816适于在第一判断模块815判断为否的情况下,或者,在第一判断模块815判断为是并且上一次程序的处理状态信息为上一次程序为未知程序的情况下,将数据包及域名发送给应用层模块820的第一接收模块821。
[0159] 第一接收模块821适于接收第一发送模块816发送的数据包及域名;应用层解析模块822适于进一步解析数据包,获得以下信息的一种或多种作为至少一种域信息中的一部分:网址、代理程序标识和父页面信息。其中应用层解析模块822为可选模块。查询模块823适于查询本地数据库中是否保存有至少一种域信息中的任一种。阻止模块824适于在查询模块823查询到至少一种域信息中的任一种属于本地数据库的黑名单的情况下,或者在第一判断模块815判断为是,并且上一次程序的处理状态信息为上一次程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止该程序的网络访问请求;放行模块825适于在查询模块823查询到至少一种域信息都不属于本地数据库的黑名单但其中任一种属于本地数据库的白名单的情况下,或者在第一判断模块815判断为是,并且在上一次程序的处理状态信息为上一次程序的HTTP访问请求的至少一种域信息中的任一种属于白名单的情况下,放行程序的网络访问请求。
[0160] 作为一种可选的实施方式,放行模块825还适于在查询模块823查询到本地数据库没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0161] 作为另一种可选的实施方式,应用层模块820还包括:第二发送模块和第二接收模块。第二发送模块适于在查询模块查询到本地数据库中没有保存至少一种域信息中的任一种的情况下,将至少一种域信息发送到网络侧设备;第二接收模块适于接收网络侧设备查询云端数据库中是否保存有至少一种域信息中的任一种的查询结果;阻止模块还适于在第二接收模块接收的查询结果表明云端数据库保存有至少一种域信息中的任一种且属于黑名单的情况下,阻止程序的网络访问请求;放行模块还适于在第二接收模块接收的查询结果表明云端数据库保存有至少一种域信息中的任一种不属于黑名单而属于白名单的情况下,放行程序的网络访问请求。可选地,放行模块还适于在查询到本地数据库和云端数据库都没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0162] 可选地,驱动层内存适于记录程序的HTTP访问请求的IP地址和端口以及域名,并记录程序的处理状态信息,程序的处理状态信息为程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单或白名单,或者程序为未知程序。
[0163] 可选地,驱动层内存还适于在程序的处理状态信息为程序为未知程序的情况下,记录程序被确认为未知程序的累计次数。
[0164] 在上述实施例的基础上,另一种替换的实施例为:第一判断模块被替换为第二判断模块和第三判断模块,对应的,第一发送模块、阻止模块和放行模块的功能也有所改变。具体地,第二判断模块适于判断在驱动层内存中是否记录有与本次程序的HTTP访问请求具有相同IP地址和端口以及域名的上一次程序的处理状态信息;第三判断模块适于在第二判断模块判断为是并且上一次程序的处理状态信息为上一次程序为未知程序的情况下,判断程序被确认为未知程序的累计次数是否大于或等于预设值;第一发送模块具体适于在第二判断模块判断为否的情况下,或者,在第三判断模块判断为否的情况下,将数据包及其至少一种域信息发送给应用层模块;阻止模块还适于在第二判断模块判断为是,并且上一次程序的处理状态信息为上一次程序的HTTP访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止程序的网络访问请求;放行模块还适于在第二判断模块判断为是,并且在上一次程序的处理状态信息为上一次程序的HTTP访问请求的至少一种域信息中的任一种属于白名单的情况下,放行程序的网络访问请求。
[0165] 图9示出了根据本发明第九个实施例的网络访问行为的防护装置的结构示意图。如图9所示,该网络防护装置900包括驱动层模块910和应用层模块920。
[0166] 驱动层模块910包括:截获模块911、驱动层解析模块912、驱动层内存913、判断模块914和第一发送模块915。应用层模块920包括:第一接收模块921、查询模块922、阻止模块923和放行模块924。
[0167] 截获模块911适于截获程序发起的网络访问请求的数据包,可选地,关于截获模块911的相关内容可以参见第六个实施例的描述,在此不再赘述;驱动层解析模块912适于解析数据包,获取数据包中包含的至少一种域信息;判断模块914适于判断在驱动层内存913中是否记录有与本次程序的网络访问请求具有相同的至少一种域信息的上一次程序的处理状态信息;第一发送模块915适于在判断模块914判断为否的情况下,将数据包及其至少一种域信息发送给应用层模块920的第一接收模块921。
[0168] 第一接收模块921适于接收第一发送模块915发送的数据包及其至少一种域信息;查询模块922适于查询本地数据库中是否保存有至少一种域信息中的任一种;阻止模块923适于在查询模块922查询到至少一种域信息中的任一种属于本地数据库的黑名单的情况下,或者在判断模块914判断为是,并且上一次程序的处理状态信息为上一次程序的网络访问请求的至少一种域信息中的任一种属于黑名单的情况下,阻止该程序的网络访问请求;放行模块924适于在查询模块922查询到至少一种域信息都不属于本地数据库的黑名单但其中任一种属于本地数据库的白名单的情况下,或者在判断模块914判断为是,并且上一次程序的处理状态信息为上一次程序的网络访问请求的至少一种域信息中的任一种属于白名单或者上一次程序的处理状态信息为上一次程序为未知程序的情况下,放行程序的网络访问请求。
[0169] 作为一种可选的实施方式,放行模块924还适于在查询模块922查询到本地数据库没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0170] 作为另一种可选的实施方式,应用层模块920还包括:第二发送模块和第二接收模块。第二发送模块适于在查询模块查询到本地数据库中没有保存至少一种域信息中的任一种的情况下,将至少一种域信息发送到网络侧设备;第二接收模块适于接收网络侧设备查询云端数据库中是否保存有至少一种域信息中的任一种的查询结果;阻止模块还适于在第二接收模块接收的查询结果表明云端数据库保存有至少一种域信息中的任一种且属于黑名单的情况下,阻止程序的网络访问请求;放行模块还适于在第二接收模块接收的查询结果表明云端数据库保存有至少一种域信息中的任一种不属于黑名单而属于白名单的情况下,放行程序的网络访问请求。可选地,放行模块还适于在查询到本地数据库和云端数据库都没有保存至少一种域信息中的任一种的情况下,表明程序为未知程序,放行程序的网络访问请求。
[0171] 可选地,驱动层内存适于记录程序的网络访问请求的至少一种域信息,并记录程序的处理状态信息,程序的处理状态信息为程序的网络访问请求的至少一种域信息中的任一种属于黑名单或白名单,或者程序为未知程序。
[0172] 可选地,在本实施例中,网络访问请求可以为DNS访问请求,至少一种域信息包括DNS域名。网络访问请求也可以为SMTP访问请求,至少一种域信息包括发件人和/或收件人的邮箱地址。
[0173] 图10示出了根据本发明第十个实施例的网络访问行为的防护系统的结构示意图。如图10所示,该网络防护系统1000包括客户端设备1010和网络侧设备1020。其中,客户端设备1010可以包括上述第七、八和九个实施例中任一实施例所描述的网络访问行为的防护装置。网络侧设备1020包括:云端数据库1021、网络侧接收模块1022、网络侧查询模块1023和网络侧发送模块1024。其中,网络侧接收模块1022与客户端设备中的第二发送模块连接,适于接收客户端设备发送的至少一种域信息;网络侧查询模块1023适于查询云端数据库1021中是否保存有至少一种域信息中的任一种,得到查询结果;网络侧发送模块1024与客户端设备中的第二接收模块连接,适于将查询结果发送给客户端设备。
[0174] 在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0175] 在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0176] 类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
[0177] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0178] 此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0179] 本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的网络访问行为的防护系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0180] 应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈