论文部分内容阅读
反病毒厂商每天都要收到数以万计的可疑程序样本,工程师需要从海量可疑文件中找出真正的恶意程序,以提取病毒特征码,从而更新病毒特征数据库。本题的目标是开发出一套基于程序行为的恶意程序分析检测系统Malware Sandbox,用以高效快捷的判定样本是否恶意程序,并生成具体的行为报告,帮助反病毒工程快速的找到恶意程序和提取其病毒特征码。本文的基本思想是使用API hook技术提取程序运行过程中的API调用序列;然后根据API调用序列上下文关系提取程序高层行为数据;在训练阶段用大量的高层行为数据构建C5.0决策树分类模型;利用决策树分类模型模拟反病毒工程师的逻辑判断过程判断未知样本的恶意性。本文的主要工作量和创新点有如下几项:1.在长期的病毒样本处理过程中,总结出了110种程序行为特征和26种文件特征作为研究对象。2.现行行为检测系统CWSandbox等都认为API调用序列反应程序行为,通过hook程序API的调用提取API调用序列,以此序列作为研究对象。本文不直接研究API调用序列,而是研究从API序列中根据API调用上下文的关联性提取的高层行为(High level behavior),以这种高层行为作为研究目标数据,用机器学习的方法构建恶意程序分类模型。这种结合了上下文关系的高层行为比单纯的API更加意义丰富,更能反应程序行为本质。本文首先采用微软Detours开发库来hook系统API,提取API序列。但是Detours在应用上有一个难点,必须为每一个API编写一个hook函数,这势必增加开发难度,使程序结构复杂化。本文在深入研究Detours hook原理后,改进了其原有的hook机制,改进后的detours只需要一个通用的hook函数就能处理任意API hook,不需要为hook一个新API而添加或者修改任何代码,实现“以数据驱动程序,而非代码驱动程序”。在高层行为提取时,将API调用表示成Prolog语言的事实定义,将高层行为表示成Prolog规则定义,充分利用Prolog逻辑处理能力,准确的提取程序行为。3.检测系统运行在一个VMWare虚拟环境中提取样本程序API调用序列。虚拟系统使用Vix虚拟机自动控制技术对虚拟环境进行自动化控制,从而使得API序列提取过程可以无需人工参与,高效自动的完成。4.本文引入了典型正常行为特征用于分类决策。相比其他行为检测系统只关注恶意程序行为特征而言,Malware Sandbox引入的正常行为特征可以有效的降低检测误报率。实验得出Malware Sandbox恶意程序行为检测系统具有较高的检出率和较低的误报率,能快速的生产未知程序行为报告提供给反病毒分析人员进一步深入分析。然而本检测系统也存在无法解决的缺点:病毒程序的特殊性要求程序运行在虚拟环境中运行,然而有些病毒则可以通过反虚拟机技术逃避检测,从而影响了本系统的检测率。