首页> 中国专利> 一种基于深度学习的安卓恶意代码检测方法

一种基于深度学习的安卓恶意代码检测方法

摘要

本发明属于网络信息安全技术领域,具体涉及一种基于深度学习的安卓恶意代码检测方法。本发明将APK文件直接解压,将部分二进制文件进行可视化,将灰度图添加颜色通道并进行像素归一化,构造出图片信息量更大,利于在模型中训练的像素归一RGB图。最后设计并实现卷积神经网络分类检测模型,再对经过上述方法操作处理的恶意代码图像进行分类训练,以达到对恶意代码进行检测的目的。本发明针对现有Android恶意代码可视化技术中提取图像特征的方法单一、图像特征不明显、检测效果较差的问题,通过生成恶意代码的RGB图像,对像素归一化图后进行学习分类,以此实现更为精准的恶意代码检测。

著录项

  • 公开/公告号CN112182577A

    专利类型发明专利

  • 公开/公告日2021-01-05

    原文格式PDF

  • 申请/专利权人 哈尔滨工程大学;

    申请/专利号CN202011097233.X

  • 申请日2020-10-14

  • 分类号G06F21/56(20130101);G06K9/62(20060101);G06N3/08(20060101);

  • 代理机构

  • 代理人

  • 地址 150001 黑龙江省哈尔滨市南岗区南通大街145号哈尔滨工程大学科技处知识产权办公室

  • 入库时间 2023-06-19 09:27:35

说明书

技术领域

本发明属于网络信息安全技术领域,具体涉及一种基于深度学习的安卓恶意代码检测方法。

背景技术

Android操作系统由于其开放性、兼容性,在商用、民用甚至军用设备中得到广泛应用。基于Android系统的二次开发在人工智能、航天、武器系统等领域,也获得巨大发展。然而,近年来针对Android系统的安全漏洞、系统崩溃、恶意攻击等问题也日益严重,不断地引起设备厂家、和用户的重视。由于Android系统本身的开放性,导致各类漏洞的传播速度更快,漏洞危害更为广泛,因此对于恶意代码的检测,已经成为工业界、研究院所关注的重点。

目前,对Android等操作系统的安全检测方法可以分为基于静态应用程序特征和动态应用程序行为特征两大类,即静态检测方法和动态检测方法。

静态检测方法主要针对程序的二进制代码进行编码检测。Sung等人提出基于系统调用的恶意代码检测方法,这基于变种恶意代码一般在进行系统调用时还会做出和祖先代码同样或类似的行为,对变种具有较强的检测能力。Jeremy等人提出N-gram特征提取方法,这是一种静态检测方法,对于n-gram字节码进行提取和匹配,这也能表明现有大多是恶意代码都是利用恶意应用程序中的某类特征二进制编码。

动态检测方法则需要对应用程序实际运行中表现出的行为特点进行记录分析,基于大量的样本的分析,然后归纳出那一类恶意代码的行为特点。在动态运行中也可以从中获得一些比较代表性的行为模式特点,和运行中产生的数据特征,比如API行为特征和API调用序列。

以上提到的恶意代码检测方法,存在诸多难题影响了检测的效率和准确率。在面对于当前新的恶意代码变种时,利用应用程序操作码序列来检测恶意代码的方法来检测具有同样操作码序列的同功能恶意应用程序,会出现检测重复,误报漏报的情况。在样本规模很大时,准确率会飞快降低。利用应用程序指令频率统计特征的检测方法相对于第一种来说解决了同功能应用程序问题,然而此方法的问题在于良性应用程序和恶意应用程序作为可能具有一些重叠功能的应用程序,在操作指令频率这个统计学特征上的差异过于小,用这个指标作为检测标准不算有效率。而动态检测方法中基于应用程序行为的方法,在满足了家族性检测的同时就很难满足个体样本检测的需要。动态检测在检测时需要人工运行应用程序且分析,增加了操作过程的耗时和耗力,降低了检测效率;同样的问题也出现在了污点分析方法与API调用监测方法中,这几种方法都对检测人员提出了很高的要求。这使得这几种检测方法低效率而高耗时,得不偿失。

随着如今深度学习的飞速发展,深度学习方法被大量的应用到恶意代码检测当中。现有检测恶意代码的方法,与机器学习分类算法的应用相关的已经有几种方法,基本思想是建立一个基于提取的源代码特征的分类系统,对未知的应用进行检测并识别其类型。而同时,可视化技术在恶意代码检测上面的应用也已经取得了一定成功。基本思路是根据恶意代码转换成特征图像后,根据特征图像的纹理特征,对于恶意代码进行分析。恶意代码检测领域中利用深度学习结合计算机视觉的方法进行Android恶意代码检测具有很高的研究价值。

发明内容

本发明的目的在于提供一种基于深度学习的安卓恶意代码检测方法。

本发明的目的通过如下技术方案来实现:包括以下步骤:

步骤1:输入待检测的Android应用程序;

步骤2:将待检测的Android应用程序的classes.dex文件和AndroidManifest.xml文件转换为灰度图,具体方法为:

步骤2.1:将待转换的二进制文件每8bit作为一单位转换为无符号整型数据;

步骤2.2:根据待转换的文件的大小,将unit8向量保存成矩阵形式,得到一个数值范围在[0,255]的矩阵;

步骤2.3:将矩阵按照数值对应像素值来生成像素矩阵,将像素矩阵保存为灰度图片;在像素对应过程中,0和255分别对应于黑色和白色;

步骤3:对classes.dex文件与AndroidManifest.xml文件转换的灰度图添加颜色通道,变为三通道RGB图像;

步骤4:利用像素归一化算法拼接classes.dex文件与AndroidManifest.xml文件生成的三通道RGB图像,得到像素归一化RGB图像;

步骤5:将待检测的Android应用程序的像素归一化RGB图像输入到训练好的卷积神经网络分类检测模型中,得到检测结果。

本发明的有益效果在于:

本发明针对现有Android恶意代码可视化技术中提取图像特征的方法单一、图像特征不明显、检测效果较差的问题,提出一种基于深度学习的安卓恶意代码检测方法,通过生成恶意代码的RGB图像,对像素归一化图后进行学习分类,以此实现更为精准的恶意代码检测。与传统方法中反编译恶意代码后再分析语义特征不同,本发明将APK文件直接解压,将部分二进制文件进行可视化。为了进一步构建在卷积神经网络中能够表现得更好的、信息量更大的Android恶意代码特征图像,本发明将灰度图添加颜色通道并进行像素归一化,构造出图片信息量更大,利于在模型中训练的像素归一RGB图。最后设计并实现卷积神经网络分类检测模型,再对经过上述方法操作处理的恶意代码图像进行分类训练,以达到对恶意代码进行检测的目的。

附图说明

图1是本发明中Android应用程序转换灰度图的流程图。

图2是本发明中Android应用程序像素归一化RGB图的流程图。

图3是本发明中CNN分类检测模型总体架构图。

图4是本发明中分类检测系统训练过程图。

具体实施方式

下面结合附图对本发明做进一步描述。

本发明涉及一种恶意代码检测方法,具体涉及一种基于深度学习的安卓恶意代码检测方法,属于网络信息安全领域。本发明针对现有Android恶意代码可视化技术中提取图像特征的方法单一、图像特征不明显、检测效果较差的问题,提出一种基于深度学习的安卓恶意代码检测方法,通过生成恶意代码的RGB图像,对像素归一化图后进行学习分类,以此实现更为精准的恶意代码检测。

本发明借助灰度图的思想,利用CNN分类方法,提出了一种基于深度学习的安卓恶意代码检测方法。与传统方法中反编译恶意代码后再分析语义特征不同,本发明将APK文件直接解压,将部分二进制文件进行可视化。为了进一步构建在卷积神经网络中能够表现得更好的、信息量更大的Android恶意代码特征图像,将灰度图添加颜色通道并进行像素归一化,构造出图片信息量更大,利于在模型中训练的像素归一RGB图。最后设计并实现卷积神经网络分类检测模型,再对经过上述方法操作处理的恶意代码图像进行分类训练,以达到对恶意代码进行检测的目的。

1、二进制转灰度图

Android应用程序大体可以分为两类:良性和恶意。恶意代码生成过程中会采用自动化工具、模块重用等手段,这两类应用程序在代码结构和代码特征上都具有很大的区别,把恶意代码的代码特征对应到代码图像特征上去,生成的灰度图就能够在一定程度上反映恶意代码的信息特点。Android恶意代码一般来说都会隶属于不同的家族。在同一个家族中的恶意代码具有家族性和同源性,核心代码结构就会十分相似,基于应用程序二进制文件转灰度图像的算法原理,灰度图的特征也十分相似;而不同家族里的恶意代码,在结构上的区别比较明显,且在二进制文件转换为灰度图后,不同恶意家族的图像特征区别会明显一些。这些可以作为安全性检测依据。通过B2M算法把二进制文件转化为矩阵然后生成灰度图,所生成的图像有明确的代码结构信息特征。并且此方法相对于传统静态和动态恶意代码检测方法来说,免于代码逆向分析和动态运行恶意文件,在特征的获取上简便易行,也降低了操作的繁琐性和危险性。

2、像素归一化RGB图像

apk文件直接转换生成的灰度图像在信息上有所损失,在一些内部结构特征和相似性方面还有欠缺。针对这类灰度图像的现存问题,本专利利用Android应用程序执行文件classes.dex来获取图像,添加颜色通道后,进行像素归一化处理,最后生成RGB图。classes.dex 文件是APK中的核心可执行文件。作为核心可执行文件,classes.dex文件在一定程度上代表着此应用软件的功能结构。故classes.dex文件被选择作为提取图像特征的文件。选择该文件能够提高分析优势。该文件是应用程序中的部分核心二进制文件,文件体量小,生成图片小,采用此生成图像进行训练是对于训练耗时的缩短。此方法得到的图像特征明显,包含的信息也更加丰富。且卷积神经网络训练对RGB格式的图片更适应,对分类检测准确率的提高有积极影响。除了应用执行文件classes.dex之外,配置文件AndroidManifest.xml也可以反映一个应用程序的信息。从此文件中记录的配置和授权信息中,也可以作为判断应用程序安全性的依据。

3、卷积神经网络分类检测模型

卷积神经网络由神经元组成,神经元中含有参数偏置值和权重,彼此相连,数据在其中输入输出被计算。在卷积神经网络中被训练的图像是会被自动提取出特征来学习的,不用做特别的预提取操作。在数据收集阶段中,需要获得应用程序样本,其中要有恶意的和良性的应用程序。在预处理时不仅需要对数据集进行可视化和标准化、归一化,还需要划分数据集成训练集和一个测试集,另外预留一部分作为验证集等待训练完成后对训练好的模型验证分类学习效果。在验证集里,对检测结果数据分析与评估,计算评价指标。把图像数据集利用 TFrecord转换数据,转换成更利于卷积神经网络输入的文件格式。

与现有技术相比,本发明的有益效果是:

1、在对Android应用程序进程可视化处理时,提取在应用程序文件包中的.dex文件。并获取无符号整型向量,通过B2M算法把二进制文件转化为矩阵然后生成灰度图,所生成的图像有明确的代码结构信息特征。此方法相对于传统静态和动态恶意代码检测方法来说,免于代码逆向分析和动态运行恶意文件,在特征的获取上简便易行,也降低了操作的繁琐性和危险性。

2、对灰度图进行像素归一化处理,添加颜色通道,得到标准统一的像素归一RGB图。利用该方法处理后得到的RGB图,包含的图像特征信息相较于传统恶意代码直接生成的灰度图而言,更加清晰与丰富。未经过像素归一化的灰度图特征较为不明显,区别小,而像素归一化RGB图特征明显,包含的信息也更加丰富。且卷积神经网络训练对RGB格式的图片更适应,对分类检测准确率的提高有积极影响。

3、本发明比传统灰度图方法在相同实验数据集上检测率表现更优。两种检测方法总体上检测率都高于80%。本发明的像素归一化RGB图检测方法准确率Accuracy为99.20%,传统灰度图方法检测准确率为87.31%。传统灰度图方法的平均误报率FPR为1.47%,漏报率FNR 为10.78%;而本发明的平均误报率为0.39%,漏报率为1.22%,要略优于传统灰度图方法。传统灰度图方法召回率TPR为89.22%,精确率precision为86.63%;本发明召回率为98.78%,精确率为99.59%。从数据对比中可以看出,本发明的像素归一化RGB图检测方法明显好于传统灰度图方法。

表1:此方法与传统灰度图方法在相同实验数据集上检测率

本发明在恶意代码特征的获取上简便易行,降低了操作的繁琐性和危险性。提出了像素归一化处理,添加颜色通道,得到的标准统一的像素归一RGB图的方法。该方法处理得到的 RGB图包含的图像特征信息相较于传统恶意代码直接生成的灰度图而言,更加清晰与丰富。此专利提出的方法比传统灰度图方法检测准确率更高,误报率更低。本发明的检测方法明显好于传统灰度图恶意代码检测方法。

实施例1:

1、Android应用程序可视化的过程,就是应用程序二进制文件对应生成特征图像的过程。利用B2M算法,首先把程序二进制文件对应无符号整型向量,然后每8bit对应一个无符号整型数据。根据源程序文件的大小,将unit8向量保存成矩阵形式。这样就获得了一个数值范围在[0,255]的矩阵,这个矩阵按照数值对应像素值,来生成像素矩阵,最后将像素矩阵保存为灰度图片。在像素对应过程中,0和255分别对应于黑色和白色。生成的像素矩阵大小和源程序文件大小有关,长宽数值可以提前设定,也可以根据文件大小自适应获得。像素矩阵对应后,得到灰度图像。本次设定图像长宽比为1:1,即生成一个正方形图像。在之后的图像预处理中,再统一缩放到一个固定的大小和格式,Android应用程序像素归一化RGB图算法流程见图1。

2、将apk文件包中的classes.dex二进制文件根据应用程序可视化方法对应生成灰度图像,并拼接上对应的应用程序apk文件中包含的配置文件AndroidManifest.xml所生成的图像,然后将单通道灰度图添加颜色通道,变为三通道RGB图像。然后获取图像矩阵,利用最大最小值归一化算法,进行图像的像素归一化运算,获取统一的特征图像,将像素范围变为[0, 1],得到最终的RGB图像。并对输入信号进行归一化处理。如果样本输入值相近,方差小,证明图像样本差值小,这样能够起到提高训练速率的效果。最后输出添加了颜色通道的像素归一化RGB图像。Android应用程序像素归一化算法流程图见图2。

3、卷积神经网络训练模块是在anaconda+tensorflow1.2.1上实现CNN神经网络结构。输入层输入的数据是经过可视化处理的应用文件数据集,即像素归一化RGB图,输出层是对于应用程序安全性的判断,是恶意应用或者是良性应用。CNN分类检测模型总体架构如图3,分类检测模型训练过程如图4所示。神经网络训练的具体过程包括(1)数据预处(2)模型训练(3)过程监控。

(1)数据预处理

在卷积神经网络的训练中,训练集和测试集的划分也是一个比较关键的点。首先进行可视化操作,之后划分生成的图片数据集,分80%给训练集,把20%划分成测试集,这俩个划分的部分再随机打乱顺序,提高学习效率。生成TFrecord文件。把图像数据集打包成为 TFrecord文件,其中包含了图片的各类信息比如分辨率,大小等。这类集成的数据文件在便捷性上比单纯的数据集文件夹方便得多,在存储空间的使用方面也比较节省空间。

(2)模型训练

模型评估有一些比较重要的评估指标,第一个是收敛速度,也就是指模型从开始训练到能够识别,训练有成效的时间,收敛快就是训练所需时间短。第二个是泛化能力,也就是在训练完成后,验证集中不曾经过模型训练的样本的识别能力。运算量是指单个样本识别时间。最后一个是内存开销,顾名思义是模型运行要求的内存大小。

(3)过程监控

Tensorboard是TensorFlow自带可视化工具。该工具中有功能模块能够把训练的网络结构用结构图表现出来,还可以显示输入输出流,和网络数据流。边训练边监测边记录也是可以做到的。模型训练中,监测的主要参数有loss和accuracy等。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号