CN108694318A - 空操作雪橇探测方法及其装置 - Google Patents
空操作雪橇探测方法及其装置 Download PDFInfo
- Publication number
- CN108694318A CN108694318A CN201810255259.9A CN201810255259A CN108694318A CN 108694318 A CN108694318 A CN 108694318A CN 201810255259 A CN201810255259 A CN 201810255259A CN 108694318 A CN108694318 A CN 108694318A
- Authority
- CN
- China
- Prior art keywords
- nothing operation
- sled
- memory block
- block
- operation sled
- 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.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 65
- 238000012544 monitoring process Methods 0.000 claims abstract description 11
- 230000006870 function Effects 0.000 claims description 23
- 238000000034 method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 8
- 230000008569 process Effects 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 101150083561 nop-1 gene Proteins 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007921 spray Substances 0.000 description 1
- 239000013589 supplement Substances 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- 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/552—Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30079—Pipeline control instructions, e.g. multicycle NOP
-
- 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/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
-
- 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
-
- 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
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- 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/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种空操作雪橇探测方法及其装置。本发明一实施例的空操作雪橇探测方法包括:监测步骤,针对分配在计算装置的存储器中的多个跟踪对象存储块,将已发现的空操作(No‑OPeration)雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的空操作雪橇特征值;以及探测步骤,利用所述多个跟踪对象存储块中的至少一部分存储块的空操作雪橇特征值和所述至少一部分存储块的存储块长度来确定是否产生了空操作雪橇。
Description
技术领域
本发明涉及一种空操作雪橇探测方法及其装置。更详细而言,涉及一种如下的空操作雪橇探测方法及其装置,即该方法及装置即使在空操作雪橇的图案为多种多样的情况下,也能够以高准确度探测散布(SPRAY)到堆(HEAP)存储器中的空操作雪橇(NOP,NOOperation Sled),并且也不会对探测要求过大的计算负荷。
背景技术
顾名思义,空操作(NOP,NO Operation)指令是指不执行任何操作的指令。按在不同的CPU架构下,由不同的操作码(OPCODE)来定义NOP指令。例如,在英特尔x86系列的CPU(中央处理器)中,0x90被定义为NOP。
简单形式的NOP雪橇由上述NOP级联而成。因此在这种情况下,无论从哪一起始地址运行所述NOP雪橇,运行指针(程序计数器或个人电脑PC)最终只会移动到NOP雪橇结束地址,而不会执行任何操作。复杂形式的NOP雪橇使用由多个字节组成的指令中的如NOP那样不会对程序操作带来影响的、NOP等效指令(NOP equivalent instruction)。由NOP等效指令构成的NOP雪橇无论在任何字节偏移下运行,也以解释成NOP等效指令的方式进行操作。在该情况下,无论从哪一起始地址运行所述NOP雪橇,运行指针最终还是移动到NOP雪橇结束地址。从这种观点来看,能够理解运行指针滑动(slide)这一概念。
如果紧接在NOP雪橇之后写入(write)运行对象代码,则无论从存在所述NOP雪橇的区域内的哪一区域开始运行,最终都能保证所述运行对象代码的运行。当黑客能够将程序的运行指针操作到存储器中的任意地址时,为了提高运行指针安置在所述NOP雪橇区域内的概率,将所述NOP雪橇写入到存储器的多个部分,并且在其后附加恶意代码,这一做法为广为人知的恶意代码运行方法。
因此,为了事先阻断或检测恶意代码的运行,重要的是检测NOP是否被写入到存储器上。但是,由于NOP雪橇可能由非常多样的图案组成,因此很难准确地检测写入到存储器上的数据是否为NOP雪橇。
专利文献
美国授权专利第9,438,623号
美国公开专利第2010-0205674号
发明内容
本发明所要解决的技术问题是提供一种准确地探测多种结构的NOP雪橇的方法及执行该方法的计算装置。
本发明所要解决的技术问题是提供一种迅速地探测多种结构的NOP雪橇的方法及执行该方法的计算装置。
本发明所要解决的另一技术问题是提供一种如下的方法及执行该方法的计算装置,该方法为了探测写入(write)到存储器的一些列操作是否相当于NOP雪橇,在不运行所述一系列操作的情况下也准确地探测数据。
本发明的技术问题并不限定于以上所提的技术问题,本领域技术人员能够从下面的记载中明确理解没有提到的其他技术问题。
为了解决上述技术问题,本发明的一实施例的NOP雪橇探测方法可包括:监测步骤,计算装置针对分配在所述计算装置的存储器中的多个跟踪对象存储块,将由已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的NOP雪橇特征值;以及探测步骤,所述计算装置利用所述多个跟踪对象存储块中的至少一部分存储块的NOP雪橇特征值和所述至少一部分存储块的存储块长度来确定是否产生了NOP雪橇。
在一实施例中,所述NOP雪橇探测方法在所述监测步骤之前可进一步包括以下步骤:响应于存储器分配请求的调用,针对所述存储器分配请求运行事先设置的钩子回调函数(hooking callback function),运行所述钩子回调函数的步骤可包括:根据所述存储器分配请求,对已分配的存储区域进行初始化;以及将初始化后的所述存储区域注册为所述多个跟踪对象存储块中的一个存储块。
在一实施例中,所述监测步骤可包括:针对所述多个跟踪对象存储块,收集所述已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案被连续发现的长度,并且将收集到的所述长度中的最长连续的长度确定为所述跟踪对象存储块的NOP雪橇特征值。
在一实施例中,所述监测步骤可包括:针对所述多个跟踪对象存储块,从各个跟踪对象存储块的起始地址或自所述起始地址起第四临界值以内的地址监测各个所述跟踪对象存储块,并且将所述已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案被连续发现的长度确定为所述跟踪对象存储块的NOP雪橇特征值。
在一实施例中,所述探测步骤可包括:将所述多个跟踪对象存储块中的NOP雪橇特征值为第二临界值以上的跟踪对象存储块确定为有效存储块;以及利用所述有效存储块的NOP雪橇特征值及所述有效存储块的存储块长度来确定是否产生了所述NOP雪橇。
为了解决上述技术问题,本发明的一实施例的NOP雪橇探测装置可包括:处理器;以及存储器,用于加载(Load)由所述处理器执行的计算机程序,所述计算机程序在由所述处理器运行时使得所述处理器执行至少一个指令,所述计算机程序包括:用于针对分配在所述存储器中的多个跟踪对象存储块,将已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的NOP雪橇特征值的指令;以及用于利用所述多个跟踪对象存储块中的至少一部分存储块的NOP雪橇特征值和所述至少一部分存储块的存储块长度来确定是否产生了NOP雪橇的指令。
为了解决上述技术问题,本发明的一实施例的NOP雪橇探测装置可包括:处理器;以及存储器,用于加载(Load)由所述处理器执行的计算机程序,所述计算机程序在由所述处理器运行时使得所述处理器执行至少一个指令,所述计算机程序包括:用于对所述存储器的存储区域进行初始化的指令;用于将初始化后的所述存储区域注册为多个跟踪对象存储块的指令;用于针对所述多个跟踪对象存储块,将已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的NOP雪橇特征值的指令;用于利用所述多个跟踪对象存储块中的至少一部分存储块的NOP雪橇特征值和所述至少一部分存储块的存储块长度来探测是否产生了NOP雪橇的指令;以及用于响应于探测到所述NOP雪橇的产生,阻断与探测到的所述NOP雪橇对应的进程运行的指令。
附图说明
图1是本发明的一实施例的具备NOP雪橇探测功能的计算装置的结构图。
图2是表示在本发明的几种实施例中成为探测对象的NOP雪橇的示例的图。
图3至图4是本发明的另一实施例的NOP雪橇探测方法的顺序图。
图5a是表示在发明的几种实施例中参照的已发现的NOP雪橇图案的示例的图。
图5b至图5e是用于说明发现NOP雪橇图案的位置及根据NOP雪橇图案的级联长度来分类各个跟踪对象存储块的示例的图。
图6是用于进一步详细说明图4的局部操作的顺序图。
具体实施方式
下面,参照附图对本发明的优选实施例进行详细说明。参照附图的同时参照详细后述的实施例,本发明的优点及特征以及实现这些的方法将会明确。但是,本发明并不限定于以下所公开的实施例,而是可以以不同的多种方式实现,本实施例仅用于完整地公开本发明,并且为了向本发明所属技术领域的技术人员完整地告知本发明的范围而提供的,本发明仅由权利要求的范畴定义。在说明书全文中相同的附图标记指相同的结构要素。
如果没有其他定义,则在本说明书中使用的所有用语(包括技术用语及科学用语)可以以本发明所属技术领域的技术人员共同理解的含义使用。另外,在通常使用的词典中定义的用语只要没有明确的特别定义,就不能理想地或过度地解释。在本说明书中使用的用语用于说明实施例,并不旨在限制本发明。在本说明书中,只要在句子中未特别提到,单数形式就可以包括复数形式。
下面,参照附图对本发明的几种实施例进行说明。
图1是本发明的一实施例的具备NOP雪橇探测功能的计算装置的结构图。以下,参照图1对本实施例的具备NOP雪橇探测功能的计算装置(以下,称为“NOP雪橇探测装置”)的结构及操作进行说明。
本实施例的NOP雪橇探测装置100包括处理器104、网络接口106、贮存器108、存储器110及系统总线102。其中,该系统总线102用于中继处理器104、网络接口106、贮存器108和存储器110之间的数据收发。存储器110为RAM(Random Access Memory,随机存取存储器)。
在贮存器108中存储有NOP雪橇探测用软件数据(例如,所述NOP雪橇探测用软件的二进制文件)。在贮存器108中可进一步存储有关于已发现的NOP雪橇图案的数据。
响应于NOP雪橇探测装置100的用户指令输入或已定义的触发(trigger)的产生,所述NOP雪橇探测用软件数据被加载到存储器110。在图1中,由NOP雪橇探测用代码1182来表示加载到存储器110的所述NOP雪橇探测用软件数据。NOP雪橇探测用代码1182例如可被加载到存储器110的代码(CODE)区118。在图1的与存储器110有关的图示中反映了如下情况:即,NOP雪橇探测装置100的操作系统(Operating System;OS)可将存储器110划分为栈区112、堆区114、数据区116及代码区118来操作。
在图1中图示了在存储器110的代码区118中加载有恶意代码(malicious code)1180。在本说明书中,恶意代码1180在存储器110中写入(write)NOP雪橇,并且紧接在已写入的NOP雪橇之后级联(concatenation)并写入恶意代码1180所要运行的操作(以下,称为“壳代码”),从而在没有NOP雪橇探测装置100的用户指令的情况下运行所述壳代码,或者在违反所述用户的意图的情况下运行所述壳代码。在这一点上恶意代码1180表现为“恶意”的代码。
恶意代码1180可事先存储在贮存器108,并且在满足特定触发时被加载到存储器110,或者恶意代码1180可通过网络接口106从外部装置接收并直接加载到存储器110。
为了写入NOP雪橇,恶意代码1180可通过存储器分配请求接受所分配的一个以上的存储块。所述存储器分配请求可以是所需要的存储器尺寸被收纳为参数的存储器分配请求函数。所述存储器分配请求函数例如为c语言的malloc()函数或windows API(windows应用程序接口)的HeapAlloc()函数。malloc()函数在堆区114中确保被请求尺寸的空间,并且将确保的空间分配给调用malloc()函数的进程。在图1中图示了分配在恶意代码1180的六个存储块1140、1142、1144、1146、1148、1149。恶意代码1180在已分配的存储块中写入NOP雪橇及直接级联到NOP雪橇末端的壳代码。
NOP雪橇探测用代码1182探测在分配在恶意代码1180的存储块1140、1142、1144、1146、1148、1149中是否写入有NOP雪橇。下面,示意地记载NOP雪橇探测用代码1182的操作。
第一操作:针对存储器分配请求设置钩子回调函数(hooking callbackfunction)。其结果,当恶意代码1180调用所述存储器分配请求时,所述钩子回调函数会伴随该调出而调用。所述钩子回调函数包含以下例程:对根据所述存储器分配请求分配的存储区域进行初始化;以及将初始化后的所述存储区域注册为所述多个跟踪对象存储块中的一个存储块。对所述存储区域进行初始化是指例如将所述存储区域均擦除成初始状态。通过对所述存储区域进行初始化,能够防止所述存储区域的现有数据作为噪音发挥作用而误探测NOP雪橇。限于根据所述存储器分配请求分配的存储块的尺寸为第一临界值以上的情况,所述钩子回调函数可以将存储区域注册为所述多个跟踪对象存储块中的一个存储块。
在一实施例中,不仅对存储器分配请求设置各个钩子回调函数,还对存储器再分配请求或存储器释放(FREE)请求也设置各自的钩子回调函数,从而能够更精密地监测恶意代码与存储器有关的活动。
第二操作:根据已指定的触发的产生,周期性/非周期性地执行NOP雪橇探测操作。第二操作包括以下操作:针对多个跟踪对象存储块,将已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案最长连续的长度确定为所述存储块的NOP雪橇特征值;在所述多个跟踪对象存储块中选择NOP雪橇特征值为第二临界值以上的有效存储块;以及利用所述有效存储块的NOP雪橇特征值及存储块长度来确定是否产生了NOP雪橇。
以上,对本实施例的NOP雪橇探测装置的结构及操作进行了说明。接下来对本发明的另一实施例的NOP雪橇探测方法进行说明。当然,在说明所述NOP雪橇探测方法时提出的几种技术特征也可以应用到所述NOP雪橇探测装置中。即,可通过以下说明的关于NOP雪橇探测方法的说明来更详细地补充关于所述NOP雪橇探测装置的说明。
为了正式说明所述NOP雪橇探测方法,且为了帮助理解,参照图2对能够在本发明的几种实施例中检测的NOP雪橇进行说明。
如已提到的那样,NOP雪橇为如下的数据:i)由多个指向NOP操作的1字节的操作级联而成的数据(第一种情形);ii)多字节数据,其被构造为无论从NOP雪橇区域内的哪一起始地址运行,运行指针最终还是移动到NOP雪橇结束地址(第二种情形)。
在图2中图示了在分配在存储器中的存储块200中写入有NOP雪橇210及紧接在NOP雪橇210之后级联的壳代码220。图2中图示的NOP雪橇210为第二种情形的NOP雪橇。下面说明其理由。
当目前加载于存储器中的应用程序(下称“用户应用程序”)接入NOP雪橇210的起始地址(下称“START-OFFSET”)并试图运行操作时,会依次运行CMP、SUB、ADD及AAA指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+1BYTE(字节)的地址并试图运行操作时,会依次运行XOR、OR及AND指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+2BYTE的地址并试图运行操作时,会依次运行SUB、ADD及AAA指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+3BYTE的地址并试图运行操作时,会依次运行INC、ADD及AAA指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+4BYTE的地址并试图运行操作时,会依次运行ADD及AAA指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+5BYTE的地址并试图运行操作时,会运行PUSH指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+6BYTE的地址并试图运行操作时,会依次运行OR及AND指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+7BYTE的地址并试图运行操作时,会依次运行FWAIT及AND指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+8BYTE的地址并试图运行操作时,会运行AND指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+9BYTE的地址并试图运行操作时,会运行AAA指令之后,最终运行壳代码220。当所述用户应用程序接入START-OFFSET+10BYTE的地址并试图运行操作时,会运行壳代码220。
如上所述,无论将(START-OFFSET,START-OFFSET+10BYTE)的地址区域中的哪一区域当作带来操作的区域的起始地址,最终还是运行壳代码220。但是,图2所示的NOP雪橇只不过是第二种情形的NOP雪橇的一例。虽然规定长度的第二种情形NOP雪橇也可以以多种方式存在,但也可以生成多种长度的第二种情形NOP雪橇。考虑到这一点,几乎无法确保能够按各种长度制作的所有第二种情形NOP雪橇。
为了解决这种问题,本申请的发明人提出如下的方案:该方案在应用基于N-GRAM(N元语言模型)的图案匹配方法的情况下,能够快速准确地探测第二种情形NOP雪橇。在经过无数次测试及模拟之后,发现了在N-GRAM中尤其是基于2字节的bi-GRAM(二元语言模型)的图案匹配方法特别有效。
本申请的发明人通过汇集由NOP雪橇图案生成器生成的第二种情形NOP雪橇,并且汇集在已汇集的多个NOP雪橇中发现的bi-GRAM,从而确保了在第二种情形NOP雪橇图案中发现的bi-GRAM。在几种实施例中,可通过N-GRAM图案与已确保的所述bi-GRAM之间的匹配来执行NOP雪橇探测。下面,参照图3至图6对本发明的一实施例的NOP雪橇探测方法进行更详细说明。
图3至图4是所述NOP雪橇探测方法的顺序图。可以理解图3至图4所示的顺序图是指根据图1的NOP雪橇探测用代码的运行由NOP雪橇探测装置运行的各个操作。
首先,参照图3进行说明。运行关于存储器分配请求的钩子设置(S100)。所述存储器分配请求例如为malloc()函数。因此,所述钩子设置例如为针对特定应用程序编程接口(API)设置的钩子。在成功完成钩子设置(S100)的情况下,响应于恶意代码为了写入NOP雪橇调用存储器分配请求(S102),调用钩子回调函数(S104)。
所述钩子回调函数对根据存储器分配请求分配的存储块进行初始化(S106),并且将存储块注册为“跟踪对象存储块”(S110)。所述跟踪对象存储块是指在以后周期性或非周期性地执行的探测例程中成为监测对象的存储块。在运行所述钩子回调函数中包含的所有例程之后,也可通过使控件(control)返回,来运行存储器分配请求的例程(S112)。
在一实施例中,可以只将根据存储器分配请求分配的存储块中的一部分存储块注册为所述跟踪对象存储块。注册为所述跟踪对象存储块的存储块的基准可以是存储块的尺寸。此时,可以只将尺寸为第一临界值以上的存储块注册为所述跟踪对象存储块(S110)。
所述第一临界值可以是固定数据尺寸。所述第一临界值可以是1千字节(KiloByte)。所述第一临界值也可以是根据情况动态变化的数据尺寸。例如,所述第一临界值可以是相当于存储器分配请求的平均请求尺寸的后面百分之几的值。
该注册为所述跟踪对象存储块的存储块的基准也可以是与调用所述存储器分配请求的进程相关的信息。例如,也可以仅在进程表中包含的与调用所述存储器分配请求的进程相关的信息符合已指定的基准的情况下,将根据所述进程所调用的存储器分配请求分配的存储块注册为所述跟踪对象存储块。
与图3所示的情况不同,也可以在调用钩子回调函数之后(S104),根据存储器分配请求分配的存储块的尺寸未达到所述第一临界值的情况下,所述钩子回调函数直接返回(S112)。
参照图4进行说明。假设恶意代码对跟踪对象存储块中的至少一个存储块执行NOP雪橇写入(S114)。
在产生已指定的触发时(S116),运行NOP雪橇探测例程。所述已指定的触发会周期性或非周期性地产生。例如,所述已指定的触发可通过规定周期的计时器产生,或者在存储器分配请求的次数达到已指定的个数(例如,100件)或者存储器分配请求所请求的尺寸的总计尺寸达到已指定的尺寸(例如,100兆字节)的情况下产生。
所述NOP雪橇探测例程包括以下操作:针对各个跟踪对象存储块确定NOP雪橇特征值(S120);在跟踪对象存储块中确定有效存储块(S122);以及确定是否产生了NOP雪橇(S124)。下面,对各个操作进行更详细说明。
跟踪对象存储块的NOP雪橇特征值是指已发现的NOP(No-OPeration)雪橇图案中的一个以上的图案在所述跟踪对象存储块内最长连续的长度。所述已发现的NOP雪橇图案是指通过前后级联而构成NOP雪橇的数据片段。从这种方面来看,各个NOP雪橇图案为N-GRAM。图5a是已发现的NOP雪橇图案的一例。图5a表示作为bi-GRAM的NOP雪橇图案300。
下面,参照图5b至图5e对能够应用到如下操作中的几种实施例进行说明,其中,这些操作为:针对各个跟踪对象存储块确定NOP雪橇特征值的操作(S120);以及确定跟踪对象存储块中的有效存储块的操作(S122)。
在一实施例中,可以只将所述跟踪对象存储块中的所述NOP雪橇特征值为第二临界值以上的跟踪对象存储块选择为所述有效存储块。
本发明的发明人经过长期执行的模拟工作,发现了当所述第二临界值设定为20字节以上且30字节以下的值时,能够准确地实现NOP雪橇探测。特别是,发现了当所述第二临界值为25字节时,能够最准确地实现NOP雪橇探测。下面,假设所述第二临界值为25字节的情况进行说明。
在一实施例中,所述NOP雪橇特征值是指从存储块的起始地址起所述“已发现的NOP雪橇图案300中的一个以上的图案最长连续的长度”。
在图5b所示的第一跟踪对象存储块302的情况下,从第一跟踪对象存储块302的起始地址级联有共四个bi-GRAM NOP雪橇图案。即,第一跟踪对象存储块302的NOP雪橇特征值为8字节,8字节小于所述第二临界值。因此,第一跟踪对象存储块302未被选择为有效存储块。另外,在图5c所示的第二跟踪对象存储块304的情况下,从第二跟踪对象存储块304的起始地址级联有共100个bi-GRAM NOP雪橇图案(虽然在图5c中未准确地分开图示100个NOP雪橇图案,但假设省略图示级联有100个NOP雪橇图案的情况)。即,第二跟踪对象存储块304的NOP雪橇特征值为200字节,200字节为所述第二临界值以上。因此,第二跟踪对象存储块304被选择为有效存储块。
在一实施例中,所述NOP雪橇特征值是指:针对存储块,从各存储块的起始地址或自所述起始地址起第四临界值以内的地址开始,所述已发现的NOP雪橇图案中的一个以上的图案被连续发现的长度。本实施例是针对以下情况提出的:恶意代码在获得分配的存储块的最前面的几个字节中故意未记载NOP雪橇图案,以规避NOP雪橇图案探测。
例如,所述第四临界值可以是3字节以上且10字节以下的自然数。以所述第四临界值为4字节的情况为前提,对图5d的关于第三跟踪对象存储块306的处理方法进行说明。由于在图5a所示的NOP雪橇图案300中未包含“0000”,因此在第三跟踪对象存储块306的起始地址中未记载NOP雪橇图案。但是,从第三跟踪对象存储块306的起始地址+3字节的部位起级联有100个NOP雪橇图案300中的一个以上的图案(虽然在图5d中未准确地分开图示100个NOP雪橇图案,但假设省略图示级联有100个NOP雪橇图案)。即,第三跟踪对象存储块306的NOP雪橇特征值为200字节,200字节为所述第二临界值以上。因此,第三跟踪对象存储块306被选择为有效存储块。
在一实施例中,针对存储块,汇集所述已发现的NOP雪橇图案中的一个以上的图案被连续发现的长度,并且将所述已发现的长度中的最长的长度确定为所述存储块的NOP特征值。在图5e所示的第n跟踪对象存储块308中存在500字节长度的NOP雪橇连续区间308a、150字节长度的NOP雪橇连续区间308b以及170字节长度的NOP雪橇图案连续区间308c。在该情况下,第n跟踪对象存储块308的NOP雪橇特征值为最长连续的长度500。
参照图6,对只利用所述有效存储块的NOP雪橇特征值及存储块长度确定是否产生了NOP雪橇的操作进行详细说明。另行选择所述有效存储块的理由是为了在NOP雪橇判断过程中排除检测到少量NOP雪橇图案的一部分存储块。
首先,通过合计所有有效存储块的NOP雪橇特征值而计算N值(S1240),并且通过合计所有有效存储块的存储块长度而计算M值(S1242)。
在N/M值为第三临界值以上的情况下(S1244),确定为产生了NOP雪橇(S1246),并且运行警告消息输出等的后续例程。在N/M值小于第三临界值的情况下(S1244),确定为未产生NOP雪橇(S1248)。
本发明的发明人经过模拟及测试的结果发现所述第三临界值可具有0.1至0.9之间的宽范围。这表示以N/M值为基准的NOP雪橇探测方法非常高效地分离产生了NOP雪橇的情况和未产生NOP雪橇的情况。
到目前为止说明的本发明的实施例的方法可通过以计算机可读代码实现的计算机程序的运行来执行。所述计算机程序可通过互联网等网络从第一计算装置被传送到第二计算装置并被安装在所述第二计算装置中,并且由此能够在所述第二计算装置中使用。所述第一计算装置和所述第二计算装置均包括服务器装置、属于用于云服务的服务器池中的物理服务器和如台式个人电脑的固定式计算装置。
所述计算机程序也可以存储在数字只读光盘存储器(DVD-ROM)或快闪存储器装置等的存储介质中。
以上参照附图对本发明的实施例进行了说明,但本发明所属技术领域的技术人员应能理解,本发明可在不改变本发明的技术思想或必要特征的情况下以其他具体方式实施。因此,应理解以上所述的实施例在所有方面为示例性的而不是限定性的。
Claims (16)
1.一种空操作雪橇探测方法,包括:
监测步骤,计算装置针对分配在所述计算装置的存储器中的多个跟踪对象存储块,将已发现的空操作雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的空操作雪橇特征值;以及
探测步骤,所述计算装置利用所述多个跟踪对象存储块中的至少一部分存储块的空操作雪橇特征值和所述至少一部分存储块的存储块长度来确定是否产生了空操作雪橇。
2.根据权利要求1所述的空操作雪橇探测方法,其中,
在所述监测步骤之前进一步包括:
响应于存储器分配请求的调用,针对所述存储器分配请求运行事先设置的钩子回调函数,
运行所述钩子回调函数的步骤包括:
根据所述存储器分配请求,对已分配的存储区域进行初始化;以及
将初始化后的所述存储区域注册为所述多个跟踪对象存储块中的一个存储块。
3.根据权利要求2所述的空操作雪橇探测方法,其中,
根据所述存储器分配请求,对已分配的存储区域进行初始化的步骤包括:
通过所述初始化,防止写入到所述已分配的存储区域中的数据被识别为所述已发现的空操作雪橇图案中的一个图案。
4.根据权利要求2所述的空操作雪橇探测方法,其中,
将初始化后的所述存储区域注册为所述多个跟踪对象存储块中的一个存储块的步骤包括:
响应于判断所述存储器分配请求所请求的存储器尺寸为第一临界值以上,将初始化后的所述存储区域注册为所述多个跟踪对象存储块中的一个存储块。
5.根据权利要求1所述的空操作雪橇探测方法,其中,
所述监测步骤包括:
针对所述多个跟踪对象存储块,收集所述已发现的空操作雪橇图案中的一个以上的图案被连续发现的长度,并且将收集到的所述长度中的最长连续的长度确定为所述跟踪对象存储块的空操作雪橇特征值。
6.根据权利要求1所述的空操作雪橇探测方法,其中,
所述监测步骤包括:
针对所述多个跟踪对象存储块,从各个跟踪对象存储块的起始地址或自所述起始地址起第四临界值以内的地址监测各个所述跟踪对象存储块,并且将所述已发现的空操作雪橇图案中的一个以上的图案被连续发现的长度确定为所述跟踪对象存储块的空操作雪橇特征值。
7.根据权利要求1所述的空操作雪橇探测方法,其中,
所述探测步骤包括:
将所述多个跟踪对象存储块中的空操作雪橇特征值为第二临界值以上的跟踪对象存储块确定为有效存储块;以及
利用所述有效存储块的空操作雪橇特征值及所述有效存储块的存储块长度来确定是否产生了所述空操作雪橇。
8.根据权利要求7所述的空操作雪橇探测方法,其中,
所述第二临界值为20字节以上且30字节以下。
9.根据权利要求8所述的空操作雪橇探测方法,其中,
所述第二临界值为25字节。
10.根据权利要求7所述的空操作雪橇探测方法,其中,
利用所述有效存储块的空操作雪橇特征值及所述有效存储块的存储块长度来确定是否产生了所述空操作雪橇的步骤包括:
利用合计所有所述有效存储块的空操作雪橇特征值后的第一值和合计所有所述有效存储块的存储块长度后的第二值来确定是否产生了所述空操作雪橇。
11.根据权利要求10所述的空操作雪橇探测方法,其中,
利用合计所有所述有效存储块的空操作雪橇特征值后的第一值和合计所有所述有效存储块的存储块长度后的第二值来确定是否产生了所述空操作雪橇的步骤包括:
响应于判断将所述第一值除以所述第二值的值为第三临界值以上,确定产生了所述空操作雪橇。
12.根据权利要求1所述的空操作雪橇探测方法,其中,
所述已发现的空操作雪橇图案以N元语言模型为基础构成,
所述N为2以上的自然数。
13.根据权利要求12所述的空操作雪橇探测方法,其中,
所述已发现的空操作雪橇图案以二元语言模型为基础构成。
14.根据权利要求1所述的空操作雪橇探测方法,进一步包括:
响应于确定产生了所述空操作雪橇,阻断与产生的所述空操作雪橇对应的进程的运行。
15.一种空操作雪橇探测装置,包括:
处理器;以及
存储器,用于加载由所述处理器执行的计算机程序,
所述计算机程序在由所述处理器运行时使得所述处理器执行至少一个指令,
所述计算机程序包括:
用于针对分配在所述存储器中的多个跟踪对象存储块,将已发现的空操作雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的空操作雪橇特征值的指令;以及
用于利用所述多个跟踪对象存储块中的至少一部分存储块的空操作雪橇特征值和所述至少一部分存储块的存储块长度来确定是否产生了空操作雪橇的指令。
16.一种空操作雪橇探测装置,包括:
处理器;以及
存储器,用于加载由所述处理器执行的计算机程序,
所述计算机程序在由所述处理器运行时使得所述处理器执行至少一个指令,
所述计算机程序包括:
用于对所述存储器的存储区域进行初始化的指令;
用于将初始化后的所述存储区域注册为多个跟踪对象存储块的指令;
用于针对所述多个跟踪对象存储块,将已发现的空操作雪橇图案中的一个以上的图案最长连续的长度确定为所述跟踪对象存储块的空操作雪橇特征值的指令;
用于利用所述多个跟踪对象存储块中的至少一部分存储块的空操作雪橇特征值和所述至少一部分存储块的存储块长度来探测是否产生了空操作雪橇的指令;以及
用于响应于探测到所述空操作雪橇的产生,阻断与探测到的所述空操作雪橇对应的进程运行的指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0044057 | 2017-04-05 | ||
KR1020170044057A KR102347777B1 (ko) | 2017-04-05 | 2017-04-05 | Nop 슬레드 탐지 방법 및 그 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108694318A true CN108694318A (zh) | 2018-10-23 |
Family
ID=63710971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810255259.9A Pending CN108694318A (zh) | 2017-04-05 | 2018-03-23 | 空操作雪橇探测方法及其装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180293072A1 (zh) |
KR (1) | KR102347777B1 (zh) |
CN (1) | CN108694318A (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321451B2 (en) * | 2019-05-15 | 2022-05-03 | Blackberry Limited | Method and system for detection of post compilation modification of binary images |
US11436132B2 (en) | 2020-03-16 | 2022-09-06 | International Business Machines Corporation | Stress test impact isolation and mapping |
US11593256B2 (en) * | 2020-03-16 | 2023-02-28 | International Business Machines Corporation | System testing infrastructure for detecting soft failure in active environment |
US11609842B2 (en) * | 2020-03-16 | 2023-03-21 | International Business Machines Corporation | System testing infrastructure for analyzing and preventing soft failure in active environment |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100205674A1 (en) * | 2009-02-11 | 2010-08-12 | Microsoft Corporation | Monitoring System for Heap Spraying Attacks |
US9135405B2 (en) * | 2011-05-26 | 2015-09-15 | Carnegie Mellon University | Automated exploit generation |
KR101367992B1 (ko) * | 2012-09-10 | 2014-02-27 | 주식회사 인프라웨어테크놀러지 | NOP sled 탐지를 통한 힙스프레이 해킹공격 차단 방법, 그리고 이를 위한 힙스프레이 해킹공격 차단 프로그램을 기록한 컴퓨터로 판독가능한 기록매체 |
US9904792B1 (en) * | 2012-09-27 | 2018-02-27 | Palo Alto Networks, Inc | Inhibition of heap-spray attacks |
US9438623B1 (en) | 2014-06-06 | 2016-09-06 | Fireeye, Inc. | Computer exploit detection using heap spray pattern matching |
-
2017
- 2017-04-05 KR KR1020170044057A patent/KR102347777B1/ko active IP Right Grant
-
2018
- 2018-03-23 US US15/933,522 patent/US20180293072A1/en not_active Abandoned
- 2018-03-23 CN CN201810255259.9A patent/CN108694318A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20180112973A (ko) | 2018-10-15 |
KR102347777B1 (ko) | 2022-01-05 |
US20180293072A1 (en) | 2018-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108694318A (zh) | 空操作雪橇探测方法及其装置 | |
CN105138903B (zh) | 一种基于ret指令与jmp指令的rop攻击检测方法 | |
KR101715759B1 (ko) | 멀티코어 환경에서의 악성코드 분석 장치 및 방법 | |
CN111179066B (zh) | 业务数据的批量处理方法、装置、服务器和存储介质 | |
CN107544902B (zh) | 程序测试方法、装置和设备 | |
US9866440B2 (en) | Recording medium, handling method generation method, and information processing apparatus | |
CN106789837B (zh) | 网络异常行为检测方法及检测装置 | |
US10684942B2 (en) | Selective application testing | |
CN112596964A (zh) | 磁盘故障的预测方法及装置 | |
CN109165201B (zh) | 日志的归并方法及终端设备 | |
CN114826793B (zh) | 一种rop链的检测方法、装置及介质 | |
US8407187B2 (en) | Validating files using a sliding window to access and correlate records in an arbitrarily large dataset | |
CN115168509A (zh) | 风控数据的处理方法及装置、存储介质、计算机设备 | |
KR20220071895A (ko) | 오토 스케일링 방법, 장치 및 시스템 | |
CN113656314A (zh) | 压力测试处理方法及装置 | |
US10176074B2 (en) | Computed call/jump target resolution via behavior computation | |
Lin | Tackling Variable-length Sequences with High-cardinality Features in Cyber-attack Detection | |
WO2011151419A1 (en) | Test operation | |
US20160179487A1 (en) | Method ranking based on code invocation | |
Ramesh et al. | Pravega: Performance impact analysis with Connection Pooling | |
US20210397498A1 (en) | Information processing apparatus, control method, and program | |
CN113360356B (zh) | 阅读作弊行为的识别方法、计算设备及计算机存储介质 | |
US9262251B1 (en) | Detecting memory failures in computing systems | |
US20240054074A1 (en) | Computer-readable recording medium storing information processing program, information processing method, and information processing device | |
US11500560B2 (en) | Method to suggest best SCM configuration based on resource proportionality in a de-duplication based backup storage |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20181023 |
|
WD01 | Invention patent application deemed withdrawn after publication |