0%

Malware classification using a byte-granularity feature based on structural entropy

摘要

​ 熵是一种用于识别恶意软件的典型指标。结构熵是一个熵值的序列,其中一个分段的熵是由熵本身的方程计算出来的。然而,基于熵的特征很可能是抽象的,并且遗漏了重要的信息。本文提出了一种涉及结构熵概念的特征工程技术。这种技术允许将每个节段表示为每个字节值的256个熵值,但不能表示为一个熵值。我们的研究是**细粒度结构熵(FiG_SE)**,它包含了所有段的全局模式、相邻段的局部模式以及段内的内部模式。为了从我们的熵特征中提取更高层次的特征,我们使用了卷积神经网络(CNN)架构,因为它可以有效地提取局部和全局模式,特别是对于移位不变模式。此外,我们与CNN相结合的研究对混淆技术具有很强的弹性,也非常适合于恶意软件的检测。

主要工作

  • 我们提出了一种新的处理二进制文件的特征工程方法。该方法具有提取二进制文件的全局属性和段中的局部属性的能力,这是通过关注具有字节粒度的二进制文件的段来实现的。
  • 与以前的分类模型相比,我们使用FiG_SE的分类模型在训练数据集上具有竞争性能,在基于微软恶意软件分类挑战数据集标准的测试数据集上具有最佳性能。
  • 我们证明了FiG_SE对混淆技术具有很强的弹性。
  • FiG_SE对不同的基于熵的特征具有优越的泛化性能;与现有的其他特征相比,它具有更高的准确率和F1分数。

通常的结构熵一般是将二进制文件分成相等长度的段,然后计算每个段的熵值。该篇文章中的方法是,将每一个段用256个熵值表示,而不是单个熵值。为此,先将一个文件分成几个部分,类似于结构熵。然后,为每个段提取256个不同字节值的熵值。因此,FiG_SE形成了一个向量序列,每个向量序列由所有二进制段的256个熵值组成。

image-20220706150958183

一个段表示为从0×00到0×FF的256个熵值。关于段的详细信息有助于解决通过将段抽象为单个熵值而产生的段之间的模糊性。因此,提出的熵分析可以通过分析熵值来区分具有相同熵的段。

FiG_SE通过以下步骤提取:首先,将文件划分为大小相同的段。其次,每个段内256个不同字节的熵值由公式“**P(i)log2P(i)**”计算。最后,附加每个段的合成值。该特征最终形成为一个向量序列,每个二进制文件的每个段有256个熵值。如上图所示,FiG_SE是每个文件n个段的n个向量的序列,其中一个段的向量在0×00到0×FF之间有256个熵值。

模型架构

采用CNN作为我们的分类模型的底层架构,有两个原因。首先,CNN可以有效地识别低水平特征和高级特征。在我们的特征域中,低级特征表示一个段或相邻段的局部模式,而高级特征表示跨所有段的全局模式。其次,我们利用CNN的移位不变模式的功能。二进制文件中的字节序列(例如,代码片段和函数)可以被编译器自动重新定位,或被黑客恶意地重新定位。CNN的使用允许分类模型通过识别不同的模式来捕获二进制文件中存在的移位不变模式。

它由三个卷积层组成,每个卷积层后面都是一个池化层、三个全连接层和一个分类层。FiG_SE的二维(2D)特征向量作为输入输入CNN,并划分为一个恶意软件家族。

第一层识别分段中或相邻段之间的局部特征,后一层根据前一层提取的特征图捕获全局特征。随后,三个完全连接的层采用提取的高级特征,输出9个恶意软件家族。为此,最后一个卷积层的特征在第一个完全连接层之前被平坦为一个一维向量。softmax层作为最终的分类层。softmax函数通过计算之前完全连接层的合成值来生成归一化概率分布。在这个模型中,返回了9个类的归一化概率分布。然后,对FiG_SE特征预测一个概率值最高的类

image-20220706155633427