一种基于深度置信网络的Android恶意软件检测的方法与流程

文档序号:18705206发布日期:2019-09-17 23:34阅读:213来源:国知局
一种基于深度置信网络的Android恶意软件检测的方法与流程

本发明涉及网络安全领域,尤其涉及一种基于深度置信网络的android恶意软件检测的方法。



背景技术:

android操作系统是一种基于linux的操作系统,由google公司和开放手机联盟领导及开发。相比于其他智能终端上的操作系统,具有完全的开源性,并且android应用市场复杂多样,使得android恶意软件的数量快速增长。许多android恶意软件会诱导用户安装,并下载大量新的恶意应用,消耗手机流量,发送扣费短信,造成了严重的安全威胁。其中,还有些正常的android应用软件,通过申请过多不当的权限来获得相关信息,实现其搜集用户隐私的目的。可见,对android恶意软件进行检测显得越来越重要。

目前,android恶意软件的检测技术主要分为静态检测和动态检测。(1)静态检测是指在不执行应用软件的情况下,判断应用软件中是否含有恶意代码。android恶意软件静态检测一般通过反汇编来实现静态地检测android应用软件。enck等人通过反汇编android应用软件,分析其源代码来发现代码漏洞。yang等人提出appcontext静态检测框架,appcontext根据触发安全敏感行为的上下文对应用程序进行分类。静态检测通过对应用软件进行反编译等方法,快速提取应用软件的静态特征并进行检测,缺点是检测模式的扩展性差。(2)动态检测是指在android应用软件执行时全面监控应用行为。动态检测技术通过在沙箱或者真实环境下运行应用软件来获得信息从而进行检测。droidscope可以在受保护的运行环境下动态检测应用软件。dini等人提出动态检测框架madam,能够在android内核层和用户层监控应用软件。动态检测准确率较高,缺点是运行时占用资源较多,效率较低。

对于静态检测和动态检测而言,通常需要人工地生成和更新android恶意软件检测规则,这使得部分新出现的恶意软件无法被有效检测。为了准确识别未知恶意软件,机器学习开始应用于android恶意软件检测问题。droidapiminer通过机器学习算法来分析api级别的android应用特征。zhao等人提出了基于特征频率的特征选择算法。在传统的机器学习算法中,支持向量机(supportvectormachine,svm)算法被常用于基于特征选择的android恶意软件检测。由于传统的机器学习算法通常都是浅层架构,无法有效地通过关联特征对android软件进行高层次的表征。

可见,现有技术中android恶意软件检测的主要问题在于:

(1)基于静态检测的android恶意软件检测模式的扩展性差,且越来越多的android恶意软件通过重打包等方式绕过静态检测。

(2)基于动态检测的android恶意软件检测运行时占用资源较多,效率较低,并且难以检测出从未出现过的android应用软件。

(3)基于传统机器学习算法的android恶意软件检测,其机器学习结构多为浅层结构,无法对恶意软件进行高层抽象的特征表示,检测效果不尽如人意。

因此,本发明尝试通过深度学习模型进行android恶意软件检测以解决现有技术中存在的上述技术问题。



技术实现要素:

本发明提供一种基于深度置信网络的android恶意软件检测的方法,用以解决现有技术中恶意软件检测方法存在的诸多缺陷。

本发明提供一种基于深度置信网络的android恶意软件检测的方法,其特征在于所述方法包括如下步骤:

提取android应用软件的权限和敏感api的特征;

使用深度置信网络dbn来构建深度学习模型,将提取出的所述特征使用所述深度学习模型进行处理,得到表征高层抽象特征的样本;

使用分类算法,对通过所述深度学习模型检测出的样本进行分类,区分出恶意软件和正常软件。

本发明提出的方法中所述提取出android应用软件的权限和敏感api的特征具体是指:

对所述应用软件安装文件进行解压,获得androidmanifest.xml和classes.dex文件,通过对所述解压获得的文件解析获得android应用软件的权限和敏感api的特征。

本发明的方法中使用深度置信网络dbn来构建深度学习模型的构建包括由无监督的预训练阶段和有监督的后向传播阶段两个阶段组成。

本发明的方法中所述预训练阶段过程如下:

对于样本量为n的训练集中的一个特征向量xn(0≤n<n)

1)n=0

2)将xn传递到可视层v0,根据式(1)计算隐藏层h0:

p(h0j=1|v0)=σ(wjv0)——式(1)

上述公式中,p为概率分布函数,在cd算法中是训练权值的核心;

hij表示第i层隐藏层中第j个隐藏单元的值;

vi表示第i层rbm可视层向量,h1表示第i层rbm隐藏层向量;

wi表示第i层rbm的可视层和隐藏层映射关系的权值向量;

σ计算公式如下:

σ(x)=1/(1+exp(-x))

3)根据式(2)计算可视层得到v1:

上式中,vij表示第i层可视层中第j个可视单元的值,上角标t表示矩阵的转置;

4)再根据式(1)计算隐藏层h1:

p(hij=1|v1)=σ(wjv1)

5)对于所有节点j,更新权值:

λ与收敛速度有关,是个常数,λ越大,收敛速度越快

若n=n-1,结束,否则n=n+1,转步骤2)。

本发明的方法中所述后向传播包括如下过程:

1)随机初始化bp网络的参数,读取rbm网络的权值矩阵w,训练步长初始化为n;

2)前向计算每一层的单位节点值,对第l层的j单位节点,节点值为该节点值与第l-1层的所有的单元节点都相关,若神经元j在输出层(l=l),令误差ej(n)=dj(n)-oj(n),dj为已标签的结果;

wij(n)为与第l层第j个单位节点有关的权值;

为第l层的第j个单位节点的节点值,如果为输出层神经元,oj(n)为输出层的j个单位节点的节点值,dj(n)为输出层已标签的正确结果,ej(n)=dj(n)-oj(n)为误差;

3)计算δ,将δ后向传递,向下依次微调权值;δ是与节点值的误差值有关的函数,用于微调权值;

对于输出单元:

4)对于隐藏单元:

5)微调权值

其中η为学习速率,学习速率与收敛速度有关,学习速率越高,收敛越快;

如果n=n,结束;否则n=n+1,转步骤2)。

本发明结合android应用软件特征,采用基于深度置信网络的深度学习模型进行特征分析:首先结合android应用软件来获取全面的应用软件特征;然后利用深度置信网络挖掘软件特征的高层抽象特征,最后通过分类算法基于高层抽象特征来区分正常软件和恶意软件。实验结果表明,基于深度置信网络的深度学习模型可以更好地表征android恶意软件的特征,其检测效果也明显优于传统的神经网络模型和机器学习模型。

附图说明

为了更清楚的说明本发明实施例的技术方案,下面将对本发明的实施例中所需要使用的附图作简单地介绍。

图1是本发明android恶意软件检测框架图。

图2是本发明使用的dnb网络结构图。

图3是本发明深度学习模型的构建图。

图4是本发明分类算法的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。

本发明提出了一种基于深度置信网络(deepbeliefnetwork,dbn)的android恶意软件检测方,本发明的android恶意软件检测框架如图1所示,其步骤如下:

(1)首先,针对android应用软件,提取出android应用软件的权限和敏感api等179个特征,179个特征对应着一个179维的二值向量,若android应用软件包含该特征时,则该维度为1,否则,该维度值为0,android应用软件所对应的特征向量作为深度学习模型的原始输入;其次,使用dbn网络来构建深度学习模型,将android应用软件所对应的特征向量输入深度学习模型,进行android应用软件检测。

(2)深度学习模型

由于传统的机器学习算法通常都是浅层架构,无法有效地通过关联特征对android软件进行高层次的表征,本发明采用深度学习模型挖掘高层抽象特征,进行android应用软件检测。将android应用软件所对应的特征向量输入深度学习模型,深度学习模型的主要作用是对特征向量进行权重表示,简单地讲就是评估特征向量每个维度的权重,并不进行分类,将输入的特征向量进行高层次化,后续的分类算法负责对android应用软件进行分类,这样使得分类更准确,检测效果更好。

深度学习模型以深度置信网络为基础,分为贪心算法初始化、对比散度算法预训练和后向传播网络微调三个部分,以上三个部分将在后续参照附图进行详细介绍。

(3)分类算法

本发明采用支持向量机(supportvectormachine,svm)算法作为模型的分类算法,将深度学习模型输出的特征向量输入svm分类模块,对android应用软件进行分类,区分出恶意软件和正常软件。

本发明中,利用权限类特征和敏感api类特征可以更为全面地描述android应用,采用dbn网络学习特征的深层结构,可以更好地表征和检测出android恶意软件。

上文中结合图1描述了本发明android恶意软件检测的基本框架,下面将结合图2、图3和图4,进一步详细描述本发明android恶意软件检测方法的各个步骤。

1.特征提取

android应用软件的特征主要分为静态特征和动态特征,静态特征是指在不执行应用软件的情况下,使用反编译等方式,提取待分析软件的特征,主要包括权限信息和调用的敏感api信息;动态特征是指android应用软件执行时获取的反映应用软件行为的特征,相比于动态特征提取速度慢,占用资源多等缺点,静态特征所需的系统资源小,速度快,适合大规模的特征提取,因此本文采用静态分析的方法提取特征,并基于静态特征构造特征集。

为了得到android应用软件特征,对其安装文件(.apk文件)进行解压,获得两个重要的文件,分别为androidmanifest.xml和classes.dex文件。androidmanifest.xml文件是系统清单文件,定义了应用软件的权限、组件等信息,对androidmanifest.xml文件进行解析,得到android应用软件申请的权限,例如,android.permission.camera是android应用软件申请使用照相机权限。通过解析androidmanifest.xml文件,得到了android应用软件总共120个权限。通过baksmali工具对classes.dex文件进行反编译解析,可以得知哪些api接口被调用,例如,chmod是用于改变用户权限的敏感api。通过解析classes.dex文件,得到了总共59个敏感api。提取出的权限信息和调用的敏感api信息如表1所示。

表1构建的特征及特征的说明

参见表1,提取出android应用软件的权限和敏感api等179个特征,179个特征对应着一个179维的二值向量,若android应用软件包含该特征时,则该维度为1,否则,该维度值为0,android应用软件所对应的特征向量作为深度学习模型的原始输入。

2深度置信网络

在目前的深度学习理论中,深度置信网络(deepbeliefnetwork,dbn)是应用较为广泛的一类深度学习框架。深度置信网络分为两部分,结构如图2所示,底层部分由多层受限玻尔兹曼机(restrictedboltzmannmachine,rbm)单元堆叠而成,上层部分为有监督的后向传播(backpropagation,bp)网络层,用于微调整体架构。本发明将dbn网络应用于android恶意软件检测中,相较于传统的深度学习框架(循环神经网络、卷积神经网络等),本发明的优势在于,针对android应用软件的特征向量的学习速度更快,性能更好,因此本发明采用基于dbn的深度学习框架对android恶意软件进行检测。

如图2所示,v表示可视层的节点值向量,h表示隐藏层的节点值向量,在堆叠的rbm中,除了最底层和最顶层,每一层的rbm中的隐藏层即是在其之上的另一rbm的可视层。w为权值矩阵,用于表示可视层和隐藏层之间的映射关系。

本发明的基于dbn的深度学习模型包括三个部分。首先,采用贪心算法进行rbm初始化,用于对权值矩阵w的参数进行初始化。贪心算法用于rbm权值矩阵的初始化,其目的是为了增加后续对比散度算法(contrastivedivergence,cd)的效率,因为完全随机的权值矩阵参数对于cd算法来说效率太低,计算成本过高。然后,将第一步得到的android应用软件所对应的特征向量也就是未标签的app样本输入给底层rbm的初始特征向量v0,底层rbm的初始特征向量即为底层rbm的可视层的节点值向量,通过对比散度(contrastivedivergence,cd)算法训练每一层的rbm,在向上的无监督转化过程中,从具体的不易分类的特征向量转化为抽象的易于分类的组合特征向量,通过调整自身层内的权值矩阵wi,使得该层特征向量的映射达到局部最优。最后,通过bp网络有监督地微调dbn网络,从而使参数达到全局最优,并输出易于分类的特征向量进入分类模块。上述dbn网络的主要工作在于训练特征向量的权重表示,不对android应用软件进行分类,因此仍然需要通过分类算法对android应用软件进行分类,这里采用支持向量机(supportvectormachine,svm)算法作为模型的分类算法,结构如图3所示。

由图2可知,深度学习模型的构建由无监督的预训练阶段和有监督的后向传播阶段两个阶段组成。在预训练阶段,若干rbm分层堆叠,组成dbn网络的基本框架,两层相邻的rbm之间采用贪心算法,对权值矩阵w的参数进行初始化,通过对比散度(contrastivedivergence,cd)算法训练每一层的rbm,进一步训练rbm的权值矩阵参数。在后向传播阶段,bp模块以有监督的方式用标记的样本对dbn网络进行微调,最后,深度置信网络输出的特征向量进入svm分类模块,svm分类模块依据该特征向量对样本进行分类,结构如图3所示。

下面对该深度置信网络中的算法进行详细说明。

2.1对比散度算法

由于对比散度算法(contrastivedivergence,cd)精度高,计算速度快,采用cd学习算法,用于训练权值矩阵w的参数,使得该层特征向量的映射达到局部最优。cd算法利用两个概率分布的“差异性”来迭代更新权值,最终达到收敛。

基于cd算法的rbm网络自训练过程如下:

对于样本量为n的训练集中的一个特征向量xn(0≤n<n)

1)n=0

2)将xn传递到可视层v0,根据式(1)计算隐藏层h0:

p(h0j=1|v0)=σ(wjv0)——式(1)

上述公式中,p为概率分布函数,在cd算法中是训练权值的核心;

hij表示第i层隐藏层中第j个隐藏单元的值;

vi表示第i层rbm可视层向量,h1表示第i层rbm隐藏层向量;

wi表示第i层rbm的可视层和隐藏层映射关系的权值向量;

σ计算公式如下:

σ(x)=1/(1+exp(-x))

3)根据式(2)计算可视层得到v1:

上式中,vij表示第i层可视层中第j个可视单元的值,上角标t表示矩阵的转置;

4)再根据式(1)计算隐藏层h1:

p(h1j=1|v1)=σ(wjv1)

5)对于所有节点j,更新权值:

λ与收敛速度有关,是个常数,λ越大,收敛速度越快

若n=n-1,结束,否则n=n+1,转步骤2)。

2.2后向传播网络

如图3所示,后向传播(backpropagation,bp)网络通过有监督的学习方式,与已标签的应用软件(即已知是恶意还是正常应用软件)进行结果对比,微调整个dbn网络。采用bp网络训练方法,节点求值函数选取sigmod函数。

bp网络训练过程如下:

1)随机初始化bp网络的参数,读取rbm网络的权值矩阵w,训练步长初始化为n;

2)前向计算每一层的单位节点值,对第l层的j单位节点,节点值为该节点值与第l-1层的所有的单元节点都相关,若神经元j在输出层(l=l),令误差ej(n)=dj(n)-oj(n),dj为已标签的结果;

wij(n)为与第l层第j个单位节点有关的权值;

为第l层的第j个单位节点的节点值,如果为输出层神经元,oj(n)为输出层的j个单位节点的节点值,dj(n)为输出层已标签的正确结果,ej(n)=dj(n)-oj(n)为误差;

3)计算δ,将δ后向传递,向下依次微调权值;δ是与节点值的误差值有关的函数,用于微调权值;对于最终输出单元:

4)对于隐藏单元:

5)微调权值

其中η为学习速率,学习速率与收敛速度有关,学习速率越高,收敛越快;

如果n=n,结束;否则n=n+1,转步骤2)。

3.分类算法

依据深度置信网络输出的高层特征向量,分类算法对android应用软件进行分类,这里采用支持向量机(supportvectormachine,svm)算法作为模型的分类算法。svm算法包括两个阶段:训练和测试。给定训练阶段中的正常样本和恶意样本,svm找到超平面,该超平面由法线向量ω和垂直距离b指定,该原点将具有最大边距γ的两个类别分开,其中positive为正常样本,negative为恶意样本,如图4所示。

在测试阶段,svm预测模型会将测试集分为两类,线性svm的决策函数f如式(3)

x表示深度置信网络输出的特征向量,当f(x)>0,将样本判定为正常样本,否则,将样本判断为恶意样本。

4、发明的效果

4.1数据集

在googleplaystore共下载得到10000个应用软件作为正常样本集。恶意样本集样本数3938个,由两部分组成,一部分来自genomeproject(http://www.malgenomeproject.org/)共1260个,一部分来自virustotal(https://www.virustotal.com/)共2678个,两部分共计3938个恶意样本。从样本集中随机选取700个正常样本和700个恶意样本,然后将其彻底混合,作为一组数据,总共选取5组数据实验。从5组数据中选取2组分别作为训练集和测试集。实验的环境如表2所示。

表2实验环境

4.2与其他传统机器学习算法进行比较

将本发明基于dbn+svm的深度学习模型与传统的机器学习模型得到的检测结果进行比较,实验结果如表3所示。在实验中,采用准确率(precision)、召回率(recall)和正确率(accuracy)三个指标来评价对android恶意软件检测的结果。

表3不同机器学习算法检测结果

对于大多数传统的机器学习算法(bayes、logisticregression、knn、svm),测试了sigmoidkernel、linearkernel等多种常见的核函数,并选取检测结果最佳的数据作为传统机器学习算法的实验结果。从表3可以看出,在相同测试集下,本发明的dbn+svm算法的正确率比svm高出3.35%,比bayes高出11.83%,比knn高出12.26%,比logisticregression高出14.38%,由此可见,本发明基于dbn的深度学习模型明显优于传统的神经网络模型和机器学习模型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1