CN102054149B - 一种恶意代码行为特征提取方法 - Google Patents

一种恶意代码行为特征提取方法 Download PDF

Info

Publication number
CN102054149B
CN102054149B CN200910237422XA CN200910237422A CN102054149B CN 102054149 B CN102054149 B CN 102054149B CN 200910237422X A CN200910237422X A CN 200910237422XA CN 200910237422 A CN200910237422 A CN 200910237422A CN 102054149 B CN102054149 B CN 102054149B
Authority
CN
China
Prior art keywords
graph
node
dependency graph
data dependence
malicious code
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.)
Expired - Fee Related
Application number
CN200910237422XA
Other languages
English (en)
Other versions
CN102054149A (zh
Inventor
王蕊
杨轶
冯登国
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Chinese Academy of Sciences
Original Assignee
University of Chinese Academy of Sciences
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by University of Chinese Academy of Sciences filed Critical University of Chinese Academy of Sciences
Priority to CN200910237422XA priority Critical patent/CN102054149B/zh
Publication of CN102054149A publication Critical patent/CN102054149A/zh
Application granted granted Critical
Publication of CN102054149B publication Critical patent/CN102054149B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种恶意代码行为特征提取方法,属于网络安全技术领域。本发明的方法为:1)运行恶意代码,提取恶意代码的执行信息;所述执行信息包括恶意代码的执行指令序列和行为序列;2)根据执行信息,构造执行代码的控制依赖图和数据依赖图;3)对控制依赖图和数据依赖图进行关联性比较,记录相关的关联性信息;4)比较不同恶意代码之间的控制依赖图和数据依赖图,根据相似性聚类,提取每类样本的特征依赖。与现有技术相比,本发明具有信息提取全面、抗干扰性强,而且对单个样本特征的变种具有一定的适用性,同时具有特征库规模小、适应范围广的特点。

Description

一种恶意代码行为特征提取方法
技术领域
本发明属于网络安全技术领域,具体涉及一种恶意代码行为特征提取方法。
背景技术
随着计算机在各领域应用的日益广泛,恶意代码已成为当前互联网和计算机安全的主要威胁之一,恶意代码检测成为软件及***安全的重要问题。随着计算机技术的不断发展,恶意代码呈现出传播速度快、感染能力强、破坏力大的特点,造成越来越严重的安全影响甚至经济损失。随着恶意代码技术的发展,其利用混淆技术以及隐藏技术,可在短时间内产生大量变种,传统的基于代码特征的特征提取和匹配方法已无法对其进行有效防护。因此,提高恶意代码特征提取的准确性和所提取特征的适应性成为当前亟待解决的问题。
现有的恶意代码特征提取方法,可分为静态分析提取和动态分析提取。由于一般无法获得恶意代码源代码,静态提取方法一般需先对代码进行反汇编,然后提取特征。静态提取通常依赖于反汇编技术,恶意代码可使用混淆技术使反汇编无法顺利进行,从而无法有效提取代码特征;但静态提取方法分析代码全面,不局限于单一路径,可辅助动态分析。动态提取方法在恶意代码执行过程中提取特征,所分析的代码即为实际执行的代码。为避免实际执行代码会对操作***产生恶意影响,产生了利用虚拟机的调试分析方法,如VMware、VirtualPC等虚拟机***,但恶意代码可通过检查代码执行时间等方法检查其在虚拟机上执行,从而改变行为对抗分析。
当前的恶意代码特征提取技术,通常使用如下几种特征形式:
1.提取指令序列特征
目前商用恶意代码检测工具多使用简单的指令序列作为特征进行匹配,此方法必须使用不同的特征来表示即使简单的变种,特征数据库大,且易被简单的混淆技术绕过。
2.提取API调用序列
使用恶意代码与***交互的API调用序列作为特征,记录指令序列使用序列匹配方法或者有限状态机,判断恶意行为。恶意代码采用重排顺序无关的***调用,或***无关API调用的方法可躲避基于此类特征的检测。
3.提取***消息和事件序列
使用***的状态变化作为恶意代码行为的描述,监控代码和***的交互,记录***消息和事件序列作为特征。此方法描述仍然针对于恶意代码行为的顺序,因此容易被混淆手段反制。
4.统计信息特征
使用统计信息,如使用操作码的频率分布,记录恶意代码执行的操作类型,对每种类型的***调用个数进行统计。根据统计规律指定特定的指令分布作为特征。恶意代码通过垃圾代码***的混淆技术可使此类特征匹配失效。
5.使用差异子图
提取恶意代码与正常代码的行为,将其构成CFG控制流图,并将CFG进行对比,获取差异子图作为特征,由于有些行为正常代码和恶意代码均会产生,只是在特定上下文中或次数不同而界定为恶意,此时只提取差异子图不足以描述恶意代码特征;且如何选用作比较的正常代码会对准确性及特征大小产生影响。
随着恶意代码技术的发展,变形、加壳等技术给特征提取及检测带来了很大的困难,尤其是混淆技术,恶意代码通过垃圾代码***、等价指令替换、寄存器重分配、代码变换(如改变指令顺序,***jump等跳转指令)等方式,使其代码特征表象产生变化,与传统方式提取的特征无法匹配,成功躲避基于传统特征的检测。
综上所述,目前恶意代码特征提取的主要问题有:分析及跟踪恶意代码以提取特征的***与恶意代码拥有相等的权限,复杂的隐藏技术可绕过分析使特征无法提取;未能全面提取数据依赖和控制依赖信息表示特征,特征准确性不高;提取多针对单一恶意代码样本,对利用混淆技术产生的变种无法检测,特征适应性不强;轻微混淆技术产生的变种即产生新的特征,特征库庞大,带来存储以及匹配时间复杂度隐患。
发明内容
本发明的目的在于提供一种恶意代码行为特征提取方法,通过在模拟硬件环境里执行恶意代码,分析虚拟CPU上的指令,获取恶意代码运行中的行为依赖关系并构建恶意代码的控制依赖图和数据依赖图,并通过对恶意代码行为依赖图和数据依赖图的统计,提取恶意代码行为特征用于检测。
本发明的主要内容如下:
1、将获取到的恶意代码样本放入硬件模拟器环境中,在硬件模拟器上运行恶意代码,获取执行信息。
2、监控硬件模拟器的虚拟CPU,根据执行代码信息,构造执行代码的控制依赖图和数据依赖图。
3、根据控制依赖图和数据依赖图记录的相关信息,对相同的***函数进行比较,记录关联性。
4、对控制依赖图和数据依赖图进行预处理,缩减循环,识别其中的可删除调用和等价调用。统计依赖图的行为轮廓信息。
5、比较不同恶意代码样本的控制依赖和数据依赖图,根据相似性聚类,提取一类样本的特征依赖关系。
6、使用有限状态自动机(DFA)表示依赖特征。
为实现本发明的目的,本发明的技术方案为:
一种恶意代码行为特征提取方法,其步骤为:
1)运行恶意代码,提取恶意代码的执行信息;所述执行信息包括恶意代码的执行指令序列和行为序列;
2)根据执行信息,构造执行代码的控制依赖图和数据依赖图;
3)对控制依赖图和数据依赖图进行关联性比较,记录相关的关联性信息;
4)比较不同恶意代码之间的控制依赖图和数据依赖图,根据相似性聚类,提取每类样本的特征依赖。
进一步的,所述指令执行序列的提取方法为:将所述恶意代码运行于一硬件模拟器上;然后在所述硬件模拟器翻译层添加一反汇编引擎;在指令被翻译之后,执行之前记录恶意代码样本执行的所有指令以及寄存器的信息。
进一步的,所述行为序列提取方法为:
1)在恶意代码进程加载之后,执行之前,通过虚拟机读取进程的内存及进程加载的动态库中的导出表;
2)通过比较导出表中API名称与API表中的名称,从导出表中获取对应API的地址并将其加入到API表中;所述API表包括API名称、API地址及API参数和返回值;
3)恶意代码执行中,将当前CPU的EIP值与API表中函数地址的参数逐一做匹配比较;所述EIP值为CPU当前执行的指令所在的位置;
4)当EIP值和API表中的函数地址相同时,读取堆栈获得函数的参数和返回地址,
将返回地址记录在函数列表中,当EIP值和函数列表中的返回地址相同时,读取函数的返回值。
进一步的,采用动态污点传播的方法构建所述控制依赖图和数据依赖图,其方法为:
1)将感兴趣的数据标记为污点,同时创建影子内存,记录污点内存被访问的状态;
2)在恶意代码执行过程中监控***调用,当发生新的***调用时,查询记录的污点传播过程,找到产生该污点的***调用;
3)在两个***调用之间建立依赖关系,同时根据操作对于变量和污点的使用情况,确定调用之间是控制依赖还是数据依赖关系,从而得到控制依赖图和数据依赖图。
进一步的,通过比较所述控制依赖图中的函数地址和所述数据依赖图中的函数地址,对所述控制依赖图和数据依赖图进行关联性比较;其方法为:首先对比数据依赖图和控制依赖图的***调用地址,然后在含有相同***调用地址的控制依赖图与数据依赖图间建立关联关系。
进一步的,对所述控制依赖图和数据依赖图进行预处理,识别并删除控制依赖图和数据依赖图中的可删除调用;所述可删除调用为:将对操作***产生影响的函数构成一敏感函数集合,在污点传播中,产生了污点,但到其被漂白为止,未发生任何传播,或者发生了传播,其控制集合为空,没有任何敏感操作与之产生数据或控制依赖关系;如果某单个***调用为所述可删除调用,则从所述控制依赖图或数据依赖图中删掉该***调用的节点和边;如果某个控制依赖图或者数据依赖图从污点开始的所有***调用操作都没有引起***状态的改变,则将该图删除。
进一步的,对所述控制依赖图和数据依赖图中的循环进行缩减,其方法为:
1)采用自然循环识别算法识别所述恶意代码中的循环;
2)根据每一次循环的过程,计算执行时污点是否连续,如果发现相同的污点传播过程在一条路径上执行,则对该路径进行缩减;缩减的方法是:首先识别自然循环的开始和结束,然后分析每一次循环对于污点内存的操作地址和长度,如果后一次循环读取的起始地址等于前一次循环读取的起始地址和读取长度之和,则将该指令和***调用缩减为一条指令,缩减后的指令起始为前一次循环的起始地址,长度为两次循环读取的长度之和。
进一步的,对所述控制依赖图和数据依赖图中的等价调用进行统一,其方法为:建立一行为等价***调用库,在该库中设置行为序列,同时将多种等价行为序列映射为相同的内容。
进一步的,统计所述控制依赖图和数据依赖图的行为轮廓信息;其方法为:分别从控制依赖图和数据依赖图的入口点开始遍历,遇到节点时判断节点类型,并将该节点所表示的函数所在的类别标志加入类别记录中,同时增加表示该类函数调用个数的计数,一直到所有节点都遍历完成为止;所述函数的类型包括:文件访问、注册表访问、网络访问、进程操作。
进一步的,采用基于***调用对齐的比较方法比较不同恶意代码之间的控制依赖图和数据依赖图,其方法为:
1)选取两个恶意代码中行为轮廓差异最小的两个控制依赖图;
2)以控制依赖图入口点为起点进行递归比较,在比较入口点相同后,以入口点为起点,递归遍历与其有边连接的节点,对节点的相似性进行比较;其中比较的节点为同是出边或入边连接的节点;
3)当两个节点同为出边或同为入边连接并且所表示的***调用相同,则这两个节点互为等价节点,将这两个节点都标记为visited,并以这两个节点为起点,递归遍历其所有相连的状态未标记为visited的节点并进行比较,如果发现与某个节点相连的节点都为visited,则该节点的递归计算完成,返回上一级函数;
4)重复上述步骤1)到3),对不同恶意代码之间的数据依赖图进行比较。
进一步的,使用有限状态自动机表示所述特征依赖,其方法为:
1)初始状态下,有限状态自动机集合为空;
2)从特征样本的控制依赖图和数据依赖图集合中任取一个依赖图,将该依赖图的入口节点加入有限状态自动机,作为起始状态S;
3)将S置为当前节点S,由当前节点开始遍历步骤2中所选的依赖图;
4)当与当前节点相连的节点所在类别与当前节点不同时,在有限状态自动机中加入一个节点,并使用状态转换边将该节点和当前节点连接起来;如果相连的节点和当前节点同属一个类别,则在当前节点上添加一个到自身的状态转换边;
5)重复上述步骤3)和4),遍历步骤2中所选依赖图中所有节点。
进一步的,当新的恶意代码出现时,将其与每个聚类中的特征依赖进行比较,确定其聚类的归属;然后将新的恶意代码添加到对应的聚类中,重新计算聚类的特征依赖。
本发明的优点和积极效果如下:
1.本发明提取恶意代码的控制依赖和数据依赖特征,提取信息全面,其描述方式不针对行为和指令的次序,因此具有更好的抗干扰性。
2.本发明使用依赖图预处理的方法,对产生的控制和数据依赖图进行处理,消除因为代码混淆如垃圾代码***及代码变换引起的特征改变,进一步增强了抗干扰性。
3.本发明通过由相似性比较对恶意代码聚类再提取的方法,抽象提取出一类恶意代码的行为特征而非单个样本特征,可适用于一定的变种。
4.本发明使用大量恶意代码的统计信息提取特征,具有特征库规模小,适应范围广的特点。
附图说明
图1基于控制依赖和数据依赖的恶意代码行为特征提取方法流程图。
具体实施方式
下面结合附图详细说明本发明的技术方案:
如图1所示,一种基于控制依赖和数据依赖的恶意代码特征提取方法,包括步骤:
1、提取恶意代码的执行指令序列和行为序列。
采用硬件模拟器翻译层记录的方法,在硬件模拟器环境中执行恶意代码。通过在翻译层次添加反汇编引擎,在指令被翻译之后,执行之前记录恶意代码样本执行的所有指令以及寄存器的信息。对于行为序列的提取,需获取API地址和参数,本发明在进程加载之后,代码执行之前,通过虚拟机,读取进程的内存,并分析进程加载的动态库中的导出表,导出表包括API名称和API地址,通过采用字符比较的方法,比较导出表中API名称与API表中的名称,获取导出表中所有API的地址,将所有API地址加入到API表,所述API表包括API名称、API地址及API参数和返回值,此处的API参数和返回值在微软提供的程序开发文档中有详细描述,为业内共知。恶意代码执行中,将当前CPU的EIP值与API表中函数地址的参数逐一做匹配比较。(EIP指CPU执行程序时的地址寄存器,表示当前执行的指令所在的位置)当EIP的值和API表中的函数地址相同时,说明调用了对应的函数。此时可以读取堆栈获得函数的参数和返回地址,将返回地址记录在函数列表中,当EIP和函数列表中的返回地址相同时,读取函数的返回值。(此处使用的读取堆栈获取函数参数和返回值的获取方法是业内较为常用的。)
2、监控硬件模拟器的虚拟CPU,根据执行代码信息,构造执行代码的控制依赖图和数据依赖图。
恶意代码的控制依赖图和数据依赖图在执行的过程中通过分析虚拟CPU指令进行构建。通过硬件模拟器的译码模块获得当前模拟CPU的类型,使得模拟CPU的指令转化为本地CPU的指令再运行,在虚拟机上运转的操作***能够正确的执行指令,可模拟多种CPU。
本发明中代码的控制依赖图和数据依赖图,通过污点传播过程构建(动态污点传播技术可参考《Dynamic Taint Analysis for Automatic Detection,Analysis,and SignatureGeneration of Exploits on Commodity Software》)。我们将感兴趣的数据标记为污点,如将创建文件函数CreateFile获得的文件句柄,或ReadFile函数读取的文件内容据标记为污点,同时创建影子内存,记录污点内存被访问的状态。在恶意代码执行中由于在虚拟CPU中获取的是汇编语言代码,相对于源码丢失了大量语义信息。为了构造控制依赖和数据依赖,需要在汇编语言层次,对相关内容进行污点传播。在执行过程中监控***调用,当发生新的***调用时,查询记录的污点传播过程,分析***调用使用的污点,回溯污点过程,找到产生该污点的调用,在两个***调用之间建立依赖关系,同时根据操作对于变量和污点的使用情况,以此确定调用之间是控制依赖还是数据依赖关系,从而得到控制依赖图和数据依赖图。
3、根据控制依赖图和数据依赖图记录的相关信息,对相同的***函数进行比较,记录关联性。
在生成依赖图后,需要对控制依赖图和数据依赖图进行关联性比较,记录相关的关联性信息。关联性信息是通过比较***API的调用地址产生的。在依赖图的构建中已经记录了***调用的地址,通过比较控制依赖图中的函数地址和数据依赖图中的函数地址,确定关联关系。
首先对比数据依赖图和控制依赖图的***调用地址,当其中存在相同地址的***调用时,确定关联关系;在含有相同***调用地址的控制依赖图与数据依赖图间建立关联关系。此时控制依赖图和数据依赖图中不仅仅包含节点和边,也包含有记录对应关系的数据。(控制依赖图的概念和数据依赖图的概念是共知的)
4、对依赖图进行预处理,缩减循环,识别其中的可删除调用和等价调用。统计依赖图的行为轮廓信息。
首先进行的是可删除行为识别。将对操作***产生影响的函数构成一敏感函数集合,在污点传播中,可删除行为的特征是:产生了污点,但到其被漂白为止,未发生任何传播,或者发生了传播,其控制集合为空,没有任何敏感操作(即对操作***产生影响的函数)与之产生数据或控制依赖关系。满足以上条件,可知当前行为是可删除行为,可以从图中删除。可删除的行为可能是单个***调用,也可能是一个控制依赖图或数据依赖图。对于单个***调用,则直接从数据依赖图和控制图中删掉它的节点和边。对于一个控制依赖图或者数据依赖图,如果该图中从污点开始的所有***调用操作都没有引起***状态的改变,则直接将该图删除。
循环缩减,是为了消除动态控制依赖图和数据依赖图构造过程中产生的冗余数据。由于行为提取是动态分析过程,记录了进程执行的整个过程,因此循环在控制依赖图中表示为一个连续的操作序列。并采用自然循环识别算法识别代码中的循环。根据每一次循环的过程,计算执行时污点是否连续,如果发现相同的污点传播过程在一条路径上执行,则对该路径进行缩减。缩减的方法是首先识别自然循环的开始和结束,然后分析每一次循环对于污点内存的操作地址和长度,如果后一次循环读取的起始地址等于前一次循环读取的起始地址和读取长度之和,则将该指令和***调用缩减为一条指令,其起始为前一次的起始地址,长度为两次读取的长度之和。
等价***调用序列:即在代码中调用次序不同,或函数名称不同,而功能相同的函数调用序列。如在恶意代码的编写过程中,常使用文件映射函数来替换文件读写函数,将文件映射进内存之后,使用内存操作指令读写文件内容。对于此类的混淆方法,本发明建立了行为等价***调用库,在该库中设置行为序列,将多种等价行为序列映射为相同的内容。通过对于等价调用序列的识别和替换,我们使用了统一的方式描述经过混淆的行为,具有更好的抗干扰能力。
统计依赖图的行为轮廓信息,即统计调用信息是为了降低后续相似性比较的空间复杂度和时间复杂度.将***函数分为文件访问、注册表访问、网络访问、进程操作四类。从控制依赖图和数据依赖图的入口点开始遍历,分析访问到的节点,在遇到节点时判断节点类型,并将该函数所在的类别标志加入类别记录中,同时增加在表示该类函数调用个数的计数,一直到所有节点都遍历完成为止。
5、比较不同恶意代码之间的控制依赖图和数据依赖图,根据相似性聚类,提取能代表该类样本的特征依赖。
在控制依赖图和数据依赖图的比较中,使用基于***调用对齐的比较方法。***调用对齐的方法是一种基于行为统计信息的方法,其核心思想是以代码执行的***调用统计信息和控制依赖结构信息为指引,简化代码依赖性比较过程。我们把两个代码产生的控制依赖图和控制依赖图相比较,数据依赖图和数据依赖图相比较。***调用对齐的过程分为两个部分,第一部分是***调用轮廓的对齐,根据行为轮廓差异的大小,确定两个集合中控制依赖图和数据依赖图比较的先后次序,确定顺序的方法是计算依赖图中各个函数调用个数的差值,将其求和,调用图的比较顺序即是差值从小到大的顺序。第二部分是操作序列的对齐,即在依赖图的比较过程中,寻找相同的***调用作为比较的起点。
在比较步骤上,我们首先比较控制依赖图,然后比较数据依赖图。控制依赖图比较算法在进行比较前,首先选取两个代码中行为轮廓差异最小的两个控制依赖图,以控制依赖图入口点Entry为起点进行递归比较。在比较入口点相同后,以入口点为起点,递归遍历与其有边连接的节点,对节点的相似性进行比较。此处要注意的是,必须同是出边或入边连接的节点才可以比较。等价节点的判定规则是,当两个节点同为出边或同为入边连接并且所表示的***调用相同,则这两个节点互为等价节点,可将两个节点都标记为visited,并以这两个节点为起点,递归遍历其所有相连的状态非visited的节点并进行比较。在比较中,如果发现与某个节点相连的节点都为visited,则该节点的递归计算完成,返回上一级函数。在使用上面的方法比较控制依赖图后,我们采用相同的方法来比较数据依赖图。通过首先比较控制依赖图,然后比较数据依赖图的方法,确定恶意代码之间的相似性。
在比较控制依赖图和数据依赖图后,得到了两个恶意代码之间的相似性关系。其相似度的度量方法为:差异***调用个数/所有***调用个数。并在实验中人工确定阈值为70%,根据阈值以及相似度的不同,将恶意代码分为不同的聚类。
在此处使用机器学习的方法进行特征依赖关系提取。具体步骤是,从每个聚类中提取该聚类中重叠次数最多的依赖图,作为该类样本的特征依赖关系。当新的恶意代码出现时,将其与每个聚类中的特征依赖进行比较,确定其聚类的归属。同时在集合的扩充过程中,重新计算优化类的特征依赖。
6、使用有限状态自动机(DFA)表示特征依赖
在提取一类样本的控制依赖和数据依赖特征后,为了减小存储空间,加快恶意代码识别的速度,需要对使用控制依赖图和数据依赖图描述的恶意代码行为特征进行缩减。此处使用了有限状态自动机来定义行为特征模式。
有限状态自动机的构造过程。初始状态下,有限状态自动机集合为空,从特征样本的控制依赖图和数据依赖图集合中任取一个依赖图,从该依赖图的入口开始构造。首先将该依赖图的入口节点加入有限状态自动机,作为起始状态S。将当S置为前节点,由当前节点开始遍历依赖图。本发明将***调用分为文件操作、网络操作、进程操作和注册表操作四类,当与当前节点相连的节点所在类别与当前节点不同时,我们在有限状态自动机中加入一个节点,并使用状态转换边将该节点和当前节点连接起来;如果相连的节点和当前节点同属一个类别,则在当前节点上添加一个到自身的状态转换边。有限状态自动机构建完成的条件是当前依赖图中所有节点都已经被遍历到。在作为特征的有限状态自动机中,除起始节点外的所有节点都可以做为终止节点,其有效性权值保存在终止节点中,由程序根据统计次数的多少和操作敏感性计算确定。
本发明提出的恶意代码特征提取方法,对于本领域的技术人员而言,可以根据需要自已配置各种检测敏感度信息,设计检测和分析方法,精确获得恶意代码的特征。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

Claims (11)

1.一种恶意代码行为特征提取方法,其步骤为:
1)运行恶意代码,提取恶意代码的执行信息;所述执行信息包括恶意代码的执行指令序列和行为序列;其中,所述执行指令序列的提取方法为:将所述恶意代码运行于一硬件模拟器上;然后在所述硬件模拟器翻译层添加一反汇编引擎;在指令被翻译之后,执行之前记录恶意代码样本执行的所有指令以及寄存器的信息;
2)根据执行信息,构造执行代码的控制依赖图和数据依赖图;
3)对控制依赖图和数据依赖图进行关联性比较,记录相关的关联性信息;
4)比较不同恶意代码之间的控制依赖图和数据依赖图,根据相似性聚类,提取每类样本的特征依赖。
2.如权利要求1所述的方法,其特征在于所述行为序列提取方法为:
1)在恶意代码进程加载之后,执行之前,通过虚拟机读取进程的内存及进程加载的动态库中的导出表;
2)通过比较导出表中API名称与API表中的名称,从导出表中获取对应API的地址并将其加入到API表中;所述API表包括API名称、API地址及API参数和返回值;
3)恶意代码执行中,将当前CPU的EIP值与API表中函数地址的参数逐一做匹配比较;所述EIP值为CPU当前执行的指令所在的位置;
4)当EIP值和API表中的函数地址相同时,读取堆栈获得函数的参数和返回地址,将返回地址记录在函数列表中,当EIP值和函数列表中的返回地址相同时,读取函数的返回值。
3.如权利要求1所述的方法,其特征在于采用动态污点传播的方法构建所述控制依赖图和数据依赖图,其方法为:
1)将感兴趣的数据标记为污点,同时创建影子内存,记录污点内存被访问的状态;
2)在恶意代码执行过程中监控***调用,当发生新的***调用时,查询记录的污点传播过程,找到产生该污点的***调用;
3)在两个***调用之间建立依赖关系,同时根据操作对于变量和污点的使用情况,确定调用之间是控制依赖还是数据依赖关系,从而得到控制依赖图和数据依赖图。
4.如权利要求1或3所述的方法,其特征在于通过比较所述控制依赖图中的函数地址和所述数据依赖图中的函数地址,对所述控制依赖图和数据依赖图进行关联性比较;其方法为:首先对比数据依赖图和控制依赖图的***调用地址,然后在含有相同***调用地址的控制依赖图与数据依赖图间建立关联关系。
5.如权利要求3所述的方法,其特征在于步骤3)之后,步骤4)之前对所述控制依赖图和数据依赖图进行预处理,识别并删除控制依赖图和数据依赖图中的可删除调用;所述可删除调用为:将对操作***产生影响的函数构成一敏感函数集合,在污点传播中,产生了污点,但到其被漂白为止,未发生任何传播,或者发生了传播,其控制集合为空,没有任何敏感操作与之产生数据或控制依赖关系;如果某单个***调用为所述可删除调用,则从所述控制依赖图或数据依赖图中删掉该***调用的节点和边;如果某个控制依赖图或者数据依赖图从污点开始的所有***调用操作都没有引起***状态的改变,则将该图删除。
6.如权利要求5所述的方法,其特征在于步骤3)之后,步骤4)之前对所述控制依赖图和数据依赖图中的循环进行缩减,其方法为:
1)采用自然循环识别算法识别所述恶意代码中的循环;
2)根据每一次循环的过程,计算执行时污点是否连续,如果发现相同的污点传播过程在一条路径上执行,则对该路径进行缩减;缩减的方法是:首先识别自然循环的开始和结束,然后分析每一次循环对于污点内存的操作地址和长度,如果后一次循环读取的起始地址等于前一次循环读取的起始地址和读取长度之和,则将该指令和***调用缩减为一条指令,缩减后的指令起始为前一次循环的起始地址,长度为两次循环读取的长度之和。
7.如权利要求6所述的方法,其特征在于步骤3)之后,步骤4)之前对所述控制依赖图和数据依赖图中的等价调用进行统一,其方法为:建立一行为等价***调用库,在该库中设置行为序列,同时将多种等价行为序列映射为相同的内容。
8.如权利要求7所述的方法,其特征在于步骤3)之后,步骤4)之前统计所述控制依赖图和数据依赖图的行为轮廓信息;其方法为:分别从控制依赖图和数据依赖图的入口点开始遍历,遇到节点时判断节点类型,并将该节点所表示的函数所在的类别标志加入类别记录中,同时增加表示该类函数调用个数的计数,一直到所有节点都遍历完成为止;所述函数的类型包括:文件访问、注册表访问、网络访问、进程操作。
9.如权利要求1所述的方法,其特征在于采用基于***调用对齐的比较方法比较不同恶意代码之间的控制依赖图和数据依赖图,其方法为:
1)选取两个恶意代码中行为轮廓差异最小的两个控制依赖图;
2)以控制依赖图入口点为起点进行递归比较,在比较入口点相同后,以入口点为起点,递归遍历与其有边连接的节点,对节点的相似性进行比较;其中比较的节点为同是出边或入边连接的节点;
3)当两个节点同为出边或同为入边连接并且所表示的***调用相同,则这两个节点互为等价节点,将这两个节点都标记为visited,并以这两个节点为起点,递归遍历其所有相连的状态未标记为visited的节点并进行比较,如果发现与某个节点相连的节点都为visited,则该节点的递归计算完成,返回上一级函数;
4)重复上述步骤1)到3),对不同恶意代码之间的数据依赖图进行比较。
10.如权利要求1所述的方法,其特征在于使用有限状态自动机表示所述特征依赖,其方法为:
1)初始状态下,有限状态自动机集合为空;
2)从特征样本的控制依赖图和数据依赖图集合中任取一个依赖图,将该依赖图的入口节点加入有限状态自动机,作为起始状态S;
3)将S置为当前节点S,由当前节点开始遍历步骤2中所选的依赖图;
4)当与当前节点相连的节点所在类别与当前节点不同时,在有限状态自动机中加入一个节点,并使用状态转换边将该节点和当前节点连接起来;如果相连的节点和当前节点同属一个类别,则在当前节点上添加一个到自身的状态转换边;
5)重复上述步骤3)和4),遍历步骤2中所选依赖图中所有节点。
11.如权利要求1所述的方法,其特征在于当新的恶意代码出现时,将其与每个聚类中的特征依赖进行比较,确定其聚类的归属;然后将新的恶意代码添加到对应的聚类中,重新计算聚类的特征依赖。
CN200910237422XA 2009-11-06 2009-11-06 一种恶意代码行为特征提取方法 Expired - Fee Related CN102054149B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910237422XA CN102054149B (zh) 2009-11-06 2009-11-06 一种恶意代码行为特征提取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910237422XA CN102054149B (zh) 2009-11-06 2009-11-06 一种恶意代码行为特征提取方法

Publications (2)

Publication Number Publication Date
CN102054149A CN102054149A (zh) 2011-05-11
CN102054149B true CN102054149B (zh) 2013-02-13

Family

ID=43958455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910237422XA Expired - Fee Related CN102054149B (zh) 2009-11-06 2009-11-06 一种恶意代码行为特征提取方法

Country Status (1)

Country Link
CN (1) CN102054149B (zh)

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102930206B (zh) * 2011-08-09 2015-02-25 腾讯科技(深圳)有限公司 病毒文件的聚类划分处理方法和装置
CN102651062B (zh) * 2012-04-09 2014-06-18 华中科技大学 基于虚拟机架构的恶意行为跟踪***和方法
CN102968591B (zh) * 2012-11-21 2015-02-25 中国人民解放军国防科学技术大学 基于行为片段共享的恶意软件特征聚类分析方法及***
CN103916365B (zh) * 2012-12-31 2018-09-11 西门子公司 导出和验证恶意代码的网络行为特征的方法和装置
CN103914652B (zh) * 2013-01-09 2018-05-22 腾讯科技(深圳)有限公司 恶意程序控制指令识别方法及装置
CN104008334B (zh) * 2013-02-21 2017-12-01 腾讯科技(深圳)有限公司 一种文件的聚类方法和设备
KR102160659B1 (ko) * 2013-03-18 2020-09-28 더 트러스티스 오브 컬럼비아 유니버시티 인 더 시티 오브 뉴욕 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출
CN103198260B (zh) * 2013-03-28 2016-06-08 中国科学院信息工程研究所 一种二进制程序漏洞自动化定位方法
JP6023317B2 (ja) * 2013-05-16 2016-11-09 日本電信電話株式会社 情報処理装置、および、情報処理方法
CN103679030B (zh) * 2013-12-12 2017-01-11 中国科学院信息工程研究所 一种基于动态语义特征的恶意代码分析检测方法
CN103761476B (zh) * 2013-12-30 2016-11-09 北京奇虎科技有限公司 特征提取的方法及装置
CN103729295A (zh) * 2013-12-31 2014-04-16 北京理工大学 一种污点传播路径分析方法
CN104850781A (zh) * 2014-02-17 2015-08-19 中国科学院信息工程研究所 一种动态多级恶意代码行为分析方法及***
CN103927483B (zh) * 2014-04-04 2016-11-16 西安电子科技大学 用于检测恶意程序的判定模型及恶意程序的检测方法
CN103914657B (zh) * 2014-04-16 2016-10-19 南京大学 一种基于函数特征的恶意程序检测方法
CN103984883B (zh) * 2014-05-21 2017-01-25 湘潭大学 基于类依赖图的Android应用相似性检测方法
CN104008329B (zh) * 2014-05-22 2017-02-15 中国科学院信息工程研究所 一种基于虚拟化技术的软件隐私泄露行为检测方法及***
CN104331436B (zh) * 2014-10-23 2017-06-06 西安交通大学 基于家族基因码的恶意代码快速归类方法
CN104657661B (zh) * 2015-01-26 2018-05-22 武汉安天信息技术有限责任公司 移动终端中恶意代码的检测方法和装置
CN104866765B (zh) * 2015-06-03 2017-11-10 康绯 基于行为特征相似性的恶意代码同源性分析方法
CN105005743B (zh) * 2015-06-11 2018-02-02 深圳市华傲数据技术有限公司 电话号码漂白和反向漂白方法
CN104951699B (zh) * 2015-07-03 2017-12-12 西安交通大学 一种基于计算机时序依赖网络的入侵感染区域定位方法
CN104933365B (zh) * 2015-07-08 2018-04-27 中国科学院信息工程研究所 一种基于调用习惯的恶意代码自动化同源判定方法及***
US10089465B2 (en) * 2015-07-24 2018-10-02 Bitdefender IPR Management Ltd. Systems and methods for tracking malicious behavior across multiple software entities
CN105138916B (zh) * 2015-08-21 2018-02-02 中国人民解放军信息工程大学 基于数据挖掘的多轨迹恶意程序特征检测方法
CN105653956B (zh) * 2016-03-02 2019-01-25 中国科学院信息工程研究所 基于动态行为依赖图的Android恶意软件分类方法
CN106709338A (zh) * 2016-05-30 2017-05-24 腾讯科技(深圳)有限公司 一种程序检测方法及装置
CN106372508B (zh) * 2016-08-30 2020-05-12 北京奇虎科技有限公司 恶意文档的处理方法及装置
CN106384050B (zh) * 2016-09-13 2019-01-15 哈尔滨工程大学 一种基于最大频繁子图挖掘的动态污点分析方法
CN108256325A (zh) * 2016-12-29 2018-07-06 中移(苏州)软件技术有限公司 一种恶意代码变种的检测的方法和装置
CN108197464A (zh) * 2017-12-25 2018-06-22 中国科学院信息工程研究所 一种面向云环境的环境敏感型恶意软件分析检测方法和***
CN108229172A (zh) * 2018-02-13 2018-06-29 国家计算机网络与信息安全管理中心 基于windows平台的跨层次数据流追踪方法
CN108446557B (zh) * 2018-03-12 2020-07-14 江苏中天科技软件技术有限公司 基于防御蜜罐的安全威胁主动感知方法
CN108446561A (zh) * 2018-03-21 2018-08-24 河北师范大学 一种恶意代码行为特征提取方法
CN109002716A (zh) * 2018-07-12 2018-12-14 南方电网科学研究院有限责任公司 一种移动应用的恶意代码入侵检测与防范方法
CN109033834A (zh) * 2018-07-17 2018-12-18 南京邮电大学盐城大数据研究院有限公司 一种基于文件关联关系的恶意软件检测方法
CN109800077A (zh) * 2018-12-11 2019-05-24 北京奇安信科技有限公司 全程序静态检测的文件优先检测顺序的处理方法及装置
CN110765457A (zh) * 2018-12-24 2020-02-07 哈尔滨安天科技集团股份有限公司 一种基于程序逻辑识别同源攻击的方法、装置及存储设备
CN109918907B (zh) * 2019-01-30 2021-05-25 国家计算机网络与信息安全管理中心 Linux平台进程内存恶意代码取证方法、控制器及介质
CN109933986B (zh) * 2019-03-08 2022-02-15 北京椒图科技有限公司 恶意代码检测方法及装置
CN112182568B (zh) * 2019-07-02 2022-09-27 四川大学 基于图卷积网络和主题模型的恶意代码分类
CN112329013A (zh) * 2019-08-05 2021-02-05 四川大学 一种基于图卷积网络和主题模型的恶意代码分类的方法
CN110554868B (zh) * 2019-09-11 2020-07-31 北京航空航天大学 一种软件复用代码检测方法及***
CN113391874A (zh) * 2020-03-12 2021-09-14 腾讯科技(深圳)有限公司 一种虚拟机检测对抗方法、装置、电子设备及存储介质
CN111538989B (zh) * 2020-04-22 2022-08-26 四川大学 基于图卷积网络和主题模型的恶意代码同源性分析方法
CN112836216B (zh) * 2021-02-04 2023-11-17 武汉大学 基于行为和代码长度的恶意样本逆向任务分配方法及***
CN112925522B (zh) * 2021-02-26 2023-11-21 北京百度网讯科技有限公司 依赖图生成方法、装置、设备、存储介质和程序产品
CN113468524B (zh) * 2021-05-21 2022-05-24 天津理工大学 基于rasp的机器学习模型安全检测方法
TWI797808B (zh) * 2021-11-02 2023-04-01 財團法人資訊工業策進會 機器學習系統及方法
CN113721928B (zh) * 2021-11-02 2022-01-18 成都无糖信息技术有限公司 一种基于二进制分析的动态库裁剪方法
CN115150152B (zh) * 2022-06-30 2024-04-26 中国人民解放军陆军工程大学 基于权限依赖图缩减的网络用户实际权限快速推理方法
CN116467220B (zh) * 2023-06-13 2023-09-08 北京航空航天大学 一种面向软件静态分析的循环代码处理方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的***及方法
CN101140611A (zh) * 2007-09-18 2008-03-12 北京大学 一种恶意代码自动识别方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101303643B1 (ko) * 2007-01-31 2013-09-11 삼성전자주식회사 침입 코드 탐지 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101005497A (zh) * 2006-11-27 2007-07-25 科博技术有限公司 一种阻止恶意代码入侵的***及方法
CN101140611A (zh) * 2007-09-18 2008-03-12 北京大学 一种恶意代码自动识别方法

Also Published As

Publication number Publication date
CN102054149A (zh) 2011-05-11

Similar Documents

Publication Publication Date Title
CN102054149B (zh) 一种恶意代码行为特征提取方法
CN111125716B (zh) 一种以太坊智能合约漏洞检测方法及装置
CN108268777B (zh) 一种利用补丁信息进行未知漏洞发现的相似性检测方法
US20120072988A1 (en) Detection of global metamorphic malware variants using control and data flow analysis
US10459704B2 (en) Code relatives detection
CN111400724A (zh) 基于代码相似性分析的操作***脆弱性检测方法、***及介质
CN113497809B (zh) 基于控制流和数据流分析的mips架构漏洞挖掘方法
CN101853200A (zh) 一种高效动态软件漏洞挖掘方法
CN104766015A (zh) 一种基于函数调用的缓冲区溢出漏洞动态检测方法
CN112256271A (zh) 一种基于静态分析的区块链智能合约安全检测***
Rabin et al. Syntax-guided program reduction for understanding neural code intelligence models
CN115658080A (zh) 一种软件开源代码成分的识别方法及***
CN115022026A (zh) 一种区块链智能合约威胁检测装置及方法
Cheers et al. A novel graph-based program representation for java code plagiarism detection
KR102273135B1 (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
Ren et al. Scstudio: a secure and efficient integrated development environment for smart contracts
CN112817877B (zh) 异常脚本检测方法、装置、计算机设备和存储介质
Chae et al. Credible, resilient, and scalable detection of software plagiarism using authority histograms
CN113419960B (zh) 用于可信操作***内核模糊测试的种子生成方法及***
CN111190813B (zh) 基于自动化测试的安卓应用网络行为信息提取***及方法
KR101583133B1 (ko) 스택 기반 소프트웨어 유사도 평가 방법 및 장치
CN112446026A (zh) 一种恶意软件的检测方法、装置及存储介质
CN116775040B (zh) 实现代码疫苗的插桩方法及基于代码疫苗的应用测试方法
Xu et al. Autopwn: Artifact-assisted heap exploit generation for ctf pwn competitions
CN113849785B (zh) 针对应用程序的移动终端信息资产使用行为识别方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20130213

Termination date: 20181106