一种安卓恶意软件家族分类器构建方法及其分类方法与流程

文档序号:16539000发布日期:2019-01-08 20:10阅读:199来源:国知局
一种安卓恶意软件家族分类器构建方法及其分类方法与流程

本发明属于软件安全技术领域,特别涉及一种安卓恶意软件家族分类器构建方法及其分类方法。



背景技术:

到目前为止,智能手机的操作系统主要有三种:android、ios以及windowsphone。其中,android和ios占据了大部分市场份额。尤其是android系统,凭借它的开源特性、开发便利性以及应用程序无界限的特点吸引了无数开发人员以及普通大众,成为当前最流行的移动操作系统。根据idcquarterlymobilephonetracker相关统计数据,截止至2017年第一季度,android系统占据了全球移动操作系统市场份额的85.0%。

然而,随着智能移动设备的普及,android安全问题也日益严重。360发布的《2017年中国手机安全生态报告》显示,2017年1-7月平均每日的恶意应用感染量达61.5万人次,日均新增android恶意软件近2.3万个,总共新增android恶意应用样本483.9万个。

从以上数据可以看出,android安全问题相当严峻。因此对android恶意软件进行分析和检测具有重要意义。赛门铁克发布的《2017年互联网安全威胁报告》指出14-16年期间新型android恶意软件家族数量分别是46、18和4,新的恶意软件家族增长数量明显下降。与此同时android恶意软件变种从14年的2200种增长到了16年的3600种。虽然恶意软件数量在不断增加,但根据赛门铁克统计,大部分新的恶意代码及其变种都是在原有恶意软件的基础上经过变换操作、重用模块等发展而来,很大程度上与原有恶意代码的大部分源码同源。因此对恶意软件进行分类处理的技术显得尤为重要,可以通过分类处理快速准确地判断待测文件属于哪一恶意软件家族。

目前已有不少关于安卓恶意软件家族分类技术的研究文献,但他们都有各自的局限性。例如deshotels等人的论文中提出的droidlegacy方法和suarez-tangil等人在论文中提出的dendroid方法的局限性在于:主要针对重打包的恶意应用,且仅在较小的数据集上了进行验证。



技术实现要素:

本发明的第一目的在于克服现有技术的缺点与不足,提供一种安卓恶意软件家族分类器构建方法,该构建方法能够在基于较少的标签样本下产生一个分类效果良好的安卓恶意软件家族分类器,具有训练计算量小以及训练速度快的优点。

本发明的目的在于提供一种由上述构建的分类器实现的安卓恶意软件家族分类方法,该方法可以准确地分类出安卓恶意软件的家族。

本发明的第一目的通过下述技术方案实现:一种安卓恶意软件家族分类器构建方法,步骤如下:

步骤s1、首先获取多个已知家族分类标签的安卓恶意软件,构成数据训练集;

步骤s2、获取数据训练集中各安卓恶意软件的灰度代码图像;

步骤s3、获取一个卷积神经网络模型,移除该卷积神经网络模型中的顶层卷积层,即全连接分层,得到特征提取模块;将数据训练集中各安卓恶意软件的灰度代码图像输入到特征提取模块中,通过特征提取模块提取到各安卓恶意软件灰度代码图像的特征向量,然后存储到特征向量文件中;

步骤s4、构建一个顶层卷积层,即新的全连接层,并且将该新的全连接层添加到步骤s3获取到的特征提取模块后,得到第一卷积神经网络模型;

步骤s5、第一卷积神经网络模型中,首先全连接层中的分类器从特征向量文件中读取到数据训练集中各安卓恶意软件灰度代码图像的特征向量;然后运行第一卷积神经网络模型,通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的分类器进行训练;将全连接层中分类器经过训练后的第一卷积神经网络模型作为安卓恶意软件家族分类器。

优选的,所述步骤s2中,获取到数据训练集中各安卓恶意软件的灰度代码图像的具体过程如下:

针对数据训练集中的每个安卓恶意软件,提取出其中的dex文件;

针对于每个安卓恶意软件的dex文件,获取dex文件的二进制代码,并且将dex文件的二进制代码转换成十六进制格式;然后从左到右,依次将每两个相邻的十六进制数字划分为一个字节;最后将每个字节映射为图像像素的一个灰度值,从而获取到图像像素矩阵;

针对于每个安卓恶意软件dex文件的图像像素矩阵,将其转换为灰度代码图像。

更进一步的,所述步骤s2中,针对于数据训练集中的每个安卓恶意软件,首先将其后缀名apk修改为zip,然后将其解压,最后从解压后的文件中提取出dex文件。

优选的,所述步骤s3中,将经过imagenet图像数据集训练好的googleinception-v3模型作为卷积神经网络模型。

优选的,构建的新的全连接层中的分类器为softmax分类器。

优选的,还包括如下步骤:

获取多个已知家族分类标签的安卓恶意软件,随机构成多个数据验证集;在训练得到安卓恶意软件家族分类器过程中,进行优化器、学习率和迭代次数的参数调整,具体为:

步骤s51、在第一卷积神经网络模型中,使用多种不同的优化器,分别通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的分类器进行训练,然后通过数据验证集验证训练后的安卓恶意软件分类器的分类准确率以及训练迭代次数,选出迭代次数最少就能达到相应分类准确率要求的优化器,作为安卓恶意软件家族分类器的优化器;

步骤s52、在第一卷积神经网络模型中,使用了多个学习率数值,分别通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的分类器进行训练,在神经网络训练达到收敛时观察相应学习率下的分类准确率,选取最佳分类准确率对应的学习率作为安卓恶意软件家族分类器的学习率;

步骤s53、在确定优化器和学习率后,采用十折交叉验证法,通过数据验证集确定收敛到最佳分类准确率时的迭代次数,作为安卓恶意软件家族分类器的迭代次数。

更进一步的,

分类准确率accuracy的计算公式如下:

accuracy=(tp+tn)/(fp+tp+fn+tn);

其中tp为真正例,tn为真负例,fn为假负例,fp为假正例。

更进一步的,所述优化器包括adadelta优化器,adagrad优化器,梯度下降优化器和adam优化器;

所述学习率数值取自0.00001~0.05;

所述迭代次数选用自800~1400。

本发明的第二目的通过下述技术方案实现:一种安卓恶意软件家族分类方法,步骤如下:

获取需要进行家族分类的安卓恶意软件,得到该安卓恶意软件的灰度代码图像,然后将该安卓恶意软件的灰度代码图像输入到权利要求1至8中任一项所述方法构建得到的安卓恶意软件家族分类器中,得到家族分类结果。

优选的,针对于需要进行家族分类的安卓恶意软件,获取到该安卓恶意软件的灰度代码图像的具体过程如下:

针对需要进行家族分类的安卓恶意软件,提取出安卓恶意软件的dex文件;针对于该安卓恶意软件的dex文件,获取dex文件的二进制代码,并且将dex文件的二进制代码转换成十六进制格式;然后从左到右,依次将每两个相邻的十六进制数字划分为一个字节;最后将每个字节映射为图像像素的一个灰度值,从而获取到图像像素矩阵;针对于该安卓恶意软件dex文件的图像像素矩阵,将其转换为灰度代码图像。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明安卓恶意软件家族分类器构建方法,首先构建数据训练集,获取数据训练集中由各安卓恶意软件转换的灰度代码图像;然后将移除了全连接分层的卷积神经网络模型作为特征提取模块,将数据训练集中各安卓恶意软件转换的灰度代码图像输入到特征提取模块中,提取到各安卓恶意软件灰度代码图像的特征向量;接着构建一个新的全连接层,将该新的全连接层添加到上述特征提取模块后,构成第一卷积神经网络模型;在第一卷积神经网络模型中,全连接层中的分类器读取到数据训练集中各安卓恶意软件灰度代码图像的特征向量;运行第一卷积神经网络模型,通过读取的特征向量针对全连接层中的分类器进行训练;将全连接层中分类器经过训练后的第一卷积神经网络模型作为安卓恶意软件家族分类器。由上述可知,本发明方法是在基于灰度代码图像深度学习后构建得到的安卓恶意软件家族分类器,在基于较少的标签样本下即可产生一个分类效果良好的安卓恶意软件家族分类器。另外,在训练过程中,本发明只针对深度学习神经网络的顶层进行训练,而不改变其他所有剩余层的参数,即只训练处于顶层的分类器,具有训练计算量小以及训练速度快的优点。

(2)本发明安卓恶意软件家族分类器构建方法中,还包括在训练得到安卓恶意软件家族分类器过程中进行参数的调整,主要是根据分类准确率以及收敛情况选择最合适的优化器、学习率和迭代次数,在这三个参数进行调整后即可得到分类准确率非常高的安卓恶意软件家族分类器;相比现有技术中采用gist算法并利用随机森林算法来训练其恶意软件分类器需要调整至少8个参数(决策树的个数和最大深度(即n_estimators和max_depth)、单个决策树使用特征的最大数量(即max_features)、分裂内部节点所需最小样本数(即min_samples_split)、叶子节点上应有的最少样本数(即min_samples_leaf)、滤波器个数(即prefilter)、每个数值范围的方向数量(即orientationsperscale)和图像分割区域块数(即numberblocks))的方法,本发明方法具有在分类器训练过程中,参数调整简单的优点。

(3)本发明安卓恶意软件家族分类方法,首先获取需要进行家族分类的安卓恶意软件,得到该安卓恶意软件的灰度代码图像,然后将该安卓恶意软件的灰度代码图像输入到本发明方法构建得到的安卓恶意软件家族分类器中,得到家族分类结果。相比现有技术中其他的分类方法,本发明安卓恶意软件家族分类方法具有分类准确率更高的优点。

附图说明

图1是本发明安卓恶意软件家族分类器构建方法流程图。

图2是本发明构建的安卓恶意软件家族分类器在不同迭代次数下使用四种优化器时的分类准确率。

图3是本发明构建的安卓恶意软件家族分类器不同学习率值下的分类准确率。

图4a和4b是本发明构建的安卓恶意软件家族分类器的学习率在0.0005时进行10折交叉验证的分类准确率。

图5a是本发明分类方法和现有技术中分类方法针对不同家族安卓恶意软件分类时的f-measure值。

图5b是本发明分类方法和现有技术中分类方法针对不同家族安卓恶意软件分类时的误报率(fpr)值。

图5c是本发明分类方法和现有技术中分类方法针对不同家族安卓恶意软件分类时的漏报率(fnr)值。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

本实施例公开了一种安卓恶意软件家族分类器构建方法,如图1所示,步骤如下:

步骤s1、首先获取多个已知家族分类标签的安卓恶意软件,构成数据训练集;

步骤s2、获取数据训练集中各安卓恶意软件的灰度代码图像;具体过程如下:

针对数据训练集中的每个安卓恶意软件,首先将其后缀名apk修改为zip,然后将其解压,最后从解压后的文件中提取出classes.dex文件,即获取到dex文件。

针对于每个安卓恶意软件的dex文件,获取dex文件的二进制代码,并且将dex文件的二进制代码转换成十六进制格式;然后从左到右,依次将每两个相邻的十六进制数字划分为一个字节,因此得到每个字节的取值范围为0x00到0xff,即从0至255;最后将每个字节映射为图像像素的一个灰度值,从而获取到图像像素矩阵;

针对于每个安卓恶意软件dex文件的图像像素矩阵,将其转换为灰度代码图像。

步骤s3、获取一个卷积神经网络模型,移除该卷积神经网络模型中的顶层卷积层,即全连接分层,得到特征提取模块;将数据训练集中各安卓恶意软件的灰度代码图像输入到特征提取模块中,通过特征提取模块提取到各安卓恶意软件灰度代码图像的特征向量,然后存储到特征向量文件中;在本实施例中,获取的卷积神经网络模型为经过imagenet图像数据集训练好的googleinception-v3模型;将googleinception-v3模型移除全连接层后即得到特征提取模块,该特征提取模块可以提取到各安卓恶意软件灰度代码图像的2048维特征向量。

步骤s4、构建一个顶层卷积层,即新的全连接层,并且将该新的全连接层添加到步骤s3获取到的特征提取模块后,得到第一卷积神经网络模型;在本实施例中,构建的新的全连接层中包含的分类器为softmax分类器。

步骤s5、第一卷积神经网络模型中,首先全连接层中的分类器从特征向量文件中读取到数据训练集中各安卓恶意软件灰度代码图像的特征向量;然后运行第一卷积神经网络模型,通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的softmax分类器进行训练;将全连接层中softmax分类器经过训练后的第一卷积神经网络模型作为安卓恶意软件家族分类器。

其中,本实施例在上述安卓恶意软件家族分类器构建过程中,还包括如下步骤:

获取多个已知家族分类标签的安卓恶意软件,随机构成多个数据验证集;在训练得到安卓恶意软件家族分类器过程中,进行优化器、学习率和迭代次数的参数调整,具体为:

步骤s51、在第一卷积神经网络模型中,使用多种不同的优化器,分别通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的分类器进行训练,然后通过数据验证集验证训练后的安卓恶意软件分类器的分类准确率以及对应训练迭代次数,选出迭代次数最少就能达到相应分类准确率要求的优化器,作为安卓恶意软件家族分类器的优化器;在本实施例中,选出的是迭代次数较少就能达到较高分类准确率的优化器。

步骤s52、在第一卷积神经网络模型中,使用了多个学习率数值,分别通过数据训练集中各安卓恶意软件灰度代码图像的特征向量针对全连接层中的分类器进行训练,在神经网络训练达到收敛时观察相应学习率下的分类准确率,选取最佳分类准确率对应的学习率作为安卓恶意软件家族分类器的学习率;

步骤s53、在确定优化器和学习率后,采用十折交叉验证法,确定收敛到最佳分类准确率时的迭代次数,作为安卓恶意软件家族分类器的迭代次数。

在本实施例中,为了使神经网络的收敛速度取得最优效果,本实施例比较了tensorflow框架中提供的四种常用优化器对卷积神经网络的加速效果。本实施例上述步骤s51中使用四种不同的优化器分别在相同的数据训练集上训练得到安卓恶意软件分类器,并记录分类准确率以及训练迭代次数。如图2所示是使用以下四种优化器的分类准确率散点图(百分比形式),即adadeltaoptimizer,adagradoptimizer,gradientdescentoptimizer和adamoptimizer(对应为adadelta优化器,adagrad优化器,梯度下降优化器和adam优化器)。四种优化器对应的散点图由不同类型的标记点组成。例如,adamoptimizer的散点图由代表分类准确率的圆点组成。

由图2可以看出,使用adamoptimizer的分类器仅在100次迭代后就达到96%的分类准确率,而使用其他三个优化器的分类器需要大约600次迭代才能达到上述精度。使用adamoptimizer的分类器在1300次迭代内收敛到最大分类准确率(约98%),而使用其他三个优化器的分类器需要大约1800次迭代才能接近98%的分类准确率。总而言之,与其他三种优化器相比,adamoptimizer可以使神经网络以更快的速度在更高的分类准确率上收敛。基于上述实验结果,本发明最终将按照恶意软件家族分类器的神经网络优化器设置为adamoptimizer。

在本实施例中,需要调整的神经网络已经过预先训练,为了避免太快或过多地改变神经网络的权重,本实施例让学习率和学习率衰减速度保持在非常小的数值,将神经网络的学习率从一个非常小的数值逐渐调整到一个很大的数值。如图3所示,本实施例在实验中使用了8个学习率数值,范围从0.00001到0.05,并且在神经网络训练达到收敛时观察相应的分类准确率。如图3所示,当学习率为0.0005时,达到最佳的分类准确率。

在本实施例中,对学习率为0.0005时的安卓恶意软件家族分类器在数据验证集上的收敛速度进行了测量。我们对不同的数据验证集进行了10折交叉验证,即进行了10轮实验,为了清楚起见,图4a和4b所示,使用了两个子图分别显示前5轮和后5轮的实验运行结果。如图4a和4b所示,在所有10轮实验结果中,安卓恶意软件家族分类器收敛到最佳准确率(约97%)的优化迭代次数在800到1400之间。因此,安卓恶意软件家族分类器确定参数后,可以在数据验证集上快速收敛。

实施例2

本实施例还公开了一种安卓恶意软件家族分类方法,步骤如下:

获取需要进行家族分类的安卓恶意软件,得到该安卓恶意软件的灰度代码图像,然后将该安卓恶意软件的灰度代码图像输入到实施例1方法构建得到的安卓恶意软件家族分类器中,得到家族分类结果。

在针对于需要进行家族分类的安卓恶意软件,获取到该安卓恶意软件的灰度代码图像的具体过程如下:

针对需要进行家族分类的安卓恶意软件,提取出安卓恶意软件的dex文件;针对于该安卓恶意软件的dex文件,获取dex文件的二进制代码,并且将dex文件的二进制代码转换成十六进制格式;然后从左到右,依次将每两个相邻的十六进制数字划分为一个字节;最后将每个字节映射为图像像素的一个灰度值,从而获取到图像像素矩阵;针对于该安卓恶意软件dex文件的图像像素矩阵,将其转换为灰度代码图像。

在本实施例中,将14类安卓恶意软件家族共3962个安卓恶意软件数据集随机分为10个大致相等的子集进行十折交叉验证。为了比较本实施例分类方法与现有技术的分类结果,采用以下评估度量指标:f-measure,误报率(fpr)和漏报率(fnr);如图5a至5c所示为本实施例分类方法和现有技术中分类方法下针对14类安卓恶意软件家族进行分类时的f-measure值,误报率(fpr)值和漏报率(fnr)值,本实施例分类方法的f-measure的平均值为95.2%,说明本实施例能够有效地对安卓恶意软件进行分类。本实施例分类方法的fnr的平均值为4.9%,说明本实施例的漏报率较低。本实施例分类方法的fpr的平均值为0.2%,说明本实施例方法的误报率非常低。与现有技术的平均值相比,本实施例的f-measure平均值更高、fnr和fpr平均值更低。对于f-measure值,本实施例方法在一半以上的安卓恶意软件家族(即droiddream,droidkungfu,fakeinstaller,iconosys,imlog,opfake,sendpay和gappusin)超过现有技术,在其他恶意软件家族中与现有技术效果相近。对于fnr值,本实施例方法在12个恶意软件家族上超过现有技术,在剩余2个恶意软件家族(即kmin和mobiletx)上效果相近。对于fpr值,本实施例方法在5个恶意软件家族(即droidkungfu,fakeinstaller,iconosys,opfake和plankton)上超过了现有技术,并且在剩余其他恶意软件家族上效果相近。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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