恶意代码系列 |基于图的恶意代码检测方法

admin 2023年6月5日19:24:47评论51 views字数 2868阅读9分33秒阅读模式
‍‍
01
基于图的恶意代码检测技术的提出
‍‍‍‍‍‍


实践中,同一家族的恶意代码会产生大量的变种,即使相同的恶意代码也会使用不同的混淆方式隐藏自身的特征,导致检测中使用单纯规则匹配的方式检测恶意代码的方式失效。面对这种问题,近几年来学界将把恶意代码检测与分类的目光转移到计算机视觉的领域。提出了使用图(本文的图指的是二进制代码转化而成的图片,不是调用序列图也不是代码的CFG图)检测恶意代码,可见这属于恶意代码纯静态检测的方法之一。

即使同种家族产生了大量的变种,同类恶意家族代码中的核心具有相似性与传承性(部分核心代码模块也不会变化,进行复用)。将恶意代码可视化为图像不会从本质上改变图像纹理及结构特征,该方式能有效对抗恶意代码混淆。与人工提取特征向量相比,恶意代码图像包含丰富、几乎全部的恶意代码信息。通过图像结构、纹理与颜色分析(局部特征和全局特征提取),还是通过深度学习算法自动学习图像特征,恶意代码可视化都能最大程度上减少混淆技术带来的影响。




02
如何将病毒转化为图片的基本方法


Nataraj等研究员在2011年提出的基于灰度图像的恶意代码自动化分类方法(这里就不得不佩服这位研究员的想象力了),Nataraj将恶意代码.text区块的二进制数据可视化为灰度图像,利用GIST算法提取图像特征,并使用最近邻(kNN)算法进行分类,开启了基于可视化的恶意代码检测方法研究。

原始二进制序列切割成长度为8bit的子序列,产生的8位二进制串通过进制转换到[0255],正好对应像素区间。该方法首先将恶意代码二进制文件的每8个字节代码设为一个向量单元,随后将每一个向量单元全都转化为[0,255]的整数数值,通过将这些数值与黑白灰阶图像的一个像素点相映射生成完整的代码图像。

恶意代码系列 |基于图的恶意代码检测方法

同时如下图 所示为恶意代码二进制的灰度图表示,通过右侧的不同对应模块的标注以及上文的描述,我们可以直观的发现恶意代码图像化后的纹理特征间关系。同时因为是根据恶意软件PE格式生成的,所以生成的图像顺序也是按照PE格式生成出来的。

恶意代码系列 |基于图的恶意代码检测方法

Nataraj等研究员对25个类别的九千多个恶意代码样本进行了灰度图转化与分类,并达到了98%的分类准确度,同时该方法对加入混淆技术的恶意代码同时具有较好的检测效果,并开启了机器视觉方式检测恶意代码的新方向。

同时该方法也能一定程度的通过灰度图像纹理特征区分恶意代码的不同类别进而进行同源性分析,如下图示是按照上述方法生成的4张灰度图,前3张灰度图像来自不同的恶意代码家族,纹理上可以看出有明显的不同,而后2张图像之则是来自于同一家族的两个不同的恶意代码灰度图像,这两幅图从纹理与结构上看得出来具有很高的相似度,但仔细观察又有差别。由此可见,使用可视化方法对恶意代码进行分类与检测研究将会获得较好的效果。

恶意代码系列 |基于图的恶意代码检测方法




03‍‍‍
 图像识别检测恶意代码的相关研究成果


1)灰度图方式检测

Nataraj提出的矢量化就是生成灰度图,灰度图很好理解就是黑白图。这种灰度可视化方法已被广泛应用于恶意代码检测中。另外与有在Nataraj矢量化基础上增加了熵图,利用熵图特征进一步判断恶意代码图像的相似性,改进了图像纹理特征提取方法及相似度度量策略。

2015Blackhat上,Davis等提出反汇编的恶意代码矢量化方法,将反汇编的十六进制数据作为编码源,每个十六进制数据转换到4-bit的二进制并填充到64bit,其中每位二进制乘以255,对应像素灰度值0255。这种方式将恶意代码可视化为只含像素值0255的灰度图,图像每一行矢量都对应一条机器码,后续有其他研究者进一步增加了恶意代码中包括但不限于编码长度、编码量等参数选择的方式,进一步改进了灰度图。


2)反汇编指令中的操作码生成的灰度图

将恶意代码进行反汇编,获取汇编指令中的操作码序列,使用SimHash与双线性插值法将操作码序列转换为恶意代码图像,可视化步骤如图。因为恶意代码变体通过该方式可视化的图像在某些区域存在相似的指纹,所以通过图像处理技术识别同类恶意代码变体具有可行性。

恶意代码系列 |基于图的恶意代码检测方法

此后又有其他研究人员提出各种转化为灰度图的各种方式,包括将指令看作词,函数看作句子,从而把恶意代码文件转换为文档在进行灰度图提取等等。总之灰度图的方法,在一定程度上克服了代码混淆技术带来的影响,但灰度图像其实并不能确定其包含全面的恶意攻击信息,并且因为转化造成攻击信息的压缩损失。


3)转化成彩色图像进行恶意代码识别

因此进一步考虑自然而然是转化成彩色图像更合适,将恶意代码二进制序列分割成RGB三通道值,从而将恶意代码可视化为彩色图像,由于并不是每个恶意代码的比特位都是24比特的整数倍,所以不足24比特的用1补足。

恶意代码系列 |基于图的恶意代码检测方法

具体转化的方式各种研究成果有所不同,第一、如上图直接将将恶意代码转化为RGB通道彩色图像;第二、如下图直将PE文件格式的各个区段分类并且转化。

恶意代码系列 |基于图的恶意代码检测方法

第三、将原始二进制数据按照灰度化图像方法填充到R维;将二进制数据中的可见ASCII、不可见ASCII、非ASCII00字符和FF字符分别用不同固定数值填充到G维数据中;将按照PE文件格式结构将代码的文件头、节表、代码段、资源段、入口点、调试信息,分别使用不同固定数值填充到B维。灰度图中的每个像素点只能表达 256 种颜色信息,而 RGB 彩色图像则可于表示2563=16777216 种颜色信息,解决了灰度图包含信息不足的问题,获得了更好的特征信息表示能力。

恶意代码系列 |基于图的恶意代码检测方法

另外还有各种其他不同的RGB图转化方法,主要围绕的也是RGB三维数据填充对象的不同、精细程度不同等进行创新。



04
总结‍‍‍‍‍‍


使用图像检测恶意代码和别的机器学习方式一样,受限于数据集,同时部分恶意代码在特定环境下运行,避免被收集,导致依然是专家辅助分析为主,识别位置恶意代码依然有挑战性。


参考
1Deep learning on disassembly data
https//www. blackhat. com/docs/us-15/materials/us-15-Davis-DeepLearning-On-Disassembly. pdf.
2NATARAJ LKARTHIKEYAN SJACOB Get al. Malware images
visualization and automatic classificationC// Proceedings of the 8th International Symposium on Visualization for Cyber Security20111-7.
3WANG BCAI H HSU Y. Classification of malicious code variants based on VGGNetJ. Journal of Computer Applications2020401):162-167.
4】基于代码图像增强的恶意代码检测方法-清华大学学报 (自然科学版)

       

原文始发于微信公众号(山石网科安全技术研究院):恶意代码系列 |基于图的恶意代码检测方法

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月5日19:24:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   恶意代码系列 |基于图的恶意代码检测方法https://cn-sec.com/archives/1743428.html

发表评论

匿名网友 填写信息