基于可视化特征的Android恶意软件分类模型

2022-06-27 10:00李坤明庄海燕
长春师范大学学报 2022年4期
关键词:轻量化灰度卷积

桑 振,李坤明,庄海燕

(铁道警察学院,河南 郑州 450000)

0 引言

随着互联网的飞速发展,智能手机和平板等终端设备广泛普及,Android操作系统凭借其开放性和良好的体验感成为现在智能终端市场的主流系统。Strategy Analytics公布的2021年第一季度全球手机出货量显示,当季全球智能手机出货3.4亿部,同比增加24%。操作系统为Android系统的三星、华为、小米、OPPO和VIVO占据市场上60%的份额,在移动智能终端市场上有着重要地位。

恶意软件是故意设计的对系统正常运行造成严重破坏性的软件的统称,它是互联网上最严重的威胁之一,各种移动终端设备给人们的生活提供了便利,同时也存在着很大的风险。Android手机市场占有率的不断上升,催生了Android应用程序的迸发式增长,进而也滋生很多恶意软件,恶意软件介于正规软件和病毒软件之间,既具备正常的下载、媒体播放功能,同时也有弹广告、开后门等恶意行为,对于用户的个人信息和财产造成很大威胁,这将导致用户知情权和选择权遭受侵犯。Android恶意软件种类繁多,常见的有广告软件、后门程序、文件感染程序、勒索软件、恐吓软件等。据统计,2020年360安全大脑系统在移动端共截获恶意程序454.6万个,相较于2019年增长了151.3%,因此对于移动终端恶意软件的检测至关重要。

1 国内外研究现状

近些年,将可视化技术和卷积神经网络相结合的Android恶意软件检测方法层出不穷,NATARAJ等[1]首次将恶意软件转化为灰度图像,开辟了卷积神经网络在恶意软件分类中的新篇章。ZHANG等[2]直接提取恶意软件的操作码序列,使用直方图归一化方法,扩张和侵蚀处理恶意软件图像,使用卷积神经网络来对操作码图像进行分类。NI等[3]将反汇编的恶意软件代码转换为基于SimHash的灰度图像,然后通过卷积神经网络识别恶意软件所属家族。郗桐等[4]将可执行文件的汇编操作码序列映射为矩阵,然后使用卷积神经网络作为检测模型。张晨斌等[5]将恶意软件以字节为单位生成一个像素值,以固定像素宽度将恶意软件转换为灰度图,然后使用包括CNN等多个分类器进行检测。张景莲等[6]利用B2M算法将恶意代码转换为灰度图,并采用单通道的卷积神经网络学习灰度图像的纹理特征,通过SoftMax实现恶意代码家族分类。夏晓玲等[7]把Apk文件解压后的二进制文件以灰度图的形式展现,再结合融合模型的高阶卷积神经网络来提高检测的准确率。李媛媛等[8]提取Android安装包中的dex可执行文件,将其转化为灰度数值向量并进行归一化处理,采用深度神经网络搭建恶意软件二分类系统。

深度神经网络随着层数的增多,对训练硬件配置要求更加苛刻,训练过程往往更加耗时。已有研究多专注于提升恶意代码检测的准确率,对于Android恶意代码的检测速度还有待提高,通过在深度神经网络中引入轻量化结构,可以在保持对目标检测精度的同时大幅提升检测速度,并且其部署相对简单、易于实现,多用于移动和嵌入式设备中。本文引入提取 Android 应用程序特征图像的思想,通过轻量化的卷积神经网络来完成恶意代码的检测工作。

2 模型理论基础

2.1 恶意软件的静态分析

恶意程序的检测,可分为静态分析与动态分析。静态分析不运行待检测代码,而是通过直接对程序(如反汇编后的代码)进行统计分析得到数据特征,而动态分析则在虚拟机或沙箱中执行程序,获取程序执行过程中所产生的数据(如行为特征、网络特征),进行检测和判断。常用的静态特征包括程序的二进制文件、从使用IDA Pro等工具进行反汇编得到的汇编代码中提取的汇编指令、函数调用等信息,另外,基于字符串和基于API调用序列的特征也是比较常见的。

Android软件在手机上的数据安装格式为APK安装包,Android应用程序从编译到打包为APK安装包一般会经过三个步骤,如图1所示。首先,在编译阶段,编译器将应用模型的应用模块和相关依赖编译为dex文件,该文件可以在Dalvik虚拟机上执行;然后,将第一步生成的dex文件和一些已经编译过的资源打包为APK文件;最后,对APK进行签名,保证其在Android设备上正常安装,如图1所示。

图1 APK的编译与打包

2.2 特征可视化

本文分析了Android软件的APK安装包的编译过程,提取其中具有代表性的可执行文件classes.dex,它是整个APK文件的核心,可确保文件在Dalvik VM上的正常运行。可执行文件在计算机中是以二进制形式存储的,通过读取二进制形式的dex文件,将其输出为二进制表示的矩阵形式,取8位的二进制码为一个单元,将其转化为十进制,每个十进制数映射为灰度图像中的每一个灰阶值,进而实现可执行文件向灰度特征图的转换过程(图2)。

图2 特征可视化过程

2.3 MobileNet-V1模型

随着卷积神经网络在人工智能领域的广泛应用,对其性能的要求逐渐提高。网络的不断加深、数据量的增多以及网络学习任务的加重使得网络训练的效率问题日益突出,主要包含以下两个问题:(1)网络层数的不断增加,会带来大量的参数,而大量的参数则需要高性能的储存设备;(2)在真实的应用场景中,检测任务经常需要是毫秒级别的,即具备很高的实时性,这样就需要高性能的处理器或是通过优化网络结构减少计算量。

轻量化模型通过设计高效的网络计算方式,大幅减小网络的计算复杂度,同时保持与原先网络相当的性能。MobileNet-V1模型是为了适应移动端和嵌入式系统的视觉应用而设计的轻量级卷积神经网络模型[9],如图3所示,采用深度可分离卷积结构,将标准的卷积结构分解成一个深度卷积和一个点卷积,3×3深度卷积将每个卷积核应用到每一个通道,而1×1点卷积用来组合每个通道的输出[10],采用深度可分离卷积结构很大程度上减少模型参数数量,提升模型的速度,同时具有较高的分类准确率,可以在保持很高的检测精度的同时具有很好的检测速度。本文模型采用深度可分离卷积结构对深度神经网络进行改造,将其设计为适用于移动智能设备上的检测任务,可以保证移动设备上检测的准确性和快速性。

图3 标准卷积和深度可分离卷积

深度可分离卷积结构将标准的卷积分成两个部分:DWConv和PWConv。DWConv指对每个输入通道单独使用一个3×3的卷积核,PWConv是指1×1的点卷积,用于组合DWConv卷积的输出,表1为MobileNet-V1网络具体结构。

表1 MobileNet-V1结构

续表

(1)

因此,深度可分离卷积计算量是标准卷积计算量的1/N,可以很大程度上减少网络的计算复杂度。

3 模型的搭建与训练

本模型选择轻量化的卷积神经网络作为一个分类器,将Android软件分为良性软件和恶意软件。主要有以下步骤:(1)数据采集与预处理;(2)模型设计;(3)模型训练与评估。

3.1 数据采集与预处理

一般深度学习都是直接将原数据作为输入,但是由于有些Android应用软件比较大,对于其特点的学习效率过低,一般都是从源数据中提取一些可以描述应用的特征。本文数据集包含良性软件和恶意软件两种类型,其中良性软件下载自Google play市场,恶意软件来自加拿大安全研究所提供的公共数据集[11],选择其中良性软件和恶意软件安装包各1 481个,提取其中的classes.dex可执行文件,将其转化为二进制表达的矩阵形式。本文采用卷积神经网络来训练,考虑将图像作为输入,即实现恶意软件的可视化,将处理后的二进制数据转化生成对应的灰度图像,将构造的数据特征转换成适用于卷积神经网络输入的数据类型,图4为可执行文件转化后生成的灰度特征图像。

(a)良性软件 (b)恶意软件图4 良性软件和恶意软件灰度图像

3.2 模型设计

本文模型主要分为两个部分,首先提取Android软件APK压缩包中的可执行文件,采用可视化方法将二进制文件转换成灰度图像。然后搭建轻量化的卷积神经网络,进行检测模型的训练与调参。在Windows环境下,基于Tensorflow框架搭建卷积神经网络检测模型,并对模型进行轻量化改造,将第一步预处理后的数据作为输入,输入搭建好的轻量化卷积神经网络,通过网络的迭代训练来学习恶意软件样本数据的全局泛化特征,实时监控训练损失变化,并根据模型检测的精度和速度不断调节训练参数,模型结构设计如图5所示。

图5 本文模型结构

3.3 模型训练与评估

本文基于Windows10系统,显卡为NVIDIA GTX1050Ti,在主流的Tensorflow学习框架上搭建本文模型,并引入传统的VGG16网络作为对比,将预处理后的灰度图片按照训练集、测试集为7∶3的比例随机抽取并转换为tfrecord文件,设置Batch size为32,迭代学习10万步,通过Tensorboard实时监控训练过程中损失变化,图6为迭代过程中的总损失值变化。

图6 总损失值变化

为了便于训练模型的定量测试,使用准确率、图片检测速度和参数量三个指标来评估本文模型分类的效果,其中,准确率定义为

(2)

其中,TP表示被正确分类为恶意样本的数量,TN表示被正确分类为良性软件的数量,P表示总体的恶意软件样本数,N表示总体的良性软件样本数。

将传统VGG16模型和本文模型准确率、图片检测速度和参数量三个指标进行对比,如表2所示。

表2 模型评估参数对比

根据评估结果可以看出,本文搭建的轻量化的卷积神经网络较传统方法,可以在保持较高准确率的同时,很大程度上减少网络的参数量,提高图片检测速度,满足对移动端恶意软件快速且准确分类的要求。

4 结语

本文将特征可视化与卷积神经网络相结合,设计了一种轻量化卷积神经网络的恶意软件分类模型,首先通过分析恶意软件的静态特征,对恶意软件安装包中可执行文件进行特征可视化,将其转化为对应的灰度图像,然后引入卷积神经网络用于恶意软件的识别。模型可以很好地学习恶意软件的深层次特征,具有很高的鲁棒性。同时,对于标准卷积在特征学习过程中计算复杂度较大的问题,对卷积神经网络进行轻量化改造,大幅减少卷积神经网络的训练参数,能够兼顾准确性与实时性的要求,适用于移动设备上端到端的实时分类任务。

猜你喜欢
轻量化灰度卷积
采用改进导重法的拓扑结构灰度单元过滤技术
汽车轻量化集成制造专题主编
基于3D-Winograd的快速卷积算法设计及FPGA实现
Bp-MRI灰度直方图在鉴别移行带前列腺癌与良性前列腺增生中的应用价值
卷积神经网络的分析与设计
从滤波器理解卷积
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
基于傅里叶域卷积表示的目标跟踪算法
基于最大加权投影求解的彩色图像灰度化对比度保留算法