基于机器学习的恶意行为自动化分析Word文档格式.docx
- 文档编号:21381662
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:23
- 大小:931.84KB
基于机器学习的恶意行为自动化分析Word文档格式.docx
《基于机器学习的恶意行为自动化分析Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于机器学习的恶意行为自动化分析Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
总体来说,本文主要有以下贡献:
-可计算的聚类和分类处理。
我们将监控到的行为特征映射到一个向量空间,这样就能有效的应用到机器学习的相关方法。
同时,为了使计算成千上万的向量成为可能,我们介绍了一种基于原型向量的近似技术,这对于聚类和分类处理都是适用的。
-恶意样本的增量分析。
通过结合聚类和分类处理,我们设计了一种增量法来进行行为分析,这使得处理每天新增的大量样本成为可能。
通过迭代处理,增量分析法极大的降低了运行时间和内存占用,而且还保证了新类型的准确识别。
-借助实际的恶意样本进行评估。
通过比较评估,我们证明了此框架要远胜于目前主流的分析方法。
从结果来看,增量分析法降低了94%的内存占用,并且在速度上至少提升了4倍,它能够在少于25分钟的时间内对33000份行为报告进行处理。
虽然提出的分析框架并不能消除恶意程序的威胁,但它为反恶意程序产品的开发指出了一个新的方向,使其能够自动有效的识别新的恶意类型。
文章其余部分的组织结构如下:
第二节将介绍我们的分析框架,包括特征提取、机器学习技术以及恶意行为的增量分析。
第三节将借助反病毒厂商提供的样本对框架进行评估。
相关工作将在第四节讨论,第五节为本文的总结。
2恶意行为自动化分析
恶意程序通常拥有复杂的行为特征,包括最简单的系统资源修改到多样化的网络交互。
然而,属于同一家族的变种大都具有相同的行为模型,比如使用特别的互斥变量名或者修改特殊的系统文件。
我们的目标就是利用这些相同模型进行自动化分析,并提出一套基于行为检测的包含聚类和分类处理的分析框架。
我们的框架原理图如图1所示,主要步骤可概括为:
1.首先我们将通过沙箱环境监控恶意样本的二进制流。
基于具体的执行操作,换言之即系统调用,每一个二进制文件将产生一系列的行为报告,其中的系统调用和参数将保存在特定的表示法中以进行下一步的分析。
(2.1节)
2.而后这些报告将被映射到一个高维的向量空间,每一维对应一种行为模型。
借助向量表示,相似的行为可通过几何特性来衡量,这样很自然的就会用到聚类和分类的方法。
(2.2节)
3.接着基于机器学习的聚类和分类方法将用来处理这些报告,进而识别成新的或已知的恶意类型。
为了实现高效的分析计算,我们借助原型向量将具有相同行为的报告进行归类,这样在实际的分析中就能有效的用到近似分析法。
(2.3节)
4.最后,考虑到每天的样本数量,在聚类和分类的交互迭代中采用了增量法来进行行为的分析。
那些匹配已知类型的样本将被对应的原型向量识别出来,接着再从那些未知的行为报告中发掘新的恶意类型。
(2.4节)
接下来的章节将一一讨论这些步骤和详细的技术背景。
我们将给出具体的行为监控实例,描述对应的向量表示,并详述聚类和分类处理以及增量法的应用。
图1:
分析框架原理图。
输入的行为报告将被归类到已知的恶意类型或新定义的类型,并且由聚类处理得到的新原型向量也将作用于后续的分析。
2.1监控恶意行为
在基于行为的恶意程序分析中,先决条件是能有效的进行行为监测且对应的表示适合精确的计算处理。
在本小节中,我们将介绍框架中用到的沙箱技术以及通过恶意指令集来表示行为特征。
2.1.1恶意程序与沙箱
为了监视二进制流,大部分方法用到了系统调用的拦截技术。
和源码分析不同,二进制分析基于程序的反汇编结果,在此过程中源文件是可以被完全忽略的,而二进制流将被视作黑盒在受控环境中执行,其中所有的系统交互都会被拦截。
因此,通过hook系统调用,沙箱能够监测和修改程序运行时的调用参数以及得到的返回值。
当然,此类拦截的实现可分为多个层次,从简单的程序监控到深入进程的动态插桩或静态补丁都是可行的。
我们分析中用到的CWSandbox工具则借助inlinehook实现系统调用的拦截,通过修改每个系统调用的前几条指令,使其无条件跳转到hook函数,在hook函数中会将系统调用和对应参数记录到日志文件而后转去执行真正的调用函数。
2.1.2恶意指令集
从沙箱Anubis、CWSandbox生成的报告可以看出,监控行为的表示方式主要基于文本和XML格式。
然而,这样的表示只适合人工分析和一般意义上的统计计算,对于行为的自动化分析显然是不合适的。
此类结构和富文本加大了应用机器学习处理报告的难度,因为机器对于观测到的行为流是不能直接理解的。
此外,复杂的文本表示还会增加报告的大小,这对于分析算法的执行性能也是不利的。
为了应对此问题以及优化报告的处理,我们从处理器的指令集设计中获得灵感进而提出了基于恶意指令集(MIST)的行为表示方式。
和一般的格式不同,监控到的恶意行为将转而由一系列的指令来描述,即每一条线程流或进程流的描述将依次附加到统一的报告中。
在这种格式下,一条指令将对应一个具体的系统调用,且参数都由数字来标识,例如‘0305’用来表示系统调用‘move_file’。
对于多个参数的情况,将采用不同的等级块来表示,对应到行为识别的不同等级,我们称之为MIST等级。
此外,像文件名和互斥变量名这些变长参数将由索引号表示,借助全局映射表可将索引号和原始内容进行转换。
图2:
MIST指令图解。
CATEGORY表示对应的系统调用类别,OPERATION表示具体的系统调用,ARGBLOCKN表示参数。
图2展示了MIST指令的基本结构。
指令的第一级对应系统调用的类型和名称,例如,‘0305’对应‘filesystem’(03)类型,名称为‘move_file’(05)。
接下来的各级包含不同的参数块,其识别顺序为自左向右,这样排列的主要目的是为了消除“噪音”元素,比如将进程和线程的标识参数移到指令的末尾,而将目录名和互斥变量名这些固定且易于区分的参数移到开头,这样基于行为的分析最多只要考虑到指令的某一具体等级即可。
此外,如果指令间只存在小幅的差别,比如使用了随机文件名,那么这些类型的相似行为也是有可能被检测出来的。
作为例子,图3比较了CWSandbox早先的XML表示法和新的MIST表示法在生成报告时的不同。
图示的move_file操作带上了具体参数,虽然从格式来看它们差别较大,但表示的却是相同的内容。
容易看出,MIST指令的参数排列被重新处理过了,其中文件路径名和扩展名包含在级别2中,而文件名则包含在级别3中。
此外,借助数字标识和索引,MIST指令表示比XML表示要精简的多。
图3:
系统调用的特征表示。
CWSandbox通过XML属性表示系统调用,而恶意指令集(MIST)通过结构化的指令表示系统调用。
2.2恶意行为的向量映射
前面提到的MIST特征表示能够较好的对行为进行描述,具体的动态二进制流将由一系列指令组成的报告来表示。
而诸如改变注册表键值或者修改系统文件之类典型的恶意行为将会对应报告中的特定子序列,但是,这种表示仍不适合应用机器学习来分析,因为学习算法通常处理的是向量中的实际数据。
为了解决此问题,我们将介绍一种把恶意行为映射到向量空间的技术,此处的灵感主要源自自然语言的处理和基于主机的入侵行为检测。
2.2.1使用q元指令进行映射
从抽象层面看,恶意程序的行为报告x对应一系列具体的指令,为了描述此序列的内容,我们引入滑动窗口的概念,并假设每个子序列的偏移量为q。
由此得到的指令片段集,即q元指令,将对应各简短的行为模型,这其中蕴含着一定的程序语义。
为了通过q元指令进行报告的映射,我们定义了一个包含所有可能q元指令的集合S:
其中A表示所有可能指令的集合,考虑到MIST的等级划分,这里的A和S可能包括从无参数系统调用(级别1)到全参数系统调用(级别大于1)之间的所有情况。
借助集合S,恶意行为报告x可被映射到一个|S|维的向量空间,每一维对应一个q元指令,即单独的行为模型。
相应的映射函数
,也就是q元指令的存在标识,定义如下:
作为例子,让我们考虑这么一个报告x='
1|A2|A1|A2|A'
,它仅包含两条指令,集合A={1|A,2|A}。
如果我们通过2元指令来描述报告x,那么
(x)表示如下:
不同于这个简单例子,实际指令集的向量空间维度要大得多。
例如,对于MIST等级为2的2元指令,1000个报告集合中通常包含超过100000个单独的2元指令,因而映射的向量空间维度将超过100000,咋看之下,要计算比较这么高维度的向量几乎是不可能的。
然而,单独一个报告x所包含的q元指令数目与其长度仅成线性相关,也就是说,对于包含了m条指令的报告x,其最多由(m-q)条不同的q元指令构成。
因此,不论实际的向量空间维度有多大,对于特征向量
(x)来说,最多只有(m-q)维的值是非零的。
鉴于这样的稀疏向量
(x),使得我们可以通过时间复杂度为线性的算法来比较不同的映射报告,因而才能通过第3节介绍的方法进行高效的行为分析。
同时,非零维度的数量还和其它因素有关,比如冗余的行为、用到的符号集或者报告的长度等。
事实上,在这些因素中报告的长度影响最大并且会给结果带来误差,在比较长度相差较大的报告时尤为明显。
为了消除误差,我们引入了标准化映射函数:
它将起到均衡的作用,使得每个向量
(x)的向量基等于1。
通过这种标准化处理,在q元指令相对更少的报告中,每条q元指令的影响权重将更大。
也就是,对那些包含重复行为模型的报告,改变其中一定数量的指令在映射向量上带来的影响要大于那些由多种不同的行为模型组成的报告。
这种形式的标准化在以信息检索进行文本比对领域有着广泛的应用,通常被当作相似计算的一部分。
2.2.2映射报告的比较
将报告映射到向量空间使得我们能够借助几何方法来描述相似行为,进而自然的用到机器学习的相关技术。
为了计算映射报告间的几何距离,我们定义了距离d:
它将用来比较映射报告x和z的行为,这种表示和欧几里得距离
是一致的。
因为经过了标准化处理,所以距离d(x,z)的取值范围为0到
,即相同行为(0)到最大偏差(
)间的距离范围。
当借助向量空间将问题转换到几何层面后,我们就可以通过机器学习的方法来有效的分组和区分映射报告了。
那些来自相同家族的恶意变种在行为上拥有一些共同的q元指令,彼此间具有相似性,因而d值较小,而来自不同家族的恶意报告间d值较大,彼此在向量空间上的分布也更分散。
同其它计算距离的方法相比,我们的方法借助了向量表示,每一个q元指令都对应到具体的行为模型,后续的分析算法就是建立在这些行为模型基础上做出的判断。
2.3聚类和分类
通过建立恶意报告到向量空间的映射,使得我们可以采用机器学习的方法来进行行为分析。
具体来说,我们将涉及以下两个概念:
行为的聚类,即能够通过相似行为识别新的恶意类型;
行为的分类,即将程序对应到已知的恶意类型。
为了更新恶意程序信息,需要每天通过聚类和分类的方法处理大量的样本报告,但是,大部分学习算法在复杂度上和输入数据量成超线性关系,因而不能直接应用到恶意程序的分析中。
为了处理此问题,我们在进行聚类和分类时采用了一种相似法计算。
相同家族的二进制流经常包含相似的手法,进而表现出几乎相同的行为模型,因此对应的映射报告在向量空间上看起来是彼此汇集的。
利用这种聚合特性,我们使用原型向量来进行相似样本的归组,这里样本报告是由一组行为模型来表示的。
通过减少算法对原型向量的计算以及结果反馈机制,我们能加快聚类和分类的处理。
同时,每个选取的原型向量都能对应到具体的样本报告,因而对分析者来说行为信息是可见的,若采用哈希方式来处理就不透明了,分析者几乎得不到具体的行为信息。
图4(a)阐述了原型向量的概念,在构造的数据集上由每个原型代表一组相似的向量。
图示大约有100个向量,它们被分成3个聚集,由5个原型向量(以黑点表示)来代表这些数据。
注意原型个数没必要和聚集个数相一致,比如图4(a)下方和上方的聚集各有两个原型向量。
正如第3节所述,原型向量近似法比精确计算法更能提高运行效率,同时仅引入很小的误差。
图4:
使用原型向量进行行为分析:
(a)原型向量,(b)借助原型向量划分聚集,(c)借助原型向量进行分类。
图4(b)的黑线表示聚集中的原型关联。
图4(c)的黑线表示类型划分。
2.3.1提取原型向量
从样本集中提取一小部分具有代表性的原型并不是一件容易的事,大多数提取方法主要依靠聚合处理或者超线性计算,但如果作为实现有效近似计算的基础,这显然就不合适了。
更糟的是,要找到最优的原型集合似乎还是一个NP难题。
但幸运的是,我们可以通过修改Gonzalez提出的一个时间复杂度为线性的算法来获取原型集合,可以证明其在效率上仅比最优方案慢了1倍。
具体的算法描述见Algorithm1。
此算法通过迭代从报告集中提取原型向量,其中初始向量要么是设定的要么是随机选择的。
在每轮迭代中,我们会计算当前各原型向量到所有剩余报告间的距离d(第5-7行),d值最大的映射报告会被选作新的原型向量(第4行),通过不断的迭代这些报告最终都会被原型向量覆盖到,此过程将一直进行下去直到所有的向量到其最近的原型向量间的距离d小于临界值
(第3行)。
算法的时间复杂度为O(kn),其中n为所有报告的个数,k为原型向量的个数。
给定值
是精心选择的,算法和报告个数成线性关系,其中k值仅和报告的向量空间分布有关。
另外,如果
值无法确定,那么也可以通过设置k的上限值来控制迭代轮数。
2.3.2建立在原型向量上的聚类过程
聚类是机器学习中最基本的一项技术,它的目标就是将给定的数据划分成有意义的分组,即聚集。
划分一旦确定下来,那么在同一聚集中的各个样本彼此间是相似的,反之不同聚集的样本间是不相似的。
聚类有助于发现未知数据的构成,并且在许多方面都得到了应用。
借助聚类分析恶意行为最初是由Bailey提出的,之后由Bayer完善。
我们遵循了这个方向,并且还探究了标准的层级聚类技术,最终在这些基础上分组相似的恶意程序。
和早前的工作不同,我们将基于原型向量的思想展开分析。
首先需要确定聚集中的原型向量,而后再向各聚集中添加其余的样本向量,图4(b)就给出了这么个聚类过程,黑线连接的两个原型向量属于同一聚集。
对应的聚类算法见Algorithm2。
最初每个原型向量都是一个单独的聚集,算法通过迭代计算合并那些间距小的聚集(第4行),直到最接近的聚集间距大于
为止。
算法以两个聚集中包含的所有成员间的最大距离来表示它们的间距,类似于标准的层级聚类算法。
接着算法将向这些聚集中添加对应的样本,每个样本一旦确定所属聚集后,就会成为初始报告集中的一部分(第6-8行)。
此外,成员数小于m的聚集不会被采纳,对应样本会被归入到下一轮的增量分析中,这部分内容将在2.4节讨论。
算法的时间复杂度为O(
logk+n),其中n表示报告的个数,k表示原型向量的个数。
相对比准确的层级聚类法的O(
logn)时间复杂度,基于原型向量的相似计算法在性能上提升了
(n/k)倍。
2.3.3建立在原型向量上的分类过程
接下来我们将讨论分类技术,它能够区分不同类型的样本对象。
分类方法在具体应用前需要有个训练阶段,区分模型将通过一系列已标识的样本对象推导出来,而后这些模型将用来预测未处理样本对应的类型。
因为许多实际应用中涉及到了分类学习的概念,所以目前有很多这方面的技术研究。
Lee和Mody(2006),以及Rieck(2008)都曾研究过使用分类法分析恶意程序的行为,在这些方法中,未处理的恶意行为将被归类到已知的行为类型,初始训练样本则通过防病毒扫描器进行标识。
然而,目前大部分的防病毒产品在恶意类型上都不完整,并且还有可能前后不一致,因此在训练时不能提供精确的标识。
为了改进,我们通过聚类划分恶意类型,并以此进行分类训练来学习区分不同的行为聚集。
在我们的框架中,聚集借由原型向量来表示,我们还通过近似法提高了分类的效率。
作为例子,图4(c)展示了基于原型向量的分类过程,对应的算法见Algorithm3。
对于每个报告x,算法将找出各聚集中与之最接近的原型向量(第1-2行)。
如果它们间的距离小于
,那么报告x将被当作已知类型而添加到这个聚集中,否则将归到后续的增量分析报告集中(第4-6行)。
此过程也称作最近原型向量分类,可看作k最近邻分类算法的一种变形。
此算法的时间复杂度为O(kn),因为对这n个报告来说,要确定每个报告最接近的原型向量需要和初始的k个原型向量都进行一次计算。
但若借助特殊树结构表示原型向量的话,那么可将最差情况下的时间复杂度降到O(nlogk)。
然而,在我们的分析框架中,我们更倾向于这种简单的算法实现,因为它是高可并行的,借助多核系统反而可以获得更好的运行性能。
2.4增量分析法
通过结合聚类和分类,我们设计了一种增量法来分析程序的恶意行为。
早先的工作大都受限于批量的分析处理,而在我们的方案中每轮仅需处理一定数量的恶意报告,例如以每天的新增样本量为基准。
为了实现增量分析,我们需要跟踪每轮处理后的中间结果,比如聚类操作就需要考虑上一轮新得出的计算结果。
幸运的是,原型向量使得我们能够简明的表示新发现的聚集,同时还很大程度上加快了分类操作。
最终结合了增量法的基于原型向量的聚类和分类处理如Algorithm4所示。
分析数据主要来自蜜罐采集及一定时间段内收集的恶意样本。
在开始阶段,待分析报告先通过已知的聚集类型进行分类处理(第3行),因而,已知的恶意变种将被识别出来并作用于后续的分析。
随后,我们从剩余报告中提取出新的原型向量用于接下来的聚类处理(第4-5行),新定义的聚集原型向量将加入到已有的原型向量集合中,这样它们就能用于下一轮的分类处理。
分类处理和聚类处理这两个过程将交替进行,因此,未知的恶意程序数将不断减少,且新出现的恶意类型也能被自动的识别出来。
然而,在一轮增量分析中,可利用的样本数可能不足以确定新的恶意聚集,例如,罕见的恶意变种在映射空间上仅能被很少量的样本所代表。
为了缓解此类信息不足,我们将拒绝采纳成员个数少于m的聚集,对应的报告将在后续进行重新处理,因而,罕见程序的样本数将逐渐累积直到它们能够确定新的行为聚集。
正如3.4节所阐述的,此过程可以保证准确识别新的恶意类型,即便我们在最初的增量分析阶段可能没有足够多的信息。
对于每轮处理n个报告块的增量分析,其算法的时间复杂度为O(nm+
logk),m表示上一轮分析得到的原型向量个数,k表示当前这一轮分析新提取的原型向量个数。
虽然复杂度和k成二次比,但每一轮计算中新提取的原型向量数只和报告块的大小及分布有关。
因此,增量分析的算法复杂度主要由m确定,即已知类型中原型向量的个数,这和防病毒产品中特征匹配时的线性复杂度是相同的。
3实践与应用
接下来将通过实验评估我们提出的恶意行为分析框架。
首先,我们会在参照数据集上调整框架中的每个独立组件(3.2节)。
而后,我们对基于原型向量的聚类及分类处理和目前最新水平的分析法做了个比较(3.3节)。
最后,我们利用防病毒厂商提供的样本进行了一次实际应用,以此评估框架的功耗和运行性能(3.4节)。
3.1实验数据
我们在实验中将用到两组恶意程序:
参照数据集包含已知类型的恶意样本,它将用来调整我们的分析框架,而应用数据集包含的是从防病毒厂商那里获得的未知恶意样本。
-参照数据集:
参照数据是从CWSandbox网站维护的一个恶意文件数据库中提取的,这些数据的收集已经超过了3年,主要从蜜罐、垃圾邮件、防病毒厂商以及安全研究者等渠道获取。
在整个数据库中,我们选用那些能被目前主流防病毒产品识别的已知类型样本,虽然各厂商的标识可能不一致,但我们希望通过不同产品的扫描能使结果更准确合理些。
同时,为了平衡各恶意类型的分布,我们将丢弃那些样本数少于20的类型,并且每个类型的最大样本数被限制在300以下。
所有选用的恶意样本将在CWSandbox沙箱环境中监控执行,最终我们得到3133份MIST格式的行为报告(表1)。
表1:
24种恶意类型组成的参照数据集。
此集合包含3133份恶意行为报告,其中常见类型的样本数被限制在300以下。
-应用数据集:
和参照数据集包含已知样本用于评估测试不同,应用数据集仅包含未知的恶意样本,它由厂商SunbeltSoftware提供的7组样本集合构成。
这些二进制文件对应2009年8月份连续7天中的所有恶意程序,收集方式涵盖了多种渠道,如防恶意程序扫描器、厂商间交换或者蜜罐等。
SunbeltSoftware使用这些样本更新产品VIPRE的特征以及ThreatTrack中的数据。
与参照数据集类似,各组恶意样本也在CWSandbox沙箱环境中监控执行,最后总共得到33698份MIST格式的行为报告,关于此数据集的统计信息以及行为报告的特点如表2所示。
表2:
33698份报告组成的应用数据集。
此集合包含防恶意程序厂商SunbeltSoftware在2009年8月1日到7日收集到的样本。
3.2组件的评估
作为实验的第一部分,我们将对框架中的组成部分做出评估和调整,包括原型向量的提取、聚类处理以及分类处理。
为了直观展现组件的性能,我们
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 机器 学习 恶意 行为 自动化 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)