基于图像特征的恶意代码识别研究

2021-12-07 07:45丰,王
电子设计工程 2021年23期
关键词:彩色图像信息熵字节

卢 丰,王 晨

(1.武汉邮电科学研究院湖北武汉 430000;2.南京烽火天地通信科技有限公司 江苏南京 210000)

随着科技发展的日新月异,计算机已经在人们的日常生活中扮演着不可代替的角色,然而人们在享受着计算机为生活带来便利的同时也要警惕随之而来的风险和无所不在的威胁。

伴随着移动互联网技术的发展,移动端应用安全也逐渐受到人们的重视。2017 年,360 公司发布的关于Android 恶意软件调查数据显示,2017 年平均每天约有58 人手机遭到入侵,恶意软件日增长数量达到2 万,入侵用户手机总计达2.14 亿次,超过八成给用户造成了经济损失[1]。

综上可知,恶意代码无论给人们日常生活还是国家的安全都带来了严重的威胁和影响,因此对恶意代码进行高效快速的识别具有十分重要的意义,吸引了全球各国大量目光与关注。鉴于此,文中给出基于图像特征的恶意代码识别方法,首先将代码文件映射到红、绿、蓝通道,同时建立相应的彩色图像文件;其次从恶意代码文件出发,完成局部信息熵的计算,并将计算的结果作为透明度,使之转换成拥有透明度的图像文件;最后通过CNN 提取恶意代码特征,形成识别检测分类模型。在实验结果的基础上探究训练集的数量,并与训练时间关联,再和其他实验结果展开对比研究,最终证明文中方法有较短的检测时间和较高的精确度,展现出了良好的实用性。

1 相关研究

1.1 恶意代码简介

恶意代码又称为恶意软件,它是指能够在计算机系统中进行非授权操作,以实施破坏或窃取信息的代码。恶意代码范围很广,包括利用各种网络、操作系统、软件和物理安全漏洞向计算机系统传播恶意负载的程序性的计算机安全威胁。恶意代码的形式也多种多样,它既可以是二进制的代码,同时又可以是可执行文件。恶意代码可利用Internet 或物理媒介传播,在无须授权的前提下也可自主运行,以此实现对用户计算机数据信息的非法获取和利用,导致用户蒙受不同程度的损失,因此必须引起高度的关注和重视。

1.2 恶意代码图像化

2011 年,Nataraj[2]提出了恶意代码图像化的观点,并且表示能将恶意代码文件转变为一种可视化的图像,这样就省去了对恶意代码的解析等一系列复杂操作,节省了检测识别所需的时间,因此被学术领域广泛研究。恶意代码图像化方法直接从二进制文件的字节级别进行分析,但是在信息感知方面比以前基于字节的恶意代码功能更全面,并且可以更快速地发现文件中的差异。因为该方法具有不同的检测机制,所以在多次测试中均显示出良好的独立检测率,并已经逐渐被业界集成到防病毒引擎群中进行集中部署,属于全新检测引擎。具体思路是将给定恶意代码二进制文件读取为8 位无符号整数向量,并生成二维数组。文件中的每个字节可以完全对应于灰度图像中每个点的像素值,范围为[0,255](0 表示黑色,255 表示白色)[3]。然后,研究人员使用广义搜索树(GIST)算法提取恶意代码的图像特征,并使用支持向量机(SVM)和其他深度学习算法进行恶意代码的分类。

恶意代码图像化始一问世就受到学术界普遍关注,后续研究则以此为前提完成大量优化调整,最终收获一系列有用成果。2014 年,韩晓光等[4]在恶意代码图像纹理聚类方面完成我国开拓性探索。2016年,任卓君等[5]研究了优化后恶意代码可视化技术,该技术主要将代码段局部熵转变成熵像素图,采用视觉形式反映代码内部结构特征,同时依靠降维手段大幅优化相似度对比与分类效率。张晨斌[6]优化了Android 恶意代码灰度策略,通过与GIST、Tamura等有关特征提取法,再依靠CAFFE 编写5 种分类算法,同时开展了相应实验。上述成果使得之前研究中对恶意代码的静态分析问题得到解决,找到了恶意代码难以解决其样本加壳的方案。伴随着深度学习技术的快速发展,一些研究人员通过该技术完成了恶意代码图像分类,效果非常显著。2018 年,Cui等[7]通过CNN 裁剪恶意代码灰度图像,同时以bat 算法来平衡。依靠CNN 算法对恶意代码家族完成有效的分类。2017 年,Rezende 等[8]面向Malimg 数据开展更深层的分析工作,通过迁移学习方法顺利完成了Resnet 网络(基于ImageNet 数据集训练后)至恶意代码图像的迁移,从而大大提高了原始数据集的准确性。基于恶意代码可视化检测法属于端至端学习法,能有效降低检测识别阶段的特征工程开销,由输入至输出恶意代码过程直接完成预测,不必手动选取与过滤中间等环节,就能将结果误差置于神经网络模型各层传输(反向触底),直至模型拥有所需的理想效果或者模型收敛为止。经过近10年的研究,可视化恶意代码方案已被证实拥有可行性与实用性,而且受学术、工业领域的高度重视,应用极其普遍。

2 RGBA图生成模型

2.1 RGB图的生成

恶意代码文件转换为对应RGB 图的算法如图1所示,它的原理是将恶意代码文件以字节为单位分别映射到对应的3 个颜色通道上。3 个颜色通道中的每一个都具有256 个颜色级别。相应的恶意代码文件经过解压脱壳后以字节为单位,取值范围为0x00~0xFF。将它们按照每3 个字节单位长度划分开后映射到3 个颜色通道。例如,将字节EFCEBC 转化为对应的RGB 值(239,207,188)。按照这种方法便可以将恶意代码的代码文件分别映射到对应的红、绿、蓝3 种颜色的通道中转化为RGB 图像,对比于只有一种颜色通道的灰度图,RGB 图的颜色通道是灰度图颜色通道的3 倍,因此具有比灰度图更多的特征信息,在恶意代码的分类识别中会更加精准。

图1 RGBA图像算法图

2.2 RGBA图像的生成

信息熵通常是指信息中所包含的不确定性,如果一个数据集中只有一个元素,则该数据集的信息熵为零;相反,如果数据集中所有的元素均匀分布,则信息熵达到最大值。恶意代码为了躲避杀毒软件的侦测会进行压缩加密等操作,信息熵值会普遍偏高,所以信息熵也可以用于检测和识别恶意代码文件。

RGBA 图像的生成方法如下所示:

1)将恶意代码文件划分成字节长度为256 的数据块,如果不足则在末尾用0 填充。

2)计算上述步骤所得到的数据块的信息熵,具体计算公式如式(1)所示,其中,pj表示该字节出现的概率。

3)为了将信息熵映射到对应的透明通道,需要将信息熵值进行放大处理[13],用式(2)将信息熵值的取值范围放大到[0,255]。

4)恶意代码文件生成的RGB 图像是由3 个颜色通道最终重叠合并为一个像素点构成的,每个数据块中有256 个字节单位。依据这种规则将信息熵值生成对应的Alpha Map 矩阵。

5)将信息熵值所生成的对应Alpha Map 矩阵映射到透明度通道,并将RGB 图相互融合,形成透明的彩色图像,即为实验生成的RGBA 图像。

3 实验与结果分析

3.1 卷积神经网络结构

文中通过CNN 面向恶意代码相应特征实现准确提取及分类,能够减少噪声对实验结果造成的影响,使得实验结果更准确。卷积神经网络的结构对其性能有较大的影响,不同的结构会造成明显差异。该实验使用的卷积神经网络结构,在首层卷积层采用32 卷积核对恶意代码进行有效特征码的提取检测识别,每个卷积核的大小为3×3,并使用ReLu函数作为激活函数,因为其具有较好的饱和性和线性特征,然后再加上一个相同的卷积层。再使用2×2的池化层,缩小并简化首层所得到的要素映射组,以消除冗余和次要影响的要素。最后,通过完全连接层发送到softmax 分类器来进行恶意代码的识别及分类[14]。

3.2 实验数据、实验环境和评估指标

在分类算法中,有基本指标和更能表达分类器效果的指标。其中,基本指标包括[15]真正例(TP)、假正例(FP)、真负例(TN)、假负例(FN)。通常把正样例正确分类的概率称为真例率(TR),也叫作召回率。相反地,将正样例错误分类的概率称为假例率(FP),即为误判率。正确分类的样例的数量占总正确样例数量的比例用精确度(PR)来表示。精确度和召回率的调和均值用F1-Socre 来表示。所有正确样例与总样例的比值称为准确率(Accuracy)。具体的评估指标公式如表1 所示。

表1 评估指标公式

该实验数据重点来自两方面,分别是微软公司在Kaggle 上公开发布的恶意代码文件的数据集[16]和互联网上收集的样本。文中实验环境如表2 所示。

表2 实验环境

3.3 实验结果与结论

数据内大量有用信息均处于载体图像各像素点内。数据涵盖结构等要素,但彼此间要素差异之处由图像决定。因此选择不同的参数作为图像的特征可以得出不同的实验结果。该实验中所使用的各类图像的主要生成方法如下:

1)灰度图(Gray Image):如图2 所示,该图像是通过B2M 算法将恶意代码文档的二级制代码文件映射到单一通道形成的灰度图像[17]。

图2 灰度图

2)信息熵图(Shannon Image)[18]:生成的信息熵图如图3 所示。信息熵图的像素点由恶意代码的信息熵值构成,信息熵值根据恶意代码文档计算得出,在将恶意代码文件的信息熵值作为图像的像素点坐标值之前,需要先将信息熵值进行放大,这个放大过成需要根据指标进行。

图3 信息熵图

3)彩色图(RGB 图):生成的RGB 图像如图4 所示。为映射到彩色图像的R、G、B 通道,需要先将恶意代码文件划分为3 个数据块,每个数据块对应映射到相应颜色通道,最后对每个数据块所映射的图像进行融合处理,得到彩色图像。图5 为文中提出的RGBA 图像。

图4 RGB图

图5 RGBA图

文中在所有样本集中随机抽取1 000 个样本作为此次实验的训练集,抽取500 个样本作为此次实验的测试集,并且选用上述表2 中所介绍的重要指标PR、Recall、F1-Socre 和Accuracy 作为实验的实验结果评测指标。对不同的代码进行不同的可视化图像之后所得到的实验结果如表3 所示。

表3 不同代码可视化图像的实验结果

根据所得结果分析可知,在准确率方面,彩色图高于灰度图,灰度图高于信息熵图,RGBA 图相比较于其他图像最高,且召回率亦是如此。借此不难发现,提出方法可面向二进制恶意代码文件进行有效的特征信息提取,并能够对其进行正确分类,有效地提高了检测识别效率。

接着通过实验来分析样本数量对准确率和训练时间的影响。为研究两者受影响程度,选择500、700、1 000、1 500、2 000 个训练样本进行对比实验,结果如图6 所示。根据所得结果分析可知,在初始阶段样本增多情况下,准确率也有较为明显的上升趋势。但是在训练样本的数量超过一定数值之后,这种上升趋势随之逐渐变小。然而,随着训练样本数量的增加,训练所需的时间仍会呈现线性增加的形式,即随着样本数目的提升所需要的时间也更长。

图6 训练样本数量对精确率和训练时间的影响

4 结束语

文中提出了一种基于图像特征的恶意代码图像化识别检测方法,首先将恶意代码进行查壳和脱壳之后的源代码文件映射到红、绿、蓝3 种颜色的彩色图像,然后计算其对应的信息熵值,并且按照计算结果作为彩色图像的透明度值,将恶意代码文件转换为带有透明度的彩色图像文件。在科学实验前提下分析训练集数量与训练时间关联,再和其他实验方法所得的结果进行比较分析。综合实验数据表明,所提方法具有较短的检测时间和较高的精确率,展现出良好的实用性。随着时间的不断推移,Internet发展越来越快,恶意软件数量随之增多,导致Internet 安全遭受巨大威胁。为了让用户享有和谐、友好的网络环境,必须尽可能提高检测识别效果,及时消除各种危险隐患,故而文种方法的提出意义重大,未来需要进行更深层研究与探索!

猜你喜欢
彩色图像信息熵字节
基于信息熵可信度的测试点选择方法研究
No.8 字节跳动将推出独立出口电商APP
基于FPGA的实时彩色图像边缘检测
No.10 “字节跳动手机”要来了?
简谈MC7字节码
基于最大加权投影求解的彩色图像灰度化对比度保留算法
一种基于信息熵的雷达动态自适应选择跟踪方法
基于信息熵的IITFN多属性决策方法
基于颜色恒常性的彩色图像分割方法
泊松分布信息熵的性质和数值计算