发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于对象分析的攻击识别方法及装置。
依据本发明的一个方面,提供一种一种基于对象分析的攻击识别方法,包括:对获取的消息进行协议分析,解析获得一个或多个对象的数据;针对所述对象的数据,利用多模库进行多模匹配,如果匹配到针对该对象的关键字,则进行后续步骤,否则确定不存在攻击;从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式,如果没有匹配到特征表达式,则确定不存在攻击,否则进行后续步骤;基于所述针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配,如果匹配成功,则确定存在攻击,否则确定不存在攻击。
优选的,还包括:建立特征库和多模库,其中,所述特征库包括多条特征表达式,每条特征表达式具有对象的属性;所述多模库包括多条关键字,每条关键字具有对象的属性。
优选的,所述多模库中的关键字与所述特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
优选的,所述多模库根据所述特征库构建,每一条关键字代表一个模式。
优选的,确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
优选的,在构建所述特征库过程中,基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;在构架所述多模库过程中,基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。
优选的,所述消息为应用层协议消息;所述应用层协议包括TFTP、HTTP、SNMP、FTP、SMTP、DNS或Telnet协议。
优选的,所述消息是指http协议消息;所述对象是指http协议消息的预定义字段,包括url、reference、参数、cookie。
优选的,采用多模匹配算法进行所述多模匹配;所述多模匹配算法为ACBM算法。
依据本发明的另一个方面,提供一种基于对象分析的攻击识别装置,包括:消息获取单元,用于获取消息;消息解析单元,用于对获取的消息进行协议分析,解析获得一个或多个对象的数据;多模匹配单元,用于针对所述对象的数据,利用多模库进行多模匹配;映射确定单元,用于从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式;规则匹配单元,用于基于所述针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配;结果确定单元,用于根据多模匹配单元、映射确定单元及规则匹配单元的确认结果确定是否存在攻击,其中,如果多模匹配单元未匹配到针对该对象的关键字、所述映射确定单元没有匹配到特征表达式或者所述规则匹配单元没有匹配成功,则确定不存在攻击,如果所述规则匹配单元匹配成功,则确定存在攻击。
优选的,所述装置还包括:特征库构建单元,用于构建所述特征库;多模库构建单元,用于构建所述多模库;其中,所述特征库包括多条特征表达式,每条特征表达式具有对象的属性;所述多模库包括多条关键字,每条关键字具有对象的属性。
优选的,所述多模库中的关键字与特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
优选的,所述多模库根据所述特征库构建,每一条关键字代表一个模式。
优选的,所述映射确定单元确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;所述规则匹配单元确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
优选的,所述特征库构建单元,在构建所述特征库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;所述多模库构建单元,在构架所述多模库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。
优选的,所述消息获取单元获取的所述消息为应用层协议消息;所述应用层协议包括TFTP、HTTP、SNMP、FTP、SMTP、DNS或Telnet协议。
优选的,所述消息获取单元获取的所述消息是指http协议消息;所述消息解析单元获得的所述对象是指http协议消息的预定义字段,包括url、reference、参数、cookie。
优选的,所述多模匹配单元采用多模匹配算法进行所述多模匹配;所述多模匹配算法为ACBM算法。
可见,由于本发明对数据进行多模过滤、特征过滤及字符匹配三个层次的过滤,对于安全数据在第一层次或第二层次即可保证安全过滤,而不必进行繁琐的字符过滤。在第一层次过滤中,过滤掉所有的安全请求数据;第二层次过滤中,对有嫌疑的数据做一次初步的过滤;第三层次过滤中,消息有攻击行为的可能行就非常大,用特征表达式来确定。采用本发明实施例,通过第一层次能够过滤掉绝大部分的数据,第二层次和第三层次过滤中,处理的请求数据大概在很小(据统计约为10%)的比例。也就是,不需要对绝大部分的正常数据进行特征正则表达式匹配处理。由此,检测效率有显著提高。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
以门户网站为例,由于用户多、浏览量大,因而存在较高的安全风险。目前较常见的web应用安全漏洞包括:SQL注入、XSS跨站、表单绕过、Cookies欺骗、信息泄漏、GoogleHacking、访问控制错误、PHP特有漏洞攻击、变量滥用、文件包含、上传漏洞攻击、网页篡改、挂马等。
以SQL注入攻击为例,现有基于正则表达式的SQL注入检测的过程为:当拦截到http请求后首先对内容进行URL(统一资源定位符,Uniform ResourceLocator)解码,防止攻击者以URL编码方式构造SQL注入语句;检测请求数据中是否含有SQL注入攻击常用的关键字以及分隔符,如“select”、“and”、“;”、“--”等,如果不含有,则可以排除注入攻击的可能,如果有,则提交至下一步进行详细的规则检测;对于包含注入关键字的web请求,则便利规则库对请求内容进行详细的正则匹配。如果匹配成功,则拦截请求,向客户端发送警告并记录日志,如果匹配失败,则将请求字符串记录入可疑的攻击代码库,提交网站管理员分析。本领域技术人员都理解,基于字符匹配的正则表达式检测方案效率低下,为了一定程度提高检测效率,常常在编写正则表达式规则时,会设置字符检测的偏移量,例如仅检测整个数据的某段(例如前50个字符),假如SQL注入语句恰好发生在未检测的字段,则会导致漏报。
与传统的正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串不同,本发明是基于对消息进行协议解析从而获取不同对象(即消息预定义字段)、继而根据对象对规则进行分层次匹配。
本发明对应用层协议都适用。
应用层协议(application layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。应用层协议的定义包括如下内容:(1)交换的报文类型,如请求报文和响应报文;(2)各种报文类型的语法,如报文中的各个字段公共详细描述;(3)字段的语义,即包含在字段中信息的含义;(4)进程何时、如何发送报文及对报文进行响应。有些应用层协议是由RFC文档定义的,因此它们位于公共领域。例如,web的应用层的协议HTTP(超文本传输协议,RFC2616)就作为一个RFC供用户使用。如果浏览器开发者遵从HTTP RFC规则,所开发出的浏览器就能访问任何遵从该文档标准的web,服务器并获取相应的web页面。还有很多别的应用层协议是专用的不能随意应用于公共领域。例如,很多现有的P2P文件共享系统使用的是专用应用层协议。目的,应用层协议主要有以下几种。(1)域名系统(Domain Name System,DNS):用于实现网络设备名字到IP地址映射的网络服务。(2)文件传输协议(FileTransferProtocol,FTP):用丁实现交互式文件传输功能。(3)简单邮件传送协议(SimpleMail Transfer Protocol,SMTP):用于实现电子邮箱传送功能(4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。(5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。(6)远程登录协议(Telnet):用于实现远程登录功能。
为了说明方便,本发明实施例以http协议消息进行说明。那么,本发明实施例是基于对http消息进行协议解析(根据http rfc协议规范)从而获取不同对象(即http消息预定义字段,例如:url、reference、参数、cookie等字段)、继而根据对象对规则进行分层次匹配。
本发明的实施分为两个阶段,第一个阶段是数据准备阶段,第二个阶段是攻击识别阶段。
在数据准备阶段,要完成构建特征库和多模库。其中,特征库与现有采用正则表达式进行攻击识别方案的特征库类似,都是由基于正则的多条特征表达式(也可称为“规则”)组成的。但是,与现有特征库(或称为“规则库”等)不同在于,对每一条规则添加了对象的属性,也就是,建立了“对象-特征”的对应关系。本发明的多模库是新引入的,它是从特征库生发而来的。多模库包括多条关键字(关键字即攻击的特征数据),每条关键字具有对象的属性。每种模式即可理解为一个关键字(也就是多模树的每一个节点),而且每一个关键字具有对象的属性。多模库中的关键字与特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
参见图1,为本发明一个实施例的特征库与模式库的关系示意图。
图1中,特征库包括多条特征表达式:特征表达式1、特征表达式2、特征表达式3、特征表达式4、特征表达式5,……,特征表达式N。并且每一条特征表达式具有属性(如上所述,属性是指对象)。具体地,特征表达式1具有属性A(即,特征表达式1的属性为对象A)、特征表达式2具有属性A、特征表达式3具有属性B、特征表达式4具有属性B、特征表达式5具有属性C,……,特征表达式N具有属性N。从该特征库出发,构建多模库。多模库包括多条关键字:关键字1、关键字2、关键字3、关键字4、关键字5,……,关键字N。并且每一条关键字具有属性(如上所述,属性是指对象)。具体地,关键字1具有属性A、关键字2具有属性B、关键字3具有属性B、关键字4具有属性C、关键字5具有属性C,……,关键字N具有属性N。其中,一个关键字可以与一条或多条特征表达式具有映射关系,满足映射关系的关键字与特征表达式要求具有相同的属性。比如,在图1中,具有属性A的关键字1与同样具有属性A的特征表达式1具有映射关系、具有属性B的关键字3与同样具有属性B的特征表达式3和特征表达式4具有映射关系、具有属性C的关键字5与同样具有属性C的特征表达式5具有映射关系。图1中,关键字2与关键字4每样具备映射关系的特征表达式。需要说明的是,图1仅是特征库与多模库的示例,不构成任何限制,其他组织或对应关系都可实现本发明实施例。
在攻击识别阶段,又分为两个步骤。第一个步骤是,对消息进行协议分析,从而获取到消息所包含的各个对象。第二个步骤是,对消息进行基于对象的攻击识别,攻击识别具体又细分为三个层次。第一层次是进行多模匹配,如果出现了多模库中的一个关键字(带对象的属性),则确定存在攻击嫌疑,进行下一层次过滤,否则认为是安全的数据。第二层次:根据多模匹配结果进行特征过滤,目的是只是选择出多模匹配命中的关键字对应的特征表达式,过滤掉其他无关的特征表达式。在该第二层次过滤中,多模关键字与特征表达式的映射关系能确保进行特征过滤高效快速的完成。如果没有任意一条特征表达式和多模匹配结果中的关键字有映射关系,那么就可以肯定该数据是安全的;否则进入下一层次过滤。第三层次:在该步骤中,所有的请求数据都是有攻击嫌疑的,那么就需要最终用过滤出来的特征表达式进行特征匹配,即真正的基于特征进行正则表达式的字符匹配,来进行最终确认是否是攻击行为。
参见图2,为根据根据本发明一个实施例的基于对象分析的攻击识别方法流程图。
该方法流程图包括以下步骤:
S201:对获取的消息进行协议分析,解析获得一个或多个对象的数据;
以http协议为例,假设获取的是http协议消息,则对该消息进行协议分析,即,http rfc协议规范进行协议分析,从而获得消息包含的各个http协议字段,即,获得对象所包含的数据内容。以http协议为例,本发明的对象是指http消息预定义字段,例如,url、reference、参数、cookie等字段。
本领域技术人员了解,对于http协议,请求信息包括希望返回的文件名和客户机信息。客户机信息以请求头发送给服务器,请求头包括HTTP方法和头字段。HTTP方法常用的有GET、HEAD、POST、PUT、DELETE、LINK、UNLINK等方法。头字段包括:DATE:请求发送的日期和时间;PARGMA:用于向服务器传输与实现无关的信息,这个字段还用于告诉代理服务器,要从实际服务器而不是从高速缓存取资源;FORWARDED:可以用来追踪机器之间,而不是客户机和服务器的消息,这个字段可以用来追踪在代理服务器之间的传递路由;MESSAGE_ID:用于唯一地标识消息;ACCEPT:通知服务器客户所能接受的数据类型和尺寸(*/*表示可以接受所有类型的数据);AOTHORIZATION:向服务器提供旁路安全保护和加密机制,若服务器不需要这个字段,则不提供这个字段;FROM:当客户应用程序希望想服务器提供有关其电子邮件地址时使用;IF-MODEFIED-SINCE用于提供条件GET;如果所请求的文档自从所指定的日期以来没有发生变化,则服务器应不发送该对象;如果所发送的日期格式不合法,或晚于服务器的日期,服务器会忽略该字段;BEFERRER:向服务器进行资源请求用到的对象;MIME-VERTION:用于处理不同类型文件的MIME协议版本号;USER-AGENT:有关发出请求的客户信息。
S202:针对对象的数据,利用多模库进行多模匹配,如果匹配到针对该对象的关键字,则进行后续步骤,否则确定不存在攻击;
其中,采用多模匹配算法进行多模匹配。多模匹配算法包括多种,例如Trie树、AC算法、WM算法等等。本发明实施例优选采用ACBM算法。ACBM算法是在AC自动机的基础之上,引入了BM算法的多模扩展,实现的高效的多模匹配。ACBM算法的核心思想就是让每次匹配的起始位置跨度尽可能的大,以提高效率。和AC自动机不同的是,ACBM算法不需要扫描目标文本串中的每一个字符,可以利用本次匹配不成功的信息,跳过尽可能多的字符,实现高效匹配。在匹配步骤如下:1、选定一个匹配起始位置。2、使用AC树进行匹配,如果匹配失效,跳转步骤1;如果匹配成功,可根据应用需要跳转至步骤1或者退出。ACBM算法中的AC算法部分比AC自动机算法的实现要简单,不需要考虑失效函数的问题,也就是说ACBM算法中实现的AC算法部分是一棵树,而在AC自动机的实现是一个图。ACBM算法中的BM算法的实现要比BM算法本身的实现要复杂一些,因为这是对BM算法的多模式一种扩展。ACBM算法中的核心数据结构包括:1、MinLen,模式串集合中最短那个模式串的长度:比较失配时最多跳跃的字符个数不能超过Minlen。2、ACTree,由模式串集合构建出的状态树,构建方法和AC自动机的构建方法相同,而且不需要计算失效函数,比较简单。3、BCshift:ACTree对应一个坏字符数组,当匹配失效时,查找该数组计算坏字符偏移量。4、GSshift:AC树的每一个节点对应一个好后缀偏移量。
假设通过步骤S201获取到对象A、对象B,则以图1的多模库为例,查找多模库进行多模匹配,如果确定对象A的数据不包含具有属性A的关键字1,则确定没有与对象A匹配到的关键字,进一步地,对对象B的数据与具有属性B的关键字2和关键字3进行匹配,如果对象B的数据不包含关键字2但是包含关键字3,则确定匹配到关键字3。对于多模库包含的其他关键字5,…..,关键字N,由于它们的属性(C-N)并非获取到的对象(A和B),因此不会匹配到。
S203:从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式,如果没有匹配到特征表达式,则确定不存在攻击,否则进行后续步骤;
其中,确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
通过步骤S202已经匹配到关键字,那么在此步骤中,继续判断是否与匹配到的关键字具有映射关系的特征表达式。仍以上述以图1为例,假设通过多模匹配匹配到一条关键字3,则根据多模库中关键字与特征库中特征表达式的映射关系,查找到关键字3与特征表达式3及特征表达式4具有映射关系,那么,此步骤即确定出下一步仅需要对特征表达式3及特征表达式4进行匹配即可。
S204:基于针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配,如果匹配成功,则确定存在攻击,否则确定不存在攻击。
通过前述步骤,已经确定此步骤中要用于进行正则匹配的有限条特征表达式。仍以图1为例,由于确定出了特征表达式3及特征表达式4,则在此步骤中,将对象B的数据分别与特征表达式3和特征表达式4进行匹配,如果有任何的表达式匹配成功,则认为存在攻击,如果没有一条表达式匹配成功,则确定不存在攻击。
采用本发明实施例目的是:在第一层次过滤中,过滤掉所有的安全请求数据;第二层次过滤中,对有嫌疑的数据做一次初步的过滤;第三层次过滤中,消息有攻击行为的可能行就非常大,用特征表达式来确定。采用本发明实施例,通过第一层次能够过滤掉99%的数据,第二层次和第三层次过滤中,处理的请求数据大概在10%的比例。也就是,不需要对99%的正常数据进行特征正则表达式匹配处理。由此,检测效率有显著提高。
此外,在构建所述特征库过程中,还可以基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;同理,在构架多模库过程中,基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。如前所述,网络攻击类型种类繁多。因此,在构建特征库与多模库时,根据攻击类型,对特征表达式及关键字进行组织。由此,在将通过本发明实施例完成的安全产品提供给用户时,用户可以有针对性地选择特定攻击防护措施,这样其他不相关的攻击防护就不需要运行,由此可以提供网络运行速度。
例如,在构建特征库或多模库时,按照图3示例进行组织。图3示出了根据本发明一个实施例的按照攻击类型构建特征库或模式库的示意图。图3中,示出了主类1、主类2,……,主类n(主类2-主类n略去),各主类1下属的子类1、子类2,……,子类n,以及各子类下属的规则1、规则2,……,规则n。其中,主类是指网络攻击的一个大类,子类是指该大类下的一个小类,规则是指具体的攻击特征代码。例如,SQL注入属于一个主类,“通过http协议的get消息进行SQL注入”属于该主类下的一个子类,数据中包含的“select”等注入语句属于规则。
下面以一个http协议具体例子对本发明方案进行说明。
(1)获取http消息,并对http消息进行协议解析,得到消息中各个对象(例如:url、reference、cookie等字段)的数据。
通常http消息包括客户机向服务器的http请求消息和服务器向客户机的http响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。http的头域包括通用头,请求头,响应头和实体头四个部分。
例如,
一个典型的请求消息为:
GEThttp://class/download.microtool.de:80/somedata.exe
Host:download.microtool.de
Accept:*/*
Pragma:no-cache
Cache-Control:no-cache
Referer:http://class/download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-
其中,Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置;Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等;Range头域可以请求实体的一个或者多个子范围;User-Agent头域内容包含发出请求的用户信息。
(2)构建特征库和多模库。
构建包括多条特征表达式的特征库以及包括多条关键字的多模库。按照攻击类型进行建库的一个例子如下:
上述例子中,示出了一个主类(主类1,main_class1)的策略,而省略了其他主类2,……,主类n。可以理解,各主类下属包括多个子类(sub_class),例如子类1、子类2,……,子类n,以及各子类包括多个下属的规则(rule),例如规则1、规则2,……,规则n。其中,一个主类代表网络攻击的一个大类,子类是指该大类下的一个小类,规则是指具体的攻击特征代码。例如上述例子中,SQL注入(SQL Inject)属于一个主类,“通过http协议的get消息进行SQL注入(Get SQL Inject)”属于该主类下的一个子类,数据中包含的“select”等注入语句属于规则。
(3)攻击识别。
将第一个步骤通过http协议解析获取的对象数据在上述构建的库中进行识别,如果匹配成功,则确定存在攻击,否则认为不存在攻击。
与上述方法相对应,本发明还提供一种基于对象分析的攻击识别装置。该装置可以通过硬件、软件或软硬件结合实现。具体对,该装置可以是指服务节点(例如,防火墙服务器),也可以是指服务节点内部的功能实体,只要具有该装置的功能即可。
具体地,该基于对象分析的攻击识别装置至少包括:消息获取单元、消息解析单元、多模匹配单元、映射确定单元、规则匹配单元以及结果确定单元。
其中:
消息获取单元用于获取消息。该消息包括应用层协议(application layerprotocol)消息。如前所述,应用层协议主要有以下几种。(1)域名系统(DomainName System,DNS):用于实现网络设备名字到IP地址映射的网络服务。(2)文件传输协议(FileTransfer Protocol,FTP):用丁实现交互式文件传输功能。(3)简单邮件传送协议(Simple Mail Transfer Protocol,SMTP):用于实现电子邮箱传送功能(4)超文本传输协议(HyperText Transfer Protocol,HTTP):用于实现WWW服务。(5)简单网络管理协议(simple Network Management Protocol,SNMP):用于管理与监视网络设备。(6)远程登录协议(Telnet):用于实现远程登录功能。那么,消息获取单元获取的消息至少包括DNS消息、FTP消息、SMTP消息、HTTP消息、SNMP消息以及Telnet消息。
消息解析单元用于对获取的消息进行协议分析,解析获得一个或多个对象的数据。其中的对象是指消息按照协议解析获得的各个预定义字段。以http协议为例,假设获取的是http协议消息,则对该消息进行协议分析,即,httprfc协议规范进行协议分析,从而获得消息包含的各个http协议字段,即,获得对象所包含的数据内容。以http协议为例,本发明的对象是指http消息预定义字段,例如,url、reference、参数、cookie等字段。
多模匹配单元用于针对对象的数据,利用多模库进行多模匹配。其中,采用多模匹配算法进行多模匹配。多模匹配算法包括多种,例如Trie树、AC算法、WM算法等等。本发明实施例优选采用ACBM算法。ACBM算法是在AC自动机的基础之上,引入了BM算法的多模扩展,实现的高效的多模匹配。ACBM算法的核心思想就是让每次匹配的起始位置跨度尽可能的大,以提高效率。和AC自动机不同的是,ACBM算法不需要扫描目标文本串中的每一个字符,可以利用本次匹配不成功的信息,跳过尽可能多的字符,实现高效匹配。
映射确定单元用于从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式。
规则匹配单元用于基于所述针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配。
结果确定单元用于根据多模匹配单元、映射确定单元及规则匹配单元的确认结果确定是否存在攻击,其中,如果多模匹配单元未匹配到针对该对象的关键字、所述映射确定单元没有匹配到特征表达式或者所述规则匹配单元没有匹配成功,则确定不存在攻击,如果所述规则匹配单元匹配成功,则确定存在攻击。
优选地,该装置还包括:特征库构建单元,用于构建所述特征库;以及,多模库构建单元,用于构建所述多模库。其中,特征库包括多条特征表达式,每条特征表达式具有对象的属性;多模库包括多条关键字,每条关键字具有对象的属性。其中,多模库根据特征库构建,每一条关键字代表一个模式。另外,多模库中的关键字与特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
其中,映射确定单元确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;同理,规则匹配单元确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
优选地,特征库构建单元,在构建所述特征库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;同理,多模库构建单元,在构架所述多模库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。
可见,由于本发明对数据进行多模过滤、特征过滤及字符匹配三个层次的过滤,对于安全数据在第一层次或第二层次即可保证安全过滤,而不必进行繁琐的字符过滤。在第一层次过滤中,过滤掉所有的安全请求数据;第二层次过滤中,对有嫌疑的数据做一次初步的过滤;第三层次过滤中,消息有攻击行为的可能行就非常大,用特征表达式来确定。采用本发明实施例,通过第一层次能够过滤掉绝大部分的数据,第二层次和第三层次过滤中,处理的请求数据大概在很小(据统计约为10%)的比例。也就是,不需要对绝大部分的正常数据进行特征正则表达式匹配处理。由此,检测效率有显著提高。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于对象分析的攻击识别装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明提供以下方案:
A1、一种基于对象分析的攻击识别方法,包括:
对获取的消息进行协议分析,解析获得一个或多个对象的数据;
针对所述对象的数据,利用多模库进行多模匹配,如果匹配到针对该对象的关键字,则进行后续步骤,否则确定不存在攻击;
从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式,如果没有匹配到特征表达式,则确定不存在攻击,否则进行后续步骤;
基于所述针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配,如果匹配成功,则确定存在攻击,否则确定不存在攻击。
A2、如A1所述的方法,还包括:建立特征库和多模库,其中,所述特征库包括多条特征表达式,每条特征表达式具有对象的属性;所述多模库包括多条关键字,每条关键字具有对象的属性。
A3、如A2所述的方法,所述多模库中的关键字与所述特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
A4、如A2所述的方法,所述多模库根据所述特征库构建,每一条关键字代表一个模式。
A5、如A2所述的方法,
确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;
确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
A6、如A2所述的方法,在构建所述特征库过程中,基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;在构架所述多模库过程中,基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。
A7、如A1-A6任一项所述的方法,所述消息为应用层协议消息;所述应用层协议包括TFTP、HTTP、SNMP、FTP、SMTP、DNS或Telnet协议。
A8、如A7所述的方法,所述消息是指http协议消息;所述对象是指http协议消息的预定义字段,包括url、reference、参数、cookie。
A9、如A1-A6任一项所述的方法,采用多模匹配算法进行所述多模匹配;所述多模匹配算法为ACBM算法。
B10、一种基于对象分析的攻击识别装置,包括:
消息获取单元,用于获取消息;
消息解析单元,用于对获取的消息进行协议分析,解析获得一个或多个对象的数据;
多模匹配单元,用于针对所述对象的数据,利用多模库进行多模匹配;
映射确定单元,用于从特征库中匹配是否存在针对该对象的、与匹配的关键字具有映射关系的特征表达式;
规则匹配单元,用于基于所述针对该对象的、与匹配的关键字对应的特征表达式,对该对象的数据进行规则匹配;
结果确定单元,用于根据多模匹配单元、映射确定单元及规则匹配单元的确认结果确定是否存在攻击,其中,如果多模匹配单元未匹配到针对该对象的关键字、所述映射确定单元没有匹配到特征表达式或者所述规则匹配单元没有匹配成功,则确定不存在攻击,如果所述规则匹配单元匹配成功,则确定存在攻击。
B11、如B10所述的装置,还包括:
特征库构建单元,用于构建所述特征库;
多模库构建单元,用于构建所述多模库;
其中,所述特征库包括多条特征表达式,每条特征表达式具有对象的属性;所述多模库包括多条关键字,每条关键字具有对象的属性。
B12、如B11所述的装置,所述多模库中的关键字与特征库中的一条或多条特征表达式具有映射关系,具有映射关系的关键字与特征表达式具有相同的属性。
B13、如B11所述的装置,所述多模库根据所述特征库构建,每一条关键字代表一个模式。
B14、如B11所述的装置,
所述映射确定单元确定一条关键字是否为针对所述对象的关键字的方式为:确定该关键字的属性是否为所述对象;
所述规则匹配单元确定一条特征表达式是否为针对所述对象的特征表达式的方式为:确定该特征表达式的属性是否为所述对象。
B15、如B11所述的装置,所述特征库构建单元,在构建所述特征库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条特征表达式;所述多模库构建单元,在构架所述多模库过程中,用于基于攻击的类型,按照主类、子类和规则的方式组织所述多条关键字。
B16、如B10-B15任一项所述的装置,所述消息获取单元获取的所述消息为应用层协议消息;所述应用层协议包括TFTP、HTTP、SNMP、FTP、SMTP、DNS或Telnet协议。
B17、如B16所述的装置,所述消息获取单元获取的所述消息是指http协议消息;所述消息解析单元获得的所述对象是指http协议消息的预定义字段,包括url、reference、参数、cookie。
B18、如B11-B15任一项所述的装置,所述多模匹配单元采用多模匹配算法进行所述多模匹配;所述多模匹配算法为ACBM算法。