论文部分内容阅读
Android是目前使用人数最多,应用最为广泛的移动操作系统。由于Android开源、开放的生态,开发者可以自由地开发第三方应用软件,以运行在搭载Android平台的智能终端上。海量的应用软件为数以亿计的用户提供各种各样的服务,但其中隐藏着大量的恶意软件,不断窃取和操纵用户敏感的隐私数据,导致信息泄露、电信诈骗等违法活动层出不穷。现有Android恶意软件检测方案通常将敏感API的使用集合作为恶意软件特征,存在粗粒度和精确性较低的局限性。而API的调用顺序和执行路径是所有应用的基本逻辑,提取敏感API的调用顺序和执行路径作为特征,是对API使用集合特征的深化扩展,可称为“特征的特征”。因此,为了提升Android恶意软件检测的精确性,本文重点关注应用软件的敏感调用路径。在分析Android应用的运行机制、监听和回调机制的基础上,本文通过对应用软件执行静态分析得到敏感的调用路径,同时引入了多种机器学习算法训练Android恶意软件检测分类器。因此,本文提出了基于敏感调用路径的Android恶意软件检测方法,有效地实现了对未知安全性的Android应用软件的准确检测。本文的主要贡献如下:(1)量化Android系统的敏感API,建立了包含647个API的敏感目标API列表。引入了自然语言处理中的关键词抽取技术,提取Android恶意行为知识库中的敏感行为关键词,通过在Android官方开发文档中搜索和匹配关键词,生成了该列表。(2)针对Android恶意软件检测,提出了一种细粒度的恶意软件检测方案。该方案根据一系列敏感的目标API,在静态分析生成程序调用图的基础上,深入理解函数的执行逻辑,生成能够执行到这些目标API的敏感调用路径的集合。在对大量应用软件样本分析后,建立了一个包含73848条不重复调用路径的Android敏感调用路径特征库。(3)引入有监督的机器学习算法,训练Android恶意软件检测分类器。将样本软件生成的敏感调用路径集合和特征库进行匹配,采用one-hot的编码方式处理成相应的特征向量,采用k-近邻、朴素贝叶斯、支持向量机、随机森林四种经典的分类算法,训练恶意软件检测分类模型,通过模型评价指标对其进行调参和分析,最终使用随机森林算法训练的Android恶意软件检测分类器性能最好,准确率达到98.9%,相比于DroidAPIMiner提升了3.97%。