收藏 分享(赏)

基于机器学习的恶意行为自动化分析的论文.doc

上传人:为人民服务 文档编号:2358554 上传时间:2018-09-12 格式:DOC 页数:23 大小:1.26MB
下载 相关 举报
基于机器学习的恶意行为自动化分析的论文.doc_第1页
第1页 / 共23页
基于机器学习的恶意行为自动化分析的论文.doc_第2页
第2页 / 共23页
基于机器学习的恶意行为自动化分析的论文.doc_第3页
第3页 / 共23页
基于机器学习的恶意行为自动化分析的论文.doc_第4页
第4页 / 共23页
基于机器学习的恶意行为自动化分析的论文.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、基于机器学习的恶意行为自动化分析Konrad Rieck, Philipp Trinius, Carsten Willems, and Thorsten HolzBDomne 译摘要恶意程序是计算机系统中最主要的安全威胁,其变种的数量和多样性使得传统的安全防护不再可靠,互联网上数以万计的机器正受到恶意软件的侵害,这之中最常见的当属病毒、蠕虫和木马。同时,恶意程序采用的混淆和多态技术给文件层面的检测造成了很大阻碍,基于二进制的程序动态分析技术给描述和防御恶意威胁提供了一种新的手段。本文我们基于机器学习提出了一套恶意行为自动化分析的框架,此框架能根据相似的行为特征发现新的恶意程序类型(聚类),并将

2、未知的恶意样本指派到已知的类型中(分类)。在聚类和分类的基础上,我们接着又提出了一种增量分析的方法,它使得借助行为检测处理每天新增的大量样本成为可能,在保证准确识别新变种的同时,增量分析法能很大程度缩短目前通用方法的运行时间。1 介绍恶意程序是当今互联网中的一个主要威胁,从经典的计算机病毒到网络蠕虫,再到僵尸网络,无一例外的把连接到网络中的计算机系统作为攻击目标。此类威胁主要由黑色产业驱动,通过系统化的利用被入侵主机达到非法目的,比如传播垃圾邮件、获取机密数据等。遗憾的是传统的安全技术,比如防病毒扫描,在恶意程序不断增长的数量及多样性背景下变得不再那么可靠,导致互联网中成千上万的主机面临恶意软

3、件的威胁。为了对抗网络中快速传播的恶意威胁,反恶意程序的开发者很大程度上需依靠自动化来分析新的变种,进而制定相应的防护措施。然而,自动化分析并非易事,因为恶意程序的编写者经常采用混淆技术,比如二进制加壳、加密,或者代码自修改等来增大分析难度,这些手段对反静态分析特别有效。但和静态分析不同,动态的二进制流分析能够有效的监控程序的恶意行为,这些行为通常不容易隐藏,而且往往表征对应的恶意目的。因此,大量的研究工作集中到开发特定工具来收集和监控恶意样本的行为。动态监控二进制流为研究恶意行为提供了可能,但这还不足以阻止恶意程序的传播。真正需要的是能够自动化的分析样本行为,只有这样新出现的恶意操作才有可能

4、得到控制。针对基于机器学习的自动化分析近年来出现了以下两个概念:(a)对行为的聚类处理,目的在于发现具有相似行为的新类型;(b)对行为的分类处理,能够将恶意操作对应到已知的行为类别。早先的工作大都将这两个概念分开来研究,并通过不同的算法加以实现,以此来处理行为特征。在本文中,我们认为新类型的发现(聚类)和已知类型的区分(分类)是能合而为一的,对于有效的恶意程序分析它们都是不可或缺的。因此我们提出的恶意行为自动化分析框架将融合聚类和分类的处理。总体来说,本文主要有以下贡献:- 可计算的聚类和分类处理。我们将监控到的行为特征映射到一个向量空间,这样就能有效的应用到机器学习的相关方法。同时,为了使计

5、算成千上万的向量成为可能,我们介绍了一种基于原型向量的近似技术,这对于聚类和分类处理都是适用的。- 恶意样本的增量分析。通过结合聚类和分类处理,我们设计了一种增量法来进行行为分析,这使得处理每天新增的大量样本成为可能。通过迭代处理,增量分析法极大的降低了运行时间和内存占用,而且还保证了新类型的准确识别。- 借助实际的恶意样本进行评估。通过比较评估,我们证明了此框架要远胜于目前主流的分析方法。从结果来看,增量分析法降低了 94%的内存占用,并且在速度上至少提升了 4倍,它能够在少于 25分钟的时间内对 33000份行为报告进行处理。虽然提出的分析框架并不能消除恶意程序的威胁,但它为反恶意程序产品

6、的开发指出了一个新的方向,使其能够自动有效的识别新的恶意类型。文章其余部分的组织结构如下:第二节将介绍我们的分析框架,包括特征提取、机器学习技术以及恶意行为的增量分析。第三节将借助反病毒厂商提供的样本对框架进行评估。相关工作将在第四节讨论,第五节为本文的总结。2 恶意行为自动化分析恶意程序通常拥有复杂的行为特征,包括最简单的系统资源修改到多样化的网络交互。然而,属于同一家族的变种大都具有相同的行为模型,比如使用特别的互斥变量名或者修改特殊的系统文件。我们的目标就是利用这些相同模型进行自动化分析,并提出一套基于行为检测的包含聚类和分类处理的分析框架。我们的框架原理图如图 1所示,主要步骤可概括为

7、:1.首先我们将通过沙箱环境监控恶意样本的二进制流。基于具体的执行操作,换言之即系统调用,每一个二进制文件将产生一系列的行为报告,其中的系统调用和参数将保存在特定的表示法中以进行下一步的分析。(2.1 节)2.而后这些报告将被映射到一个高维的向量空间,每一维对应一种行为模型。借助向量表示,相似的行为可通过几何特性来衡量,这样很自然的就会用到聚类和分类的方法。(2.2 节)3.接着基于机器学习的聚类和分类方法将用来处理这些报告,进而识别成新的或已知的恶意类型。为了实现高效的分析计算,我们借助原型向量将具有相同行为的报告进行归类,这样在实际的分析中就能有效的用到近似分析法。(2.3 节)4.最后,

8、考虑到每天的样本数量,在聚类和分类的交互迭代中采用了增量法来进行行为的分析。那些匹配已知类型的样本将被对应的原型向量识别出来,接着再从那些未知的行为报告中发掘新的恶意类型。(2.4 节)接下来的章节将一一讨论这些步骤和详细的技术背景。我们将给出具体的行为监控实例,描述对应的向量表示,并详述聚类和分类处理以及增量法的应用。图 1:分析框架原理图。输入的行为报告将被归类到已知的恶意类型或新定义的类型,并且由聚类处理得到的新原型向量也将作用于后续的分析。2.1 监控恶意行为在基于行为的恶意程序分析中,先决条件是能有效的进行行为监测且对应的表示适合精确的计算处理。在本小节中,我们将介绍框架中用到的沙箱

9、技术以及通过恶意指令集来表示行为特征。2.1.1 恶意程序与沙箱为了监视二进制流,大部分方法用到了系统调用的拦截技术。和源码分析不同,二进制分析基于程序的反汇编结果,在此过程中源文件是可以被完全忽略的,而二进制流将被视作黑盒在受控环境中执行,其中所有的系统交互都会被拦截。因此,通过 hook 系统调用,沙箱能够监测和修改程序运行时的调用参数以及得到的返回值。当然,此类拦截的实现可分为多个层次,从简单的程序监控到深入进程的动态插桩或静态补丁都是可行的。我们分析中用到的 CWSandbox 工具则借助 inline hook 实现系统调用的拦截,通过修改每个系统调用的前几条指令,使其无条件跳转到

10、hook 函数,在 hook 函数中会将系统调用和对应参数记录到日志文件而后转去执行真正的调用函数。2.1.2 恶意指令集从沙箱 Anubis、CWSandbox 生成的报告可以看出,监控行为的表示方式主要基于文本和 XML 格式。然而,这样的表示只适合人工分析和一般意义上的统计计算,对于行为的自动化分析显然是不合适的。此类结构和富文本加大了应用机器学习处理报告的难度,因为机器对于观测到的行为流是不能直接理解的。此外,复杂的文本表示还会增加报告的大小,这对于分析算法的执行性能也是不利的。为了应对此问题以及优化报告的处理,我们从处理器的指令集设计中获得灵感进而提出了基于恶意指令集(MIST)的行

11、为表示方式。和一般的格式不同,监控到的恶意行为将转而由一系列的指令来描述,即每一条线程流或进程流的描述将依次附加到统一的报告中。在这种格式下,一条指令将对应一个具体的系统调用,且参数都由数字来标识,例如03 05用来表示系统调用move_file。对于多个参数的情况,将采用不同的等级块来表示,对应到行为识别的不同等级,我们称之为 MIST 等级。此外,像文件名和互斥变量名这些变长参数将由索引号表示,借助全局映射表可将索引号和原始内容进行转换。图 2:MIST 指令图解。CATEGORY 表示对应的系统调用类别,OPERATION 表示具体的系统调用,ARGBLOCKN 表示参数。图 2展示了

12、MIST 指令的基本结构。指令的第一级对应系统调用的类型和名称,例如,03 05对应filesystem (03)类型,名称为 move_file(05)。接下来的各级包含不同的参数块,其识别顺序为自左向右,这样排列的主要目的是为了消除“噪音”元素,比如将进程和线程的标识参数移到指令的末尾,而将目录名和互斥变量名这些固定且易于区分的参数移到开头,这样基于行为的分析最多只要考虑到指令的某一具体等级即可。此外,如果指令间只存在小幅的差别,比如使用了随机文件名,那么这些类型的相似行为也是有可能被检测出来的。作为例子,图 3比较了 CWSandbox 早先的 XML 表示法和新的 MIST 表示法在生

13、成报告时的不同。图示的 move_file 操作带上了具体参数,虽然从格式来看它们差别较大,但表示的却是相同的内容。容易看出,MIST 指令的参数排列被重新处理过了,其中文件路径名和扩展名包含在级别 2中,而文件名则包含在级别 3中。此外,借助数字标识和索引,MIST指令表示比 XML 表示要精简的多。图 3:系统调用的特征表示。CWSandbox 通过 XML 属性表示系统调用,而恶意指令集(MIST)通过结构化的指令表示系统调用。2.2 恶意行为的向量映射前面提到的 MIST 特征表示能够较好的对行为进行描述,具体的动态二进制流将由一系列指令组成的报告来表示。而诸如改变注册表键值或者修改系

14、统文件之类典型的恶意行为将会对应报告中的特定子序列,但是,这种表示仍不适合应用机器学习来分析,因为学习算法通常处理的是向量中的实际数据。为了解决此问题,我们将介绍一种把恶意行为映射到向量空间的技术,此处的灵感主要源自自然语言的处理和基于主机的入侵行为检测。2.2.1 使用 q元指令进行映射从抽象层面看,恶意程序的行为报告 x对应一系列具体的指令,为了描述此序列的内容,我们引入滑动窗口的概念,并假设每个子序列的偏移量为 q。由此得到的指令片段集,即 q元指令,将对应各简短的行为模型,这其中蕴含着一定的程序语义。为了通过 q元指令进行报告的映射,我们定义了一个包含所有可能 q元指令的集合 S:其中

15、 A表示所有可能指令的集合,考虑到 MIST 的等级划分,这里的 A和 S可能包括从无参数系统调用(级别 1)到全参数系统调用(级别大于 1)之间的所有情况。借助集合 S,恶意行为报告 x可被映射到一个|S|维的向量空间,每一维对应一个 q元指令,即单独的行为模型。相应的映射函数 ,也就是 q元指令的存在标识,定义如下:作为例子,让我们考虑这么一个报告 x = 1|A 2|A 1|A 2|A,它仅包含两条指令,集合 A = 1|A, 2|A。如果我们通过 2元指令来描述报告 x,那么 (x)表示如下:不同于这个简单例子,实际指令集的向量空间维度要大得多。例如,对于 MIST 等级为2的 2元指

16、令,1000 个报告集合中通常包含超过 100000个单独的 2元指令,因而映射的向量空间维度将超过 100000,咋看之下,要计算比较这么高维度的向量几乎是不可能的。然而,单独一个报告 x所包含的 q元指令数目与其长度仅成线性相关,也就是说,对于包含了m条指令的报告 x,其最多由(m-q)条不同的 q元指令构成。因此,不论实际的向量空间维度有多大,对于特征向量 (x)来说,最多只有(m-q)维的值是非零的。鉴于这样的稀疏向量 (x),使得我们可以通过时间复杂度为线性的算法来比较不同的映射报告,因而才能通过第 3节介绍的方法进行高效的行为分析。同时,非零维度的数量还和其它因素有关,比如冗余的行

17、为、用到的符号集或者报告的长度等。事实上,在这些因素中报告的长度影响最大并且会给结果带来误差,在比较长度相差较大的报告时尤为明显。为了消除误差,我们引入了标准化映射函数:它将起到均衡的作用,使得每个向量 (x)的向量基等于 1。通过这种标准化处理,在 q元指令相对更少的报告中,每条 q元指令的影响权重将更大。也就是,对那些包含重复行为模型的报告,改变其中一定数量的指令在映射向量上带来的影响要大于那些由多种不同的行为模型组成的报告。这种形式的标准化在以信息检索进行文本比对领域有着广泛的应用,通常被当作相似计算的一部分。2.2.2 映射报告的比较将报告映射到向量空间使得我们能够借助几何方法来描述相

18、似行为,进而自然的用到机器学习的相关技术。为了计算映射报告间的几何距离,我们定义了距离 d:它将用来比较映射报告 x和 z的行为,这种表示和欧几里得距离 是一致的。因为经过了标准化处理,所以距离 d(x,z) 的取值范围为 0到 ,即相同行为(0)到最大偏差( )间的距离范围。当借助向量空间将问题转换到几何层面后,我们就可以通过机器学习的方法来有效的分组和区分映射报告了。那些来自相同家族的恶意变种在行为上拥有一些共同的 q元指令,彼此间具有相似性,因而 d值较小,而来自不同家族的恶意报告间 d值较大,彼此在向量空间上的分布也更分散。同其它计算距离的方法相比,我们的方法借助了向量表示,每一个 q

19、元指令都对应到具体的行为模型,后续的分析算法就是建立在这些行为模型基础上做出的判断。2.3 聚类和分类通过建立恶意报告到向量空间的映射,使得我们可以采用机器学习的方法来进行行为分析。具体来说,我们将涉及以下两个概念:行为的聚类,即能够通过相似行为识别新的恶意类型;行为的分类,即将程序对应到已知的恶意类型。为了更新恶意程序信息,需要每天通过聚类和分类的方法处理大量的样本报告,但是,大部分学习算法在复杂度上和输入数据量成超线性关系,因而不能直接应用到恶意程序的分析中。为了处理此问题,我们在进行聚类和分类时采用了一种相似法计算。相同家族的二进制流经常包含相似的手法,进而表现出几乎相同的行为模型,因此

20、对应的映射报告在向量空间上看起来是彼此汇集的。利用这种聚合特性,我们使用原型向量来进行相似样本的归组,这里样本报告是由一组行为模型来表示的。通过减少算法对原型向量的计算以及结果反馈机制,我们能加快聚类和分类的处理。同时,每个选取的原型向量都能对应到具体的样本报告,因而对分析者来说行为信息是可见的,若采用哈希方式来处理就不透明了,分析者几乎得不到具体的行为信息。图 4(a)阐述了原型向量的概念,在构造的数据集上由每个原型代表一组相似的向量。图示大约有 100个向量,它们被分成 3个聚集,由 5个原型向量(以黑点表示)来代表这些数据。注意原型个数没必要和聚集个数相一致,比如图 4(a)下方和上方的

21、聚集各有两个原型向量。正如第 3节所述,原型向量近似法比精确计算法更能提高运行效率,同时仅引入很小的误差。图 4:使用原型向量进行行为分析:(a)原型向量,(b)借助原型向量划分聚集,(c)借助原型向量进行分类。图 4(b)的黑线表示聚集中的原型关联。图 4(c)的黑线表示类型划分。2.3.1 提取原型向量从样本集中提取一小部分具有代表性的原型并不是一件容易的事,大多数提取方法主要依靠聚合处理或者超线性计算,但如果作为实现有效近似计算的基础,这显然就不合适了。更糟的是,要找到最优的原型集合似乎还是一个 NP 难题。但幸运的是,我们可以通过修改Gonzalez 提出的一个时间复杂度为线性的算法来

22、获取原型集合,可以证明其在效率上仅比最优方案慢了 1倍。具体的算法描述见 Algorithm 1。此算法通过迭代从报告集中提取原型向量,其中初始向量要么是设定的要么是随机选择的。在每轮迭代中,我们会计算当前各原型向量到所有剩余报告间的距离 d(第 5-7行),d值最大的映射报告会被选作新的原型向量(第 4行),通过不断的迭代这些报告最终都会被原型向量覆盖到,此过程将一直进行下去直到所有的向量到其最近的原型向量间的距离 d小于临界值 (第 3行)。算法的时间复杂度为 O(kn),其中 n为所有报告的个数,k 为原型向量的个数。给定值是精心选择的,算法和报告个数成线性关系,其中 k值仅和报告的向量

23、空间分布有关。另外,如果 值无法确定,那么也可以通过设置 k的上限值来控制迭代轮数。2.3.2 建立在原型向量上的聚类过程聚类是机器学习中最基本的一项技术,它的目标就是将给定的数据划分成有意义的分组,即聚集。划分一旦确定下来,那么在同一聚集中的各个样本彼此间是相似的,反之不同聚集的样本间是不相似的。聚类有助于发现未知数据的构成,并且在许多方面都得到了应用。借助聚类分析恶意行为最初是由 Bailey 提出的,之后由 Bayer 完善。我们遵循了这个方向,并且还探究了标准的层级聚类技术,最终在这些基础上分组相似的恶意程序。和早前的工作不同,我们将基于原型向量的思想展开分析。首先需要确定聚集中的原型

24、向量,而后再向各聚集中添加其余的样本向量,图 4(b)就给出了这么个聚类过程,黑线连接的两个原型向量属于同一聚集。对应的聚类算法见 Algorithm 2。最初每个原型向量都是一个单独的聚集,算法通过迭代计算合并那些间距小的聚集(第 4行),直到最接近的聚集间距大于 为止。算法以两个聚集中包含的所有成员间的最大距离来表示它们的间距,类似于标准的层级聚类算法。接着算法将向这些聚集中添加对应的样本,每个样本一旦确定所属聚集后,就会成为初始报告集中的一部分(第 6-8行)。此外,成员数小于 m的聚集不会被采纳,对应样本会被归入到下一轮的增量分析中,这部分内容将在 2.4节讨论。算法的时间复杂度为 O

25、( logk + n),其中 n表示报告的个数,k 表示原型向量的个数。相对比准确的层级聚类法的 O( logn)时间复杂度,基于原型向量的相似计算法在性能上提升了 (n/k)倍。2.3.3 建立在原型向量上的分类过程接下来我们将讨论分类技术,它能够区分不同类型的样本对象。分类方法在具体应用前需要有个训练阶段,区分模型将通过一系列已标识的样本对象推导出来,而后这些模型将用来预测未处理样本对应的类型。因为许多实际应用中涉及到了分类学习的概念,所以目前有很多这方面的技术研究。Lee 和 Mody(2006),以及 Rieck(2008) 都曾研究过使用分类法分析恶意程序的行为,在这些方法中,未处理

26、的恶意行为将被归类到已知的行为类型,初始训练样本则通过防病毒扫描器进行标识。然而,目前大部分的防病毒产品在恶意类型上都不完整,并且还有可能前后不一致,因此在训练时不能提供精确的标识。为了改进,我们通过聚类划分恶意类型,并以此进行分类训练来学习区分不同的行为聚集。在我们的框架中,聚集借由原型向量来表示,我们还通过近似法提高了分类的效率。作为例子,图 4(c)展示了基于原型向量的分类过程,对应的算法见 Algorithm 3。对于每个报告 x,算法将找出各聚集中与之最接近的原型向量(第 1-2行)。如果它们间的距离小于 ,那么报告 x将被当作已知类型而添加到这个聚集中,否则将归到后续的增量分析报告

27、集中(第 4-6行)。此过程也称作最近原型向量分类,可看作 k最近邻分类算法的一种变形。此算法的时间复杂度为 O(kn),因为对这 n个报告来说,要确定每个报告最接近的原型向量需要和初始的 k个原型向量都进行一次计算。但若借助特殊树结构表示原型向量的话,那么可将最差情况下的时间复杂度降到 O(nlogk)。然而,在我们的分析框架中,我们更倾向于这种简单的算法实现,因为它是高可并行的,借助多核系统反而可以获得更好的运行性能。2.4 增量分析法通过结合聚类和分类,我们设计了一种增量法来分析程序的恶意行为。早先的工作大都受限于批量的分析处理,而在我们的方案中每轮仅需处理一定数量的恶意报告,例如以每天

28、的新增样本量为基准。为了实现增量分析,我们需要跟踪每轮处理后的中间结果,比如聚类操作就需要考虑上一轮新得出的计算结果。幸运的是,原型向量使得我们能够简明的表示新发现的聚集,同时还很大程度上加快了分类操作。最终结合了增量法的基于原型向量的聚类和分类处理如 Algorithm 4 所示。分析数据主要来自蜜罐采集及一定时间段内收集的恶意样本。在开始阶段,待分析报告先通过已知的聚集类型进行分类处理(第 3行),因而,已知的恶意变种将被识别出来并作用于后续的分析。随后,我们从剩余报告中提取出新的原型向量用于接下来的聚类处理(第 4-5行),新定义的聚集原型向量将加入到已有的原型向量集合中,这样它们就能用

29、于下一轮的分类处理。分类处理和聚类处理这两个过程将交替进行,因此,未知的恶意程序数将不断减少,且新出现的恶意类型也能被自动的识别出来。然而,在一轮增量分析中,可利用的样本数可能不足以确定新的恶意聚集,例如,罕见的恶意变种在映射空间上仅能被很少量的样本所代表。为了缓解此类信息不足,我们将拒绝采纳成员个数少于 m的聚集,对应的报告将在后续进行重新处理,因而,罕见程序的样本数将逐渐累积直到它们能够确定新的行为聚集。正如 3.4节所阐述的,此过程可以保证准确识别新的恶意类型,即便我们在最初的增量分析阶段可能没有足够多的信息。对于每轮处理 n个报告块的增量分析,其算法的时间复杂度为 O(nm+ logk

30、) ,m 表示上一轮分析得到的原型向量个数,k 表示当前这一轮分析新提取的原型向量个数。虽然复杂度和 k成二次比,但每一轮计算中新提取的原型向量数只和报告块的大小及分布有关。因此,增量分析的算法复杂度主要由 m确定,即已知类型中原型向量的个数,这和防病毒产品中特征匹配时的线性复杂度是相同的。3 实践与应用接下来将通过实验评估我们提出的恶意行为分析框架。首先,我们会在参照数据集上调整框架中的每个独立组件(3.2 节)。而后,我们对基于原型向量的聚类及分类处理和目前最新水平的分析法做了个比较(3.3 节)。最后,我们利用防病毒厂商提供的样本进行了一次实际应用,以此评估框架的功耗和运行性能(3.4

31、节)。3.1 实验数据我们在实验中将用到两组恶意程序:参照数据集包含已知类型的恶意样本,它将用来调整我们的分析框架,而应用数据集包含的是从防病毒厂商那里获得的未知恶意样本。- 参照数据集:参照数据是从 CWSandbox 网站维护的一个恶意文件数据库中提取的,这些数据的收集已经超过了 3年,主要从蜜罐、垃圾邮件、防病毒厂商以及安全研究者等渠道获取。在整个数据库中,我们选用那些能被目前主流防病毒产品识别的已知类型样本,虽然各厂商的标识可能不一致,但我们希望通过不同产品的扫描能使结果更准确合理些。同时,为了平衡各恶意类型的分布,我们将丢弃那些样本数少于 20的类型,并且每个类型的最大样本数被限制在

32、 300以下。所有选用的恶意样本将在 CWSandbox 沙箱环境中监控执行,最终我们得到 3133份 MIST 格式的行为报告(表 1)。表 1:24 种恶意类型组成的参照数据集。此集合包含 3133份恶意行为报告,其中常见类型的样本数被限制在 300以下。- 应用数据集:和参照数据集包含已知样本用于评估测试不同,应用数据集仅包含未知的恶意样本,它由厂商 Sunbelt Software 提供的 7组样本集合构成。这些二进制文件对应2009年 8月份连续 7天中的所有恶意程序,收集方式涵盖了多种渠道,如防恶意程序扫描器、厂商间交换或者蜜罐等。Sunbelt Software 使用这些样本更新

33、产品 VIPRE 的特征以及ThreatTrack 中的数据。与参照数据集类似,各组恶意样本也在 CWSandbox 沙箱环境中监控执行,最后总共得到 33698份 MIST 格式的行为报告,关于此数据集的统计信息以及行为报告的特点如表 2所示。表 2:33698 份报告组成的应用数据集。此集合包含防恶意程序厂商 Sunbelt Software在2009年 8月 1日到 7日收集到的样本。3.2 组件的评估作为实验的第一部分,我们将对框架中的组成部分做出评估和调整,包括原型向量的提取、聚类处理以及分类处理。为了直观展现组件的性能,我们引入精度和覆盖率这两个评估参数,精度 P反映得到的聚集和恶

34、意类别的吻合度,而覆盖率 R表示具体恶意类别在各聚集上的分散情况。基于聚集集合 C和恶意类别集合 Y,我们给出如下精度和覆盖率的定义:其中#c 表示聚集 c中属于相同恶意类别的最大样本数,#y 表示各聚集中 y类恶意样本数的最大值。如果每个样本都作为一个单独聚集,那么 P值将取 1,而覆盖率偏小。反之,如果所有样本都属于同一个聚集,那么 R值将取 1,而精度偏小。为此,我们转而寻找一种能够放大精度和覆盖率的表示机制,最终,我们给出结合这二者的性能估值 F-measure 的定义:当 F取 1时,结果是最理想的,反之,不论精度还是覆盖率偏小都会导致 F-measure 值偏小。原型向量提取作为此

35、框架的第一个组件,我们首先对其性能做出评估。我们将在参照数据集上测试原型向量的提取精度,同时也会得到原型向量个数在样本总数中的占有比(压缩率)。这里不需要考虑覆盖率,因为并不要求原型向量能够表示完整的恶意类别。通过改变Algorithm 1 中的距离参数 ,我们可以得到不同的原型向量集,此外,q 元指令的长度 q将从集合1,2,3,4中选取,我们将借此评估不同设置下的映射报告。图 5:在参照数据集上提取原型向量。精度和压缩率随原型向量定义的阈值 (原型向量间的最大距离)而改变。图 5展示了 MIST 等级为 1和 2时原型向量的提取结果(超过 10次运算得到的平均估值),其中初始原型向量是随机

36、选择的。所示结果中 q元指令的长度为 2,此时精度和压缩率能达到最好的平衡。在最优情况下,即精度为 0.99时,原型向量的个数在总样本中的占比分别为 2.9%和 7.0%。此外,不同实验中运算的平均标准差低于 1.5%,且得到的精度可视为具体的统计特征。最终,我们将根据上述的最优情况调整距离参数 的取值,且在后续实验中 q元指令的长度均设为 2。接下来我们开始评估建立在原型向量基础上的聚类处理。对于本实验,我们在参照数据集上分别计算了基于原型向量的聚类和标准的层级聚类对应的 F-measure 值。通过改变Algorithm 2 中的距离参数 的取值(从 0到 2),我们可以得到不同粒度和数目

37、的聚类处理结果。图 6展示了 MIST 等级为 1和 2时聚类处理的评估结果,同样取的超过 10次运算得到的平均值,且初始原型向量也是随机选取的。可以看到,基于原型向量和标准的层级这两种聚类方法的精度随距离参数 的变化情况几乎是相同的,只要相似的样本能被归入到正确的聚集中,那么 F-measure 的取值将随参数 而增加,最终在 0.6和 1.1之间达到稳定状态。两次实验的 F-measure 值分别达到了 0.93和 0.95,几乎完美识别出了参照数据集上的 24类恶意程序。在后续实验中,我们将依此修正参数 的取值。此外需要提及的是,虽然两种聚类方法表现相同,但基于原型向量的聚类处理在识别新

38、聚集时所需的样本数还不到后者的十分之一。图 6:参照数据集上的聚类处理性能评估。所示为基于原型向量和标准层级的聚类处理性能参数(F-measure)随距离 (聚集间的最小距离)的变化情况。在第三个实验中我们将对分类的性能进行评估。因为分类是含训练阶段的有监督的学习任务,所以我们将参照数据集随机的分为训练部分和测试部分,结果同样取 10次以上运算的均值。同时,每次运算我们会将一半的恶意类别视作是未知的,其中的样本不参与训练,因此,我们需要考虑以下两种不同的 F-measure 表示: 用来评估在已知类型上的分类处理性能。除了仅考虑已知类型集合上的精度及覆盖率这点不同外,其余都和公式(7)中的 F

39、-measure 相同。: 用来评估舍弃未知类型样本的性能。在所有样本数据上,它都按公式(7)进行计算,然而,对于精度和覆盖率的判定只需考虑两种情况:拒绝和接受。图 7展示了 MIST 等级为 1和 2时对应的评估结果。分类已知类型样本的 F-measure值随距离参数 而增大,但舍弃未知类型样本的 F-measure 值正好相反。当距离 的取值越大时,即原型向量代表的范围更广,我们能更好的描述已知类型的恶意样本,但是,如果参数值 过大的话,那么未知样本就很容易被错误的归类为已知的恶意类型。在最佳情况下,这两种类型的 F-measure 值能同时稳定在 0.96到 0.99之间,不仅适合于分类

40、已知类型的样本,而且还能很好的舍弃未知类型的样本用于接下来的聚类处理。图 7:参照数据集上分类处理的性能评估。分类已知类型样本和舍弃未知类型样本对应的性能参数(F-measure)随拒绝阈值 (原型向量间的最大距离)而变化。3.3 与主流方案的比较在调整完框架中的各组件后,我们将和目前主流的方案在恶意行为分析上做一个比较评估。对于行为聚类的比较,我们选用 Bayer(2009a) 提出的方法,其在 Anubis 沙箱生成的行为特征基础上采用位置敏感哈希函数(LSH)来进行近似聚类计算。而对于分类的比较,我们选取 Rieck(2008)提出的方法,该方法通过行为监控获得 XML 格式的特征,并采

41、用支持向量机(SVM)来学习分类识别。我们将详细按照上一节的测试过程进行这两种比较,并且选用了对应的最佳参数设置。表 3:参照数据集上不同分析方法的比较。所示为聚类和分类处理的性能评估值(F-measure)。对于分类给出了已知类型上的 F-measure 值( )和未知类型上的 F-measure值( )。以 F-measure 值作为性能评估标准的比较结果如表 3所示。在这两方面分析中我们的框架上对应组件的性能都要优于相关的方法。其中,基于原型向量的聚类处理在 MIST 等级为 1和 2时对应的 F-measure 值分别为 0.95和 0.936,而 Bayer 的方法仅能达到 0.88

42、1。同样的,我们在分类处理上的 F-measure 值都高于 0.96,而 Rieck 的方法在分类已知恶意样本时性能值仅为 0.807,且在分类未知类型时更是不足 0.55。我们的分析框架之所以体现出这么大的性能优势主要源自于聚类和分类处理中用到的几何构思,其间我们直接利用了MIST 描述所提供的行为表示。需要指出的是,和 Bayer 的聚类处理相关的测试我们很荣幸交由维也纳技术大学来完成。其中恶意样本是在 MIST 报告生成 6周后才进行测试的,因此不能保证监控到的行为是完全一致的,毕竟行为表现的不同有可能是两次的监控时间间隔造成的。但不管怎么说,基于原型向量的聚类处理确实提高了 F-me

43、asure 性能值。3.4 应用实例目前为止我们的框架在包含已知恶意样本的参照数据集上完成了评估测试,然而,能在未知样本中发掘新的恶意类型才是基于行为的分析技术优于相关方案的地方。因此,我们将目光转向未知样本的处理。在应用数据集上我们将使用 2.4节介绍的增量法进行分析,其中,每轮迭代将处理七份样本块中的一份,这么设计和防病毒厂商一贯的处理方式有关,即特征库的更新分析是以一天中的新增样本量为基本单位的。我们将根据前面在参照数据集上的评估对原型向量提取、聚类和分类处理的相关参数做出调整。同时,Algorithm 2 中的阈值 m被置为 10,也就是说成员个数小于 10的聚集将会拒绝采纳,对应样本

44、将进入下一轮的迭代分析。此外,我们将 MIST 的等级限制为 2,因为此类指令组成对于精度要求已经足够了,而且还能对抗简单的绕过攻击。最后,作为增量分析法的对照,应用数据集也将借助标准的层级聚类进行处理。图 8:应用数据集上的聚类评估。图 8(a)由聚集数和 Rand 指数比较标准聚类法和增量分析法二者的处理结果,图 8(b)为增量分析法处理后的聚类-分类比。图 8展示了应用数据集上基于行为分析的处理结果。其中,增量分析法和标准聚类法的比较结果见图 8(a),两者间的差别可以忽略不计,即便在处理完这 7天收集的所有样本后,它们最终的总聚集数也是相差无几,我们可以从图 8(a)的 Rand 指数

45、得到印证。 Rand 指数是聚类比较的一个衡量标准,其值为 1时表示聚类结果相同,而为 0时则表示结果差别最大。可以看出,在增量分析的每一轮迭代中,Rand 值稳定在 0.99,表明这两种聚类方法得到的分析结果几乎是完美吻合的。在增量分析中,报告的状态可分为已分类的、已聚类的以及非接受的三种情况,图 8(b)为应用数据集上连续 7天累积的分析报告在这三种状态下的比率。随着越来越多的报告加入到聚类处理中,得到的聚集数将不断增多,而不被接受的报告数也将持续的减少。此外,在首轮迭代后,分类的报告数有了显著的增加,因此需要进行聚类处理的数据将变得更少,进而节省了运行时间。从这些结果可以看出在增量分析中

46、结合聚类和分类处理还是很有优势的,不仅在得到的聚集上和标准的聚类法相同,而且还能将报告从耗时的聚类处理转换到更高效的分类处理。接下来,在详细阐述获得的性能提升前,我们先来讨论一下本次结果中所发现的恶意类型。3.4.1 恶意聚集的评估实验结果中恶意聚集的相关统计信息如图 9(a)所示。我们从应用数据集上的 33698个恶意样本中一共得到了 434个聚集,其中,各聚集在大小上的分布差异还是比较明显的,平均而言每个聚集包含 69个样本报告,然而最大的聚集却由超过 2500个的样本报告组成。总体来看,提取出的 1805个原型向量能有效的表示所有的样本报告,每个聚集平均和 4个原型向量存在关联,最终得到

47、的压缩比为 5.4%。图 9(b)所示为增量法结果中成员个数最多的 10个聚集。我们借助卡巴斯基防病毒引擎扫描这些恶意样本,并将每个聚集中出现频率最高的病毒标识作为此聚集的参考名称。同时,由于刚获得的样本目前还都是未知类型的,为了给防病毒引擎足够的时间进行特征更新,对应的样本扫描过程是在 8周后才进行的。对于图 9(b)来说,每个聚集都有一个代表性的病毒标识,能够表明各成员行为上的总体特点。其中,聚集 3主要和文件感染型病毒 VIRUT 存在联系,样本中包含此恶意类型特殊的行为操作,如&virtu方式下的 IRC 僵尸功能。聚集 8中的样本则全部和 ALLAPLE蠕虫有关,它们都具有相同的典型

48、行为,诸如创建urdvxc.exe文件以及频繁的 ping扫描。而让人颇感意外的是,聚集 4的标识为 NF(nothing found),也就是实际上都没有包含恶意的行为。尽管如此,对于此聚集中的样本来说,它们都是由 Winzip 或 WinRAR这类工具生成的自解压文件,这虽然和恶意操作不相关,但同样也能说明我们的分析框架具有发掘新的行为类型的能力。图 9:应用数据集上的增量分析。图 9(b)中的病毒标识为获取样本 8周后通过卡巴斯基防病毒引擎扫描得出的。很显然,分析结果看起来是有出入的,恶意类型 BASUN 以及 SWIZZOR 就同时出现在了不同的聚集中,似乎区分还有失准确性。然而,基于

49、行为的分析对比一般的防病毒分析工具其主要优势表现为:恶意程序的分析将考虑样本的行为特征而不再是上下文的相似性。例如,虽然所有标识为 BASUN 的二进制样本都共享相同的主服务器名all-internal.info,但是一旦进行连接就会表现出各异的行为,包括连接失败(聚集 2)、检查 Windows 更新(聚集 1)以及成功连接恶意站点(聚集 7)。同样的,SWIZZOR 样本最开始都是先注入 IE进程,但随后的处理就不同了,对于聚集 9中的样本,它将下载并执行不同的二进制文件,而对于聚集 10来说,样本将通过 HTTP POST 请求向远程服务器传输数据。因此,对于同一恶意类型中不同行为实现的聚集是很难单独由静态上下文进行区分的,或许只能通过基于行为的分析法来识别。最新恶意程序表现出的依据上下文、远程控制以及下载的 payload 执行不同操作的能力使得借助行为分析来进行高效的特征更新和针对性防护变得至关重要。3.4.2 运行时间和内存的要求作为此框架实际应用中的最后一个问题,我们将讨论它的运行性能和内存要求。首先,我们评估了在 q元指令表示的向量空间上进行报告映射和距离计算的运行时间。而后,在和标准批量分析的比较中,我们基于应用数据集考量了增量分析对于运行时间和内存的要求。所有实验均在 AMD Opteron 2.4GHz 四核处理器

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报