论文部分内容阅读
随着移动互联网的发展,移动端应用程序呈现爆炸式增长。Android作为一个开源操作系统被大量手机厂商定制化使用,也正是由于其开放的特点,导致Android应用市场中涌现出大量恶意应用,目前绝大部分移动端恶意应用存在于Android平台。因此,研究针对Android应用市场的恶意应用检测技术是非常有意义的课题。在众多的检测技术中,基于机器学习的恶意应用检测技术是一个热点。通过机器学习检测Android恶意应用,首先要解决的问题是应用特征的提取和选择。现有研究主要采用的方式是提取特征后直接用于机器学习算法,或人工选择其中一部分作为输入,很少有进行特征选择过程,这样会带来建模和分类时间长,准确率和召回率较低等问题。为了实现高效的Android恶意应用检测,本文首先设计了 AppExtractor自动化工具提取应用的特征集合,并利用两种常用的特征选择算法对集合进行分析,发现这些特征存在“分布偏移”和“长尾效应”两种现象。其次本文提出了一种新的特征选择算法FrequenSel,现有的其他特征选择算法主要通过计算特征在统计学意义上的重要性来决策如何选择特征,而FrequenSel通过比较特征在恶意应用和正常应用之间出现的频率差异进行特征选择,使得最终用于机器学习的特征能够训练出在恶意和正常应用数据集上具有十分接近准确率的高效分类器,并且召回率也能达到准确率水平。在实验中检测了7972个应用,准确率和召回率均接近98%,每个应用的分析时间约6.5秒。结合大数据场景下Android恶意应用检测的实际需求,本文还提出了一种基于深度学习的特征选择算法DBNSel。严格地讲它是一种特征学习算法,因为它采用深信度(DBN)网络架构。同作为特征选择算法,FrequenSel从原理上是特征数量的“量变”,而DBNSel是特征的“质变”,因为DBN的输出是输入特征的另一种表达形式。通过合理设计DBN网络结构可以使得输出特征维度远小于输入维度,在输出集合上运用普通的机器学习分类算法便可以实现恶意应用检测。在实验中采用上述同样数据集,最优准确率达到98.3%,并且在开放测试中得到99.4%的准确率和召回率。通过全面的实验说明,本文中提出的两种特征选择算法适合于Android应用市场进行批量化的恶意应用检测场景。