APP下载

基于深度学习的Android 恶意软件检测的设计分析

2020-11-30杨基慧

科学技术创新 2020年34期
关键词:良性编码神经网络

杨基慧

(吉林司法警官职业学院,吉林 长春130062)

随着科学技术水平的大幅度提升,及信息通信技术的迅猛发展,移动终端设备逐渐普及,手机、IPAD 等移动设备近乎人手必备,其虽然改变了人们的生活方式,为人们带来更多便捷,但同时也让许多不法分子有了可乘之机。在不同功能Android 应用软件不断被开发出来的同时,Android 恶意软件数量也在快速增加,并且这些恶意软件会随着科技发展而不断更新,仅采取传统恶意软件检测方法已无法对其进行有效检测。研究发现,部分恶意软件能够采取增加代码混淆、隐蔽命令或控制通信通道等方式,对检测进行有效躲闪,同时还可降低传统检测手段的检测性能与准确率,进而大幅度提高了Android 恶意软件的检测难度[1]。所以目前急需研发出一种设计难度低、检测准确率高的Android 恶意软件检测系统,以避免互联网病毒对人们造成威胁。本文基于深度学习算法构建出一套3 层神经网络的Android 恶意软件检测系统,报道如下。

1 概述

手机恶意软件是一种在用户完全不知情的情况下,强行在用户手机中进行安装,或一旦在用户手机中成功安装便难以删除,但同时还具备一定功能的软件程序。手机恶意软件与网络病毒区别仅在于前者具备一定正常功能,而两者均能对用户手机网络造成损害,窃取用户信息,并采取一定手段导致用户手机扣费。截至2019 年底,我国手机用户数量已超过10 亿8 千万,如此庞大的手机用户数量,采取有效措施应对手机恶意软件,对于保护手机用户财产与信息安全具有重要意义[2]。Android手机用户在我国所有手机用户中占比较大,为能确保Android手机用户正常使用各类应用软件,我国在Android 恶意软件检测技术开发方面投入巨大,目前已有多种Android 恶意软件检测系统被开发出来。有研究者将机器学习引入恶意软件检测,以离线方式的支持向量机为基础,通过对权限与控制流图特征进行提取和训练来实现恶意软件检测,但这种检测方法效果一般,无法有效解决问题[3];还有学者将人工神经网络与共生矩阵联系起来,利用共生矩阵对相关系统调用进行挖掘,由于良性应用软件和恶意软件与系统调用之间的相关性存在较大差异,所以采用这种检测系统能将恶意软件有效分辨出来[4];另有研究者在实际应用中发现,部分应用程序虽然声明权限,但实际上并没有使用,由此可见,仅通过分析权限清单文件并不一定可获取准确的检测结果[5]。动态特征主要指的是应用系统在操作系统或网络中的行为,借助系统调用实现特定任务的执行,但这些特定任务并不能直接与操作系统实现交互,需要先由用户发出系统调用指令,待操作模式转换到内核模式,任务才能开始执行,并且还有些应用程序需要在网络连接条件下才能运行,国内学者通过对实验收集到的Android 恶意软件样本进行研究,发现其中有超过90%的恶意软件需要网络连接,以确保恶意软件能与其开发者进行连接[6]。

2 系统设计

2.1 系统设计

本文对一种以深度学习算法(SDA)为基础的Android 恶意软件检测系统进行设计并实现,此检测系统通过对爬虫爬取到的8000 个良性软件与7000 个恶意软件行特征提取,数据经分析降维后获取961 个特征,再利用SDA 建立一个3 层神经网络,经数据集较差验证后发现此检测系统检测正确率高达95.8%。本文设计检测系统主要由编写网络爬虫收集数据集、Android 应用程序包(APK)静态代码特征与动态行为特征收集、特征降维后行深度学习与建立良好神经网络行检测3 部分组成。

2.2 系统实现

结合以往研究,本文将Google Play 中的应用视为良性应用,编写网络爬虫期间随机抽取8000 个APK,以此作为本次设计的良性应用数据集,此外在此期间又收集到7000 个恶意应用软件。本次设计期间所有软件均属真实软件,均已提前知晓软件性质,表明本次设计数据真实可靠。本次设计采用Apktool 软件对每个APK 行反汇编,获得Smail 和Manifest 文件,从中抽取权限、IP 地址等重要静态代码特性,随后每个APK 均开启虚拟机生成Log 日志,利用DroidBox 软件收集Log 日志中的敏感行为信息,将获取到的静态代码特征与动态行为特征作为特征库,借助主成分分析技术(PCA)行数据降维,降维后数据集经SDA 构建神经网络,最后通过BP 算法对结果进行微调处理,从而实现神经网络的任务分类功能。

2.3 改进SDA

改进SDA 主要包括传统自编码、降噪自编码和构建分类模型。传统自编码的出现为SDA 提供了新的思路,自动编码机属于无监督算法,无需标注样本,则可对样本信息进行有效应用,进而促进模型性能提升。传统自动编码机可分为编码与解码两部分,编码阶段主要将d 维输入向量x 定性映射到d' 维隐层表示y,映射函数多采用Sigmoid,详见公式(1)。解码阶段主要将得到的结果便是为y,再定性地映射至d 维重构向量z,详见公式(2)。通过这两个阶段,实现N 个样本重构误差的优化,均方误差L 详见公式(3)。研究发现,传统自编码在不设置生成约束条件时,易产生输入向量直接复制成输出向量的现象,也存在产生改变极为微小的情况,进而导致重构误差相对较小,当测试数据与训练数据之间存在较大差距且不符合同一分布时,会导致训练效果明显下降,为避免这种现象出现,国外研究者研制出一种降噪自编码,此算法会对样本x 行改造处理,以一定几率让部分输入层节点值为0,进而将原来的样本x 改造为x',随后利用x'训练隐藏层,详见公式(4)。将隐层输出y 作为新输入特征,多次进行降噪自编码,则可构成SDA 深度结构,研究发现,不同特征表示对数据的某些解释因子能起到突显或剔除效果,进而产生不同表示能力,因此整个SDA 主要以找到一个相比原始特征更适应任务需求的特征表示方式为目的。在深度结构完成后,添加节点与类别个数相同的输出层,并将最后获取的特征表示通过此输出层输入,随后将训练获取各层权值矩阵、偏置项等作为初始参数,最后再利用BP 算法对SDA 神经网络行微调处理,即可实现任务分类功能。

3 实验分析

3.1 数据描述

本次设计利用爬虫爬到良性软件8000 个,自行收集恶意软件7000 个,验证实验中分别选取良性软件7000 个和恶意软件6000 个用作训练数据,另外良性软件和恶意软件各1000 个用作验证数据。

3.2 实验评定指标

本次验证实验评定指标主要包括准确率(ACC)、查准率(P)、查全率(R)、f-measure、实际预测均正例(TP)、实际预测均负例(TN)、实际正例预测负例(FN)、实际负例预测正例(FP)、TPR 和FPR。其中ACC=(TP+TN)/(TP+TN+FN+FP),P=提取出正确信息条数/提取出信息条数,R=提取出正确信息条数/样本中信息条数,f-measure 为ACC 与召回率加权调和平均值,TPR 为被正确分类样本数目比例,FPR 为被错误分类样本数目比例。

3.3 实验结果

本次验证试验选用10 份验证集,选用4 种分类器分别为SDA、多层神经网络(MLP)、Logistic 回归模型及NB 分类算法,SDA 获得ACC 为95.8%,高于其他3 种分类器。

3.4 结果分析

实验结果显示,基于SDA 构建的3 层神经网络获得ACC最高,属于优质分类器,与其他学习算法相比,SDA 可在分类任务方面发挥更大作用,其作为一种特征学习方法,能将原始数据通过一些简单且为非线性模型,更为抽象、更高层次地表达出来,在大量转换组合的基础上,即使是非常复杂的函数,也能对其进行有效学习,学习效率更高。以往提取特征通常采用手工设计的特征提取器,但手工设计需要设计者熟练掌握较多的工程技术与专业领域知识,要求较高,设计过程麻烦,如果仅需要通过通用学习过程即可获取优质特征,则可将复杂的设计工作舍去。本次设计基于SDA 的Android 恶意软件检测系统,抓住了SDA 的关键优势,借助SDA 减轻设计难度,同时也能有效弥补浅层机器学习存在的不足,进而实现Android 安全问题的有效解决。

表1 实验评定指标结果

4 结论

本文通过对Android 应用软件中存在的安全隐患进行全面分析,利用BP 算法对SDA 神经网络行微调处理,最后设计出一套基于SDA 的Android 恶意软件检测系统,经实验研究发现,此检测系统检测精度高,检测性能强,检测准确率高达95.8%。

猜你喜欢

良性编码神经网络
走出睡眠认知误区,建立良性睡眠条件反射
基于递归模糊神经网络的风电平滑控制策略
生活中的编码
呼伦贝尔沙地实现良性逆转
良性胆肠吻合口狭窄球囊扩张与再手术治疗的疗效比较
改良腹腔镜胆囊切除术应用于胆囊良性疾病中的效果观察
《全元诗》未编码疑难字考辨十五则
子带编码在图像压缩编码中的应用
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析