一种抗噪声的程序行为检测算法_第1页
一种抗噪声的程序行为检测算法_第2页
一种抗噪声的程序行为检测算法_第3页
一种抗噪声的程序行为检测算法_第4页
一种抗噪声的程序行为检测算法_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一种抗噪声的程序行为检测算法

近年来,基于行为特征的恶意程序检测一直是研究的重点。检测程序流程包括三个部分:检测程序行为监控、行为函数提取和使用行为检测算法。不同的研究人员在这三个问题上进行了研究,并取得了相应的研究成果。(1)程序行为监控UlrichBayer团队设计的Anubis是一款基于开源模拟器Qemu的优秀的恶意程序行为监控系统,TTAnalyze(2)程序行为特征提取尽管API调用序列是恶意程序行为检测采集的核心数据,但检测算法并不直接使用它们作为输入数据,而是必须经过行为特征提取算法的处理,得到适合被检测算法处理的形式化信息.API依赖关系图(3)行为检测算法设计按照设计思想和算法原理的不同,行为检测算法主要分为:程序执行时释放代码特征分析综上,目前行为检测方法研究通常针对某一具体环节,检测算法的设计也随着程序行为特征提取原理的不同千差万别.其中绝大多数方法在证明其有效性的测试实验中都只使用了少量恶意程序家族的测试样本,在现实世界呈爆炸式增长的恶意程序面前,这些方法的实用性值得怀疑.更重要的是,行为检测应该是一个多分类问题,所获得的类别标签是一种重要知识,对辅助人工决策,修复系统漏洞,计算机安全防护等都有着重要的意义.在分类问题中,直接构造分类准确率高的强分类器通常是非常困难的,分类精度会随着类别数目的增多急剧下降.集成学习中的Boosting理论提供了这一问题的有效解决方法,能够方便地将弱分类器提升为强分类器.AdaBoost笔者以“使用Boosting算法提高恶意程序多分类准确率”为研究目标,提出了一种新的程序行为抽象方法.在此基础上,以决策树为子分类器算法,改进AdaBoost.M1,提高原算法抗噪声数据能力.在集成环节,为每一个子分类器生成投票向量取代单一的投票权值,区别子分类器对不同类别样本分类的能力,提高多分类情况下集成分类器分类准确率.图1给出了文中研究方法的基本架构图.1程序行为的抽象1.1程序行为数据的选择在Windows系统中,程序发起的API调用代表着程序与系统之间的交互,是行为监控的首要目标,也是行为检测分析的主要数据.在此基础上,辅助静态分析信息往往能够更准确更快速地判定程序的恶意性.例如,安装程序和恶意程序同样会向系统文件夹中写入内容,但若是加壳程序执行期间向系统文件夹中写入内容,该程序是恶意的可能性将大大提高.除了壳信息,静态分析中的多国语言特征,以及部分PE文件结构信息对程序恶意性判断都有很好的辅助作用.恶意程序传播自身、接受控制命令、窃取并泄露用户机密信息等,必然利用计算机网络,网络行为的监控与描述在恶意程序行为检测中起着重要作用.传统基于主机的网络数据包监控得到的信息数据量大,但只能描述底层网络流量的产生,无法从中了解程序进行网络操作的真实意图.更高层基于API的网络行为监控,尽管有着良好的语义,却可能由于网络运行环境不满足,API调用失败,导致监控不到任何网络行为.这两者的结合才能够为恶意程序网络行为的刻画提供更丰富的信息.因此,在行为数据的选择上,笔者收集程序执行时发起的API调用序列、基于主机的网络数据包信息以及部分静态分析信息,作为描述程序行为的源数据.1.2)api调用的数据依赖关系API调用序列通常不能直接作为行为检测算法的输入数据,主要有4个原因:(1)API调用反映出的行为语义粒度过小,不是严格意义上的程序行为;(2)同一个API可能实现不同的功能,存在二义性;(3)程序执行时收集到的API序列含有大量冗余数据;(4)一般基于API时序关系设计行为描述方法,易受到冗余API插入和API重排的攻击.因此,需要一种从原始API序列中抽象出更稳定程序行为特征的方法.一个API的返回值会成为另一个API的输入参数,即API调用之间存在数据依赖关系,这是一种更为稳定的程序行为特征.因此,建立API调用之间的数据依赖关系,是目前最流行的行为抽象方法.然而,动态分析收集到的API调用数量庞大,得到的API依赖关系图会异常复杂.以文献[6]中的实验结果为例,对常见恶意程序执行两分钟发起的API调用进行分析,一方面得到的API依赖关系图包含十万到百万数量级个节点,千到万数量级条边,数据量异常庞大;另一方面,这种行为抽象方法也限制了分析与检测算法只能在各种图算法中选择,而图是一种在计算机内部存储和相关处理算法都相对复杂的数据结构,直接造成了检测算法具有高计算复杂度.为了解决以上问题,笔者从行为抽象方法出发,提出了一种低聚合度API依赖关系分析法,使用特征向量表示的抽象行为数据.以下首先给出程序行为相关的形式化定义.API调用σ:τ定义1(依赖关系图)定义2(API抽象规则)低聚合度API依赖关系(仅包含1~7个API)抽象算法的执行依赖于预定义的抽象规则,分为辅助行为抽象规则RULERULE定义3(抽象行为)一条关键行为抽象规则r定义4(程序行为)1.3聚合度api依赖关系抽象的描述低聚合度API依赖关系抽象算法的目标是将T算法1是低聚合度API依赖关系抽象的伪代码描述.算法分析一个σ(1)若σ(2)若存在G(σ)∈r(3)若σ(4)若不满足以上任一条件,忽略σ最终,T2adabolst.m1算法的改进决策树生成算法C4.5是计算机模拟人类决策的经典算法,能够很好地统一离散数据与连续数据的处理,特别适合解决如恶意程序检测这样以离散值数据分析为主的问题.其次,行为检测在追求高检测率的同时,要求算法给出的分析结果有着良好的可解释性,以辅助人工分析.训练得到的决策树能够方便地转化为可理解的分类规则,为人工分析提供决策依据.最后,决策树可直接处理多分类,而不是必须将多分类转化为多个二分类,但分类精度会随着类别数目的增多,分类器形式的逐渐复杂,非线性下降.AdaBoost增强C4.5被认为是现有学习算法中分类能力最强的分类算法.笔者以此为基础,通过改进原算法来增强对多分类、高噪声问题的处理能力,以提高对恶意程序分类的准确率.AdaBoost算法以梯度下降方式来优化分类间隔yF(x)的指数损失函数Loss=exp(-yF(x)).算法的核心思想是对每一个训练样本赋予不同的权值,表示样本被选入构建子分类器的训练样本集的概率.如果样本已经被正确分类,那么在构造下一个子分类器时,降低它被选择的概率.反之,则提高被选择的概率.通过这样的方式,AdaBoost算法能够始终聚焦于难分类样本上.由于使用指数损失函数,随着算法迭代次数增加,始终不能被正确分类样本的权重会越来越高.在高噪声数据集中,这些样本通常是噪声或奇异值,于是导致在采样下一轮训练样本时,样本分布严重扭曲,集中于噪声数据,使得生成子分类器的质量逐渐下降.可见,经典AdaBoost算法存在过度拟合噪声数据的风险.在恶意程序行为检测中,由于程序具有潜伏行为或是执行出错造成的分类特征表现不完全非常普遍,所以在程序行为数据中常含有大量噪声.使用AdaBoost算法提高行为分类算法对恶意程序分类的准确率,应该改善算法的抗噪声能力.笔者提出了一种AdaBoost.M1改进算法,算法2是其伪代码描述.与原算法相比,算法2的主要区别在于:(1)使用抗噪声损失函数Loss=1[1+exp(yF(x))],限制始终不能被正确分类样本的样本权值的无限制扩张,降低噪声样本被选入训练下一个子分类器的训练样本集的概率,防止算法过度聚焦于噪声或是奇异值样本点.(2)每个子分类器使用权值向量进行加权集成,来区别每一轮生成的子分类器对不同类别样本的分类能力.权值向量的每一个分量与子分类器对该类样本分类准确率成反比,表示当输出的分类结果是此类别时,这一结果的可信程度.算法2AdaBoost改进算法.图3是AdaBoost.M1算法和笔者提出的改进算法的样本权值调整策略示意图.其中,横坐标是分类间隔,纵坐标是权值调整因子.错误分类时,分类间隔为负,反之为正;且分类结果可信程度越高,分类间隔越大.AdaBoost.M1算法使用分类间隔的指数损失函数Loss=exp(-yF(x)),改进算法使用的损失函数是Loss=1[1+exp(yF(x))],损失函数的导数作为权值调整因子从图3中可看出,当训练样本始终不能被正确分类(分类间隔负值大)时,AdaBoost.M1算法始终增大该样本权值;相反,笔者提出的改进算法则降低样本权值,使得难以被分类的噪声样本以较小的概率被用于训练下一个子分类器,提高了算法的抗噪声能力.3种恶意程序分类算法的对比首先按照图4所示架构搭建实验环境,对样本进行原始行为数据采集.其中,沙盒分析是核心,采用双虚拟机体系结构为分析程序提供虚拟执行环境.虚拟机VM首先以Backdoor.Win32.Hupigon.drek为例说明行为抽象结果.Backdoor.Win32.Hupigon.drek在沙盒中运行2min收集到API调用936个,运行时创建子进程1个,注入IE进程.行为抽象得到抽象行为特征78个.其中文件行为20个,注册表行为26个,进程行为12个,服务行为4个,窗口行为1个,其他行为9个,网络行为2个,静态特征4个,不仅包含所有人工分析结果,并且在字符串以及行为参数的细节方面更为详细.为进一步验证笔者所提出的行为检测算法的有效性,使用Weka表4给出了3种算法的分类准确率和错误率比较.图5是每一类样本具体分类错误率对比图.由图5可以看出,改进算法对恶意程序行为数据分类有着更好的结果,能够提高分类的准确率.在基本测试基础上,我们进行了以下补充测试.将4593样本依然按照70%、30%的比例划分训练样本与检测样本,但调整分类粒度从2分类、10类、17类、29类到39类变化.随着分类粒度的改变,为同一个样本指定不同的类别标签,观察从二分类到多分类变化过程中算法分类准确率的变化.2分类将所有恶意程序不加区分地合并为一类,39分类具体到恶意程序家族的不同之间的10类、17类、29类按照功能不同逐渐细分.例如,10分类包括Virus、Worm、Backdoor、Trojan-Downloader、TrojanSpy、Trojan-Banker、Trojan-PSW、Clicker、IM-Worm以及正常程序;17分类时以Backdoor为例,将原类别按照功能不同进一步细分为GeneralControl、ZombieNetwork和Backdoor-IRCControl.图6是随分类粒度改变,3种算法分类准确率的变化曲线图.从图6中可以看出,随着分类数目的增加分类准确率出现下降,与二分类下的恶意程序检测相比,多分类有着更大的挑战性和更高的难度.同时也可以看出,AdaBoost能够有效地提高单棵决策树对恶意程序分类的准确率,而笔者提出的改进算法在分类数目较少时和AdaBoost.M1分类结果相近,但是当分类数目增多时,能够更好地提高分类准确率.接下来的测试中,不再通过对同一批样本指定不同类别标签来调整分类粒度,而是不断添加新的恶意程序家族以增加分类数目,进一步对比3种算法的分类准确率.图7是随着分类数目增多,3种算法分类准确率的变化曲线图.由图7可以看出,笔者提出的改进算法始终优于AdaBoost.M1算法,在分类数目较少时,与AdaBoost.M1算法有着相近的分类结果,当类别数目增多时,改进算法分类的准确率始终最高.文中15次实验的分类准确率平均提高了1.9%.4行为抽象算法基于行为特征的恶意程序检测是计算机安全领域研究的热点问题.笔者从

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论