CN112395598B - 指令执行序列被破坏的防护方法、装置及设备 - Google Patents
指令执行序列被破坏的防护方法、装置及设备 Download PDFInfo
- Publication number
- CN112395598B CN112395598B CN201910755389.3A CN201910755389A CN112395598B CN 112395598 B CN112395598 B CN 112395598B CN 201910755389 A CN201910755389 A CN 201910755389A CN 112395598 B CN112395598 B CN 112395598B
- Authority
- CN
- China
- Prior art keywords
- instruction execution
- monitoring point
- execution sequence
- stack
- point event
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000012544 monitoring process Methods 0.000 claims abstract description 126
- 230000008439 repair process Effects 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 7
- 238000005507 spraying Methods 0.000 claims description 6
- 238000013507 mapping Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 6
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000010365 information processing Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种指令执行序列被破坏的防护方法、装置及设备,涉及网络安全技术领域,通过记录同一指令序列正常栈空间特征,用于检测栈空间是否被破坏,并对被破坏的栈内存进行抢救式修复,达到一定的防护效果。其中方法包括:当监控点事件的指令执行序列不完整时,首先根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;然后获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;最后根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列。本申请适用于指令执行序列被破坏时的防护处理。
Description
技术领域
本申请涉及网络安全技术领域,尤其是涉及到一种指令执行序列被破坏的防护方法、装置及设备。
背景技术
互联网信息化发达的当代,网络黑客攻击事件越来越多,黑客攻击手段也在不断演化。黑客可利用漏洞使得软件进程实现一些攻击事件,因此,为了更好的约束软件进程合法事件的执行,可利用定义权限集的方式,限制软件进程所能执行的事件。
目前,可将程序执行时对应的指令执行序列与预设正常行为的指令执行序列进行匹配,以便及时发现是否存在攻击事件。然而,如果程序执行时对应的指令执行序列被破坏,导致无法提取完整的指令执行序列进行匹配,进而躲过安全检测,从而产生误报安全的情况,造成了一定的安全隐患。
发明内容
有鉴于此,本申请提供了一种指令执行序列被破坏的防护方法、装置及设备,主要目的在于解决目前如果指令执行序列被破坏时,会躲过安全检测,从而产生误报安全的技术问题。
根据本申请的一个方面,提供了一种指令执行序列被破坏的防护方法,该方法包括:
当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;
获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;
根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列。
可选的,在当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈空间大小,搜索相关联的正常模式栈特征之前,所述方法还包括:
根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间;
从所述当前栈内存空间中获取所述监控点事件的指令执行序列。
可选的,所述方法还包括:
通过判断指令执行序列的最底层指令是否是线程初始化指令,确定所述监控点事件的指令执行序列是否完整。
可选的,所述方法还包括:
收集样本监控点事件完整的样本指令执行序列,以及所述样本指令执行序列之间的相对偏移,以及所述样本监控点事件当时的栈内存空间大小;
将所述样本指令执行序列、所述样本指令执行序列之间的相对偏移、所述样本监控点事件当时的栈内存空间大小作为特征,以所述样本监控点事件作为key进行映射保存,生成正常模式栈特征。
可选的,所述根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征,具体包括:
按照所述监控点事件作为搜索key,并以所述当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
可选的,所述方法还包括:
获取所述监控点事件的当前线程栈原始起始地址以及当前线程帧地址;
若所述当前线程帧地址不在与所述当前线程栈原始起始地址对应的范围内,则确定所述监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
可选的,所述方法还包括:
若所述监控点事件的指令执行序列中存在不属于任何模块的栈地址,则查询与所述栈地址对应的二进制指令信息;
若所述二进制指令信息与预设白名单中的预设二进制指令信息不匹配,则确定所述监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
可选的,所述方法还包括:
触发输出告警信息,用于提示导致所述监控点事件的指令执行序列不完整的原因信息。
根据本申请的另一方面,提供了一种指令执行序列被破坏的防护装置,该装置包括:
搜索模块,用于当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;
获取模块,用于获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;
修复模块,用于根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列。
可选的,所述获取模块,还用于根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间;
从所述当前栈内存空间中获取所述监控点事件的指令执行序列。
可选的,所述装置还包括:
确定模块,用于通过判断指令执行序列的最底层指令是否是线程初始化指令,确定所述监控点事件的指令执行序列是否完整。
可选的,所述装置还包括:
收集模块,用于收集样本监控点事件完整的样本指令执行序列,以及所述样本指令执行序列之间的相对偏移,以及所述样本监控点事件当时的栈内存空间大小;
生成模块,用于将所述样本指令执行序列、所述样本指令执行序列之间的相对偏移、所述样本监控点事件当时的栈内存空间大小作为特征,以所述样本监控点事件作为key进行映射保存,生成正常模式栈特征。
可选的,所述获取模块,具体用于按照所述监控点事件作为搜索key,并以所述当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
可选的,所述装置还包括:确定模块;
所述获取模块,还用于获取所述监控点事件的当前线程栈原始起始地址以及当前线程帧地址;
所述确定模块,用于若所述当前线程帧地址不在与所述当前线程栈原始起始地址对应的范围内,则确定所述监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
可选的,所述装置还包括:确定模块;
所述获取模块,还用于若所述监控点事件的指令执行序列中存在不属于任何模块的栈地址,则查询与所述栈地址对应的二进制指令信息;
所述确定模块,用于若所述二进制指令信息与预设白名单中的预设二进制指令信息不匹配,则确定所述监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
可选的,所述装置还包括:
触发模块,用于触发输出告警信息,用于提示导致所述监控点事件的指令执行序列不完整的原因信息。
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述指令执行序列被破坏的防护方法。
依据本申请再一个方面,提供了一种指令执行序列破坏防护的实体设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述指令执行序列被破坏的防护方法。
借由上述技术方案,本申请提供的一种指令执行序列被破坏的防护方法、装置及设备,与现有技术相比,本申请在监控点事件的指令执行序列不完整时,可根据监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征,然后根据正常模式栈特征所存的完整指令执行序列,以及完整指令执行序列之间的相对偏移,修复该监控点事件不完整的指令执行序列。通过这种方式,对被破坏的指令执行序列进行抢救式修复,使得后续可提取完整的指令执行序列进行匹配,有效进行安全检测,不会产生误报的情况,达到一定的防护效果,提高了安全性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例提供的一种指令执行序列被破坏的防护方法的流程示意图;
图2示出了本申请实施例提供的另一种指令执行序列被破坏的防护方法的流程示意图;
图3示出了本申请实施例提供的堆喷攻击的安全防护的流程示意图;
图4示出了本申请实施例提供的一种指令执行序列被破坏的防护装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
针对目前如果程序执行时对应的指令执行序列被破坏,导致无法提取完整的指令执行序列进行匹配,进而躲过安全检测,从而产生误报安全的技术问题,本实施例提供了一种指令执行序列被破坏的防护方法,如图1所示,该方法包括:
101、当监控点事件的指令执行序列不完整时,根据监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征。
其中,监控点事件可为创建进程、或加载模块、或读写文件、或读写注册表、或加载驱动等事件。
在本实施例中,正常模式栈特征可预先统计收集,以便后续利用正常的栈空间特征,对被破坏的指令执行序列进行抢救式修复。
对于本实施例的执行主体可以为指令执行序列被破坏时的防护装置或设备,可配置在客户端侧,或者根据实际需求配置在服务器侧。用于实时检测各个监控点事件,在监控点事件的指令执行序列不完整时,获取监控点事件和实时的栈内存空间大小,搜索相关联的正常模式栈特征。并执行步骤102至103所示的过程。
102、获取搜索到的正常模式栈特征所存的完整指令执行序列,以及完整指令执行序列之间的相对偏移。
103、根据获取到的完整指令执行序列和相应的相对偏移,修复监控点事件不完整的指令执行序列。
例如,可根据完整指令执行序列,和该完整指令执行序列之间的相对偏移,填充当前栈内存空间,进而对不完整的指令执行序列中的缺少内容进行修复,使得重新变为完整的指令执行序列。以便后续进行指令执行序列提取和匹配,实现有效的安全检测。
通过应用上述指令执行序列被破坏的防护方法,在监控点事件的指令执行序列不完整时,可根据监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征,然后根据正常模式栈特征所存的完整指令执行序列,以及完整指令执行序列之间的相对偏移,修复该监控点事件不完整的指令执行序列。通过这种方式,对被破坏的指令执行序列进行抢救式修复,使得后续可提取完整的指令执行序列进行匹配,有效进行安全检测,不会产生误报的情况,达到一定的防护效果,提高了安全性。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的实施过程,提供了另一种指令执行序列被破坏的防护方法,如图2所示,该方法包括:
201、根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间。
202、从当前栈内存空间中获取监控点事件的指令执行序列。
203、通过判断指令执行序列的最底层指令是否是线程初始化指令,确定监控点事件的指令执行序列是否完整。
例如,指令执行序列是由监控点回溯得到,因此指令执行序列中第一层指令对应监控点,第二层是调用监控点的指令点,第三层是调用上一层指令点的指令点…以此类推,那么完整的指令执行序列其最底层指令应该是线程初始化指令。因此在本实施例中,如果最底层指令不是线程初始化指令,那么可确定监控点事件的指令执行序列是不完整的。
通过这种方式可准确判别监控点事件的指令执行序列是否完整,以便及时检测出栈空间是否被破坏。
204a、当监控点事件的指令执行序列完整时,将监控点事件作为样本监控点事件。
205a、收集样本监控点事件完整的样本指令执行序列,以及样本指令执行序列之间的相对偏移,以及样本监控点事件当时的栈内存空间大小。
206a、将收集到的样本指令执行序列、样本指令执行序列之间的相对偏移、样本监控点事件当时的栈内存空间大小作为特征,以样本监控点事件作为key进行映射保存,生成正常模式栈特征。
由于样本监控点事件具有完整的样本指令执行序列,因此后续可为不完整的指令执行序列作修复指导依据,提供给修复指令执行序列时使用。
与步骤204a并列的步骤204b、当监控点事件的指令执行序列不完整时,按照监控点事件作为搜索key,并以当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
在本实施例中,已经按照步骤204a至206a所示的过程,预先收集了不同样本监控点事件各个正常模式栈特征,以便后续提供给修复指令执行序列时使用。例如,以监控点事件作为搜索key,并以当前栈内存空间大小作为搜索条件,从保存的正常模式栈特征中查找对应的样本指令执行序列、样本指令执行序列之间的相对偏移,作为相关联的正常模式栈特征。
进一步的,在监控点事件的指令执行序列被破坏时,为了及时找到相应的原因信息,即由于什么原因导致的指令执行序列被破坏,给出两种可选方式,一种是获取监控点事件的当前线程栈原始起始地址以及当前线程帧地址;然后检测当前线程帧地址是否在与当前线程栈原始起始地址对应的范围内;若当前线程帧地址不在与当前线程栈原始起始地址对应的范围内,则确定监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
例如,通过线程环境块(Thread Enviroment Block,TEB)获取监控点事件的当前线程栈原始起始地址;通过扩展基址指针寄存器(extended basepointer,EBP)获取当前线程帧地址。如果当前线程帧地址不在与当前线程栈原始起始地址对应的范围内,可说明堆喷攻击很可能是导致出现指令执行序列被破坏的原因。
基于上述判定堆喷攻击事件的方式,也可应用于及时安全防护。例如,常用的漏洞攻击利用技术手段中使用了堆喷攻击手法,破坏当前的线程栈空间,导致利用栈空间获取指令执行序列进行指令匹配的方法失效。具体表现形式为当堆喷攻击手段破坏当前的线程栈空间时,会使得安全检测方的应用层获取栈的接口返回0,即指令执行序列获取失败,从而放过进行安全检测。为了解决这个问题,可预先基于上述判定堆喷攻击事件的方式编辑审计函数接口,调用该审计函数接口对当前线程栈帧分配的内存地址做校验,如果不在原始线程栈范围直接返回阻止。具体执行如图3所示的流程,获取当前线程栈原始起始地址和范围以及获取当前线程栈帧地址;如果栈帧地址是在原始线程栈范围,则继续原有流程,如果栈帧地址不在原始线程栈范围,则及时进行拦截处理,保证安全性。
另一种指令执行序列被破坏的原因分析方式包括:判断监控点事件不完整的指令执行序列中是否存在不属于任何模块的栈地址;若监控点事件的指令执行序列中存在不属于任何模块的栈地址,则查询与该栈地址对应的二进制指令信息,并检测该二进制指令信息是否与预设白名单中的预设二进制指令信息匹配;若二进制指令信息与预设白名单中的预设二进制指令信息不匹配,则确定监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
在本可选方式中,利用了软件程序执行ShellCode模式的指令执行序列的安全检验方式。其中,ShellCode是一段用于利用软件漏洞而执行的代码。模块可为“ole32”、“jscript9”等模块,具体可根据实际业务需求确定。预设白名单中可包含预先通过收集正常软件程序执行ShellCode模式的指令执行序列中不属于任何模块的栈地址所对应的二进制指令信息。
例如,监控点事件的指令执行序列中存在多个不属于任何模块的栈地址,然后从这些栈地址中获取第一个出现的栈地址所对应的二进制指令信息进行白名单匹配。因为除了第一个出现的该情况栈地址以外,其他的栈地址虽然也不属于任何模块,但是很可能是无效地址,所以为了提高识别的准确性和效率,在本实施例中,可只选择多个不属于任何模块的栈地址中第一个出现的栈地址所对应的二进制指令信息进行白名单匹配。如果匹配不成功,采用非白即黑的原则,认为监控点事件的不完整指令执行序列很可能是由软件漏洞攻击事件导致的。
基于上述两种可选的原因分析方式,进一步的,在得到分析得到的原因结果时,可触发输出告警信息,用于提示导致监控点事件的指令执行序列不完整的原因信息。告警的方式可包括:文字、图片、音频、视频、灯光、振动等。以便及时提醒运维人员出现异常,并根据具体的攻击原因及时进行相应维护。
例如,如果本侧执行主体为客户端侧,可直接输出告警信息,以便提示测试人员出现异常;如果本侧执行主体为服务端侧,可向维护人员的客户端推送告警信息等。
205b、获取搜索到的正常模式栈特征所存的完整指令执行序列,以及完整指令执行序列之间的相对偏移。
206b、根据获取到的完整指令执行序列和相应的相对偏移,修复监控点事件不完整的指令执行序列。
通过应用上述本实施例方案,可适用于漏洞攻击手段检测及防护。通过记录同一指令序列正常栈空间特征,用于检测栈空间是否被破坏,并对被破坏的栈内存进行抢救式修复,达到一定的防护效果。并且还可以识别并检出程序栈空间被破坏的攻击手段,以便及时提醒运维人员出现异常,并根据具体的攻击原因及时进行相应维护。
进一步的,作为图1、图2所示方法的具体实现,本实施例提供了一种指令执行序列被破坏的防护装置,如图4所示,该装置包括:搜索模块31、获取模块32、修复模块33。
搜索模块31,可用于当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;
获取模块32,可用于获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;
修复模块33,用于根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列。
在具体的应用场景中,所述获取模块32,还可用于根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间;从所述当前栈内存空间中获取所述监控点事件的指令执行序列。
在具体的应用场景中,本装置还可包括:确定模块34;
确定模块34,可用于通过判断指令执行序列的最底层指令是否是线程初始化指令,确定所述监控点事件的指令执行序列是否完整。
在具体的应用场景中,本装置还可包括:收集模块35和生成模块36;
收集模块35,可用于收集样本监控点事件完整的样本指令执行序列,以及所述样本指令执行序列之间的相对偏移,以及所述样本监控点事件当时的栈内存空间大小;
生成模块36,可用于将所述样本指令执行序列、所述样本指令执行序列之间的相对偏移、所述样本监控点事件当时的栈内存空间大小作为特征,以所述样本监控点事件作为key进行映射保存,生成正常模式栈特征。
在具体的应用场景中,所述获取模块32,具体可用于按照所述监控点事件作为搜索key,并以所述当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
在具体的应用场景中,所述获取模块32,还可用于获取所述监控点事件的当前线程栈原始起始地址以及当前线程帧地址;
确定模块34,还可用于若所述当前线程帧地址不在与所述当前线程栈原始起始地址对应的范围内,则确定所述监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
在具体的应用场景中,所述获取模块32,还可用于若所述监控点事件的指令执行序列中存在不属于任何模块的栈地址,则查询与所述栈地址对应的二进制指令信息;
确定模块34,还可用于若所述二进制指令信息与预设白名单中的预设二进制指令信息不匹配,则确定所述监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
在具体的应用场景中,本装置还可包括:触发模块37;
触发模块37,可用于触发输出告警信息,用于提示导致所述监控点事件的指令执行序列不完整的原因信息。
需要说明的是,本实施例提供的一种指令执行序列被破坏的防护装置所涉及各功能单元的其它相应描述,可以参考图1、图2中的对应描述,在此不再赘述。
基于上述如图1、图2所示方法,相应的,本实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1、图2所示的指令执行序列被破坏的防护方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该待识别软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1、图2所示的方法,以及图4所示的虚拟装置实施例,为了实现上述目的,本实施例还提供了一种指令执行序列被破坏防护的实体设备,具体可以为个人计算机、服务器、智能手机、平板电脑、或者其它网络设备等,该实体设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1、图2所示的方法。
可选的,该实体设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种指令执行序列被破坏防护的实体设备结构并不构成对该实体设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理上述实体设备硬件和待识别软件资源的程序,支持信息处理程序以及其它待识别软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与信息处理实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现。通过应用本申请的技术方案,可适用于漏洞攻击手段检测及防护。通过记录同一指令序列正常栈空间特征,用于检测栈空间是否被破坏,并对被破坏的栈内存进行抢救式修复,达到一定的防护效果。并且还可以识别并检出程序栈空间被破坏的攻击手段,以便及时提醒运维人员出现异常,并根据具体的攻击原因及时进行相应维护。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (14)
1.一种指令执行序列被破坏的防护方法,其特征在于,包括:
当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;
获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;
根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列;
当所述监控点事件的指令执行序列完整时,将所述监控点事件作为样本监控点事件;
收集所述样本监控点事件完整的样本指令执行序列,以及所述样本指令执行序列之间的相对偏移,以及所述样本监控点事件当时的栈内存空间大小;
将所述样本指令执行序列、所述样本指令执行序列之间的相对偏移、所述样本监控点事件当时的栈内存空间大小作为特征,以所述样本监控点事件作为key进行映射保存,生成正常模式栈特征;
若检测到所述监控点事件的指令执行序列中存在不属于任何模块的多个栈地址,则从所述多个栈地址中查询第一个出现的栈地址对应的二进制指令信息;
获取预设白名单,若检测到所述第一个出现的栈地址对应的二进制指令信息与所述预设白名单中的预设二进制指令信息不匹配,则采用非白即黑的原则确定所述监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
2.根据权利要求1所述的方法,其特征在于,在当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈空间大小,搜索相关联的正常模式栈特征之前,所述方法还包括:
根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间;
从所述当前栈内存空间中获取所述监控点事件的指令执行序列。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
通过判断指令执行序列的最底层指令是否是线程初始化指令,确定所述监控点事件的指令执行序列是否完整。
4.根据权利要求1所述的方法,其特征在于,所述根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征,具体包括:
按照所述监控点事件作为搜索key,并以所述当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取所述监控点事件的当前线程栈原始起始地址以及当前线程帧地址;
若所述当前线程帧地址不在与所述当前线程栈原始起始地址对应的范围内,则确定所述监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
触发输出告警信息,用于提示导致所述监控点事件的指令执行序列不完整的原因信息。
7.一种指令执行序列被破坏的防护装置,其特征在于,包括:
搜索模块,用于当监控点事件的指令执行序列不完整时,根据所述监控点事件和当前栈内存空间大小,搜索相关联的正常模式栈特征;
获取模块,用于获取搜索到的所述正常模式栈特征所存的完整指令执行序列,以及所述完整指令执行序列之间的相对偏移;
修复模块,用于根据所述完整指令执行序列和所述相对偏移,修复不完整的所述指令执行序列;
所述装置还包括:确定模块、收集模块和生成模块;
所述确定模块,用于当所述监控点事件的指令执行序列完整时,将所述监控点事件作为样本监控点事件;
所述收集模块,用于收集样本监控点事件完整的样本指令执行序列,以及所述样本指令执行序列之间的相对偏移,以及所述样本监控点事件当时的栈内存空间大小;
所述生成模块,用于将所述样本指令执行序列、所述样本指令执行序列之间的相对偏移、所述样本监控点事件当时的栈内存空间大小作为特征,以所述样本监控点事件作为key进行映射保存,生成正常模式栈特征;
所述获取模块,还用于获取模块若检测到所述监控点事件的指令执行序列中存在不属于任何模块的多个栈地址,则从所述多个栈地址中查询第一个出现的栈地址对应的二进制指令信息;
所述确定模块,还用于获取预设白名单,若检测到所述第一个出现的栈地址对应的二进制指令信息与所述预设白名单中的预设二进制指令信息不匹配,则采用非白即黑的原则确定所述监控点事件的不完整指令执行序列是由软件漏洞攻击事件导致的。
8.根据权利要求7所述的装置,其特征在于,
所述获取模块,还用于根据监控点事件的当前栈基址以及栈顶指针,获取当前栈内存空间;
从所述当前栈内存空间中获取所述监控点事件的指令执行序列。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
确定模块,用于通过判断指令执行序列的最底层指令是否是线程初始化指令,确定所述监控点事件的指令执行序列是否完整。
10.根据权利要求8所述的装置,其特征在于,
所述获取模块,具体用于按照所述监控点事件作为搜索key,并以所述当前栈内存空间大小作为搜索条件,查询相关联的正常模式栈特征。
11.根据权利要求7所述的装置,其特征在于,所述装置还包括:确定模块;
所述获取模块,还用于获取所述监控点事件的当前线程栈原始起始地址以及当前线程帧地址;
所述确定模块,用于若所述当前线程帧地址不在与所述当前线程栈原始起始地址对应的范围内,则确定所述监控点事件的不完整指令执行序列是由堆喷攻击事件导致的。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
触发模块,用于触发输出告警信息,用于提示导致所述监控点事件的指令执行序列不完整的原因信息。
13.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至6中任一项所述的指令执行序列被破坏的防护方法。
14.一种指令执行序列被破坏的防护设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至6中任一项所述的指令执行序列被破坏的防护方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910755389.3A CN112395598B (zh) | 2019-08-15 | 2019-08-15 | 指令执行序列被破坏的防护方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910755389.3A CN112395598B (zh) | 2019-08-15 | 2019-08-15 | 指令执行序列被破坏的防护方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112395598A CN112395598A (zh) | 2021-02-23 |
CN112395598B true CN112395598B (zh) | 2024-04-19 |
Family
ID=74601756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910755389.3A Active CN112395598B (zh) | 2019-08-15 | 2019-08-15 | 指令执行序列被破坏的防护方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112395598B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272748B1 (en) * | 2004-03-17 | 2007-09-18 | Symantec Corporation | Method and apparatus to detect and recover from a stack frame corruption |
JP2008033951A (ja) * | 2007-08-13 | 2008-02-14 | Micronics Internatl Co Ltd | インサーキット・プログラミングのための障害の許容アーキテクチャ |
US8132159B1 (en) * | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
CN105069617A (zh) * | 2015-07-27 | 2015-11-18 | 飞天诚信科技股份有限公司 | 一种恢复不完整交易的方法和装置 |
US9443192B1 (en) * | 2015-08-30 | 2016-09-13 | Jasmin Cosic | Universal artificial intelligence engine for autonomous computing devices and software applications |
CN106228065A (zh) * | 2016-08-08 | 2016-12-14 | 武汉绿色网络信息服务有限责任公司 | 一种缓冲区溢出漏洞的定位方法与装置 |
CN108984328A (zh) * | 2017-05-31 | 2018-12-11 | 中兴通讯股份有限公司 | 一种堆栈回溯的方法及装置 |
CN109635562A (zh) * | 2018-12-11 | 2019-04-16 | 哈尔滨工程大学 | 一种面向内核栈溢出防御的指令修改虚拟平台执行方法 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273757A1 (en) * | 2004-06-07 | 2005-12-08 | Anderson Craig D | Methods, systems, and computer program products for summarizing operational behavior of a computer program |
JP5090661B2 (ja) * | 2006-04-12 | 2012-12-05 | 株式会社エヌ・ティ・ティ・ドコモ | ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法 |
US7673182B2 (en) * | 2006-06-22 | 2010-03-02 | International Business Machines Corporation | Method and apparatus for obtaining stack traceback data for multiple computing nodes of a massively parallel computer system |
US8595709B2 (en) * | 2009-12-10 | 2013-11-26 | Microsoft Corporation | Building an application call graph from multiple sources |
US20120331303A1 (en) * | 2011-06-23 | 2012-12-27 | Andersson Jonathan E | Method and system for preventing execution of malware |
US8839429B2 (en) * | 2011-11-07 | 2014-09-16 | Qualcomm Incorporated | Methods, devices, and systems for detecting return-oriented programming exploits |
CA2809516C (en) * | 2013-03-13 | 2016-11-08 | Khalid Nawaf Alharbi | Preventing stack buffer overflow attacks |
US9495159B2 (en) * | 2013-09-27 | 2016-11-15 | Intel Corporation | Two level re-order buffer |
US9767272B2 (en) * | 2014-10-20 | 2017-09-19 | Intel Corporation | Attack Protection for valid gadget control transfers |
US10007784B2 (en) * | 2015-03-27 | 2018-06-26 | Intel Corporation | Technologies for control flow exploit mitigation using processor trace |
US11010273B2 (en) * | 2017-06-28 | 2021-05-18 | Intel Corporation | Software condition evaluation apparatus and methods |
-
2019
- 2019-08-15 CN CN201910755389.3A patent/CN112395598B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7272748B1 (en) * | 2004-03-17 | 2007-09-18 | Symantec Corporation | Method and apparatus to detect and recover from a stack frame corruption |
US8132159B1 (en) * | 2004-07-23 | 2012-03-06 | Green Hills Software, Inc. | Post-execution software debugger with event display |
JP2008033951A (ja) * | 2007-08-13 | 2008-02-14 | Micronics Internatl Co Ltd | インサーキット・プログラミングのための障害の許容アーキテクチャ |
CN105069617A (zh) * | 2015-07-27 | 2015-11-18 | 飞天诚信科技股份有限公司 | 一种恢复不完整交易的方法和装置 |
US9443192B1 (en) * | 2015-08-30 | 2016-09-13 | Jasmin Cosic | Universal artificial intelligence engine for autonomous computing devices and software applications |
CN106228065A (zh) * | 2016-08-08 | 2016-12-14 | 武汉绿色网络信息服务有限责任公司 | 一种缓冲区溢出漏洞的定位方法与装置 |
CN108984328A (zh) * | 2017-05-31 | 2018-12-11 | 中兴通讯股份有限公司 | 一种堆栈回溯的方法及装置 |
CN109635562A (zh) * | 2018-12-11 | 2019-04-16 | 哈尔滨工程大学 | 一种面向内核栈溢出防御的指令修改虚拟平台执行方法 |
Non-Patent Citations (1)
Title |
---|
王工博 ; 蒋烈辉 ; 司彬彬 ; 董卫宇 ; .基于栈结构恢复的固件栈溢出漏洞相似性检测.信息工程大学学报.2019,(第02期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112395598A (zh) | 2021-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10387648B2 (en) | Ransomware key extractor and recovery system | |
US8621282B1 (en) | Crash data handling | |
US20060101128A1 (en) | System for preventing keystroke logging software from accessing or identifying keystrokes | |
US10121004B2 (en) | Apparatus and method for monitoring virtual machine based on hypervisor | |
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
US11777961B2 (en) | Asset remediation trend map generation and utilization for threat mitigation | |
US11809556B2 (en) | System and method for detecting a malicious file | |
US11762991B2 (en) | Attack kill chain generation and utilization for threat analysis | |
WO2015081791A1 (zh) | 内核级恶意软件查杀的方法和装置 | |
CN109815701B (zh) | 软件安全的检测方法、客户端、系统及存储介质 | |
CN112580047A (zh) | 工业恶意代码标记方法、设备、存储介质及装置 | |
CN113239364A (zh) | 一种检测漏洞利用的方法、装置、设备及存储介质 | |
CN109784051B (zh) | 信息安全防护方法、装置及设备 | |
CN112395598B (zh) | 指令执行序列被破坏的防护方法、装置及设备 | |
US20200412745A1 (en) | Detecting malicious threats via autostart execution point analysis | |
CN112351008B (zh) | 网络攻击分析方法、装置、可读存储介质及计算机设备 | |
CN107517226B (zh) | 基于无线网络入侵的报警方法及装置 | |
CN106446687B (zh) | 恶意样本的检测方法及装置 | |
CN112395594B (zh) | 指令执行序列的处理方法、装置及设备 | |
CN112953895B (zh) | 一种攻击行为检测方法、装置、设备及可读存储介质 | |
CN112395609B (zh) | 应用层shellcode的检测方法及装置 | |
CN113646763B (zh) | shellcode的检测方法及装置 | |
Carrier | Detecting obfuscated malware using memory feature engineering | |
Singh et al. | Digital Forensics and Cybersecurity Tools | |
CN112395637A (zh) | 数据库防护方法及装置、存储介质、计算机设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |