Sql注入攻击的检测方法、装置和具有该装置的防火墙的制作方法

文档序号:7860717阅读:225来源:国知局
专利名称:Sql注入攻击的检测方法、装置和具有该装置的防火墙的制作方法
技术领域
本发明涉及互联网领域,具体而言,涉及ー种SQL注入攻击的检测方法、装置和具有该装置的防火墙。
背景技术
近几年,SQL注入攻击始终盘踞着Web安全威胁的前三位。攻击者通过SQL注入攻击,可以达到诸如网站挂马、网页篡改、信息盗取和滲透内网等非法目的,因此,SQL注入攻击严重影响Web的安全和正常运行。为了检测SQL注入攻击,现有的IPS、IDS或WAF等系统中,通常是基于正则表达式匹配的防护技木,也即通过正则表达式描述SQL注入攻击,与正则表达式相匹配的行为确定为SQL注入攻击,例如米用如下的正则表达式Union\s+select\s+. *from\s+。
但是,可以用于SQL注入攻击的形式非常多,通过正则表达式难以涵盖所有的形式,因而会产生漏报。为了避免漏报,需要通过大量的正则表达式进行匹配,无疑会直接产生网络性能的降低。此外,采用基于正则表达式的防护技术,在规则命中后,没有额外的处理,从而安全管理员不能知道攻击的详细行为,给安全管理员的工作带来了额外的分析负担。综上,由于正则表达式本身描述能力的局限性,使得基于正则表达式的SQL注入攻击检测技术存在误报高和漏报高的缺点。为了克服正则表达式在表述能力上的弱点,现存的很多WAF类产品采用基于机器学习的检测技木。通常该类技术都需要ー个学习阶段,也即采用统计分析、数据挖掘等方法,学习到正常流量的数据特征后,在后续的检测阶段,对接收到的流量在学习到的正常流量模型的指导下进行分类,采用“非正常即异常”的方式检测攻击。但是,由于机器学习过程中存在过学习和欠学习的问题,过学习通常意味着攻击流量混入了正常流量中被错误地学习,从而导致攻击的特征被带入到最終的正常流量模型,此时在检测时会带来漏报的问题;欠学习通常意味着学习流量并没有包含所有的正常流量模式,导致部分正常流量的模型没有被学习到,在检测过程中会导致误报的问题。综上,由于现实中很难完整地学习到正常流量的所有特征,使得基于机器学习的检测技术中仍然存在误报和漏报的问题。针对相关技术中SQL注入攻击的检测方法存在误报和漏报的问题,目前尚未提出有效的解决方案。

发明内容
本发明的主要目的在于提供ー种SQL注入攻击的检测方法、装置和具有该装置的防火墙,以解决SQL注入攻击的检测方法存在误报和漏报的问题。为了实现上述目的,根据本发明的ー个方面,提供了ー种SQL注入攻击的检测方法。
根据本发明的SQL注入攻击的检测方法包括对用户提交的数据进行參数分解,得到分解后的參数;对分解后的參数进行HTTP编码的解码,得到解码后的參数;对解码后的參数进行SQL词法分析,得到词法分析后的參数;对词法分析后的參数进行SQL语法分祈,并建立SQL语法树;以及当语法树建立成功时,确定用户提交的数据对应的行为是SQL注入攻击。进ー步地,对用户提交的数据进行參数分解包括以下任意一种或多种參数分解对数据请求行中的URI进行參数分解;对数据请求的Cookie首部进行參数分解;对数据请求的Cookie2首部进行參数分解;对数据请求的Referer首部进行參数分解;以及对POST请求的实体进行參数分解。进ー步地,在对解码后的參数进行SQL词法分析之前,该方法还包括判断解码后的參数是否由数字和/或字母组成,其中,对解码后的參数进行词法分析包括当解码后的參数不是由数字和/或字母组成时,对解码后的參数进行SQL词法分析。进ー步地,在确定用户提交的数据对应的行为是SQL注入攻击后,该方法还包括 对成功建立的语法树进行语义分析;以及根据语义分析的结果确定SQL注入攻击的目的。进ー步地,在确定用户提交的数据对应的行为是SQL注入攻击后,该方法还包括将用户提交的数据在虚拟机中执行;以及根据执行结果确定SQL注入攻击的目的。为了实现上述目的,根据本发明的另一方面,提供了ー种SQL注入攻击的检测装置。根据本发明的SQL注入攻击的检测装置用于执行本发明提供的任意一种检测方法。为了实现上述目的,根据本发明的另一方面,提供了ー种SQL注入攻击的检测装置。根据本发明的SQL注入攻击的检测装置包括协议分析器,用于对用户提交的数据进行參数分解,并对分解后的參数进行HTTP编码的解码,得到解码后的參数;SQL词法分析器,用于对解码后的參数进行SQL词法分析,得到词法分析后的參数;以及SQL语法分析器,用于对词法分析后的參数进行SQL语法分析,并建立SQL语法树,以及当语法树建立成功吋,确定用户提交的数据对应的行为是SQL注入攻击。进ー步地,协议分析器包括以下任意一种或多种參数分解模块第一參数分解模块,用于对数据请求行中的URI进行參数分解;第二參数分解模块,用于对数据请求的Cookie首部进行參数分解;第三參数分解模块,用于对数据请求的Cookie2首部进行參数分解;第四參数分解模块,用于对数据请求的Referer首部进行參数分解;以及第五參数分解模块,用于对POST请求的实体进行參数分解。进ー步地,该检测装置还包括判断単元,用于在对解码后的參数SQL进行词法分析之前,判断解码后的參数是否由数字和/或字母组成,其中,SQL词法分析器还用于当解码后的參数不是由数字和/或字母组成时,对解码后的參数进行SQL词法分析。进ー步地,该检测装置还包括SQL语义解析器,用于在确定用户提交的数据对应的行为是SQL注入攻击后,对成功建立的语法树进行语义分析,以及根据语义分析的结果确定SQL注入攻击的目的。进ー步地,该检测装置还包括SQL执行虚拟机,用于在确定用户提交的数据对应的行为是SQL注入攻击后,执行用户提交的数据,以及根据执行结果确定SQL注入攻击的目的。为了实现上述目的,根据本发明的另一方面,提供了ー种防火墙。根据本发明的防火墙包括本发明提供的任意ー种SQL注入攻击的检测装置。通过本发明,采用包括以下步骤的SQL注入攻击的检测方法,首先对用户提交的数据进行參数分解,然后对分解后的參数进行HTTP编码的解码,最后对解码后的參数进行SQL词法分析和SQL语法分析,并尝试建立SQL语法树,当语法树能够成功建立时,确定用户提交的数据对应的行为是SQL注入攻击,实现了ー种基于语法分析的智能检测手段,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,解决了 SQL注入攻击的检测方法容易误报和漏报的问题,进而达到了同时降低误报和漏报的效果。


构成本申请的一部分的附图用来提供对本发明的进ー步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中
图I是根据本发明实施例的防火墙的工作示意图;图2是根据本发明第一实施例的SQL注入攻击的检测装置的框图;图3是根据本发明第二实施例的SQL注入攻击的检测装置的框图;图4是根据本发明实施例的语法树的示意图;以及图5是根据本发明实施例的SQL注入攻击的检测方法的流程图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将參考附图并结合实施例来详细说明本发明。图I是根据本发明实施例的防火墙的工作示意图,如图I所示,从因特网至WEB服务器,依次经过路由器或交換器、防火墙以及负载平衡,防火墙具有SQL注入攻击检测功能,设置于因特网与服务器之间,对SQL注入攻击的用户数据进行过滤,防止攻击者对服务器的恶意访问。其中,该实施例中的防火墙在进行SQL注入攻击检测时,对用户提交的数据进行SQL词法和语法的分析,通过描述攻击本质特征来检测SQL注入攻击,能够更好的检测并组织SQL注入攻击,降低误检测和漏检测的概率。本发明实施例还提供了 SQL注入攻击的检测装置,以下对本发明实施例所提供的SQL注入攻击的检测装置进行介绍。需要说明的是,在本发明实施例的SQL注入攻击的检测装置均可应用于本发明的防火墙。图2是根据本发明第一实施例的SQL注入攻击的检测装置的框图,如图2所示,该检测装置包括协议分析器10、SQL词法分析器30和SQL语法分析器50。协议分析器10首先对经过检测装置的HTTP流量进行HTTP协议分析,也即对用户提交的数据先进行參数分解,然后对分解后的參数进行HTTP编码的解码,最終输出解码后的參数。优选地,协议分析器10分析的对象主要针对的是SQL注入攻击通常发生的对象,并且按照数据提交的数据,依次分析请求行、请求首部和请求实体。其中,具体的分析对象包括请求行中的URI、请求的Cookie首部、请求的Cookie2首部、请求的Referer首部和POST请求的实体。通过协议分析器10后得到解码后的參数后,SQL词法分析器30按照SQL语言的规范,解析提交的数据,对各个解码后的參数进行词法分析,并去掉SQL语言中的注释,得到词法分析后的參数。SQL语法分析器50以SQL-2003标准为基础,并将主流的关系型数据库(包括Oracle > IBM DB2、Microsoft SQL Server、MySQL、Sybase 等近几年的主流版本)各自独立的扩展融入到该语法分析器50中。语法分析器50基于词法分析器30的处理结果尝试进行语法分析,并建立SQL语言的语法树。要实施SQL注入攻击,攻击者提交的恶意数据,无论怎么变化,最終都必须满足SQL语言规范,否则受害者数据库服务器将不能执行嵌入的恶意代码。所以,凡是能够正常生成SQL语法树(或者能够部分生成SQL语法树)的用户提交的数据,都被认为是可被高度怀疑的行为。因此,经过SQL语法分析器50按照完备的规范进行语法解析后,如果用户提交的数据能够通过语法分析并成功建SQL立语法树,这就意味着用户提交的数据包含符 合语法SQL规范的代码,即确定用户提交的数据对应的行为是可疑的SQL注入攻击。采用该实施例提供的SQL注入攻击的检测装置,实现了ー种基于语法分析的智能检测手段,实时对用户提交的数据进行分析检测,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,同时降低SQL注入攻击检测的误报率和漏报率,能够更好地防止SQL注入攻击,维护网络安全。图3是根据本发明第二实施例的SQL注入攻击的检测装置的框图,如图3所示,协议分析器首先对经过检测装置的HTTP流量进行HTTP协议分析,也即对用户提交的数据先进行參数分解,分析的对象主要针对的是SQL注入攻击通常发生的对象,具体包括请求行中的URI、请求的Cookie首部、请求的Cookie2首部、请求的Referer首部和POST请求的实体,然后对各个对象的各个參数进行HTTP编码的解码。例如,协议分析器对用户提交的如下URI进行參数分解和解码/seach. asp id = IMfind = I % 20union% 20select % 2f % 2a% 2a% 2f %2a% 20from% 20tble经过协议分析器后,将被分解、解码还原成两个參数Id (name =”id”, value = I);Find (,name =,,find,,,value = lunion select/林/*from tble)。为了提高检测装置的处理速度,在进行词法和语法分析前,先进行初歩判断,以排除明显的正常流量,该检测装置还包括判断単元,在经过协议分析器进行參数分解和解码之后,在对解码后的參数进行词法分析之前,判断単元判断解码后的參数是否由数字和/或字母组成。例如,针对上述的两个參数Id和Find,由于第一个參数Id的值是ー个有数字组成的字符串,所以该參数肯定不会发生SQL注入攻击,而第二个參数Find,其值中包含标点符号,需要进行进一步的词法分析。如果URI的两个參数Id和Find均由数字和字母的组合、数字或字母组成,则该URI为正常明显流量,不需要进行SQL注入攻击的检测。在上述的判断中,如果解码后的參数不是由数字和/或字母组成时,则需对解码后的參数进行SQL词法分析。对于上述的Find參数,经过SQL词法分析器后,将还原成Value=” I union select*from tble,,。
在进行词法分析后,SQL语法分析器把经过SQL词法分析器分析后的參数进行语法分析。对于上述的Find參数,经过语法分析器后,能够建立如图4所示的语法树,从而能够确定用户提交的数据对应的行为是可疑的SQL注入攻击。在成功建立语法树的基础上,通过最終的SQL语义解析器对语法树进行分析,确定用户提交的数据在数据库上运行的语义动作,则可进一步确认攻击者的攻击目的,最終将分析得到的攻击目的存储在日志收集器中,并进行报警。在该实施例中,实现了ー种基于语法分析和语义执行的智能检测手段,通过描述攻击本质特征检测SQL注入攻击而不是通过描述攻击表现形式,并且进一歩对确定的SQL注入攻击进行语义分析,向安全管理员提供SQL注入攻击的分析結果。采用该实施例提供的SQL注入攻击的检测装置,能够克服正则表达式描述能力弱的缺点,比基于正则表达式特征的检测手段具有更高的检测能力,对抵御零日攻击具有更好的适应力,有更高的检出率和更低的漏报率;相比于基于机器学习的检测手段,该装置克服了机器学习问题中过学习和欠学习的问题,使得漏报率和误报率更低;并且能够提供能 详细的行为目的说明,有效帮助安全管理员进行事后分析。为了更加准确的得到SQL注入攻击的目的,可以采用虚拟机来替代图3所示实施例中的SQL语义解析器,在确定用户提交的数据对应的行为是SQL注入攻击后,通过虚拟机来执行用户提交的数据,精确获知语法树在数据库上运行的语义动作,则可以进ー步确认攻击者的行为,最終精确报警。通常情况下,通过Web入口,对数据库的任何写操作、通过SQL语言对操作系统的任何读、写、执行操作,对数据库的多表查询,对系统表的任何操作,以及通过SQL语句借助数据库改变操作系统配置,例如修改、读取注册表,添加启动项,添加启动服务,修改磁盘文件等等都被认为是恶意行为。例如在上述例子,虚拟机在模拟执行之后,将获知用户的行为是通过Union查询列举tble表的全部内容,是ー种不被允许的恶意行为,从而根据执行结果准确的确定SQL注入攻击的目的。本发明实施例还提供了 SQL注入攻击的检测方法,以下对本发明实施例所提供的SQL注入攻击的检测方法进行介绍。需要说明的是,在本发明实施例的SQL注入攻击的检测方法可以通过本发明实施例所提供的SQL注入攻击的检测装置来执行,本发明实施例的SQL注入攻击的检测装置也可以用于执行本发明实施例所提供的SQL注入攻击的检测方法。图5是根据本发明实施例的SQL注入攻击的检测方法的流程图,如图5所示,该方法包括如下的步骤S102至步骤SllO 步骤S102 :对用户提交的数据进行參数分解,得到分解后的參数。步骤S104 :对分解后的參数进行HTTP编码的解码,得到解码后的參数。上述的步骤S102和步骤S104可通过图2所示实施例中的协议分析器10执行,通过上述的两个步骤,对经过SQL注入攻击防护设备的HTTP流量进行HTTP协议分析,也即对用户提交的数据先进行參数分解,然后对分解后的參数进行HTTP编码的解码,最終输出解码后的參数。优选地,上述两个步骤中分析的对象主要针对的是SQL注入攻击通常发生的对象,并且按照数据提交的数据,依次分析请求行、请求首部和请求实体。其中,具体的分析对象包括请求行中的URI、请求的Cookie首部、请求的Cookie2首部、请求的Referer首部和POST请求的实体。步骤S106 :对解码后的參数进行SQL词法分析,得到词法分析后的參数。该步骤可通过图2所示实施例中的SQL词法分析器30执行,在词法分析过程中,可直接将SQL的注释去掉。步骤S108 :对词法分析后的參数进行SQL语法分析,并建立SQL语法树。步骤SllO :当语法树建立成功时,确定用户提交的数据对应的行为是SQL注入攻击。上述的步骤S108和步骤SllO可通过图2所示实施例中的SQL语法分析器50执行,通过步骤S108和步骤SllO按照完备的SQL语言规范进行语法解析后,如果用户提交的数据能够通过语法分析并成功建立语法树,这就意味着用户提交的数据包含符合SQL语言 规范的代码,即确定用户提交的数据对应的行为是可疑的SQL注入攻击。采用该实施例提供的SQL注入攻击的检测方法,能够克服正则表达式描述能力弱的缺点,比基于正则表达式特征的检测手段具有更高的检测能力,对抵御零日攻击具有更好的适应力,有更高的检出率和更低的漏报率;相比于基于机器学习的检测手段,该装置克服了机器学习问题中过学习和欠学习的问题,使得漏报率和误报率更低。为了提高检测方法速度,在进行词法和语法分析前,先进行初歩判断,以排除明显的正常流量,优选地,在该步骤S106之前,该方法还包括判断解码后的參数是否由数字和/或字母组成,其中,如果解码后的參数是由数字和/或字母组成,则该用户提交的数据属于正常流量,无需进行后续的步骤S108和步骤SllO的处理,如果解码后的參数不是由数字和/或字母組成,依次执行步骤S108和步骤SllO的处理,对解码后的參数进行SQL词法分析和SQL语法分析。为了能够向安全管理员提供详细的SQL注入攻击的行为目的,有效帮助安全管理员进行事后分析,优选地,在步骤SllO之后,确定用户提交的数据对应的行为是SQL注入攻击后,该方法还包括对成功建立的SQL语法树进行语义分析,井根据语义分析的结果确定SQL注入攻击的目的。为了向安全管理员提供更加准确的得到SQL注入攻击的目的,更加有效地帮助安全管理员进行事后分析,进ー步优选地,在步骤SllO之后,将用户提交的数据在虚拟机中执行,并根据执行结果确定SQL注入攻击的目的。从以上的描述中,可以看出,本发明实现了如下技术效果实现了一种基于语法分析的智能检测手段,实时对用户提交的数据进行分析检测,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,同时降低SQL注入攻击检测的误报率和漏报率,能够更好地防止SQL注入攻击,维护网络安全。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.ー种SQL注入攻击的检测方法,其特征在于,包括对用户提交的数据进行參数分解,得到分解后的參数;对所述分解后的參数进行HTTP编码的解码,得到解码后的參数;对所述解码后的參数进行SQL词法分析,得到词法分析后的參数;对所述词法分析后的參数进行SQL语法分析,并建立SQL语法树;以及当所述语法树建立成功时,确定所述用户提交的数据对应的行为是SQL注入攻击。
2.根据权利要求I所述的检测方法,其特征在于,对用户提交的数据进行參数分解包括以下任意一种或多种參数分解对数据请求行中的URI进行參数分解;对数据请求的Cookie首部进行參数分解;对数据请求的Cookie2首部进行參数分解;对数据请求的Referer首部进行參数分解;以及对POST请求的实体进行參数分解。
3.根据权利要求I所述的检测方法,其特征在于,在对所述解码后的參数进行SQL词法分析之前,所述方法还包括判断所述解码后的參数是否由数字和/或字母組成,其中,对所述解码后的參数进行词法分析包括当所述解码后的參数不是由数字和/或字母组成时,对所述解码后的參数进行SQL词法分析。
4.根据权利要求I至3中任一项所述的检测方法,其特征在于,在确定所述用户提交的数据对应的行为是SQL注入攻击后,所述方法还包括对成功建立的语法树进行语义分析;以及根据语义分析的结果确定所述SQL注入攻击的目的。
5.根据权利要求I至3中任一项所述的检测方法,其特征在于,在确定所述用户提交的数据对应的行为是SQL注入攻击后,所述方法还包括将所述用户提交的数据在虚拟机中执行;以及根据执行结果确定所述SQL注入攻击的目的。
6.ー种SQL注入攻击的检测装置,其特征在于,包括协议分析器,用于对用户提交的数据进行參数分解,并对分解后的參数进行HTTP编码的解码,得到解码后的參数;SQL词法分析器,用于对所述解码后的參数进行SQL词法分析,得到词法分析后的參数;以及SQL语法分析器,用于对所述词法分析后的參数进行SQL语法分析,并建立SQL语法树,以及当所述语法树建立成功时,确定所述用户提交的数据对应的行为是SQL注入攻击。
7.根据权利要求6所述的检测装置,其特征在于,所述协议分析器包括以下任意ー种或多种參数分解模块第一參数分解模块,用于对数据请求行中的URI进行參数分解;第二參数分解模块,用于对数据请求的Cookie首部进行參数分解;第三參数分解模块,用于对数据请求的Cookie2首部进行參数分解;第四參数分解模块,用于对数据请求的Referer首部进行參数分解;以及第五參数分解模块,用于对POST请求的实体进行參数分解。
8.根据权利要求6所述的检测装置,其特征在于,还包括判断単元,用于在对所述解码后的參数SQL进行词法分析之前,判断所述解码后的參数是否由数字和/或字母組成,其中,所述SQL词法分析器还用于当所述解码后的參数不是由数字和/或字母组成吋,对所述解码后的參数进行SQL词法分析。
9.根据权利要求6至8中任一项所述的检测装置,其特征在于,还包括SQL语义解析器,用于在确定所述用户提交的数据对应的行为是SQL注入攻击后,对成功建立的语法树进行语义分析,以及根据语义分析的结果确定所述SQL注入攻击的目的。
10.根据权利要求6至8中任一项所述的检测装置,其特征在于,还包括SQL执行虚拟机,用于在确定所述用户提交的数据对应的行为是SQL注入攻击后,执行所述用户提交的数据,以及根据执行结果确定所述SQL注入攻击的目的。
11.ー种防火墙,其特征在于,包括权利要求6至10中任一项所述的SQL注入攻击的检测装置。
全文摘要
本发明提供了一种SQL注入攻击的检测方法、检测装置和具有该装置的防火墙。该检测方法首先对用户提交的数据进行参数分解,然后对分解后的参数进行HTTP编码的解码,最后对解码后的参数进行SQL词法分析和SQL语法分析,并尝试建立SQL语法树,当语法树能够成功建立时,确定用户提交的数据对应的行为是SQL注入攻击。通过本发明,实现了一种基于语法分析的智能检测手段,不是通过描述攻击表现形式,而是通过描述SQL注入攻击本质特征以达到检测SQL注入攻击的目的,降低了误报率和漏报率,进一步地,通过语义分析和虚拟执行,能够确认攻击者具体的攻击行为和预测可能的攻击后果。
文档编号H04L12/26GK102833270SQ201210348368
公开日2012年12月19日 申请日期2012年9月18日 优先权日2012年9月18日
发明者张斌, 常磊 申请人:山石网科通信技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1