
毛蔚轩 等:一种基于主动学习的恶意代码检测方法
385
新型恶意代码数量的迅速增长,为恶意代码检测带来了挑战.恶意代码的检测往往依赖于对足够数量的样本及
其变种的分析,并在此基础上基于人工经验或利用统计学习方法自动化地提取规则或特征,更新现有检测器
[2−6]
.
由于采集和分析足够数量的相关样本往往需要较长时间,现有检测方法无法迅速检测出新型恶意代码及其变
种,新型恶意代码的大量出现仍然对整个社会构成持续性的威胁.
在新型恶意代码出现的初期,往往出现的样本数量较少,无法为目前的恶意代码检测方法提供足够信息.样
本大量出现后,由于初期没有得到有效的防范,导致严重的安全事件时有发生
[7]
.与此同时,无论是基于人工经验
的方法,还是利用统计学习的方法,都是建立在充分的已知样本基础上.基于人工经验的方法通过分析新型样本
的行为、指令序列,根据知识经验,创建用于标识新型恶意代码的行为规则、特征码.人工分析的方法准确率高,
但耗时长,自适应性较低.随着统计学习理论的研究与应用,统计学习方法为恶意代码规则、特征的提取提供了
有效的工具
[2−4,6]
.这类方法往往依赖于充分的已知样本集合,即已经确定正常或恶意的程序样本.对于新型恶意
代码样本标签的确定,往往首先需要人工手动分析以保证准确性.人工分析耗时长,很难保证短时间内得到所需
的充分已知样本集合.如何在仅已知少量样本的情况下保证恶意代码检测的准确率,是应对当前新型恶意代码
快速增长形势的关键问题.
为了解决这一问题,本文利用主动学习的方法,在分析系统对象的数据流依赖关系的基础上,提出了一种将
程序访问行为的异常度与相似性结合的恶意代码检测方法.该方法通过增量式地训练,可以保证在少量已知样
本下得到理想的准确率.在以往的研究工作中发现,通过对系统对象间访问行为的数据流依赖关系进行网络化
建模,可以从网络结构的角度,分析并评价系统对象的重要性,并且有效地识别系统中安全角度下的重要对象
[8]
.
本文在系统对象重要性评价的基础上,利用程序访问对象的重要性,定义了程序访问行为的关键检测点,用以分
析程序访问行为的异常度.同时,全系统下的数据流依赖关系网络为评价系统对象的相似性提供了依据,帮助我
们从访问对象的角度分析进程访问行为的相似性,进而为判断程序的正常或异常标签提供了依据,即程序的访
问行为越相似,其标签就越相似.结合程序访问行为的异常度与相似性,我们利用主动学习的方法实现了应对当
前大量未知样本形势的有效的恶意代码检测方法.
主动学习是一种增量式的样本预测方法,在定义估计风险的基础上,从未标记样本中找出最小化估计风险
的样本进行预测.在程序访问行为异常度的基础上,我们构造了统计学习分类器,用于预测未知样本的标签.同
时,通过对程序访问行为相似性的分析,可以得到未知样本预测标签的估计风险.我们找出最小化估计风险的未
知样本,以预测标签作为未知样本的标签,并将其作为已知样本,进一步完善基于访问行为异常度的分类器.这种
最小化估计风险的策略可以不断完善,用于恶意代码检测的分类器,并在此基础上进一步降低估计风险.从而保
证了即便在少量样本的情况下,也可以达到较理想的准确率,减少了人工分析样本的开销,加快了对新型恶意代
码的响应,更适合于应对当前新型恶意代码快速增长的形势.通过对 8 340 个日常正常进程生命周期的访问行为
以及 7 257 个真实恶意代码的访问行为的实验验证,文本的方法与原来仅使用统计分类器的方法相比,在检测效
果方面呈现出了显著的增长.
本文的贡献主要包括如下 3 个部分.
• 提出了一种基于主动学习的恶意代码检测方法.该方法基于最小估计风险的策略,增量式地主动学习
未知样本,不断完善恶意代码检测分类器,仅需要少量已知样本即可得到较理想的恶意代码检测效果.
• 在系统对
象数据流依赖图的基础上,提出了进程访问行为异常度和相似性的评价方法.同时,从安全属
性和统计特征两方面描述了访问行为,为基于主动学习的恶意代码检测提供了有效的访问行为特征.
• 真实数据集下的充分实验.通过在 8 340 个正常进程以及 7 257 个真实恶意代码的访问行为的实验,与传
统基于统计分类器的方法相比,主动学习的方法提升了恶意代码检测效果.在仅已知 1%样本的情况下,检
测错误率降低了 36.5%.这种基于小样本训练的检测方法将为新型恶意代码的检测提供重要的技术手段.
本文首先在第 1 节介绍恶意代码检测方面的相关工作.第 2 节概述本文提出的基于主动学习的恶意代码检
测方法.第 3 节介绍系统资源的数据流依赖性网络的定义,以及在进程-文件数据流依赖网络下利用结构分析得
到的对象重要性、相似性的评价.第 4 节阐述基于最小化估计风险的主动恶意代码检测方法.第 5 节描述我们的
评论