一种攻击检测方法及装置制造方法及图纸

技术编号:21715035 阅读:43 留言:0更新日期:2019-07-27 19:22
本发明专利技术实施例提供一种攻击检测方法及装置,涉及计算机安全领域。本发明专利技术实施例能够准确检测出应用程序运行时可能存在的堆喷射型攻击。该方法包括:响应于目标进程加载操作系统提供的动态链接库DLL的操作,在目标进程对应的应用程序用户态内存中搜索内存分配函数的地址;在搜索到内存分配函数的地址后,将内存分配函数的第一条指令修改为第二跳转指令;第二跳转指令,用于当目标进程执行内存分配函数时,执行第二回调函数;响应于执行第二回调函数的操作,记录目标进程的内存占用信息;并根据目标进程所需占用内存的参数信息,生成检测结果。本发明专利技术应用于计算机攻击检测。

An Attack Detection Method and Device

【技术实现步骤摘要】
一种攻击检测方法及装置
本专利技术涉及计算机安全领域,尤其涉及一种攻击检测方法及装置。
技术介绍
随着信息技术的发展,计算机网络已经成为人们获取信息的主要工具,随之而来的是对计算机数据安全技术需求的不断提高。其中,堆喷射(HeapSpray)作为一种黑客常用的漏洞利用(Exploit)技术,经常被用于进行高级持续性威胁(AdvancedPersistentThreat,APT)等攻击方式中,从而实现数据窃取的目的。堆喷射是漏洞攻击中常用的技术,很多文档(doc,pdf,swf等)或者网页(html等)中都可以嵌入脚本,在文档或者网页打开的时候这些脚本可以在相应的应用程序,例如word,adobereader或者浏览器进程中执行,黑客在进行漏洞攻击的时候可以构造恶意文件或者html网页,先执行一段脚本把滑板指令(通常是NOP空指令)加ShellCode写入默认堆内存中并且尽量填满堆内存,又称为堆喷射技术,然后再触发漏洞,劫持EIP寄存器(保存CPU要执行的下一条指令地址)稳定跳转到堆中的滑板指令进而执行到ShellCode,如图1所示。通常情况下,应用程序(以32位程序为例)刚运行的时候仅使用进程默认堆中低地址空间的少量内存,黑客的恶意脚本通过构造适当大小的滑板指令加ShellCode内存块,再重复申请分配该内存块适当的次数,就可以达到接近填满整个默认堆内存空间的效果,然后触发漏洞直接跳转到类似0x06060606,0x07070707,…,0x0c0c0c0c这样的固定地址就可以稳定跳转到滑板指令(NOP空指令),进而一直执行到后面的ShellCode。目前,常见的一种堆喷射检测方法是:首先解析待检测网页的脚本,在解析过程中通过挂函数钩子监测网页中的脚本变量,如果监测到网页中的脚本变量的长度超过预设的长度阈值,则对所述长度超过预设长度阈值的脚本变量的内容进行反汇编检测,如果不能顺利反汇编,则继续解析所述待检测网页的脚本,如果能够顺利反汇编,则认为脚本变量中存放了ShellCode符合堆喷射特性,确定检测到堆喷射型网页木马。但上述这种方法,其本质只是一种静态检测,而且只是针对网页提取脚本进行分析堆喷射型攻击,通用性差。
技术实现思路
本专利技术的的实施例提供一种攻击检测方法及装置,能够准确检测出应用程序运行时可能存在的堆喷射型攻击。第一方面,本专利技术实施例提供一种攻击检测方法,包括:响应于目标进程加载操作系统提供的动态链接库DLL的操作,在目标进程对应的应用程序用户态内存中搜索内存分配函数的地址;在搜索到内存分配函数的地址后,将内存分配函数的第一条指令修改为第二跳转指令;第二跳转指令,用于当目标进程执行内存分配函数时,执行第二回调函数;响应于执行第二回调函数的操作,记录目标进程的内存占用信息;并根据目标进程所需占用内存的参数信息,生成检测结果。第二方面,本专利技术实施例提供一种攻击检测装置,包括:搜索单元,用于响应于目标进程加载操作系统提供的动态链接库DLL的操作,在目标进程对应的应用程序用户态内存中搜索内存分配函数的地址;修改单元,用于在搜索单元搜索到内存分配函数的地址后,将内存分配函数的第一条指令修改为第二跳转指令;第二跳转指令,用于当目标进程执行内存分配函数时,执行第二回调函数;结果生成单元,用于在修改单元将内存分配函数的第一条指令修改为第二跳转指令之后,响应于执行第二回调函数的操作,记录目标进程的内存占用信息;并根据目标进程所需占用内存的参数信息,生成检测结果。第三方面,本专利技术实施例提供另一种攻击检测装置,包括:处理器、存储器、总线和通信接口;存储器用于存储计算机执行指令,处理器与存储器通过总线连接,当攻击检测装置运行时,处理器执行上述存储器存储的上述计算机执行指令,以使攻击检测装置执行如上述第一方面所提供的攻击检测方法。第四方面,本专利技术实施例提供一种计算机存储介质,包括指令,当其在攻击检测装置上运行时,使得攻击检测装置执行上述第一方面所提供的攻击检测方法。本专利技术实施例所提供的攻击检测方法及装置,当目标进程加载操作系统提供的DLL时,则在目标进程对应的应用程序用户态内存中搜索内存分配函数的地址,并对内存分配函数的第一条指令修改为第二跳转指令,从而能够在应用程序的目标进程运行时自动调用第二回调函数,以对目标进程所需占用内存的参数信息进行记录,并根据参数信息来检测目标进程的内存使用情况,进而生成检测结果,从而能够确定在应用程序运行时是否存在异常占用内存的堆喷射型攻击。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。图1为一种进程默认堆布局示意图;图2为本专利技术实施例所提供的一种电子设备的模块组成示意图;图3为本专利技术实施例提供的动态链接库加载监控驱动的模块组成示意图;图4为本专利技术实施例提供的自定义动态链接库的模块组成示意图;图5为本专利技术实施例提供的一种攻击检测方法的流程示意图;图6为本专利技术实施例提供的另一种攻击检测方法的流程示意图;图7为本专利技术实施例提供的又一种攻击检测方法的流程示意图;图8为本专利技术实施例提供的再一种攻击检测方法的流程示意图;图9为本专利技术实施例提供的一种攻击检测装置的结构示意图;图10为本专利技术实施例提供的又一种攻击检测装置的结构示意图;图11为本专利技术实施例提供的再一种攻击检测装置的结构示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本专利技术。在本专利技术实施例和所附权利要求书中所使用的单数形式的“一种”、“”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。本文中字符“/”,一般表示前后关联对象是一种“或”的关系。应当理解,尽管在本专利技术实施例中可能采用术语第一、第二、第三等来描述各种指令、函数以及线程等,但这些指令、函数以及线程不应限于这些术语。这些术语仅用来将指令、函数以及线程彼此区分开。例如,在不脱离本专利技术实施例范围的情况下,第一指令也可以被称为第二指令,类似地,第二指令也可以被称为第一指令。取决于语境,如在此所使用的词语“如果”或“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。下面对本专利技术实施例所涉及技术术语进行解释:APT:应为AdvancedPersistentThreat的缩写,又称高级持续性威胁。是指黑客组织或者小团体利用先进的攻击手段对特定目标进行长期持续性网络攻击的攻击形式,是以窃取核心资料为目的,蓄谋已久的“恶意商业间谍威胁”。APT的攻击手法,在于隐匿自己,针对特定对象,长期、有计划性和组织性地本文档来自技高网
...

【技术保护点】
1.一种攻击检测方法,其特征在于,包括:响应于目标进程加载操作系统提供的动态链接库DLL的操作,在所述目标进程对应的应用程序用户态内存中搜索内存分配函数的地址;在搜索到所述内存分配函数的地址后,将所述内存分配函数的第一条指令修改为第二跳转指令;所述第二跳转指令,用于当所述目标进程执行所述内存分配函数时,执行第二回调函数;响应于执行所述第二回调函数的操作,记录所述目标进程所需占用内存的参数信息;并根据所述目标进程所需占用内存的参数信息,生成检测结果。

【技术特征摘要】
1.一种攻击检测方法,其特征在于,包括:响应于目标进程加载操作系统提供的动态链接库DLL的操作,在所述目标进程对应的应用程序用户态内存中搜索内存分配函数的地址;在搜索到所述内存分配函数的地址后,将所述内存分配函数的第一条指令修改为第二跳转指令;所述第二跳转指令,用于当所述目标进程执行所述内存分配函数时,执行第二回调函数;响应于执行所述第二回调函数的操作,记录所述目标进程所需占用内存的参数信息;并根据所述目标进程所需占用内存的参数信息,生成检测结果。2.根据权利要求1所述攻击检测方法,其特征在于,所述响应于目标进程加载操作系统提供的动态链接库DLL的操作,在所述目标进程对应的应用程序用户态内存中搜索内存分配函数的地址,具体包括:将操作系统的动态链接库加载函数中的第一条指令修改为第一跳转指令;所述第一跳转指令,用于当目标进程根据所述动态链接库加载函数加载所述操作系统提供的DLL时,执行第一回调函数;响应于执行所述第一回调函数的操作,加载自定义DLL;所述自定义DLL,用于生成第一预设线程;所述第一预设线程,用于在所述目标进程对应的应用程序用户态内存中搜索内存分配函数的地址。3.根据权利要求2所述攻击检测方法,其特征在于,所述响应于执行所述第一回调函数的操作,加载自定义DLL,具体包括:响应于执行所述第一回调函数的操作,获取所述目标进程的进程识别号PID;判断所述目标进程的PID是否存储在活动进程列表中;所述活动进程列表,用于存储之前运行过的进程的PID;若所述目标进程的PID没有存储在所述活动进程列表中,则加载所述自定义DLL。4.根据权利要求1所述攻击检测方法,其特征在于,所述响应于执行所述第二回调函数的操作,记录所述目标进程的内存占用信息;所述根据所述目标进程所需占用内存的参数信息,生成检测结果,具体包括:响应于执行所述第二回调函数的操作,记录所述目标进程请求分配内存时,连续请求分配同一预设大小内存的次数;若所述连续请求分配同一预设大小内存的次数大于第一阈值,则在默认堆内存中从高地址开始往低地址搜索所述预设大小的相邻内存块,记录所述预设大小的相邻内存块中每个内存块的前L个字节分别包括的指令的种类个数N;若所述预设大小的相邻内存块中每个内存块的前L个字节分别包括的指令的种类个数N,均不为零且小于第二阈值,则生成告警信号。5.根据权利要求4所述攻击检测方法,其特征在于,在确定所述连续请求分配同一预设大小内存的次数大于第一阈值之后,所述方法还包括:创建第二预设线程;所述第二预设线程,用于在默认堆内存中从高地址开始往低地址搜索所述预设大小的相邻内存块,记录所述预设大小的相邻内存块中每个内存块的前L个字节分别包括的指令的种类个数N;所述第二预设线程,还用于若所述预设大小的相邻内存块中每个内存块的前L个字节分别包括的指令的种类个数N,均不为...

【专利技术属性】
技术研发人员:黄勇王光辉李超君钟鑫陆晓敏
申请(专利权)人:成都亚信网络安全产业技术研究院有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1