一种用于快速准确检测零日恶意软件的图论方法与流程

文档序号:12864114阅读:275来源:国知局
本发明涉及计算机领域,具体而言,涉及一种用于快速准确检测零日恶意软件的图论方法。
背景技术
::根据“pandalabs”发布的威胁报告,每天平均有73000种新型恶意攻击程序被释放[1]。近期一份关于漏洞数据库的研究报告表明,约90%的软件漏洞在发布时间就被恶意软件利用[19]。恶意软件检测是困难的,因为在恶意软件启动时,新型(或者提前未知)的恶意软件的特征是不可用的。恶意软件检测不得不集中在终端主机,因为基于网络的安全装置,比如防火墙、入侵检测和预防系统,主要依赖于恶意软件特征,而基于特征的检测方法几乎不能检测到新的恶意软件。现有可用在终端主机上的防病毒软件依赖于基于特征的恶意软件检测方法,是无效的。近期爆发的愚人节病毒和闪回恶意软件进一步为现有商用防病毒软件的无效性提供了证据[18]。一个在终端主机上的非特征恶意软件检测方法需要满足四点要求:高识别率,低假正率,低计算和存储复杂度和对恶意软件混淆的鲁棒性。高识别率是关键,因为即使一个简单的未识别的恶意软件可能感染主机,甚至破坏恶意软件检测程序。低假正率是期望的,因为虚警对用户来说是很讨厌的,经常引起用户关闭恶意软件检测程序。低计算和存储复杂度是重要的,因为主机的计算和存储资源有限。对恶意软件混淆的鲁棒性是决定性的,因为恶意软件从一台主机传播到另一台主机时,经常混淆自己。因为预先未知恶意软件的特征是不可用的,非特征恶意软件检测必须依赖于程序行为。此前基于行为的非特征恶意软件检测方法分为两类:基于序列的方法和基于图的方法。基于序列的方法识别程序指令序列中的子序列,子序列的存在或缺失可以作为恶意软件检测的基本指纹[2][14]。基于序列的方法是有效的,但是对于垃圾插入和重新排序之类的混淆是脆弱的。大多数基于图的方法存储了大量已知恶意软件的行为图,对于给定的程序,在数据库中寻找最相似的行为图[9][10][23]。如果存在和给定程序相似的已知恶意软件行为图,那么给定软件就被分类的恶意攻击软件;否则,就被分类为良性软件。在图的数据库中搜索和给定图相似的图具有高的计算代价。如图1所示,是良性软件时间序列图。图2是恶意软件时间序列图。图3是良性软件api调用图。图4为恶意软件api调用图。技术实现要素:针对现有技术中存在的问题,本发明的目的是提出了malzero,一种在终端主机准确、有效并且鲁棒的非特征恶意软件识别方法。为了实现上述发明目的,本发明采用的技术方案为:一种用于快速准确检测零日恶意软件的图论方法malzero,其特征在于:从api调用图中提取的特征建立分类器模,良性软件和恶意软件在各自的api调用图中会存在不同的图论性质,从api调用图中提取的图论特征能够用来被有效地、高效地区分恶意软件和良性软件。它涉及三个关键模块:图构建、特征提取、图分类。所述图构建:给定一个未知程序的api调用序列<a1,a2,…,am>,按步骤构建api调用图;对于给定序列中每个唯一的api调用ai(1≤i≤m),创建一个顶点表示为v(ai);对于给定序列中任意两个连续的api调用aiai+1,当ai和ai+1是两个唯一的api调用,从顶点v(ai)到顶点v(ai+1)创建一条直连边。所述特征提取:使用在不同粒度水平捕获api调用图结构特点的特征来表征api调用图,即从顶点层、子图层和图层三个层次来提取图论特征。所述图分类:它使用从api调用图中提取的三个级别的特征,选择朴素贝叶斯算法作为机器学习分类器用于图像分类,使用两个概率集合来训练算法。有益效果:由于预先未知恶意软件特征的不可用性,非特征恶意软件检测方法一般依赖于分析程序行为。此前的基于行为的非特征恶意软件识别方法容易被混淆规避或者再存储空间、检测时间上效率低下。本发明的malzero,一种可在终端主机上快速、准确检测恶意软件的图论方法。malzero在存储空间和检测时间方面具有高效率。基于大量良性软件和恶意软件的数据集进行了实验。实验结果表明,对每个程序,在少于1秒的扫描时间内,malzero达到了99%的检测准确率和少于1%的假正率(虚警率),同时,对混淆攻击具有鲁棒性。由于较低的开销,malzero可以补充在终端主机现有的恶意软件检测方案中。malzero的精度随着混淆数量的上升而缓慢降低。本发明为了把给定程序分类为良性或恶意软件,提出了基于api调用图的分类器模型。本发明为分类器提出了丰富的、具有辨别力的基于图的特征集合。使用马尔科夫链对api调用序列进行建模并从模型中提取特征,这是一个突出点。附图说明图1为良性软件时间序列图。图2为恶意软件时间序列图。图3为良性软件api调用图。图4为恶意软件api调用图。图5是本发明实施例的malzero框架图。图6是本发明实施例的“shorm.110”蠕虫的api调用图。图7是本发明实施例的localallocapi调用的顶点层特征图。图8是本发明实施例的良性和恶意软件的图层特征的分布图。图9是本发明实施例的malzero针对混淆的有效性示意图。具体实施方式以下结合附图和具体实施例对本发明作进一步详细说明。本实施例使用一种叫做api(或者再linux术语中成为系统调用)调用图的行为图[5]。给定一个程序的api调用序列,以定点代表一个唯一的api调用,顶点v1和v2之间存在一条边如果并且只有如果api调用序列包括一个api调用和之间的子序列。我们关键的理解是良性软件和恶意软件的api调用图具有不同的图论性质,并且可以利用这种性质来区分良性软件和恶意软件。为了图解这种理解,图1-4分别展示了良性软件和恶意软件的api调用图的时间序列和径向布局。我们从视觉上观察良性软件和恶意软件在时间序列和径向布局的有趣形式。在图1和图2的时间序列中,在良性软件和恶意软件的时间序列中,我们可以观察到重复的调用子序列块。然而,良性软件块的大小明显小于恶意软件。在图2的径向布局中,我们随机选取了一个调用作为中心顶点,剩余的顶点基于相对中心点的距离被放在同心圆中。从视觉上比较良性软件和恶意软件的api调用图显示两者间有趣的差别。比如,我们注意到,相比良性软件,恶意软件api调用图的度分布要更倾斜一些。此外,我们还观察到,相比恶意软件,良性软件的api调用图中的顶点有更深的分支。我们收集到的良性软件和恶意攻击软件的基本统计特性也支持上述的观察。比如,良性软件的调用分布的平均熵(0.92)要明显高于恶意软件的(0.57)。直观上讲,这是因为良性软件比恶意软件具有更多的功能。此外,良性软件和恶意软件的时间序列也支持上述观察。图1和图2分别展示了良性软件和恶意软件的时间序列。基于名称的字母顺序对齐两图中的api调用的id,我们观察到良性软件中重复调用子序列块的大小要远大于恶意软件。malzero的核心思想是利用基于图论特征的分类模型把给定程序分为良性或恶意软件。为了提取api调用图的图论特征,malzero提取三个层次的特征:(1)顶点层,(2)子图层,和(3)图层。顶点层特征包括度、路径和连接特征。三种特征举例分别为度,直径和聚类系数。在子图层,我们基于api调用序列的马尔科夫链模型识别和提取特征。我们利用马尔科夫链状态的典型性来识别多种长度的api调用序列。典型性在从大量样本空间中识别序列的小的子集是很有效的。在图层,我们提取特征诸如集团数量,平均聚类系数,直径和平均路径长度。基于这些特征,我们构建贝叶斯分类器来实现有效的恶意软件检测识别。本发明提出方法的框架如图5所示,本实施例的malzero框架图。在图构建模块中,本发明基于一个未知可执行程序的api调用序列构建了一张图。在特征提取模块,本实施例从三个层次在构建的图中提取特征:顶点层,子图层和图层。这些特征被作为可执行程序的行为指纹,并且被应用到检测模块中以区分良性和恶意软件。在图分类模块中,使用一系列已知的良性软件和恶意软件来训练贝叶斯分类器,并使用贝叶斯分类器将未知的程序分类为良性或恶意软件。和现有方法的比较malzero和目前基于序列的非特征恶意软件检测方法有本质区别,因为malzero使用从api调用图提取的特征,而目前的基于序列的方法使用从api调用序列中提取的特征。目前基于序列的恶意软件检测方法对恶意攻击软件的混淆是脆弱的[16][21]。malzero和目前许多基于图的恶意软件检测方法也有不同,malzero构建一个分类器把程序的api调用图分为良性或者恶意软件,而基于图的方法利用恶意软件api调用图的数据库作对比来寻找相似的api调用图。我们将说明malzero在存储空间和检测时间方面都是高效的。从存储空间方面,malzero比目前的基于图的方法更高效,因为malzero不需要存储任何api调用图的数据库。从检测时间方面,利用malzero的分类器来区分未知程学的api调用图比在数据库中搜索相似api调用图具有更高的效率。在更高的程度上,malzero从已知恶意软件池中提取信息,利用这些信息把给定程序分为良性或恶意软件。给定已知良性和恶意软件的行为图,malzero从所有图集中提取图论特征并利用这特征构建分类模型。每个程序都有一张行为图,图上的顶点代表api调用,当且仅当顶点v1到顶点v2之间对应两个在程学api调用序列中的连续序列时,两个顶点之间存在一条边。malzero从行为图中提取图论特征并将这些特征送给分类模型以将程序分为良性或恶意软件。我们的实验评估表明,malzero进行行为图提取和分类均需少于一秒的时间。我们的结果表明malzero达到超过99%的识别率和少于1%的假错率。malzero达到了高精度、低虚警率和对混淆的鲁棒性,因为从多层次提取的api调用图的特征具有高判别能力的信息。malzero实现了低运算复杂度,因为使用了高效的贝叶斯分类器。malzero实现了低存储复杂度,因为只需存储大小在千字节量级的分类器模型。目前的非特征恶意软件检测方法分为两类:基于序列和基于图。1.基于序列的恶意软件检测方法在文献[2]中,ahmed等人提出了实时恶意软件分析和检测工具,利用api调用记录中的空时信息来识别恶意软件。空间信息和时间信息被进一步应用来区分良性和恶意软件。基于信息增益选择api调用的最具有分辨力的空间和时间特征,然后基于10倍交叉验证利用标准机器学习和数据挖掘分类器进行处理。提出的方法最高可以达到约98%的识别精度。由于使用了api调用序列作为特征,这种方法的固有限制是对即使很简单的混淆的脆弱性[16]。对于恶意攻击程序,一个狡猾的恶意软件作者可以通过操纵恶意软件api调度序列来改变时间特征,也可以通过插入带有无用主题的垃圾api调用来改变空间特征。在文献[14]中,islam等人提出了基于行为的恶意软件检测技术,该技术提取良性和恶意软件的跟踪日志的字符串(系统调用名称和函数主题)。特征向量以特定文件中字符串的存在或缺失为基础。这种方法在相应的测试数据集上达到了97.3%的准确度。和[2]中的方法类似,这种方法也对即使很简单的混淆技术很脆弱。2.基于图的恶意软件检测方法1)基于控制流图的检测:在文献[9]中,christodorescu等人提出了一个恶意软件检测方案称为可执行文件的静态分析(safe)检测使用静态分析的可执行文件的恶意模式。对于每种已知的恶意软件程序,safe从程序的汇编代码产生注释的控制流图,图中的每个顶点对应一条汇编指令。给定一个新的程序,safe首先生成该程序的注释控制流图,然后在数据库中搜索相似的控制流图。safe需要存储一个巨大的关于恶意软件控制流图的数据库,同时也有较高的搜索开销。表1“shorm.110”蠕虫的api调用子序列在文献[10]中,christodorescu等人提出一种语义感知的恶意软件检测技术。对于每种已知的恶意软件程序,这种方法生成相应模板,这种模板是一种使用程序汇编代码中的变量和符号常量描述的指令序列。一个模板描述一个特定的语义行为。给定一个新的程序,该方法首先产生模板,然后在包含已知恶意软件程序模板的数据库中进行相应搜索。这种方法相对于safe最主要的优点是模板专著于程序语义,相比于注释的控制流图,在一个更高的层次描述程序行为,因此获得更高的准确度。和malzero相比,这种方法和safe有相同的限制。2)基于依赖图的检测:在文献[15]中,kolbitsch等人提出了一种方法,使用api调用图。对于每个已知的恶意软件程序,这种方法产生一副依赖图,图中的每个顶点代表一个api调用,从顶点v1到顶点v2的直连边,当且仅当顶点v1相应的api调用对顶点v2相应的api调用存在数据依赖。对每个新的程序,这种方法首先生成该程序的依赖图,然后在包含已知恶意攻击软件程学依赖图的数据库中进行搜索匹配,以寻找到相似依赖图。和malzero相比,这种方法具有以上两种方法[9][10]所有的限制。另外一种方式是fredrikson[13]等人提出的holmes。holmes使用图挖掘和概念分析算法来分析一系列恶意和良性的程序,提取显著的恶意和良性的行为,创建最佳判断规格。在第一部分,我们已经给出了malzero和holmes的详细比较。3)其他相关工作:观察到文献中产生的依赖图太大了,chen[13]等人提出了一种图挖掘算法来产生较小的图,用作较大图的总结摘要[8]。这个工作的专注点在于减小图的大小。在文献[4]和文献[3]中,bayer等人提出一种自动工具,这种工具可以产生关于程序行为的人类可读报告。这种报告通过专注于文件、注册表、服务、运算和网络活动来跟踪特定程序的api调用。这个工作的专注点是促进恶意软件的分析以理解恶意软件程序的行为。在文献[23]中,yin和song基于名为panorama的恶意软件检测技术提出了影像图,基于观察到现象——恶意软件经常访问和处理用户私人信息,然而这些信息并不是为恶意软件准备的。panorama通过在一个包含测试引擎的仿真器中运行样本程序而工作,测试引擎在样本程序运行的同时运行测试脚本。这些测试脚本引入的重要的影响信息。测试引擎监视样本程序的活动和可观察的整个系统。系统上下文中程学的行为或活动被进一步表示成图的形式,图中的顶点代表系统调用,边代表两个系统调用之间的数据依赖性。panorama的专注点是促进恶意软件专家和安全分析师来理解恶意软件行为。该方法是用来离线检测和分析恶意软件的,而malzero是用来在线检测的。本实施例的一种用于快速准确检测零日恶意软件的图论方法malzero,涉及三个关键模块:图构建、特征提取和图分类。1.图构建给定一个未知程序的api调用序列<a1,a2,…,am>,我们将按如下步骤构建api调用图。对于给定序列中每个唯一的api调用ai(1≤i≤m),我们创建一个顶点表示为v(ai)。对于给定序列中任意两个连续的api调用aiai+1,当ai和ai+1是两个唯一的api调用,我们从顶点v(ai)到顶点v(ai+1)创建一条直连边。表1是名为“shorm.110”的蠕虫的api调用序列的分段,图6是从这个api调用序列构建的api调用图。该恶意软件程学的api调用跟踪包含一个有1145个api调用的序列。这个部分序列表现出59个可以突出恶意软件行为的api调用。在这个序列中,恶意软件程序读取一些文件的属性然后读写到注册表。修改注册表使得恶意软件把自己添加到启动项,以至于无论何时系统重启,恶意软件都会被执行。它也会在被感染的系统上创建一个处理线程以保证它的活动。2.特征提取我们使用可以在不同粒度水平捕获api调用图结构特点的特征来表征api调用图。更具体地说,我们从顶点层、子图层和图层三个层次来提取图论特征。1)顶点层特征:我们提取了三种顶点层特征:度、路径和连接。度特征包括入度、出度和互易性。路径特征包括中间中心性和接近中心性。连接特征包括三角数量、聚类参数和特征向量中心性。分别每个顶点的这些特征。接下来我们正式定义上述特征。度:顶点的度被定义为入射到该顶点的边的数量。顶点vi的度δi可以表示为:ejk表示顶点vj和顶点vk之间的向内或向外边。入度:顶点的入度表示为入射到该顶点的向内边的数量。顶点vi的入度δ↓i表示如下。出度:顶点的出度表示为入射到该顶点的向外边的数量。顶点vi的出度δ↑i表示如下。互易性:顶点的互易性表示为出度和入度的比率。顶点vi的互易性ri表示为:ejk表示顶点vj和顶点vk之间的向内或向外边。三角形数量:三角形定义为图中任意三个顶点的完全连通的子集。顶点vi的三角形计数δi定义为包含给定顶点的三角形数量。用表示和顶点vi连接的顶点的集合,三角形计数可表示为:聚类系数:顶点的聚类系数定义为该顶点连接三角形数量和可能三角形总数量的比率。以δi代表顶点的度,ti代表包含该顶点的三角数量。聚类系数ci可表示为:特征向量中心性:顶点的特征向量中心性是该顶点在网络中重要性的度量。以w代表图g的相邻矩阵,如果顶点vi和顶点vj之间存在边,则wi,j为1,否则为0。顶点vi的特征向量中心性ei可以表示为:λ是矩阵w的主特征值。中间中心性:顶点的中间中心性定义为所有通过该顶点的最短路径对的片段,除了起始或终止的部分。以pjk代表从顶点vj到顶点vk的最短路径,pjk=(vj,vl,vm,vn,…,vk)。顶点vi的中间中心性bi定义为:i(pjk,i)是指示函数,当vi∈pj,k时,i(pjk,i)=1,当时i(pjk,i)=0。接近中心性:顶点的接近中心性定义为该顶点到所有可达顶点的平均最短路径长度。以|pij|代表从顶点vi到顶点vj的最短路径。顶点vi的接近中心性ci可表示为:图7为名为“localalloc”的api调用的四个样例顶点层次的特征的分布:出度、三角形数量、聚类系数和接近中心性。这个特别的api调用从堆分配特定数量的字节并且对内存管理很重要。我们在良性和恶意软件的顶点层特征分布上观察到了明显的区别。2)子图层特征:以<a1,a2,…,am〉代表一个api调用序列,g=(v,e)是我们构建的相应的图。对于任何序列<x1,x2,…,xn>,其中n≤m,以p(x1,x2,…,xn)表示在<a1,a2,…,am>中找到<x1,x2,…,xn>的概率。以k代表在<a1,a2,…,am>中的唯一api调用的总数,k和|v|相等。这里k也代表每个xi(1≤i≤n)的样本空间大小。子序列<x1,x2,…,xn>的样本空间大小是kn。这里p(x1,x2,…,xn)也可以表示为联合概率p(x1∩x2…∩xn)。利用贝叶斯理论,这个联合概率可以用条件概率和边界概率的组合来表示。明确地,p(x1∩x2…∩xn)=p(x1|x2…∩xn)p(x2…∩xn).实际上,条件概率包含更精确的信息,因为和联合概率相比,它具有更少的样本空间。这些条件的n-gram概率可以很方便的用包含kn-1个状态的n-1阶离散时间马尔科夫链来表示。在多阶马尔科夫链中,每个条件n-gram概率对应一个唯一的状态。现在使用一个二元指示随机变量ii,i=1,2,...,kn-1表示一个马尔科夫状态的存在,kn-1表示n-1阶马尔科夫链中状态的总数。因此,p(ii=1)代表状态xi的存在概率。选择合适的马尔科夫链的阶数是很重要的。同时,也必须声明,我们对使用一个马尔科夫链对多个序列s进行建模十分感兴趣。这里用|s|代表我们想建模序列集合的大小。对每个序列,自相关法是有名的探索法来选择合适的马尔科夫链模型的阶数[7]。对于给定的延迟t,sm的自相关函数定义为:e{si}和分别代表s在延迟t的期望和标准差。自相关函数的取值范围为[-1,1],这里|ρ[t]|=1代表在延迟t的完美相关,|ρ[t]|=0代表在延迟t没有相关。选择使得ρ[tmin]落入95%置信区间范围的最小延迟tmin作为马尔科夫链的合适阶数。对于多个序列的集合,以τ代表之前提到规则的选择的阶数的集合。我们选择τ中的最大值τmax作为单马尔科夫链的阶数。马尔科夫链中状态的数量随着阶数的增长而指数增长,潜在模型的复杂度也是如此。此外,更高阶的马尔科夫链需要大量的训练数据来辨识出在训练数据中实际出现的状态的子集。从另一方面,利用有限数据训练出的马尔科夫链是稀疏的。为了克服这些困难,我们结合了在高阶马尔科夫链中的多个状态以减小状态的总数。我们本来结合不同阶数马尔科夫链中的不同状态以使用低阶马尔科夫链中的状态。现在,我们还需要建立一个标准来结合不同阶数的马尔科夫链中的状态。为此,我们使用马尔科夫链状态的典型性作为标准。典型性使得我们通过产生一个马尔科夫链状态的实现来识别出一个典型的子集[7]。在更详细的叙述前,我们首先陈述有名的典型性理论:对于任何稳定的、不可约的马尔科夫过程x和一个常数t,序列x1,x2,…,xm总是(n,ε)典型对于每个n≤clogm,m→∞。序列x1,x2,…,xm被称为(n,ε)典型对于马尔科夫过程x,如果只要p(x1,x2,…,xn)=0,并且当p(x1,x2,…,xn)>0时,有这里和p(x1,x2,…,xn)分别是经验的相对频率和序列x1,x2,…,xm的实际概率。换句话说,这个定理为我们提供了一种方法,以识别给定马尔科夫过程中任意长度的“典型”样本路径。基于这个定理,我们产生的马尔可夫过程的过渡矩阵的任意长度的实现(或采样路径)。通过生成一个给定的长度足够多的样本路径,我们可以准确地识别样本路径的一个相对较小的子集,是典型的。使用这种方法,我们选择前10000个典型状态x10000作为潜在的特征,这些特征的长度在[0,τmax]范围内变化。为了进一步减少子图层特征的数量,我们使用了信息论中的信息增益对特征进行排名[11]。信息增益被用来量化特征的差分能力,在我们的例子中,这是马尔可夫链状态。在这种情况下,信息增益是给定特征xi与类变量y之间的互信息。对于给定的特征xi和类变量y,xi相对于y的信息增益可以表示为:ig(xi;y)=h(y)-h(y|xi)这里h(y)表示类变量y的边际熵,h(y|xi)表示给定特征xi下的y的条件熵。换句话说,信息增益量化了类变量y的不确定性的减少,因为我们拥有特征xi的完整知识。对于我们的应用,类变量y是{benign,malware}。使用信息增益,我们最终选择了前100个典型状态x100作为特征。回想一下,我们可以识别api调用图的马尔可夫链模型的典型样本路径。我们使用这些典型的样本路径的存在或不作为子图级别的二进制特征。在这里,我们感兴趣的是研究他们的经验估计概率分布。理想情况下,我们希望典型集中的样本路径具有高概率。我们观察到,大多数样本路径有中到高的发生概率,这是可取的。这表明,我们可以成功地捕获可变长度的马尔可夫链样本路径。3)图层特征:图层特征捕获完整图的属性,而顶点层特征捕获单个顶点的属性。我们捕获了四个图层特征:团数、平均聚类系数、直径和平均路径长度。团数:一个团是一个子图,使得它中的所有顶点都被一条边直接连接在一起。图的群数ω定义为其最大团的顶点总数。平均聚类系数:图g(v,e)的平均聚类系数可以定义为:直径:图g(v,e)的直径d可以定义为:这里pjk是顶点vj和顶点vk之间的平均最短路径。平均路径长度:图g(v,e)的平均路径长度l可以定义为:这里pjk是顶点vj和顶点vk之间的平均最短路径。图8展示了良性和恶意软件的图层特征的分布。我们观察到,和恶意软件相比,良性软件的api调用图有更大数值的平均聚类系数。平均聚类系数测量的是图的连接性,大的聚类系数代表更多的连接。由于紧连接图具有较小的平均路径长度和直径,我们观察到良性程序的api调用图比恶意程序的平均路径长度和直径都要小。上面的观察是由于恶意软件程序往往一遍又一遍调用一些api序列。比如,在表1中的api调用序列中,我们观察到序列heapalloc→heapfree→regquervalueexw在序列中出现了很多次。实际上这个序列在“shorm.110”蠕虫病毒的完全序列中中出现了更多次。由于这种重复对添加新的边缘没有多大贡献,恶意程序的api调用图与良性程序的api连接不太紧密。3.图分类我们现在介绍我们的图分类方法,它使用从api调用图中提取的三个级别的特征。我们选择朴素贝叶斯算法作为机器学习分类器用于图像分类,因为它是一种轻量级的概率分类器,它被广泛地应用于文本和恶意软件分类等问题,而且在准确性方面也优于更复杂的技术[22]。我们使用两个概率集合来训练算法:先验,代表类变量y的边际概率p(y);给定类变量y下,特征xi的先验条件概率p(xi|y)。对于连续特征,朴素贝叶斯使用高斯分布并且从数据里估计它的参数以达到计算概率的目的[6]。这些概率可以从训练集来计算。给定一个未知api调用图,观察到的特征为xi,i=1,2,...,n,类的后验概率p(y|x(n))可以被计算,这里x(n)=(x1,x2,...,xn)是测试级联中的观测特征向量:通过假设条件独立性,朴素贝叶斯分类器在结合特征得到后验概率:虽然特征之间的独立性假设使其对后验概率有较低的复杂度是可行的,这是不可能的,这个假设真是现实中的所有时间。我们减少的独立性假设的影响通过预处理功能使用karhunenloeve变换[12],这与主成分分析密切相关。karhunenloeve变换是一种非参数方法,将特征转换为完全不相关的域。特征变换有助于减少不同特征之间的依赖关系,从而提高分类算法的性能。本发明通过实验结果评估malzero的有效性、效率和鲁棒性。为了评估malzero,我们收集了一个数据集,这个数据集包括564个各种各样的良性程学和14125个不同种类的恶意软件程序(http://openmalware.org/)。我们每个程序记录的api调用的数量是数以万计的,但是唯一的api调用的数量只有237个。1.有效性我们评估的有效性的malzero采用5倍交叉验证过程在我们的实验中。具体来说,我们将良性程序的数据集分为5个子集,恶意程序的数据集也是如此。我们报告了基于平均5次运行的结果,其中每个运行4个子集用于训练,剩下的子集用于测试。为了系统地评估这些特征集在分类良性和恶意程序中的有效性,我们首先使用独立的特征集进行实验,然后评估它们所有可能的组合。我们的分类性能的假阳性率(错误的恶意程序检测到的良性程序的一部分)和真正的阳性率(恶意程序的部分正确检测为恶意程序)的特点。真正率和假正率都被合并在一个叫做roc曲线下的区域(auc)。一个理想的分类器的auc是1:0。在训练阶段,我们选择roc工作点,以保持假正率低于1%。分类性能的另一个度量是精度,它被定义为真阳性数除以真阳性和假阳性的数目之和。表2显示了在使用不同auc、真正率、假正率和精度的特征集合的情况下,malzero相应的有效性。在独立的特征集中,子图特征提供最佳的分类性能。其次是顶点特征集,然后是图形特征集。我们认为子图特征集优于图特征集,因为它比图层特征捕获更详细的信息。此外,顶点特征集比子图特征集相对稀疏。我们还观察到,使用特征集的组合确实提高了分类性能。当所有特征集组合时,达到最佳分类性能。注意,使用所有的特性集始终如一地提供了最好的分类性能。使用所有的特征集合,malzero的真正率、假正率和精度分别达到了99.6%、0.9%和99.4%。表2malzero使用结合特征的有效性2.效率我们在一台配置有amdphentomii3.01ghz处理器和12.0gbdram的台式电脑上进行了实验。总的来说,我们所提出的方法扫描一个给定的程序平均需要不到一秒钟的时间。因此,malzero可以高效地在终端主机上使用。malzero的效率可以分别从图构建、特征提取和检测三个模块来分析。与现有的基于依赖图的恶意软件检测方案,需要跟踪数据的依赖性,在malzero图的构建模块简单的地图api调用序列图,可以在毫秒级的高效完成。对malzero特征提取模块提取少数特征构建的api调用图。特征提取的复杂性主要取决于api调用图的顶点大小。在我们的评估中,我们发现所有三个特征集对一个给定的程序平均花费不到半秒。对于检测,malzero采用贝叶斯而不是其他更复杂的机器学习算法的分类,如支持向量机,因为它的高效性。我们观察到,对给定程序的特征集进行分类平均需要不到第一百秒的时间。3.鲁棒性我们通过混淆攻击来测试malzero的鲁棒性。我们用如下混淆技巧来产生测试数据集中良性和恶意软件的混淆变种。垃圾注入:这种技术在程序跟踪中随机选取位置添加垃圾api调用。其结果是,api调用图中随机选取的顶点之间多了一条边。重新排序:这种技术把程序跟踪中的api调用互换。其结果是,行为图中随机选取的边被重新布线。对于系统的鲁棒性分析,通过不同的混淆操作,我们建立了数据集的混淆版本。这些混淆操作使得api调用图变得随机;因此,我们预期malzero的高效性会随着混淆操作数量的升高而降低[17][20]。图9展示了malzero在混淆数据集上测试的有效性。x坐标代表每个被混淆程序的api调用百分比。比如,一个包含m个api调用程序轨迹的50%的垃圾注入意味着m/2个垃圾api调用被随机注射到原始的轨迹。类似,一个包含m个api调用程序轨迹的50%的重排序意味着m/2个api调用被和其它随机选取的调用进行交换。通过比较垃圾注入、重新排序和他们的组合,我们发现malzero对于重新排序的鲁棒性要弱于垃圾注入。我们观察到,和单独的两种混淆技术相比,垃圾注入和重新排序的组合只有少量的影响。这表明重新排序对api图结构的影响要强于垃圾注入。我们发现,随着混淆程度的增加,malzero的效能逐渐退化。例如,遭受100%混淆时,对于垃圾注入和重新排序,malzero能效性表现在auc上分别为92.6%和85.1%。在200%混淆率时,分别降低为76.5%和61.1%。对于更多的混淆操作,auc接近50%,代表随机分类器。我们发现在更高层次的混淆,一个程序的api调用图会更加随机,其潜在的行为也受到影响。因此,一个程序可能不会运行并且在这些高层次混淆下回丢失它的核函数。本实施例的用于快速准确检测零日恶意软件的图论方法malzero,这种方法使用从api调用图中提取的特征建立分类器模型。从本研究中我们提取出两个关键点。首先,良性软件和恶意软件确实在各自的api调用图中会存在不同的图论性质。其次,我们从api调用图中提取的图论特征确实可以用来被有效地、高效地区分恶意软件和良性软件。我们的实验结果表明malzero可以达到多于99%的识别率和少于1%的假正率。此外,malzero在时间和存储上都是高效的;因此该方案可以被应用到终端主机上。在本实施例中,我们集中优化malzero的有效性和高效性。我们最终使用了一个标准的图形特征的列表,而不必担心对特定特性的任何行为理解。尽管提供在特定领域关于提出特征的见解可能对理解为什么这些特征会体现出这样的效果,我们相信特征和领域无关的本质实际上是一个优点,因为这验证了我们之前关于良性和恶意软件有不同图论性质的假设。因此,研究机构可以把malzero作为蓝图,并针对不同的设计目标提出额外的特征。参考文献[1]pandalabsannualreport.http://press.pandasecurity.com/pressroom/reports/.[2]f.ahmed,h.hameed,m.z.shafiq,andm.farooq:.usingspatiotemporalinformationinapicallswithmachinelearninglgorithmsformalwaredetection.inacmworkshoponsecurityandartificialintelligence(aisec),pages55–62,2009.[3]u.bayer,c.kruegel,ande.kirda.ttanalyze:atoolforanalyzingmalware.ineuropeaninstituteforcomputerantivirusresearchannualconference(eicar),2006.[4]u.bayer,a.moser,c.kruegel,ande.kirda.dynamicanalysisofmaliciouscode.journalincomputervirology,2(1):67–77,2006.[5]d.bilar.oncallgraphsandgenerativemechanisms.journalincomputervirology,3(4):285–297,2007.[6]r.r.bouckaert.naivebayesclassifiersthatperformwellwithcontinuousvariables.in17thaustralianjointconferenceonartificialintelligence,2004.[7]p.bremaud.markovchains.springer,2008.[8]c.chen,c.lin,m.fredrikson,m.christodorescu,x.yan,andj.han.mininggraphpatternsefficientlyviarandomizedsummaries.inacmconferenceonverylargedatabases,2009.[9]m.christodorescuands.jha.staticanalysisofexecutablestodetectmaliciouspatterns.in12thusenixsecuritysymposium,pages169–186,2003.[10]m.christodorescu,s.jha,s.a.seshia,d.song,andr.e.bryant.semantics-awaremalwaredetection.inieeesymposiumonsecurityandprivacy,pages32–46,2005.[11]t.m.coverandj.a.thomas.elementsofinformationtheory.wiley-interscience,1991.[12]r.dony.thetransformanddatacompressionhandbook,chapter1.crcpress,2001.[13]m.fredrikson,s.jha,m.christodorescu,r.sailer,andx.yan.synthesizingnear-optimalmalwarespecificationsfromsuspiciousbehaviors.inieeesymposiumonsecurityandprivacy,pages45–60,2010.[14]r.islam,r.tian,l.m.batten,ands.versteeg.differentiatingmalwarefromcleanwareusingbehaviouralanalysis.inieeeinternationalconferenceonmaliciousandunwantedsoftware,pages23–30,2010.[15]c.kolbitsch,p.m.comparetti,c.kruegel,e.kirda,x.zhou,andx.wang.effectiveandefficientmalwaredetectionattheendhost.inusenixsecuritysymposium,pages351–366,2009.[16]w.ma,p.duan,s.liu,g.gu,andj.-c.liu.shadowattacks:automaticallyevadingsystem-call-behaviorbasedmalwaredetection.journalincomputervirology,8(1-2):1–13,may2012.[17]m.musale,t.h.austin,andm.stamp.huntingformetamorphicjavascriptmalware.journalofcomputervirologyandhackingtechniques,2014.[18]p.porras,h.saidi,andv.yegneswaran.ananalysisofconficker’slogicandrendezvouspoints.technicalreport,sriinternational,february2009.[19]m.shahzad,m.z.shafiq,anda.x.liu.alargescaleexploratoryanalysisofsoftwarevulnerabilitylifecycles.in34thinternationalconferenceonsoftwareengineering(icse),pages771–781,2012.[20]s.m.sridharaandm.stamp.metamorphicwormthatcarriesitsownmorphingengine.journalofcomputervirologyandhackingtechniques,9(2):49–58,2013.[21]a.srivastava,a.lanzi,andj.giffin.systemcallapiobfuscation.in11thinternationalsymposiumonrecentadvancesinintrusiondetection(raid),volume5230oflecturenotesincomputerscience,pages421–422,2008.[22]i.h.witten,e.frank,andm.a.hall.datamining:practicalmachinelearningtoolsandtechniques.morgankaufmann,2011.[23]h.yinandd.song.panorama:capturingsystem-wideinformationflowformalwaredetectionandanalysis.inacmconferenceoncomputerandcommunicationssecurity(ccs),pages116–127,2007。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1