缓冲区溢出攻击检测装置、方法和安全防护系统.pdf

上传人:a1 文档编号:22899 上传时间:2018-01-12 格式:PDF 页数:18 大小:1.07MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410038712.2

申请日:

2014.01.26

公开号:

CN104809391A

公开日:

2015.07.29

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 21/52申请日:20140126|||公开

IPC分类号:

G06F21/52(2013.01)I; G06F21/56(2013.01)I

主分类号:

G06F21/52

申请人:

华为技术有限公司

发明人:

周宏斌; 张翔

地址:

518129广东省深圳市龙岗区坂田华为总部办公楼

优先权:

专利代理机构:

北京林达刘知识产权代理事务所(普通合伙)11277

代理人:

刘新宇

PDF下载: PDF下载
内容摘要

本发明涉及一种缓冲区溢出攻击检测装置、方法和安全防护系统。其中,缓冲区溢出攻击检测装置,包括:目标进程,用于获取外部输入数据;攻击代码检测模块,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;所述目标进程还用于在处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则调用所述攻击代码检测模块对解码后的数据启动攻击代码检测。本发明实施例的目标进程在处理外部输入数据时,如果监测到该目标进程对外部输入数据执行解码,可以调用所述攻击代码检测模块对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。

权利要求书

1.  一种缓冲区溢出攻击检测装置,其特征在于,包括:
目标进程,用于获取外部输入数据;
攻击代码检测模块,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;
所述目标进程还用于在处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则调用所述攻击代码检测模块对解码后的数据启动攻击代码检测。

2.
  根据权利要求1所述的装置,其特征在于,还包括:
检测调度模块,用于启动所述目标进程;
挂钩模块,用于将所述攻击代码检测模块挂钩到所述目标进程的关键数据处理点,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作;
所述检测调度模块还用于控制所述目标进程加载所述挂钩模块;
加载所述挂钩模块之后的所述目标进程还用于在检测到所述关键数据处理点时,调用所述攻击代码检测模块启动攻击代码检测。

3.
  根据权利要求1或2所述的装置,其特征在于,所述目标进程具体用于调用所述攻击代码检测模块根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。

4.
  根据权利要求1-3中任一项所述的装置,其特征在于,所述攻击代码检测模块还用于对解码后的数据启动攻击代码检测之后,根据攻击代码检测的结果,输出检测日志。

5.
  一种安全防护系统,其特征在于,包括:
权利要求1-4中任一项所述的缓冲区溢出攻击检测装置;
网络安全装置,用于将获取的网络流量还原成所述外部输入数据;将所述外部输入数据发送至所述缓冲区溢出攻击检测装置;接收所述缓冲区溢出 攻击检测装置反馈的检测结果;根据所述检测结果,调整控制策略。

6.
  一种安全防护系统,其特征在于,包括:
权利要求1-4中任一项所述的缓冲区溢出攻击检测装置;
应用服务器,用于将提交的文件作为外部输入数据发送至所述缓冲区溢出攻击检测装置;接收所述缓冲区溢出攻击检测装置反馈的检测结果;根据所述检测结果,调整控制策略。

7.
  一种缓冲区溢出攻击检测方法,其特征在于,包括:
目标进程获取外部输入数据;
在所述目标进程处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则对解码后的数据启动攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码。

8.
  根据权利要求7所述的方法,其特征在于,在所述目标进程获取外部输入数据之前,包括:
启动所述目标进程;
将启动攻击代码检测与所述目标进程的关键数据处理点挂钩,以使得挂钩后的所述目标进程能够在检测到所述关键数据处理点时,启动攻击代码检测,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作。

9.
  根据权利要求7或8所述的方法,其特征在于,对解码后的数据启动攻击代码检测,包括:
根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。

10.
  根据权利要求7-9中任一项所述的方法,其特征在于,对解码后的数据启动攻击代码检测之后,包括:
根据攻击代码检测的结果,输出检测日志。

说明书

缓冲区溢出攻击检测装置、方法和安全防护系统
技术领域
本发明涉及系统安全检测领域,尤其涉及一种缓冲区溢出攻击检测装置、方法和安全防护系统。
背景技术
缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用缓冲区溢出攻击执行非授权指令,甚至可以取得系统特权,进而进行各种非法操作。
为了检测缓冲区溢出攻击,一种现有的检测方法是:对目标进程进行全地址空间扫描,分析其中是否存在用于实现缓冲区溢出的攻击代码(SHELLCODE)。例如,基于内存搜索进行SHELLCODE监测,可以检测复杂的应用文档格式中编码、加密藏匿的SHELLCODE。但是,由于进程内存中正常可执行代码和SHELLCODE同时存在,二者代码相似,识别难度大;并且,进程的内存被扫描时,恶意代码可能未被解码,SHELLCODE无法被检测到,漏报率高。
另一种现有的检测方法是:对目标程序的输入数据(文件、网络等)进行分析,解析输入数据(如PDF文件、DOC文件、网络数据包等),识别其中是否存在SHELLCODE。例如,目前主流的杀毒软件可以直接对PDF等格式的文件进行解析,然后直接进行规则匹配,以判定目标文件是否存在SHELLCODE;也有的杀毒软件自行实现了脚本引擎的部分功能,在解析出PDF文件中的脚本后,加以执行,然后进行规则匹配,以判定目标文件是否存在SHELLCODE。但是,这种方法需要深入分析文件或网络数据包格式, 对于非公开的文件格式及网络数据包,难度极大;并且,原始输入数据中的SHELLCODE可能经过加密,编码等躲避技术处理,只在运行过程中才会恢复原始SHELLCODE;此外,SHELLCODE可能存在于非脚本区域,仅对脚本区域进行分析,无法实现检测。
综上所述,现有检测缓冲区溢出攻击的方法,检测难度大,漏检率高。
发明内容
技术问题
有鉴于此,本发明要解决的技术问题是,如何降低缓冲区溢出攻击的检测难度,提高攻击代码的检出率。
解决方案
为了解决上述技术问题,在第一方面,提供了一种缓冲区溢出攻击检测装置,包括:
目标进程,用于获取外部输入数据;
攻击代码检测模块,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;
所述目标进程还用于在处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则调用所述攻击代码检测模块对解码后的数据启动攻击代码检测。
结合第一方面,在第一方面的第一种可能的实施方式中,所述的装置还包括:
检测调度模块,用于启动所述目标进程;
挂钩模块,用于将所述攻击代码检测模块挂钩到所述目标进程的关键数据处理点,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作;
所述检测调度模块还用于控制所述目标进程加载所述挂钩模块;
加载所述挂钩模块之后的所述目标进程还用于在检测到所述关键数据处理点时,调用所述攻击代码检测模块启动攻击代码检测。
结合第一方面或第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述目标进程具体用于调用所述攻击代码检测模块根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。
结合第一方面或第一方面的第一种可能的实施方式或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述攻击代码检测模块还用于对解码后的数据启动攻击代码检测之后,根据攻击代码检测的结果,输出检测日志。
第二方面,提供了一种安全防护系统,包括:
上述第一方面、或第一方面的任意一种可能的实现方式所提供的缓冲区溢出攻击检测装置;
网络安全装置,用于将获取的网络流量还原成所述外部输入数据;将所述外部输入数据发送至所述缓冲区溢出攻击检测装置;接收所述缓冲区溢出攻击检测装置反馈的检测结果;根据所述检测结果,调整控制策略。
第三方面,提供了一种安全防护系统,包括:
上述第一方面、或第一方面的任意一种可能的实现方式所提供的缓冲区溢出攻击检测装置;
应用服务器,用于将提交的文件作为外部输入数据发送至所述缓冲区溢出攻击检测装置;接收所述缓冲区溢出攻击检测装置反馈的检测结果;根据所述检测结果,调整控制策略。
第四方面,提供了一种缓冲区溢出攻击检测方法,包括:
目标进程获取外部输入数据;
在所述目标进程处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则对解码后的数据启动攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码。
结合第四方面,在第四方面的第一种可能的实施方式中,在所述目标进程获取外部输入数据之前,包括:
启动所述目标进程;
将启动攻击代码检测与所述目标进程的关键数据处理点挂钩,以使得挂钩后的所述目标进程,能够在检测到所述关键数据处理点时,启动攻击代码检测,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作。
结合第四方面或第四方面的第一种可能的实施方式,在第四方面的第二种可能的实施方式中,对解码后的数据启动攻击代码检测,包括:
根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。
结合第四方面或第四方面的第一种可能的实施方式或第四方面的第二种可能的实施方式,在第四方面的第三种可能的实施方式中,对解码后的数据启动攻击代码检测之后,包括:
根据攻击代码检测的结果,输出检测日志。
有益效果
本发明实施例的目标进程在处理外部输入数据时,如果监测到该目标进程对外部输入数据执行解码,可以调用所述攻击代码检测模块对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1为本发明实施例一的缓冲区溢出攻击检测装置的示意图;
图2为本发明实施例二的缓冲区溢出攻击检测装置的示意图;
图3为本发明实施例三的安全防护系统的示意图;
图4为本发明实施例四的安全防护系统的示意图;
图5为本发明实施例五的缓冲区溢出攻击检测方法的示意图;
图6为本发明实施例六的缓冲区溢出攻击检测方法的示意图;
图7为本发明实施例七的缓冲区溢出攻击检测方法的示意图;
图8为本发明实施例八的缓冲区溢出攻击检测方法的示意图;
图9为本发明实施例九的缓冲区溢出攻击检测装置的示意图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
目前,利用攻击代码(SHELLCODE)进行缓冲区溢出攻击的目标主要 可以包括浏览器、PDF阅读器、OFFICE软件等。而SHELLCODE通常会是以加密数据或以编码数据的形式存在于目标文件中,如网页、PDF、OFFICE文档中,且不仅可能存在于目标文件的脚本区中,也可能存在于目标文件的其他对象如数据区中,在脚本运行过程中才会释放出最终形态的SHELLCODE,然后利用漏洞实现攻击。因此如果确定SHELLCODE的最终释放环节,并对其进行监视、检测,可以极大的提高识别SHELLCODE的有效性,准确率。
本发明实施例对SHELLCODE从编码状态或加密状态转换到最终状态的关键数据处理点的监视,增强检测的针对性,以提升SHELLCODE的检出率。其中,关键数据处理点是指将已编码状态或已加密状态的数据进行解密或解码的动作,该动作可以是函数,也可以是机器指令。
图1为本发明实施例一的缓冲区溢出攻击检测装置的示意图,如图1所示,该缓冲区溢出攻击检测装置可以包括:
目标进程11,用于获取外部输入数据;
攻击代码检测模块13,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;
所述目标进程11还用于在处理所述外部输入数据时,如果监测到所述目标进程11对所述外部输入数据执行解码,则调用所述攻击代码检测模块13对解码后的数据启动攻击代码检测。
具体地,本发明实施例中的目标进程11可以由多种应用程序运行而生成,例如:开源浏览器WebKit、IE浏览器、Adobe Reader、OFFICE等应用程序运行而产生的进程。本发明实施例以目标进程11为开源浏览器WebKit为例进行说明,同样适用于其他目标进程。本发明实施例中的外部输入数据是指目标进程能够处理预定格式的数据。例如:WebKit、IE浏览器的外部输入数据可以是htm网页、js脚本等;Adobe Reader的外部输入数据可以是PDF文件 等;OFFICE的外部输入数据可以是word文件、excel文件等。
例如,在WebKit中,所有由脚本运行产生的新字符串或内存,都是脚本字符串生成(JSString)对象的实例。而脚本解码并释放最终形态的SHELLCODE,通常都会转化成对JSString对象的处理,因此可以监视对JSString对象的创建及访问的动作,在创建JSString对象或访问JSString对象时,目标进程11可以调用攻击代码检测模块13,实现对SHELLCODE的检测。
本实施例缓冲区溢出攻击检测装置,目标进程在处理外部输入数据时,如果监测到该目标进程对外部输入数据执行解码,可以调用所述攻击代码检测模块对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例2
图2为本发明实施例二的缓冲区溢出攻击检测装置的示意图,图2中标号与图1相同的组件具有相同的功能,为简明起见,省略对这些组件的详细说明。如图2所示,与上述实施例的主要区别在于,该缓冲区溢出攻击检测装置还可以包括:
检测调度模块15,用于启动所述目标进程11;
挂钩模块17,用于将所述攻击代码检测模块挂钩到所述目标进程的关键数据处理点,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作;其中,挂钩是指通过程序代码实现对关键数据处理点的监视动作;
所述检测调度模块15还用于控制所述目标进程11加载所述挂钩模块17;
加载所述挂钩模块之后的所述目标进程11还用于在检测到所述关键数据处理点时,调用所述攻击代码检测模块13启动攻击代码检测。其中,目标进程加载挂钩模块,是指将挂钩模块中的程序代码加载到目标进程中执行,使目标进程执行对关键数据处理点的监视。
具体地,以开源浏览器WebKit为例,可以将JSString对象的创建(分配内存动作)和/或访问(访问内存动作)作为关键数据处理点,其中,JSString对象的创建过程中目标进程11需要向检测系统申请分配内存;访问JSString对象,需要对内存进行访问。因此,挂钩模块17可以修改JSString对象的创建和/或访问的动作,增加对关键点的监视代码。检测调度模块15加载挂钩模块17,可以对WebKit中JSString对象的创建和/或访问的过程中加入监视的动作;并指示WebKit在执行创建和/或访问JSString对象的动作时,调用攻击代码检测模块13启动攻击代码检测。WebKit运行外部输入数据如:HTML文件、JS文件或网络数据包等的脚本,在运行脚本过程中会对外部输入数据进行解码,如果WebKit执行创建和/或访问JSString对象的动作,则可以调用攻击代码检测模块启动对缓冲区溢出的攻击代码的检测。
除了WebKit之外,其他应用程序也可以对应确定各自的关键数据处理点。
例如,PDF阅读器Adobe Reader也是通过脚本引擎EScript.api处理脚本的,因此只需对EScript.api中的字符串分配和字符串访问的关键数据处理点进行监视,即可实现PDF中是否包含缓冲区溢出攻击数据的检测。
又如,IE浏览器,同开源浏览器也是类似的,对JavaScript引擎JSCRIPT.DLL中对JsString对象的创建和访问进行监视,对VBScript引擎VBScript.dll中对VbsString对象的创建和访问进行监视,即可实现在IE中对网页文件是否包含缓冲区溢出攻击数据的检测。
在一种可能的实现方式中,所述目标进程11具体用于调用所述攻击代码检测模块13根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。其中,检测过程中所用的匹配规则,可以是解码后的攻击代码规则,由于SHELLCODE解码之后的规则数量较少,需要的匹配规则也较少,通常几千条就可以了,检测过程较快, 且漏检率低。
在一种可能的实现方式中,所述攻击代码检测模块13还用于对解码后的数据启动攻击代码检测之后,根据攻击代码检测的结果,输出检测日志。
本实施例缓冲区溢出攻击检测装置,检测调度模块控制目标进程加载挂钩模块,将目标进程在检测的关键数据处理点与调用攻击代码检测模块启动攻击代码检测挂钩,从而使得目标进程在处理外部输入数据时,如果监测到该目标进程对外部输入数据执行解码,可以调用所述攻击代码检测模块对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例3
图3为本发明实施例三的安全防护系统的示意图,如图3所示,该安全防护系统可以包括:
本发明上述实施例中任意一种结构的缓冲区溢出攻击检测装置31;
网络安全装置33,用于将获取的网络流量还原成所述外部输入数据,例如htm网页、js脚本等;将所述外部输入数据发送至所述缓冲区溢出攻击检测装置31;接收所述缓冲区溢出攻击检测装置31反馈的检测结果;根据所述检测结果,调整控制策略。
具体地,本发明实施例的缓冲区溢出攻击检测装置可以与各类安全产品结合使用中,如与防火墙等安全网关类的网络安全装置,或杀毒软件等终端安全类的网络安全装置结合使用。以防火墙为例,本发明实施例的缓冲区溢出攻击检测装置可以与防火墙协同工作,也可集成到防火墙的内部,提供SHELLCODE检测能力。
本实施例安全防护系统,可以将缓冲区溢出攻击检测装置与网络安全装置结合,在外部输入数据脚本解码时启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例4
图4为本发明实施例四的安全防护系统的示意图,如图3所示,该安全防护系统可以包括:
本发明上述实施例中任意一种结构的缓冲区溢出攻击检测装置41;
应用服务器43,用于将提交的文件作为外部输入数据发送至所述缓冲区溢出攻击检测装置41;接收所述缓冲区溢出攻击检测装置41反馈的检测结果;根据所述检测结果,调整控制策略。
具体地,本发明可应用于邮件服务器、文件服务器等文件相关应用服务器类产品。本发明实施例的缓冲区溢出攻击检测装置可以与文件服务器邮件服务器等文件相关应用服务器协同工作,提供SHELLCODE检测能力。文件可以由用户、服务器或客户端等提交到安全防护系统。
本实施例安全防护系统,可以将缓冲区溢出攻击检测装置与应用服务器结合,在外部输入数据脚本解码时启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例5
图5为本发明实施例五的缓冲区溢出攻击检测方法的示意图,如图5所示,该缓冲区溢出攻击检测方法可以包括:
步骤503、目标进程获取外部输入数据;
步骤504、在所述目标进程处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则对解码后的数据启动攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码。
在一种可能的实现方式中,该缓冲区溢出攻击检测方法,在步骤501之前,还可以包括:
步骤501、启动所述目标进程;
步骤502、将启动攻击代码检测与所述目标进程的关键数据处理点挂钩, 以使得挂钩后的所述目标进程,能够在检测到所述关键数据处理点时,启动攻击代码检测,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作。
在一种可能的实现方式中,对解码后的数据启动攻击代码检测具体可以包括:根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。
在一种可能的实现方式中,对解码后的数据启动攻击代码检测之后,还包括:
步骤505、根据攻击代码检测的结果,输出检测日志。
本实施例缓冲区溢出攻击检测方法,如果监测到目标进程对外部输入数据执行解码,可以对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例6
图6为本发明实施例六的缓冲区溢出攻击检测方法的示意图,如图6所示,以目标进程为WebKit为例,采用本发明上述实施例的缓冲区溢出攻击检测装置,执行该缓冲区溢出攻击检测方法,具体可以包括:
步骤601、检测调度模块启动目标进程(WebKit);
步骤602、检测调度模块通过远程线程注入,控制目标进程加载关键数据处理点挂钩(Hook)模块的动态库;其中,远程线程注入是指通过操作系统提供的调用接口,在一个进程(调用者)中创建远程线程,以进入目标进程的内存地址空间,使得目标进程执行调用者给定的可执行代码(远程线程)。本发明实施例中,检测调度模块(调用者)可以创建一段代码(远程线程),写入目标进程内存地址空间,以控制目标进程加载挂钩(Hook)模块中保存的关键数据处理点的动态库。
例如,在WebKit中,可以将JSString对象的创建及访问作为关键数据处 理点,其中,JSString对象的创建过程中目标进程需要向操作系统申请分配内存,执行访问函数,需要对内存进行访问。
除了WebKit之外,其他应用程序也可以对应确定各自的关键数据处理点。
例如,PDF阅读器Adobe Reader也是通过脚本引擎EScript.api处理脚本的,因此只需对EScript.api中的字符串分配和访问的关键数据处理点进行监视,即可实现PDF中是否包含缓冲区溢出攻击数据的检测。
又如,IE浏览器,同开源浏览器也是类似的,对JavaScript引擎JSCRIPT.DLL中对JsString对象的创建和访问进行监视,对VBScript引擎VBScript.dll中对VbsString对象的创建和访问进行监视,即可实现在IE中对网页文件是否包含缓冲区溢出攻击数据的检测。
步骤603、挂钩模块可以将脚本字符串(JSString)对象的创建动作和访问函数的执行动作与调用攻击代码检测模块挂钩;以使得目标进程在执行JSString对象的创建和/或执行访问JSString对象的函数时,调用攻击代码检测模块启动攻击代码检测。
步骤604、目标进程获取外部输入数据如:HTML文件、JS文件或网络数据包等;
步骤605、目标进程运行外部输入数据的脚本(Javascript)。
步骤606、在目标进程创建和/或访问JSString对象时,对外部输入数据运行脚本的过程中进行解码,解码后可能会释放出SHELLCODE;因此,在目标进程创建和/或访问JSString对象时,可以调用攻击代码检测模块启动对缓冲区溢出的攻击代码的检测;检测过程中所用的匹配规则,可以是解码后的攻击代码规则,由于SHELLCODE解码之后的规则数量较少,需要的匹配规则也较少,通常几千条就可以了,检测过程较快,且漏检率低。
步骤607、挂钩模块依据攻击代码检测模块反馈的结果,可以输出检测 日志,完成对攻击代码(SHELLCODE)的检测。
本实施例缓冲区溢出攻击检测方法,检测调度模块控制目标进程加载挂钩模块,可以将目标进程的关键数据处理点即JSString对象的创建和/或访问动作与调用攻击代码检测模块启动攻击代码检测挂钩,从而使得目标进程在处理外部输入数据时,如果监测到该目标进程对外部输入数据执行解码即出现JSString对象的创建和/或访问动作,可以调用攻击代码检测模块对解码后的数据启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例7
图7为本发明实施例七的缓冲区溢出攻击检测方法的示意图,如图7所示,本发明实施例的缓冲区溢出攻击检测装置可以与各类安全产品结合使用中,以与防火墙结合为例,采用本发明上述实施例的缓冲区溢出攻击检测装置,执行该缓冲区溢出攻击检测方法,具体可以包括以下步骤:
步骤701、网络流量进入防火墙。
步骤702、防火墙将网络流量还原成文件,这些还原的文件可以作为目标进程的外部输入数据。
步骤703、防火墙将还原的文件提交给缓冲区溢出攻击检测装置进行检测;如果目标进程为WebKit,可以参见步骤601到步骤607的相关描述。
步骤704、缓冲区溢出攻击检测装置将检测结果反馈给防火墙。
步骤705、防火墙可以根据反馈的检测结果,实施相应的控制策略。
本实施例可以将缓冲区溢出攻击检测装置与网络安全装置结合,在外部输入数据脚本解码时启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例8
图8为本发明实施例八的缓冲区溢出攻击检测方法的示意图,如图8所 示,本发明实施例的缓冲区溢出攻击检测装置可以与文件服务器、邮件服务器等文件相关应用服务器协同工作,提供SHELLCODE检测能力。以与文件服务器结合为例,采用本发明上述实施例的缓冲区溢出攻击检测装置,执行该缓冲区溢出攻击检测方法,具体可以包括以下步骤:
步骤801、文件被用户提交到文件服务器。
步骤802、文件服务器将文件作为外部输入数据提交给缓冲区溢出攻击检测装置进行检测;如果目标进程为WebKit,可以参见步骤601到步骤607的相关描述。
步骤803、缓冲区溢出攻击检测装置将检测结果反馈给文件服务器。
步骤804、文件服务器依据反馈的检测结果确定对文件的控制策略。
本实施例可以将缓冲区溢出攻击检测装置与文件服务器结合,在外部输入数据脚本解码时启动攻击代码检测,从解码后的数据中更容易检测出攻击代码,能够提高攻击代码的检出率。
实施例9
图9为本发明实施例九的缓冲区溢出攻击检测装置的示意图。所述缓冲区溢出攻击检测装置1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述缓冲区溢出攻击检测装置1100包括处理器(processor)1110、通信接口(Communications Interface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或 者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于存放文件和上述程序的代码。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于:
控制目标进程获取外部输入数据;
在所述目标进程处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则对解码后的数据启动攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码。
在一种可能的实现方式中,在所述目标进程获取外部输入数据之前,包括:
启动所述目标进程;
控制所述目标进程加载与攻击代码检测挂钩的关键数据处理点,以使得加载所述关键数据处理点之后的所述目标进程,能够在检测到所述关键数据处理点时,启动攻击代码检测,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的分配内存动作和/或访问内存动作。
在一种可能的实现方式中,对解码后的数据启动攻击代码检测,包括:
根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。
在一种可能的实现方式中,对解码后的数据启动攻击代码检测之后,包括:
根据攻击代码检测的结果,输出检测日志。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的可读存储介质。
其中,可读存储介质中的程序代码被CPU读取后,生成的缓冲区溢出攻击检测装置,可以包括:
目标进程,用于获取外部输入数据;
攻击代码检测模块,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;
所述目标进程还用于在处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则调用所述攻击代码检测模块对解码后的数据启动攻击代码检测。
在一种可能的实现方式中,该装置还包括:
检测调度模块,用于启动所述目标进程;
挂钩模块,用于将所述攻击代码检测模块挂钩到所述目标进程的关键数据处理点,所述关键数据处理点为对所述外部输入数据执行脚本解码所需的 分配内存动作和/或访问内存动作;
所述检测调度模块还用于控制所述目标进程加载所述挂钩模块;
加载所述挂钩模块之后的所述目标进程还用于在检测到所述关键数据处理点时,调用所述攻击代码检测模块启动攻击代码检测。
在一种可能的实现方式中,所述目标进程具体用于调用所述攻击代码检测模块根据解码后的攻击代码规则,对所述解码后的数据进行匹配,确定所述解码后的数据中是否存在所述攻击代码。
在一种可能的实现方式中,所述攻击代码检测模块还用于对解码后的数据启动攻击代码检测之后,根据攻击代码检测的结果,输出检测日志。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

缓冲区溢出攻击检测装置、方法和安全防护系统.pdf_第1页
第1页 / 共18页
缓冲区溢出攻击检测装置、方法和安全防护系统.pdf_第2页
第2页 / 共18页
缓冲区溢出攻击检测装置、方法和安全防护系统.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《缓冲区溢出攻击检测装置、方法和安全防护系统.pdf》由会员分享,可在线阅读,更多相关《缓冲区溢出攻击检测装置、方法和安全防护系统.pdf(18页珍藏版)》请在专利查询网上搜索。

本发明涉及一种缓冲区溢出攻击检测装置、方法和安全防护系统。其中,缓冲区溢出攻击检测装置,包括:目标进程,用于获取外部输入数据;攻击代码检测模块,用于执行攻击代码检测,所述攻击代码为用于对缓冲区进行溢出攻击的代码;所述目标进程还用于在处理所述外部输入数据时,如果监测到所述目标进程对所述外部输入数据执行解码,则调用所述攻击代码检测模块对解码后的数据启动攻击代码检测。本发明实施例的目标进程在处理外部输入。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1