论文部分内容阅读
人们在受益于移动手机带来的便携服务的同时,所面临的Android软件安全问题也愈发严峻。目前学术界针对Android恶意软件检测的研究,主要采用动、静态分析两种方法。动态分析方法能够捕获应用程序运行时状态,但其相对耗时且检测成本高;静态分析方法拥有无需实际运行应用程序、代码覆盖率高等优点,但仍存在若干不足,例如需要手动维护庞大的病毒特征库、无法对新型恶意软件做出有效识别。针对静态分析方法存在的问题,本文设计了一种面向静态行为特征建模的Android恶意软件检测方法,并实现了一套基于该方法的完整的检测系统。本系统在提取出函数调用关系图的基础上,抽象出具有更高语义且能有效区分Android恶意软件的概率特征向量,从而提高了检测恶意Android程序的准确度。具体的检测方法与实现内容有:1)本文设计的检测方法主要包括预处理、API调用序列获取、行为特征建模以及行为检测模型构建四个阶段。预处理阶段基于Soot开源框架,利用反编译技术并结合Soot的相关指令,自动、批量化地获取到Android应用程序的函数调用关系图;针对调用图存在的包含较多冗余API调用链等缺点,API调用序列获取阶段可从调用图中提取到包含时序信息、且特征数目明显减少的初级API调用序列;由于初级API调用序列的语义抽象程度不高,不利于多版本的Android应用程序检测,因此,行为特征建模阶段依据Android官方公布的包索引名,从初级API调用序列中抽象出对应的高阶序列,并借助于马尔可夫链模型中的状态转移思想,对高阶序列进行行为建模,以构建出概率特征向量,从而可有效表示API调用之间的高级语义;行为检测模型构建阶段基于AdaBoost提升方法,并结合CART生成和剪枝策略,可从概率特征向量中学习到检测恶意应用程序的分类器。2)基于上述Android恶意程序检测方法,本文实现了一套检测恶意Android应用程序的系统,该系统由预处理模块、API调用序列获取模块、行为特征建模模块与行为检测算法模块组成。为验证检测系统的有效性,本文首先就各模块的有效性分别做了实验测试,结果表明,新方法能有效获取到APK对应的函数调用关系图,提取出易于理解的初级API调用序列,抽象出具有高级语义的概率特征向量;然后,使用比例分割法和十次十折交叉验证法对海量数据集进行测试,取得了较低的误检率与较高的检测率,佐证了本文提出的检测系统能有效地识别Android恶意软件,并实时适应Android版本的变化,以及对新型Android恶意程序作出正确判断。