基于GRU的Android恶意软件检测

2021-06-16 16:42张伟徐洋张思聪徐贵勇
电子技术与软件工程 2021年4期
关键词:安卓准确率卷积

张伟 徐洋 张思聪 徐贵勇

(贵州师范大学 贵州省信息与计算科学重点实验室 贵州省贵阳市 550001)

1 引言

近年来,随着万物互联互通的快速发展以及Android 智能产品为代表的终端产品的推广,影响我们生活和学习的各类移动软件不断涌现,给我们带来了诸多便捷[1]。目前Google 发明的Android 系统凭借其简单效率高、高扩展性等优点,现已占据了市场的主导地位。随着近几年安卓相关移动产品用户数量的不断上升,但恶意软件给人们造成的诸如经济损失、隐私泄露等后果也会越来越常见。因此,从安卓信息安全的角度来说,恶意软件检测技术的研究与提高是很有意义的。

卿斯汉[2]等人从安卓面临的大多数威胁、机器学习的手段、恶意安卓软件检测等多个维度,对安卓软件新出的研究进展进行了分析与整理。Blasing[2]等人通过沙箱对Android 恶意软件进行分析,模拟模拟程序同用户间的交互,利用自动化测试获取并记录程序的系统调用,但由于实验无法覆盖所有程序执行的路径,检测结果并不能保证十分准确。

安卓软件动态检测技术缺点主要是检测效率较低,需要消耗较多的资源,而且无法保证所有的程序执行路径都能覆盖到。而传统静态检测技术,虽然不需要运行程序,检测效率相对较高,而且对于己知的恶意软件有较好的检测率,但在面对不断出现的新的恶意软件时不可避免的出现检测率降低的问题。如何提高检测方法对于新出现的恶意软件的检测准确率,提高检测模型的泛化能力,是当前研宄中面临的首要问题[5]。随着深度学习的方法不断完善,应用到静态分析领域中对于安卓恶意软件检测已然成为一种趋势。

本文提出了基于GRU 模型的深度学习方法进行Android 恶意软件检测。

2 预备知识

2.1 循环神经网络

循环神经网络[3]主要用来处理考虑时间先后问题,即上文与下文具有相互依赖关系的问题,相对于支持向量机模型而言,循环神经网络具有更强的处理问题能力,在面对现实中大规模的数据计算,循环神经网络具有更强大的拟合能力。但是随着距离的逐步增大,RNN 学习到连接较远信息的能力就会降低,梯度的爆炸、梯度的消失问题就越容易出现。为了解决这两个问题,提出门控机制,LSTM[4]是最先被提出的RNN 门控算法,因为LSTM 拥有3 个门控机制,对于自身的内部状态成立了自我循环,相对于循环神经网络的递归计算而言,有了解决梯度问题的手段。GRU 的工作原理与LSTM 相同,只是比LSTM 少一个门控机制,其网络中只有更新门与复位门,GRU 将LSTM 中的输入门与遗忘门的结构化简,只用一个更新门代替。

表1:GRU 模型测试结果

表2:测试结果对比

图1:准确率对比图

2.2 深度卷积神经网络

深度卷积神经网络[5]是最近几年被高度使用的具有高效识别能力的卷积神经网络,在卷积神经网络的基础上发展而来的,其自适应能力与学习能力也很高,并且DCNN 还可以共享局部权值,可以降低网络的复杂度,被广泛应用于人脸特征识别、语音处理、图像分类等方面。

3 GRU模型

Android 恶意软件检测通常被当做二分类问题,RNN 可以很好的表达出下上文的代码调用关系,常用在时序方面问题的解决,并且GRU[6]作为RNN 的改进模型具有更为简单的内部构造,参数也变得更少,这样可以使得内部的计算更为简单,提高检测效率。本文依据GRU 模型可以处理上下文具有长期依赖关系问题的能力,提出了GRU 模型进行Android 恶意软件分析与检测。

GRU 神经网络模型通过卷积进行文本特征的提取,利用池化层把积特征整合,然后将特征放入GRU 神经网络中进行训练,再把训练特征输入全连接层中。

本文选用ADAM 优化器[7],其特点内存较小而且计算效率高,适合大数据集计算情形。具体算法如下:

其中,mt表示一阶动量项,vt表示二阶动量项。

实验用到的损失函数为交叉熵损失函数,它可以提供无偏估计,是使用最为广泛的一个代理损失,其表达式为:

其中y∈(0,1)其中本文用到的分类器是Softmax 分类,其表达公式为:

其中n=1,…,m,把含有任一实数的m 维的x 向量,压缩到m维的y 实向量中,让所有元素值都在(0,1)这个区间,且元素之和为1。

4 实验部分

本次实验环境是在Ubuntu 操作系统,内存32GB,处理器为Intel® Core ™ i7-9700K CPU@3.6GHz*8 实现的。实验采用的框架为Keras,后端TensorFlow,采用的语言Python。数据集采用drebin 的数据集,共129013 个样本,恶意样本有5560 个,其他都是正常样本。选取样本中70%作为训练集,30%作为验证集来检验模型对恶意软件的识别情况。

4.1 数据特征提取及加载

本次实验采用drebin 数据集,样本通过哈希函数映射为256 位的哈希值,然后分类成不同的恶意软件家族,通过对样本的哈希值的检验,判断出是正常样本还是恶意样本。

4.2 评估指标

用来评估恶意软件检测模型的指标为:精确率:表示真正例的个数占实际检测到正例个数的多少,其计算公式为:

准确率:表示被正确预测出来的真正例和真负例样本占总样本的多少:

召回率:表示正例样本中占正确预测的多少:

F1 值,是对召回率与精确率的一个调和评价,其计算公式为:

以上公式中变量的含义表示如下:

TP:正确判断正样本所占的比重;

TN:正确判断负样本所占的比重;

FN:错误的将正样本判断成负样本;

FP:错误的将负样本判断成正样本。

4.3 GRU模型的训练及测试

为了检验模型的实用性,根据准确率(ACC),召回率(R),精准率(P),F1 值指标,实验随机地选择当中的三次测试结果,

如表1 所示。

为了验证GRU 模型与单一的DCNN 模型,LSTM 模型,SVM模型在恶意软件检测能力的差异,使用统一数据集完成对各个模型的测试,并完成这四个模型的测试结果的对比,结果如图1 所示。

从图1 中可以看出,GRU 模型在准确率上明显高于其他三个模型,准确率维持在99%以上,其次是LSTM 模型,准确率低于98.5%,SVM 模型准确率在98.3%以下,准确率最低的是DCNN模型,在98.0%以下。

各模型的训练时间对比,结果显示,GRU 模型用的时间比其他三个模型要少,DCNN 需要3200s,SVM 需要5143s,LSTM 需要3562s,GRU 需要3150s.

从四组模型中,每组随机选出一组结果,比较他们的P,ACC,R,F1指标。从实验的指标可以得出,GRU 模型所实现的结果是最好。结果如表2 所示。

5 结论

本文针对Android 恶意软件检测提出的GRU 检测模型,采用Tensorflow 为后端的框架。通过drebin 数据集进行的对比实验证明,GRU 模型训练时间相对较少,准确率,召回率等指标较高。GRU模型的效果要强于传统的SVM 模型,也比LSTM 和DCNN 模型达到的结果要好。本文只是针对drebin 数据集的测试,针对Android恶意软件测试,后期研究把算法运用到Windows 恶意代码检测中的适用性。

猜你喜欢
安卓准确率卷积
iPhone不卡的秘密曝光:安卓也能享受
基于3D-Winograd的快速卷积算法设计及FPGA实现
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
文物表情包
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于傅里叶域卷积表示的目标跟踪算法
一种基于安卓系统的手机侧抓包分析方法
安卓L未至安卓M来了!安卓首泄漏M系统
一种基于卷积神经网络的性别识别方法