一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法

文档序号:26594769发布日期:2021-09-10 22:05阅读:126来源:国知局
一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法

1.本发明涉及一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法。


背景技术:

2.近年来,移动互联网的快速发展使得智能手机逐渐成为我国国家基础信息设备。如今,智能手机集各类应用于一身,如拍照、地图导航、即时通讯、网络支付、网络购物、娱乐、在线学习等。因此,智能手机中存储了大量的个人信息,其中包括隐私信息,如个人相片、通话记录等;账户,如网银账号、社交账号等;设备信息,如位置信息、手机号码等。由于智能手机实时联接网络的特性,用户的个人信息容易被恶意应用泄露、利用,因此具有潜在的安全问题。
3.在智能手机操作系统中,主要以android、ios操作系统为主。传统android防御机制难以应对恶意软件数量和种类的快速增加,android平台易受到新的和未知的恶意软件的攻击。android智能手机在大量普及的同时,由于系统底层的源代码完全免费开源、第三方应用商店安全审核机制的不规范以及用户信息安全意识薄弱等因素的存在,导致android平台上的恶意软件大行其道,用户感染数量与日俱增,对用户的个人隐私以及财产安全造成了极大的威胁,特别是近年来移动支付的兴起,安全的手机支付环境也变得越来越重要。基于android系统的开源性,android恶意软件检测一直是网络安全研究的热点之一。针对目前android恶意软件中混淆技术的广泛使用,以及对使用混淆技术的android恶意软件的检测效果差的问题,为了保护android操作系统的安全,需要一种有效的android恶意软件检测系统可以帮助改善android系统和用户所面临的日益严峻的安全形势。


技术实现要素:

4.由于android系统的开源性,android恶意软件检测一直是网络安全研究的热点之一。针对目前android恶意软件中混淆技术的广泛使用,以及对使用混淆技术的android恶意软件的检测效果差的问题,本发明的目的是为了解决上述的问题,而提出一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法。
5.一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,所述方法通过以下步骤实现:
6.步骤一、使用apktool对待检测软件样本集文件进行反编译,得到应用程序的反编译资源文件,包括:androidmanifest.xml清单文件和smali字节码文件;
7.步骤二、从反编译资源文件中提取特征集合,包括:permission集合、intent集合和敏感api集合;将提取的特征几何按使用次数从低到高排序,选择频率高的特征合并为特征集,并对特征集进行量化;其中,
8.permission集合和intent集合从androidmanifest.xml文件中得到;
9.敏感api集合从smali文件中得到;通过baksmali工具对classes.dex文件进行反编译解析,得出被调用的api接口,chmod是用于改变用户权限的敏感api;通过解析classes.dex文件,得到敏感api特征;
10.步骤三、采用门控循环单元处理具有时序变化的特征,以进行检测动态特征。
11.优选地,步骤二所述的从反编译资源文件中提取特征集合,具体为利用规则挖掘算法和tf

idf算法相关联的方法处理静态特征,去除关联性较大的特征,提取静态特征,并对朴素贝叶斯算法进行加权处理,降低特征维度,去除冗余特征;其中,静态特征包括请求的权限、组件、意图和敏感api。
12.优选地,步骤三所述的采用门控循环单元处理具有时序变化的特征,以进行检测动态特征具体为,通过模拟器或者移动设备安装xpoesd框架,获得root权限,通过自动化测试工具monkey runner+动态分析工具inspeckage来提取动态特征;
13.其中,动态特征是指android应用软件运行时的行为特征,包括文件读写操作、通话请求、短信请求、数据加解密操作、网络数据输入输出、读取私人信息,这些行为能够表现应用软件的行为意图。
14.优选地,所述的利用规则挖掘算法和tf

idf算法相关联的方法处理静态特征,具体步骤包括:
15.(1)构建基于tf

idf算法的特征加权算法;
16.寻找一段具有良好类别区分性的文本信息,如果某段文本信息在一篇文档中出现的频数越高,且在文件集的其他文件中出现的频数越低,则该文本信息的重要程度越高,即这段文本信息就是要确定的文本信息,是属于一段具有良好类别区分性的文本信息,tf

idf算法权重计算如公式为:
17.weight=tf
i,j
×
idf
i
ꢀꢀꢀ
(1

1)
18.因此第i段文本信息的tf

idf值为tf值以及idf值的乘积,其中词频tf的表达式如公式(1

2)所示,其中n
i,j
表示第i段文本信息在第j篇文件中出现的频数,∑
k
n
k,j
表示第j篇文件中所有词语的出现次数;
[0019][0020]
逆向文件频率idf的表达式如公式(1

3)所示,其中,d表示文件集中所有文件的数量,di表示文件集中所有出现过第i段文本信息的文件数量,
[0021][0022]
将每一项敏感api看作一段文本信息,每一个样本所调用的所有敏感api集合作为一个文件,所有的软件样本库作为文件集,计算出每一个敏感api特征的权重值;权重值越高表示该敏感api在恶意软件中更加普遍地被调用,得到带权重的敏感api调用特征向量;保留权值较大的,去除权值较小的敏感api,从而对权限、敏感api等进行特征降维;得到带权重信息的特征向量,特征的权重信息将作为后续改进贝叶斯算法的重要依据;
[0023]
(2)基于关联规则的特征选择:
[0024]
采用逐层搜索的迭代方式,即通过k权限集探索(k+1)权限集;
[0025]
首先,扫描权限测试集,统计每个权限的出现次,数收集满足最小支持度的权限,
得到频繁1权限集的集合,将该集合记为q1;
[0026]
然后,凭借q1找出频繁2权限集的集合q2,以此类推,直至不能再找到频繁k权限集;
[0027]
通过apriori算法得到关联规则,关联规则的强度通过支持度和置信度度量;其中,支持度和置信度度量公式表示为:
[0028]
支持度:
[0029]
置信度:
[0030]
其中,x,y是权限集合的子集,σ(x)表示含有权限子集x的apk个数,n表示apk数据集的总数;支持度保证了子集在整个数据集中占据的比重,而置信度保证了y在包含x的数据集中占据的比重;若满足设定支持度和置信度的关联规则中含有x

y和y

x,则可以只选取两个权限子集中的其中一个,使权限中的相关性大大减弱;
[0031]
(3)传统朴素贝叶斯算法
[0032]
定义:设样本有n个属性特征,向量x表示n个属性组成的属性集合,则样本的属性特征信息可以用向量x(x1,x2,x3

...xn)表示,并且在给定的全概率事件上将样本类别划分为c1,c2,

,cm,其中每个ci为一个类别;通过计算得到在训练样本集上每个属性在某个类别ci条件下的条件概率,即p(x1|ci),p(x2|ci),

,p(xn|ci);最后在对样本xi进行分类时,分别计算样本对于每一个类别的后验概率,即p(c1|xi),p(c2|xi),

,p(cm|xi),取后验概率最大的类别ci作为该样本的最终分类所属类别;
[0033]
由定义给出的朴素贝叶斯算法原理定义后验概率如下:
[0034][0035]
其中p(x)在所有类别情况下为常数,因此只需要p(ci)p(x|ci)最大即可判断该后验概率最大;p(ci)表示每个属性出现在训练样本中的概率,p(x|ci)为每个属性在所有类别下的条件概率;由于朴素贝叶斯算法假设属性之间是相互独立的,因此有:
[0036][0037]
综上所述,样本x属于某一类别只需极大后验概率最大,极大后验概率定义为:
[0038][0039]
其中cmap即为朴素贝叶斯算法根据最大后验概率的最终判定分类;
[0040]
(4)基于加权的改进朴素贝叶斯
[0041]
在特征加权模块,使用tf

idf算法计算每个特征属性的权重值w(x
k
),利用权重值对众多权限特征的去冗余,同时对朴素贝叶斯算法的改进;将上述计算得到的tf

idf权重值作为依据,将权重值w(x
k
)带入到朴素贝叶斯后验概率计算公式(1

6)中,得到新的后验概率计算公式(1

9):
[0042][0043]
优选地,所述的自动化测试工具monkey runner+动态分析工具inspeckage来提取动态特征的过程为,
[0044]
采用gru模型处理动态特征向量:
[0045]
x
t
为当前单元的输入,y
t
为当前单元的输出,h
t
为当前单元的隐状态;h
t
‑1为上一个单元输出并传递到本单元的隐状态,这个隐状态包含了之前单元的相关信息;
[0046]
gru内部计算过程如下所示:
[0047]

是hadamardproduct,代表矩阵中对应元素相乘;+是矩阵加法操作,代表矩阵中对应元素相加;两个门控状态,r是控制重置的门控,z是控制更新的门控,w
r
、w
z
和w均为权重矩阵;
[0048]
激活函数:
[0049][0050][0051]
step1:获取两个门控状态r和z;
[0052]
r=σ(w
r
x
t
+w
r
h
t
‑1)
ꢀꢀꢀ
(1

12)
[0053]
z=σ(w
z
x
t
+w
z
h
t
‑1)
ꢀꢀꢀ
(1

13)
[0054]
step2:利用重置门控r重置数据,计算得到h’;
[0055]
h
t

1'
=h
t
‑1⊙
r
ꢀꢀꢀ
(1

14)
[0056]
h'=tanh(wx
t
+wh
t

1'
)
ꢀꢀꢀ
(1

15)
[0057]
step3:更新记忆,门控信号越接近1,代表记忆的数据越多,越接近0,代表遗忘的越多;
[0058]
h
t
=z

h
t
‑1+(1

z)

h'
ꢀꢀꢀ
(1

16)
[0059]
如上所述,结合xt和ht

1,gru会得到当前隐藏单元的输出yt,并作为隐藏状态ht传递给下一个单元,其中yt和ht数值上相同。
[0060]
本发明的有益效果为:
[0061]
由于静态分析对使用了混淆技术的android恶意软件的分析效果差,而目前情况是,越来越多的android恶意软件使用混淆技术来进行伪装。所以本发明采用多种静态特征的方法,通过资源型特征和语法型特征进行分析,资源型特征分析方法是从apk中存储的资源文件中提取而来,包括与证书相关特征、与包名相关特征、与恶意代码隐藏相关特征等,另一种为语法型特征,该类特征从apk中的资源代码中提取而来,包括与权限和意图相关特征敏感api调用相关特征。
[0062]
本发明通过关联规则挖掘(arm)和tf

idf算法进行特征处理,去除关联性较大的特征,提取有效特征,并对朴素贝叶斯算法进行加权处理,能有效降低特征维度,去除冗余特征,优化计算效率。在动态检测中,由于动态特征相互之间具有时序关联性,经过实体嵌入编码后形成时间序列,而循环神经网络(recurrent neural network,rnn)处理顺序或时序相关特征有其特有优势,能很好地处理具有时序变化的特征。gru作为被广泛使用的一种特殊的循环神经网络,解决了长序列训练过程中的梯度消失和梯度爆炸问题,相比普通的rnn模型,gru能够在更长的时间序列中有更好的表现,并且相对于其他rnn模型参数更少,训练难度更低,在很大程度上能够提高训练效率,故采用门控递归单元(gru)进行动态检测。
[0063]
本发明是通过申请android malware dataset(amd)恶意软件数据集进行方法验
证,其具有更好的分类性能,能够有效地检测使用混淆技术的恶意软件,提高检测的准确率。
附图说明
[0064]
图1为本发明方法流程图;
[0065]
图2为本发明涉及的静态特征检测示意图;
[0066]
图3为本发明涉及的gru内部结构示意图。
具体实施方式
[0067]
具体实施方式一:
[0068]
本实施方式的一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,如图1所示,所述方法通过以下步骤实现:
[0069]
步骤一、使用apktool对待检测软件样本集文件进行反编译,得到应用程序的反编译资源文件,包括:androidmanifest.xml清单文件和smali字节码文件;
[0070]
步骤二、从反编译资源文件中提取特征集合,包括:permission集合、intent集合和敏感api集合;将提取的特征几何按使用次数从低到高排序,选择频率高的特征合并为特征集,并对特征集进行量化;其中,
[0071]
permission集合和intent集合从androidmanifest.xml文件中得到;
[0072]
敏感api集合从smali文件中得到;
[0073]
通过baksmali工具对classes.dex文件进行反编译解析,得出被调用的api接口,例如,chmod是用于改变用户权限的敏感api;通过解析classes.dex文件,得到敏感api特征;
[0074]
步骤三、采用门控循环单元处理具有时序变化的特征,以进行检测动态特征。
[0075]
具体实施方式二:
[0076]
与具体实施方式一不同的是,本实施方式的一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,步骤二所述的从反编译资源文件中提取特征集合,具体为利用规则挖掘(arm)算法和tf

idf算法相关联的方法处理静态特征,去除关联性较大的特征,提取静态特征,并对朴素贝叶斯算法进行加权处理,有效降低特征维度,去除冗余特征,优化计算效率;其中,静态特征包括请求的权限、组件、意图和敏感api;
[0077]
朴素贝叶斯算法虽然分类效果较好,但是在属性个数多或者属性之间相关性较大时,朴素贝叶斯算法分类效果不好,而且传统朴素贝叶斯算法默认特征属性对累别属性的贡献度是一样的;本发明则通过基于改进的朴素贝叶斯算法进行android恶意软件静态检测,解决上述问题。
[0078]
具体实施方式三:
[0079]
与具体实施方式一或二不同的是,本实施方式的一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,步骤三所述的采用门控循环单元处理具有时序变化的特征,以进行检测动态特征具体为,通过模拟器或者移动设备安装xpoesd框架,获得root权限,通过自动化测试工具monkey runner+动态分析工具inspeckage来提取动态特征;
[0080]
其中,动态特征是指android应用软件运行时的行为特征,包括文件读写操作、通话请求、短信请求、数据加解密操作、网络数据输入输出、读取私人信息,这些行为能够表现应用软件的行为意图;
[0081]
动态特征action_sendnet表示通过网络传递数据,动态特征action_phonecalls表示使用通话服务,动态特征action_sendsms表示发送短信。这些动态特征的提取主要是基于监控相关api调用实现的,每一个动态特征都对应一组若干api调用。
[0082]
目前对于动态行为的监控,可以使用相关工具开展工作。在之前的研究中,研究人员使用droidbox收集记录动态特征,droidbox是基于taintdroid的一个分析android应用软件的动态分析工具,通过hook技术监控系统api,记录应用软件启动后若干时间之内的动态行为。虽然droidbox功能较为完善,但由于其无法自动化检测,不能执行android应用软件的全部功能,在监测结果上可能存在遗漏,因此选择了自动化测试工具monkeyrunner+动态分析工具inspeckage来提取动态特征。
[0083]
具体实施方式四:
[0084]
与具体实施方式三不同的是,本实施方式的一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,所述的利用规则挖掘(arm)算法和tf

idf算法相关联的方法处理静态特征,采用关联规则挖掘(arm)和tf

idf算法进行特征处理,去除相关性较大的特征和对特征降维,并对朴素贝叶斯算法进行加权处理,通过加权的朴素贝叶斯算法提高android应用恶意性判断的准确性。具体步骤包括:
[0085]
(1)构建基于tf

idf算法的特征加权算法;
[0086]
tf

idf(term frequency

inverse document frequency)是常用的特征加权算法之一,通常用于评估一段文本信息在文件集中的重要程度,在文本信息的检索和分类领域有广泛的应用。tf

idf算法由词频(term frequency)以及逆向文件频率(inverse document frequency)两个部分组成,其中词频表示某一段文本信息在文档中出现的频数,逆向文件频率表示在文件集中包含该段文本信息的文件出现的频数。tf

idf算法的主要思想是,要寻找一段具有良好类别区分性的文本信息,如果某段文本信息在一篇文档中出现的频数越高,且在文件集的其他文件中出现的频数越低,则该文本信息的重要程度越高,即这段文本信息就是要确定的文本信息,是属于一段具有良好类别区分性的文本信息,tf

idf算法权重计算如公式为:
[0087]
weight=tf
i,j
×
idf
i
ꢀꢀꢀꢀ
(1

1)
[0088]
因此第i段文本信息的tf

idf值为tf值以及idf值的乘积,其中词频tf的表达式如公式(1

2)所示,其中n
i,j
表示第i段文本信息在第j篇文件中出现的频数,∑
k
n
k,j
表示第j篇文件中所有词语的出现次数;
[0089][0090]
逆向文件频率idf的表达式如公式(1

3)所示,其中,d表示文件集中所有文件的数量,di表示文件集中所有出现过第i段文本信息的文件数量,这里为了防止di为0时分母无意义,进行di加1处理。
[0091][0092]
针对敏感api特征向量,按照tf

idf算法的思想,将每一项敏感api看作一段文本
信息,每一个样本所调用的所有敏感api集合作为一个文件,所有的软件样本库作为文件集,计算出每一个敏感api特征的权重值;权重值越高表示该敏感api在恶意软件中更加普遍地被调用,得到带权重的敏感api调用特征向量;保留权值较大的,去除权值较小的敏感api,权值较小说明不具有区分性,从而对权限、敏感api等进行特征降维;得到带权重信息的特征向量,特征的权重信息将作为后续改进贝叶斯算法的重要依据;
[0093]
(2)基于关联规则的特征选择;
[0094]
权限特征限之间往往存在着明显的相关性。例如read_contacts与write_contacts这两个对联系人信息的读写权限就具有较高的相关性,在样本中几乎是成对出现或缺失。若权限特征中包含大量强相关性的特征,就会加大分类开销,并且对分类的精准度产生干扰。本本将利用关联规则学习对强相关性的权限特征进行去冗余处理。
[0095]
apriori算法是数据挖掘领域以及计算机领域中经典的关联规则学习算法之一,主要用于处理数据库中的商品清单、访问清单等交易相关的内容信息之间的联系规则。该算法采用逐层搜索的迭代方式,即通过k权限集探索(k+1)权限集;
[0096]
首先,扫描权限测试集,统计每个权限的出现次,数收集满足最小支持度的权限,得到频繁1权限集的集合,将该集合记为q1;
[0097]
然后,凭借q1找出频繁2权限集的集合q2,以此类推,直至不能再找到频繁k权限集;
[0098]
通过apriori算法得到关联规则,关联规则的强度通过支持度(support)和置信度(confidence)度量;其中,支持度和置信度的度量公式表示为:
[0099]
支持度:
[0100]
置信度:
[0101]
其中,x,y是权限集合的子集,σ(x)表示含有权限子集x的apk个数,n表示apk数据集的总数;支持度保证了子集在整个数据集中占据的比重,而置信度保证了y在包含x的数据集中占据的比重;若满足设定支持度和置信度的关联规则中含有x

y和y

x,则可以只选取两个权限子集中的其中一个,使权限中的相关性大大减弱;
[0102]
(3)传统朴素贝叶斯算法:
[0103]
所述的朴素贝叶斯算法的原理为:
[0104]
设样本有n个属性特征,向量x表示n个属性组成的属性集合,则样本的属性特征信息可以用向量x(x1,x2,x3

...xn)表示,并且在给定的全概率事件上将样本类别划分为c1,c2,

,cm,其中每个ci为一个类别;通过计算得到在训练样本集上每个属性在某个类别ci条件下的条件概率,即p(x1|ci),p(x2|ci),

,p(xn|ci);最后在对样本xi进行分类时,分别计算样本对于每一个类别的后验概率,即p(c1|xi),p(c2|xi),

,p(cm|xi),取后验概率最大的类别ci作为该样本的最终分类所属类别;
[0105]
由定义给出的朴素贝叶斯算法原理定义后验概率如下:
[0106][0107]
其中p(x)在所有类别情况下为常数,因此只需要p(ci)p(x|ci)最大即可判断该后验概率最大;p(ci)表示每个属性出现在训练样本中的概率,p(x|ci)为每个属性在所有类
别下的条件概率;由于朴素贝叶斯算法假设属性之间是相互独立的,因此有:
[0108][0109]
综上所述,样本x属于某一类别只需极大后验概率(maximum a posteriori,map)最大,极大后验概率定义为:
[0110][0111]
其中cmap即为朴素贝叶斯算法根据最大后验概率的最终判定分类;
[0112]
(4)基于加权的改进朴素贝叶斯
[0113]
朴素贝叶斯算法虽然整体性能较好,但是也存在缺点。即默认各个特征具有相同的权重,以及各个特征之间是相互独立的,故本次使用基于tf

idf算法的特征加权模块,改进朴素贝叶斯分类算法的精确度。
[0114]
在使用朴素贝叶斯分类算法时,没有考虑特征之间的相关性问题。为了降低特征之间的强相关性对分类算法的影响,本发明提出基于关联规则挖掘的特征选择能很好的发现权限之间的强相关规则,在频繁权限集中仅保留一项权限作为检测特征,再次减少了权限数目;
[0115]
在特征加权模块,使用tf

idf算法计算每个特征属性的权重值w(x
k
),利用权重值不仅完成对众多权限特征的去冗余,同时也完成了对朴素贝叶斯算法的改进;因为传统朴素贝叶斯分类算法没有考虑到不同特征对于恶意软件分类结果的影响程度是不同的,因此将上述计算得到的tf

idf权重值作为依据,将权重值w(x
k
)带入到朴素贝叶斯后验概率计算公式(1

6)中,得到新的后验概率计算公式(1

9):
[0116][0117]
整体静态检测流程如下图2所示的静态特征检测图示。
[0118]
具体实施方式五:
[0119]
与具体实施方式不同的是,本实施方式的一种基于改进朴素贝叶斯算法和门控循环单元混合的恶意软件检测方法,所述的自动化测试工具monkey runner+动态分析工具inspeckage来提取动态特征的过程为,
[0120]
gru(gate recurrent unit)是一种特殊的循环神经网络(recurrent neural network,rnn)。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。相比普通的rnn,gru能够在更长的序列中有更好的表现。通过门控状态来控制传输状态,记住需要长时间记忆的,忘记不重要的信息;而不像普通的rnn那样只能够有一种记忆叠加方式,gru能够在更长的时间操作序列中有更好的表现,并且相对于其他rnn模型参数更少,训练速度更快,难度更低,达到泛化效果所需的数据量更少。因此,gru模型更适合处理维数较少的动态特征向量;
[0121]
采用gru模型处理动态特征向量:
[0122]
gru的内部结构如图3所示,x
t
为当前单元的输入,y
t
为当前单元的输出,h
t
为当前单元的隐状态;h
t
‑1为上一个单元输出并传递到本单元的隐状态(hidden state),这个隐状态包含了之前单元的相关信息;
[0123]
gru内部计算过程如下所示:
[0124]

是hadamardproduct,代表矩阵中对应元素相乘;+是矩阵加法操作,代表矩阵中
对应元素相加;两个门控状态,r是控制重置的门控,z是控制更新的门控,w
r
、w
z
和w均为权重矩阵;
[0125]
激活函数:
[0126][0127][0128]
step1:获取两个门控状态r和z;
[0129]
r=σ(w
r
x
t
+w
r
h
t
‑1)
ꢀꢀꢀ
(1

12)
[0130]
z=σ(w
z
x
t
+w
z
h
t
‑1)
ꢀꢀꢀ
(1

13)
[0131]
step2:利用重置门控r重置数据,计算得到h’;
[0132]
h
t

1'
=h
t
‑1⊙
r
ꢀꢀꢀ
(1

14)
[0133]
h'=tanh(wx
t
+wh
t

1'
)
ꢀꢀꢀ
(1

15)
[0134]
step3:更新记忆,门控信号越接近1,代表记忆的数据越多,越接近0,代表遗忘的越多;
[0135]
h
t
=z

h
t
‑1+(1

z)

h'
ꢀꢀꢀ
(1

16)
[0136]
如上所述,结合xt和ht

1,gru会得到当前隐藏单元的输出yt,并作为隐藏状态ht传递给下一个单元,其中yt和ht数值上相同。
[0137]
以上仅为本发明的优选实施方式而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1