论文部分内容阅读
目前智能手机上的恶意软件数量呈爆炸式增长,病毒、木马、广告、垃圾邮件与短信等层出不穷,这给个人、集体以及国家的网络空间安全带来了严重的威胁。如何检测并防止恶意软件在安卓应用市场泛滥是一个永恒的挑战。安卓应用的安全性能有赖于Android Manifest文件声明的相关安全信息(包括权限机制,硬件特征,消息过滤等)以及某些特定API的调用。本文提出基于Manifest和API的安卓恶意软件检测系统,结合静态、动态检测技术和机器学习算法,并以系统的方式从以下五个方面进行介绍。第一,数据准备阶段:通过网络爬虫从安卓市场获取良性安卓应用,从高校实验室、研究机构、安全公司等收集恶意安卓应用。然后利用ApkTool对所有安卓应用进行反编译处理,以获取manifest文件和Dalvik字节码smali文件,同时利用DroidBox获取安卓应用的动态运行日志logcat文件;第二,特征向量提取和正则化阶段:从manifest文件、smali文件以及logcat文件中提取重要特征构造特征字典,并利用特征字典生成特征向量,然后对特征向量进行正则化;第三,数据规约和特征提纯阶段:利用属性子集选择对特征向量矩阵进行数据规约,以降低特征向量的维度,然后利用去脏、去重、去二义对向量矩阵进行提纯处理;第四,机器学习阶段,利用朴素贝叶斯,贝叶斯网络,随机树,决策树,最近邻法,随机森林等机器学习分类算法对特征向量进行训练和测试;第五,实验结果评测阶段:利用真正元比率,假正元比率,精度,召回率,F测度,AUC,准确率等指标对各机器学习的实验结果进行评测。在43822个良性安卓应用和8454个恶意安卓应用的实验数据集上进行实验表明:在10-折交叉验证下,重采样技术采用随机过采样算法,随机森林参数设置为100时,检测系统的评价指标TPR、FPR、Precision、Recall、F-Measure、AUC达到最优。其中检测效率达到99.6%,假正元比率为0.3%。