一种恶意软件检测方法及系统与流程

文档序号:16136058发布日期:2018-12-01 00:59阅读:267来源:国知局

本发明涉及软件检测领域,尤其涉及一种恶意软件检测方法及系统。

背景技术

恶意软件是指所有能够在智能手机或者计算机上执行恶意操作的应用程序,会导致系统崩溃、用户机密信息的损失或泄露,恶意软件数据量的快速增长与变种的不断出现给恶意软件自动鉴别带来挑战,只有面向大数据的技术不断发展,才能将大数据时代带来的挑战变成机遇,更好地运用这些不断积累的样本,真正将海量数据变化为有效信息,并有效构建相适应的数据挖掘模型,才能实现对海量恶意软件样本的快速鉴别。

针对恶意软件严峻的发展趋势与庞大的数据量,国内外研究学者提出了许多不同的解决方案;当前恶意软件检测技术主要分为机遇特征码的检测技术和基于行为的检测技术;基于特征码的检测技术和黑名单技术被主要的安全软件厂商广泛使用,但该技术需要对已知的恶意软件样本进行全面的分析,无法抵御位置的或经代码混淆、加壳技术处理过的恶意软件,因此针对上述问题提供一种基于软件行为大数据的恶意软件检测方法及系统具有重要意义。



技术实现要素:

本发明为一种恶意软件检测方法及系统,通过提出基于均值和方差的特征选择方法,以减少对分类无效的特征,实现了基于不同特征提取技术的集合分类方法,包括主成分分析、kaehunen-loeve变换和独立成分分析,针对软件样本的不平衡数据,本发明提出基于决策树的多级分类集成模型,解决了恶意软件检测准确性差的问题。

为解决上述技术问题,本发明是通过以下技术方案实现的:

本发明提供一种恶意软件检测方法,下步骤:

s01:创建恶意软件数据库和非恶意软件数据库;

s02:通过使用除googleplay外的其它检测工具、杀毒软件和人工进行检测,确保非恶意应用软件数据库中的非恶意软件均为非恶意软件,不包括可疑的恶意软件;

s03:从恶意软件数据库和非恶意软件数据库中的软件源代码中提取dalvik指令,通过dalvik指令相对频率均值之间的差异进行鉴别恶意软件,利用基于dalvik指令的均值和方差特征选择算法,并使用主成分分析算法、kaehunen-loeve变换算法、独立成分分析算法,将原始的dalvik指令映射到相应的特征空间,得到三个新特征;

s04:针对所提取的软件特征,使用急速学习机算法学习单层神经网络,将其作为其分类器,使用stacking算法融合每一个分类器,涉嫌特征的集合;

s05:通过采用多层决策树的集成学习方法针对是否为恶意软件进行决策。

进一步,所述恶意软件数据库和非恶意软件数据库的软件所采用的数据集来自googelplay,其中包含了5560个恶意软件和123453个非恶意软件,并将这些软件使用java语言改写了akdeniz的爬虫程序,增加了异常处理、去除、迭代等功能,可以实现从googelplay批量不间断的下载应用软件至pc端。

进一步地,所述基于dalvik指令的均值和方差特征选择算法的公式为:

其中,μb和μm分别表示正常软件与恶意软件相对频率的平均值;sb和sm分别表示正常软件与恶意软件相对频率的方差,j(a)值表示特征选择的目标的最大化值,即最小化两类样本间的方差及最大化两类样本间的平均值之差。

进一步地,本发明对每个dalvik指令计算j(a)值,j(a)值越大表示特征a的分类能力越强,并按照j(a)值的大小对特征进行降序排序,最终选择前k个dalvik指令特征作为有效的特征子集,根据以上公式(1)采用的基于dalvik指令的均值和方差特征选择算法的流程,其特征在于,包括以下步骤:

p01:输入:样本集s,dalvik指令a;

p02:输出:特征子集wk;

p03:开始:

p031:计算正常软件的dalvik指令相对频率的平均值μb和方差sb;

p032:计算恶意软件的dalvik指令相对频率的平均值μm和方差sm;

p033:按照公式(1)计算指令的权重;

p034:对dalvik指令进行降序排序;

p035:fork←1todo//p为dalvik指令的总数;

(c)取前k个指令作为wk;

(d)不同分类器cls验证wk结果;

p036:选择该分类器下最优的特征子集;

p04:结束。

进一步地,所述主成分分析算法是一种线性投影,将高维特征映射到低维的一种技术,在投影过程中,数据的方差最大;定义n个样本x={x1,x2,...,xn},其中xi=[xi,1,xi,2,...,xi,d]t∈rd,d是特征数量;主成分分析将xi线性变换成一个新的样本:

yi=utxi(2)

其中,u是正交矩阵;u的第i列μi是样本协方差矩阵的特征向量;主成分分析首先计算样本的协方差矩阵,然后计算协方差举证的特征向量,根据公式(2)将原始特征进行交换。

进一步地,所述kaehunen-loeve变换算法是主要成分分析的扩展,在主要成分分析中,交换矩阵是样本的协方差矩阵,本发明的kaehunen-loeve变换中,变换矩阵是类间离散度矩阵记为sw;

其中,l是样本类别;pi是第i个类别的概率;e代表数学期望;是第i个类别的均值,计算sw的特征向量,然后根据公式(2)计算得到新的特征。

进一步地,所述独立成分分析算法是从原始的特种中提取独立的信息,独立成分分析模型记为:

x=as(4)

其中,x为原始数据;a是满秩矩阵;s是独立成分;独立成分的目的就是从x中提取出独立成分s;

其中,表示独立成分s的估计值;u为变换矩阵,本发明使用fastica算法计算u。

进一步地,所述步骤s04中采用急速学习机算法训练单层神经网络,然后将其作为基分类器,采用stacking方法组成集合分类器;急速学习方法首先为神经网络随机分配输入权值向量与偏差,然后分析确定神经网络的输出权值,其算法流程如下:

在训练阶段,随机分配输入权值与偏差,计算隐藏层节点的输出:

hij=g(wjxi+bj)i=1,2,3,...,,n;j=1,2,...,k(6)

其中,hij是第j个隐藏层节点的输出;wj=[wj1,wj2,...wjn]t是连续第j个隐藏节点与输入数据的权值;bj是第j个隐藏节点偏差;n是样本数量;k是隐藏层节点数量;g是激活函数;隐藏层输出矩阵记为h={hij},连接隐藏层与输出层节点的权值向量记为β:

其中,是β的估计值;h-1是h的moorepenrose的广义逆矩阵;t是分类标签;在测试阶段,对于未知样本,首先计算其隐藏层节点输出h,然后预测其标签;

其中,t是未知样本的预测标签;h是未知样本的隐藏层输出,根据公式(6)计算。

进一步地,所述多层决策树的集成学习方法是由三层决策树集成构成,包括三个部分:第一层集成采用全投票的方法,及所有决策树的分类结果一样,这样基本可以使不平衡数据达到平衡,能很好地解决数据不平衡问题;第二层集成采用多数投票方法,针对第一层未检测出的样本,结合第一层决策树的多数投票,将第二层集成结果和第一层决策树的多数投票结果不同的样本交给第三层集成方法处理,该技术很发成都降低了恶意软件的误报率;第三层采用少数投票,一般通过上述两层的检测,剩余未检测出的样本比较顽固,在缺少很好的特征刻画的情况下,采用经验的少数投票没能提升一定的准确率。

一种恶意软件检测方法的系统,包括软件数据库、预处理模块、dalvik指令获取模块、dalvik指令特征矩阵显示模块、特征提取模块、集合学习模块、决策模块;

所述软件数据库包括恶意软件数据库和非恶意软件数据库,所述软件数据库用于为恶意软件监测方法提供样本;

所述预处理模块连接杀毒软件和人工进行检测设备在非恶意软件中进行恶意软件的排除;

所述dalvik指令获取模块用于获取软件数据库中的恶意软件样本的dalvik指令信息和特征;

所述dalvik指令特征矩阵显示模块用于将获取的样本的dalvik指令特征进行矩阵显示;

所述特征提取模块用于对样本软件进行特征提取,包括主成分析算法、kaehunen-loeve变换算法、独立成分分析算法获得的各个特征矩阵;

所述集合学习模块收集dalvik指令特征矩阵显示模块中的信息并通过三层决策树集成,依次通过全投票的方法、多数投票方法、少数投票的方法对特征矩阵中的软件进行判断是否为恶意软件。

本发明具有以下有益效果:

1、本发明通过创建恶意软件数据库和非恶意软件数据库,软件数据库中的软件数量庞大,软件数据库中的样本数量多,非恶意软件数据库创建通过修改akdeniz的爬虫程序从googleplay上批量下载应用软件,并使用多种有的检测软件、杀毒软件和人工进行检测,确保了数据库的准确性。

2、本发明通过从源代码的角度分析软件的特征,研究基于dalvik指令的恶意软件检测技术,包括基于均值和方差的特征选择方法,特征提取算法和多级集成分类算法,以减少对分类无效的特征,实现了基于不同特征提取技术的集合分类方法,包括主成分分析、kaehunen-loeve变换和独立成分分析,针对软件样本的不平衡数据,本发明提出基于决策树的多级分类集成模型,提高了恶意软件检测准确性。

附图说明

图1为本发明的一种恶意软件检测方法的流程图;

图2为基于dalvik指令的均值和方差特征选择算法的流程图;

图3为本发明的一种恶意软件检测系统的框架图;

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1所示,本发明的一种恶意软件检测方法,包括下步骤:

s01:创建恶意软件数据库和非恶意软件数据库;

s02:通过使用除googleplay外的其它检测工具、杀毒软件和人工进行检测,确保非恶意应用软件数据库中的非恶意软件均为非恶意软件,不包括可疑的恶意软件;

s03:从恶意软件数据库和非恶意软件数据库中的软件源代码中提取dalvik指令,通过dalvik指令相对频率均值之间的差异进行鉴别恶意软件,利用基于dalvik指令的均值和方差特征选择算法,并使用主成分分析算法、kaehunen-loeve变换算法、独立成分分析算法,将原始的dalvik指令映射到相应的特征空间,得到三个新特征;

s04:针对所提取的软件特征,使用急速学习机算法学习单层神经网络,将其作为其分类器,使用stacking算法融合每一个分类器,涉嫌特征的集合;

s05:通过采用多层决策树的集成学习方法针对是否为恶意软件进行决策。

其中,恶意软件数据库和非恶意软件数据库的软件所采用的数据集来自googelplay,其中包含了5560个恶意软件和123453个非恶意软件,并将这些软件使用java语言改写了akdeniz的爬虫程序,增加了异常处理、去除、迭代等功能,可以实现从googelplay批量不间断的下载应用软件至pc端。

其中,基于dalvik指令的均值和方差特征选择算法的公式为:

其中,μb和μm分别表示正常软件与恶意软件相对频率的平均值;sb和sm分别表示正常软件与恶意软件相对频率的方差,j(a)值表示特征选择的目标的最大化值,即最小化两类样本间的方差及最大化两类样本间的平均值之差。

如图2所示,其中,本发明对每个dalvik指令计算j(a)值,j(a)值越大表示特征a的分类能力越强,并按照j(a)值的大小对特征进行降序排序,最终选择前k个dalvik指令特征作为有效的特征子集,根据以上公式(1)采用的基于dalvik指令的均值和方差特征选择算法的流程,包括以下步骤:

p01:输入:样本集s,dalvik指令a;

p02:输出:特征子集wk;

p03:开始:

p031:计算正常软件的dalvik指令相对频率的平均值μb和方差sb;

p032:计算恶意软件的dalvik指令相对频率的平均值μm和方差sm;

p033:按照公式(1)计算指令的权重;

p034:对dalvik指令进行降序排序;

p035:fork←1todo//p为dalvik指令的总数;

(e)取前k个指令作为wk;

(f)不同分类器cls验证wk结果;

p036:选择该分类器下最优的特征子集;

p04:结束。

其中,主成分分析算法是一种线性投影,将高维特征映射到低维的一种技术,在投影过程中,数据的方差最大;定义n个样本x={x1,x2,...,xn},其中xi=[xi,1,xi,2,...,xi,d]t∈rd,d是特征数量;主成分分析将xi线性变换成一个新的样本:

yi=utxi(2)

其中,u是正交矩阵;u的第i列μi是样本协方差矩阵的特征向量;主成分分析首先计算样本的协方差矩阵,然后计算协方差举证的特征向量,根据公式(2)将原始特征进行交换。

其中,所述kaehunen-loeve变换算法是主要成分分析的扩展,在主要成分分析中,交换矩阵是样本的协方差矩阵,本发明的kaehunen-loeve变换中,变换矩阵是类间离散度矩阵记为sw;

其中,l是样本类别;pi是第i个类别的概率;e代表数学期望;是第i个类别的均值,计算sw的特征向量,然后根据公式(2)计算得到新的特征。

其中,独立成分分析算法是从原始的特种中提取独立的信息,独立成分分析模型记为:

x=as(4)

其中,x为原始数据;a是满秩矩阵;s是独立成分;独立成分的目的就是从x中提取出独立成分s;

其中,表示独立成分s的估计值;u为变换矩阵,本发明使用fastica算法计算u。

其中,步骤s04中采用急速学习机算法训练单层神经网络,然后将其作为基分类器,采用stacking方法组成集合分类器;急速学习方法首先为神经网络随机分配输入权值向量与偏差,然后分析确定神经网络的输出权值,其算法流程如下:

在训练阶段,随机分配输入权值与偏差,计算隐藏层节点的输出:

hij=g(wjxi+bj)i=1,2,3,...,,n;j=1,2,...,k(6)

其中,hij是第j个隐藏层节点的输出;wj=[wj1,wj2,...wjn]t是连续第j个隐藏节点与输入数据的权值;bj是第j个隐藏节点偏差;n是样本数量;k是隐藏层节点数量;g是激活函数;隐藏层输出矩阵记为h={hij},连接隐藏层与输出层节点的权值向量记为β:

其中,是β的估计值;h-1是h的moorepenrose的广义逆矩阵;t是分类标签;在测试阶段,对于未知样本,首先计算其隐藏层节点输出h,然后预测其标签;

其中,t是未知样本的预测标签;h是未知样本的隐藏层输出,根据公式(6)计算。

其中,多层决策树的集成学习方法是由三层决策树集成构成,包括三个部分:第一层集成采用全投票的方法,及所有决策树的分类结果一样,这样基本可以使不平衡数据达到平衡,能很好地解决数据不平衡问题;第二层集成采用多数投票方法,针对第一层未检测出的样本,结合第一层决策树的多数投票,将第二层集成结果和第一层决策树的多数投票结果不同的样本交给第三层集成方法处理,该技术很发成都降低了恶意软件的误报率;第三层采用少数投票,一般通过上述两层的检测,剩余未检测出的样本比较顽固,在缺少很好的特征刻画的情况下,采用经验的少数投票没能提升一定的准确率。

如图3所示,一种恶意软件检测方法的系统,包括软件数据库、预处理模块、dalvik指令获取模块、dalvik指令特征矩阵显示模块、特征提取模块、集合学习模块、决策模块;

软件数据库包括恶意软件数据库和非恶意软件数据库,软件数据库用于为恶意软件监测方法提供样本;

预处理模块连接杀毒软件和人工进行检测设备在非恶意软件中进行恶意软件的排除;

dalvik指令获取模块用于获取软件数据库中的恶意软件样本的dalvik指令信息和特征;

dalvik指令特征矩阵显示模块用于将获取的样本的dalvik指令特征进行矩阵显示;

特征提取模块用于对样本软件进行特征提取,包括主成分析算法、kaehunen-loeve变换算法、独立成分分析算法获得的各个特征矩阵;

集合学习模块收集dalvik指令特征矩阵显示模块中的信息并通过三层决策树集成,依次通过全投票的方法、多数投票方法、少数投票的方法对特征矩阵中的软件进行判断是否为恶意软件。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料过着特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上公开的本发明优选实施例只是用于帮助阐述本发明。优选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本发明。本发明仅受权利要求书及其全部范围和等效物的限制。

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