B.恶意和良性的应用程序
我们对3000个良性应用程序和8000个恶意应用程序进行特征提取,其中良性应用程序是从
谷歌播放商店,涵盖了最受欢迎的应用程序在各种类别,后者包括来自恶意软件家族
Android恶意软件基因组计划[21]和VirusShare[17]濁
因为我们假设谷歌Play Store中流行的应用程序是合法的,所以我们认为从这些良性应用程序中提取的流构成了敏感数据的“正常”使用。相反,从恶意应用中提取的数据流揭示了敏感数据的“异常”使用。我们的研究结合了良性和恶意应用程序的数据流分析,不仅可以通过与现有恶意软件的相似性,还可以通过与良性应用程序的差异性来检测新的恶意软件。
c功能粒度
FlowDroid提取的数据流的原始特性包含完整的源和接收方法名。但是,Android库中有成千上万的source和sink方法,而在app中调用的却很少。举个例子,如果我们将这些方法之间的数据流视为特征,特征向量可以是:
功能(应用)= (src_method1→sink_method1, src_method1→sink_method2,尀,src_methodm→sink_methodn-1, src_methodm→sink_methodn)
其中m和n很大。当应用程序中出现源方法和汇聚方法之间的数据流时,其在特征向量中的值为1,否则其值为0。我们可以很容易地推断出,特征向量中的大部分值都是0。这意味着特征向量太稀疏而不能产生好的结果。为了获得更好的特征向量,我们应用Rashofer等人在[18]中提出的SUSI技术对源和sink方法进行分类。
SUSI是一种自动机器学习指导方法,用于直接从an的代码中识别源和汇Android API。此外,SUSI将已识别的源和汇分为17个源类别和19个汇类别(如图2所示)以显示附加信息,说明在何处泄漏了哪些信息。通过这种方式,我们拥有323结合FlowDroid和SUSI技术,每个app的功能可以表示为一个向量:
功能(应用)= (src_category1→sink_ category1, src_ category1→sink_类别2,尀,src_ category17→sink_ category18, src_ c ategory17→sink_ category19)。
注意,每个特性都是二进制的,这表明当一个数据流特性在应用程序中出现时,它的值是1,否则,它的值是0。
IV. A
UTOMATIC
C
LASSIFICATION BY
D
EEP
L
EARNING
如上所述,恶意应用内的数据流可能与良性应用内的数据流存在显著差异,但也可能与其他恶意应用存在一定的相似之处。DeepFlow利用这种差异和相似性,通过使用深度学习模型自动识别新应用程序是否有恶意。
传统的机器学习方法,如贝叶斯、SVM、MLP等,通常只有不到三层的计算单元。深度学习模型,顾名思义,是一个具有三个以上隐含层的深度架构。它旨在创建输入数据的抽象层次表示,为传统机器学习算法[10]创建有用的特性。层次结构中的每一层都学习数据的更抽象和更复杂的特性。常见的深层架构包括卷积神经网络(CNN),稀疏编码,限制玻尔兹曼机器(RBM),深度信念网络(DBN),循环神经网络(RNN)等。在我们的研究中,我们选择了DBN来构建深度流。
如图3所示,DBN是一种深度神经网络,由多层潜在变量(称为RBM的隐藏单元)组成,各层之间有连接,但各层之间没有连接。在对一组未标记的app样本进行无监督训练时,DBN中的RBM层充当特征检测器,学习概率重构特征向量,逐步演化出高级表示。
然后,根据输入特征向量与重构向量之间的误差,对DBN中的权值进行无监督微调。学习阶段结束后,DBN可以在有监督的情况下使用带标签的app样本进行进一步训练进行分类。自动进行反向传播进行微调,以提高精度。这样,完成了DBN模型的建立。
我们的恶意软件检测方法DeepFlow是基于以上的DBN架构实现的,如图4所示。一旦提交了应用程序的.apk文件,DeepFlow就会调用它
FlowDroid对其执行静态数据流分析,并从所有敏感源提取所有敏感数据流到所有敏感接收器。接下来,DeepFlow使用SUSI技术对提取的流进行分类,以获得特征。在对第3节描述的特征向量进行收集和正则化后,DeepFlow将其输入到DBN深度学习模型中进行分类。DBN模型的训练步骤如图3所示,基于两个爬虫模块,其中一个模块用于从已知的恶意软件源(如Genome、VirusTotal和Drebin)中抓取恶意软件,另一个模块用于从谷歌Play中抓取benignware商店。这样,DeepFlow就可以确保它在检测不断出现的新型恶意软件时的准确性。此外,DeepFlow向用户执行检测结果,包括详细的敏感数据流信息和app的实际分类。
V. EVALUATION
我们对3000个良性应用和8000个恶意应用(第3节描述)进行了实验,以评估DeepFlow检测Android恶意软件的能力。应用程序构建为两个应用程序集。一个标记的app集合包含4500个应用程序,其中3000个应用程序是恶意软件,其他是善意软件。我们应用三重交叉验证将app集合分为三个部分,分别从恶意样本和良性样本中提取两个测试部分,其余部分属于train部分。然后,火车样本包含3000个应用程序(2000个恶意程序和1000个良性程序),测试样本包含1500个应用程序(1000个恶意程序和500个良性程序)。另一组未标记的应用程序包括4000个应用程序,包括2000个恶意应用程序和2000个良性应用程序。我们选择了精确和回忆
(检出率),除F1评分外,用来评价我们的实验。精确度是指应用程序被正确归类为恶意软件的概率。召回是指所有恶意软件中被归类为恶意软件的那部分。F1分数同时考虑了精确度和回忆,在我们的研究中,精确度和回忆同样重要。因此,可以将F1 score定义为:F1 score =(2 *精度*召回)/(精度+召回)
A.构建深度流的参数
在构建深度学习模型的前两个阶段(如图3所示),即RBM的预训练阶段和DBN的无监督微调阶段,我们将未标记的app集合中的app应用作为训练样本,计算得到输入数据与重构数据之间的KL距离为误差。然后,在最后一个BP (back propagation)微调阶段,我们利用贴标app集合中的火车部件作为火车样本,计算实际标签与输出标签之间的KL距离作为误差。
在构建深度流时,需要设置几个参数,包括层数、每层神经元数、迭代次数等。在我们的研究中,我们将RBM重构迭代次数固定为50次,DBN微调迭代次数固定为200次,BP微调迭代次数固定为500次。我们从[4]和[20]的参数设置中了解到,当我们将层数设置为4时,评价结果总是更好。图5,6、7、8表明深度流的分类精度随关键因素:各层神经元数量的变化而变化。在图5中,我们将第2层的神经元数量固定为150个,第3层的神经元数量固定为50个,第4层的神经元数量固定为20个。我们可以发现,当第一层神经元数量设置为200时,F1得分最高。因此,我们将第一层的神经元数量固定为200个。在图6中,我们将第1层的神经元数量固定为200个,第3层的神经元数量固定为50个,第4层的神经元数量固定为20个。我们可以发现,当第二层神经元数量设置为150时,分类准确率达到最好。因此,我们将第二层的神经元数量固定为150个。在无花果。
我们将第1层的神经元数量固定在200个,第2层的神经元数量固定在150个,第4层的神经元数量固定在20个。我们可以发现,当第三层神经元数量设置为50时,分类准确率达到最好。因此,我们将第三层的神经元数量固定为50个。在图8中,我们将第1层的神经元数量固定为200个,第2层的神经元数量固定为150个,第3层的神经元数量固定为50个。
我们可以发现,当第4层神经元数量设置为20时,分类准确率达到最好。因此,我们将第四层的神经元数量固定为20个。根据上述分析,我们将每一层的神经元数量分别设置为200、150、50、20,并与其他结构的分类精度进行比较。从表3可以看出,在这个结构中,我们可以做到最好F1得分,接近95.05%。
B. DeepFlow表现最好
为了评价深度学习算法的优点,我们将深度流的分类精度与其他基于传统机器学习模型的检测方法进行了比较,如图9所示。我们选择了朴素贝叶斯,逻辑回归、支持向量机和多元线性回归(多层感知器)。利用网格搜索技术[20]对所有模型进行优化,使其达到最优精度。从图9可以看出,与其他模型相比,决策树alogrithm (PART)的分类精度并不如预期的那么好。原因可能是功能不够丰富。此外,模型基于贝叶斯分类算法(朴素型)贝叶斯(Bayes)、回归算法(Logistic回归)和人工神经网络(artificial neural network, MLP)在恶意软件的召回和benignware的精度方面都有优势。但随着恶意软件召回次数的增加,其检测精度迅速下降。和benignware的召回一样。基于核的学习算法(SVM)和深度学习算法(DBN)在平衡召回率和精确度方面,性能优于其他型号。此外,我们的深度学习模式表现更好。
六、结论与未来工作
现在,无数的恶意软件正在迅速发展,严重威胁着Android的安全。传统的方法是通过静态签名或动态异常行为来检测恶意应用程序。然而,研究表明Android恶意软件正在迅速演变,以绕过基于签名的特征,并隐藏恶意行为,以避免动态检测。为了解决这一问题,提出了基于机器学习的方法,通过静态和动态分析提取特征并进行特征刻画了解Android恶意软件与benignware的区别。深度学习作为机器学习研究的一个新领域,越来越受到人们的关注Android恶意软件检测。
在我们的研究中,我们使用FlowDroid从Android应用程序中提取数据流,总共提取了323个特征
(包括3000个来自谷歌Play Store的良性应用和8000个来自Android恶意软件的恶意应用。
并应用SUSI技术对这些数据流特征进行分类。在此基础上,基于DBN深度学习模型实现了恶意软件检测体系结构深度流。我们评估深度流,并对数据流特性进行了深入分析,它利用恶意软件的特征。在此基础上,基于DBN深度学习模型实现了恶意软件检测体系结构深度流。我们评估深度流,并对数据流特性进行了深入分析,它利用恶意软件的特征。实验结果表明,深度流算法的性能显著优于传统的机器学习方法,在合适的参数下可以获得较高的F1分。
作为未来的工作,我们的目标是将深度学习技术应用到更丰富、更细粒度的特性中Android恶意软件。除了静态数据流特性外,我们还可以将其他静态特性(如权限、API调用等)与动态特性(如可疑行为、网络流等)结合起来。我们相信,如果我们有更多的数据和更丰富的特征,它可以达到更高的分类精度。