基于两层机器学习的Android恶意软件检测方法技术

技术编号:35289372 阅读:19 留言:0更新日期:2022-10-22 12:34
本发明专利技术涉及一种基于两层机器学习的Android恶意软件检测方法,采用贝叶斯算法、高斯混合模型算法、Mean shift算法作为第一层机器学习算法构建基本分类器,采用MLP算法作为第二层机器学习算法构建元分类器,得到两层机器学习模型;通过监视已被标记的良性和恶意应用程序的运行状态来提取应用程序的行为特征并生成特征向量;训练两层机器学习模型;通过监视未知应用程序的运行状态来提取未知应用程序的行为特征并生成特征向量,两层机器学习模型根据未知应用程序的特征向量预测判断未知应用程序是良性的还是恶意的。本发明专利技术运用互信息特征选择算法和两层机器学习模型实现基于多种行为特征的高精度恶意软件检测。于多种行为特征的高精度恶意软件检测。于多种行为特征的高精度恶意软件检测。

【技术实现步骤摘要】
基于两层机器学习的Android恶意软件检测方法


[0001]本专利技术属于Android恶意软件检测领域,涉及一种基于两层机器学习的Android恶意软件检测方法。

技术介绍

[0002]随着Android智能手机的普及,针对Android平台的恶意应用程序激增。Android占据了智能手机市场非常大的份额。它在不同市场拥有数百万个应用程序,这为Android用户提供了丰富的功能,例如即时消息、基于位置的服务、在线购物和游戏。不幸的是,使用Android操作系统的智能手机近年来越来越多地成为网络犯罪分子的目标,并且更多地受到恶意应用程序的感染。由于Android允许安装来自不可信的第三方市场的应用程序,Android平台很容易受到恶意软件分发应用程序的攻击。目前Android移动恶意软件总数逐年增加达到了很高的数量水平。因此,提出有效的Android恶意软件检测方法,防止恶意软件的传播已经成为一个新兴问题,我们迫切地需要有效的恶意软件检测方法来防止恶意应用程序的扩散。
[0003]事实上,Android平台提供了几种限制恶意软件功能的安全机制,最显著的是Android权限控制机制。要执行某些敏感操作,例如获取联系信息,应用程序必须明确声明这些操作所需的权限并获得用户的同意。然而,这种机制需要开发人员和用户承担重要的责任。开发人员需要遵循最小特权集的原则来指定请求的权限,用户应该了解授予某些权限的风险。大多数用户通常会盲目地向任意应用程序授予权限,从而破坏了权限机制的有效性。因此,权限控制机制很难限制恶意应用程序的传播。
[0004]基于此种现状,通过静态和动态分析提取的各种特征结合机器学习算法已成为大规模恶意软件识别的主流。可以自动推断应用程序的行为属性的机器学习技术与程序分析技术相结合,已成为识别恶意应用程序的主流技术。这些程序分析技术大致可分为静态分析方法和动态分析方法。静态分析有利于快速扫描和检查恶意应用程序。但是为了逃避静态分析,许多恶意应用程序采用了一系列的变形技术,如字节码加密、反射和本机代码执行。这些转换技术极大地挑战了静态分析方法。静态分析在检测采用复杂模糊技术(如加密或动态代码加载)的应用程序时变得无效。然而相比之下,通过监视应用程序在真实或虚拟环境中的运行时行为来执行的动态分析方法,由于具有抵抗代码转换技术的能力,更适合处理这些规避技术,已经变得很有前途。

技术实现思路

[0005]本专利技术的目的在于针对现有技术中Android系统恶意软件采用多种技术逃避检测的问题,提供一种基于两层机器学习的Android恶意软件检测方法,能够通过静态分析方法和动态分析方法相结合,运用互信息特征选择算法和两层机器学习算法,实现基于多种行为特征的高精度恶意软件检测。
[0006]为了实现上述目的,本专利技术有如下的技术方案:
[0007]一种基于两层机器学习的Android恶意软件检测方法,包括以下步骤:
[0008]步骤一、构建两层机器学习模型:采用贝叶斯算法、高斯混合模型算法、Mean shift算法作为第一层机器学习算法构建基本分类器,采用MLP算法作为第二层机器学习算法构建元分类器;将基本分类器输出的预测概率作为元分类器的输入,元分类器根据基本分类器的预测性能的权重对预测概率进行加权;权重表示基本分类器对每个预测应用程序类别的相对重要性;
[0009]步骤二、训练阶段:通过监视已被标记的良性和恶意应用程序的运行状态来提取应用程序的行为特征,所有行为特征存储为行为特征集,并为每个处理过的应用程序生成特征向量;将生成的应用程序的特征向量作为各基本分类器的输入,训练各种基本分类器,把各基本分类器对每个应用程序的预测概率作为元分类器的输入来训练元分类器,得到训练后的两层机器学习模型;
[0010]步骤三、检测阶段:通过监视未知应用程序的运行状态来提取未知应用程序的行为特征,为每个未知应用程序生成特征向量,两层机器学习模型根据未知应用程序的特征向量预测判断未知应用程序是良性的还是恶意的。
[0011]优选的,提取应用程序的行为特征包括静态行为特征和动态行为特征,提取应用程序的静态行为特征使用的是基于apktool的轻量级程序分析工具,提取应用程序的动态行为特征基于开源动态分析工具DroidBox,从中选择出具有恶意的行为特征,并将其转化成机器学习需要的特征向量传递给两层机器学习模型;机器学习算法经过大量良性及恶意应用程序训练之后生成最终的两层机器学习模型作为预测模型,并将预测结果输出到最终的结果报告中。
[0012]优选的,步骤二中所述的运行状态包括13种应用程序操作:请求权限、API调用、意图类型、网络地址、加密操作、网络操作、文件操作、dex等级负荷、信息泄露、发送SMS、通话、接收者动作、系统调用。
[0013]优选的,将获取一组行为日志文件,将日志文件中提取的每个行为视为检测到的行为特征,检测到的行为特征数等于属性数据库D的大小Size(D);如果Size(D)=S,则定义S维的向量空间。
[0014]优选的,通过将每个应用程序的行为日志文件映射到S维向量空间来构造特征向量;然后,通过将每个行为特征的维度设置为1,将所有剩余维度设置为0,可以构建应用程序的特征向量。
[0015]优选的,在提取特征向量时使用了互信息特征选择算法去除冗余的特征降低特征向量的维数;互信息检验根据第i个行为特征b
i
与应用程序类别c之间的相关性去除无关或冗余的行为特征,保留原行为特征的子集,这些行为特征的子集足以对Android应用程序进行分类,该方法可以有效地降低特征向量的维数。
[0016]优选的,互信息特征选择算法的公式为:
[0017][0018]式中,I(b;c)表示互信息特征选择值,b表示行为特征,p(b
i
)表示第i类行为特征b
i
出现在恶意和良性应用程序中的概率,c表示应用程序类别,p(c)表示应用程序类别c的概
率,p(b
i
,c)表示行为特征b
i
出现在应用程序类别c中的概率,行为特征b
i
与应用程序类别c之间的相关性与I(b;c)的值成正比。
[0019]优选的,贝叶斯算法对应用程序的预测概率P1(x)采用以下公式计算:
[0020][0021]式中,n表示应用程序的行为特征总数,x表示测试的应用程序的特征向量;
[0022]高斯混合模型算法对应用程序的预测概率P2(x|θ)采用以下公式计算:
[0023][0024][0025]式中,θ代表全体高斯模型参数,w
i
表示高斯混合成分的混合系数,N(x|μ
i
,∑
i
)表示每个混合成分的概率密度函数,d表示向量空间的维度,k表示该高斯混合模型是k个高斯分布的组合,μ
i
表示均值向量,∑
i
表示协方差矩阵,π为圆周率常数,T表示转置;
[本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于两层机器学习的Android恶意软件检测方法,其特征在于,包括以下步骤:步骤一、构建两层机器学习模型:采用贝叶斯算法、高斯混合模型算法、Mean shift算法作为第一层机器学习算法构建基本分类器,采用MLP算法作为第二层机器学习算法构建元分类器;将基本分类器输出的预测概率作为元分类器的输入,元分类器根据基本分类器的预测性能的权重对预测概率进行加权;权重表示基本分类器对每个预测应用程序类别的相对重要性;步骤二、训练阶段:通过监视已被标记的良性和恶意应用程序的运行状态来提取应用程序的行为特征,所有行为特征存储为行为特征集,并为每个处理过的应用程序生成特征向量;将生成的应用程序的特征向量作为各基本分类器的输入,训练各种基本分类器,把各基本分类器对每个应用程序的预测概率作为元分类器的输入来训练元分类器,得到训练后的两层机器学习模型;步骤三、检测阶段:通过监视未知应用程序的运行状态来提取未知应用程序的行为特征,为每个未知应用程序生成特征向量,两层机器学习模型根据未知应用程序的特征向量预测判断未知应用程序是良性的还是恶意的。2.根据权利要求1所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,提取应用程序的行为特征包括静态行为特征和动态行为特征,提取应用程序的静态行为特征使用的是基于apktool的轻量级程序分析工具,提取应用程序的动态行为特征基于开源动态分析工具DroidBox,从中选择出具有恶意的行为特征,并将其转化成机器学习需要的特征向量传递给两层机器学习模型;机器学习算法经过大量良性及恶意应用程序训练之后生成最终的两层机器学习模型作为预测模型,并将预测结果输出到最终的结果报告中。3.根据权利要求1所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,步骤二中所述的运行状态包括13种应用程序操作:请求权限、API调用、意图类型、网络地址、加密操作、网络操作、文件操作、dex等级负荷、信息泄露、发送SMS、通话、接收者动作、系统调用。4.根据权利要求1所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,获取一组行为日志文件,将日志文件中提取的每个行为视为检测到的行为特征,检测到的行为特征数等于属性数据库D的大小Size(D);如果Size(D)=S,则定义S维的向量空间。5.根据权利要求4所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,通过将每个应用程序的行为日志文件映射到S维向量空间来构造特征向量;然后,通过将每个行为特征的维度设置为1,将所有剩余维度设置为0,构建应用程序的特征向量。6.根据权利要求1所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,在提取特征向量时使用互信息特征选择算法去除冗余的特征降低特征向量的维数;互信息检验根据第i个行为特征b
i
与应用程序类别c之间的相关性去除无关或冗余的行为特征,保留原行为特征的子集。7.根据权利要求6所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,互信息特征选择算法的公式为:
式中,I(b;c)表示互信息特征选择值,b表示行为特征,p(b
i
)表示第i类行为特征b
i
出现在恶意和良性应用程序中的概率,c表示应用程序类别,p(c)表示应用程序类别c的概率,p(b
i
,c)表示行为特征b
i
出现在应用程序类别c中的概率,行为特征b
i
与应用程序类别c之间的相关性与I(b;c)的值成正比。8.根据权利要求7所述的基于两层机器学习的Android恶意软件检测方法,其特征在于,贝叶斯算法对应用程序的预测概率P1(x)采用以下公式计算:式中,n表示应用程序的行为特征总数,x表示测试的应用程序的特征向量;高斯混合模型算法对应用程...

【专利技术属性】
技术研发人员:肖勇才杨浩徐建刘旷也章玲玲
申请(专利权)人:国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1