A Benchmark API Call Dataset For Windows PE Malware Classification

【论文阅读】A Benchmark API Call Dataset For Windows PE Malware Classification

作者:Ferhat Ozgur Catak(土耳其)

Ahmet Faruk Yazi(土耳其)

时间:2021.2.23

关键词:恶意软件分析,网络空间安全,数据集,沙箱环境,恶意软件分类

1. Abstract

​ 在Windows操作系统中,系统API调用的使用在监控恶意PE程序中是一个很有前途的方法。这个方法被定义为在安全隔离的沙箱环境中运行恶意软件,记录其调用的Windows系统API,再顺序分析这些调用。
​ 在这里,我们在隔离沙箱中分析了7107个属于不同家族(病毒,后门,木马等)的恶意软件,并把这些分析结果转化为了不同分类算法和方法可以使用的形式。
首先,我们会解释如何得到这些恶意软件;其次,我们会解释如何将这些软件捆绑至家族中;最后,我们会描述如何使用这些数据集来通过不同的方法实现恶意软件的分类。


2. Introduction

2.1 简单介绍了恶意软件

2.2 恶意软件与恶意软件识别之间的竞争

​ 相互促进

2.3 变形恶意软件(Metamorphic malware)

​ 恶意软件家族里很先进的一种,这种软件可以持续不断的改变自身源代码以此改变自身结构,通过这种方式来改变自身代码特征。还有,这种软件可能还可以通过强度反算(counter-analysis)来识别自身运行的环境,以此来隐藏自身的恶意功能。

​ 变形恶意软件很难识别。

2.4 恶意软件的识别:

​ 所有恶意软件都会有恶意行为以达成其目的,如果可以很好的分析恶意行为,就可以做成恶意软件的识别与分类。
​ 恶意软件的识别包括了很多需要解决的问题,例如在汇编中不正确的跳转操作码,PE文本段代码隐藏,代码加密。本研究收集了现有的恶意软件及其变式,例如WannaCry,Zeus,特别是在Github上。

​ 我们通过在VirusTotal网站上寻找每个恶意软件的哈希值,从而获得了得到了其家族类。

​ 最后,所有我们记录的行为都是在Cuckoo沙盒环境中运行的。

​ 我们发现几乎所有恶意软件都会使用很多方法改变其行为,但即使这样,恶意软件还是有一个目标,有一个确定的模式来达到此目标。还有,恶意软件会做出一些不必要的API调用,但其还是可以被一个训练好的分析器识别,因为其行为模式是相同的。

​ 恶意软件分析被视为网络空间安全的一个分支,其由两方面组成:

1. 静态分析

​ 静态分析可以可以定义为通过执行一个孤立的环境检查可执行文件而不查看实际指令。例如MD5校验和,其通过反病毒检测攻击识别,查找字符串。

2. 动态分析

​ 动态分析指运行恶意程序来理解其功能,观察其表现,识别其技术指标。几乎所有的重要行为都包含API调用序列。

大多数动态分析领域的研究都只关注分类算法,有个基本问题是没有标准的数据集来检查所提出模型的效率。

我们在Github上分享了我们的数据集:https://github.com/ocatak/malware_api_class ,该数据集包含了基于Cuckoo沙箱的已知恶意软件执行和基于VirusTotal的文件MD5特征分类的原始数据。


3. Methods

3.1 Windows API Calls:

​ 软件安全知识,略

3.2 Cuckoo SandBox

​ 免费软件,高度集成,开源,可以自动分析Winodws,OS X,Linux,Android系统下的恶意文件。

3.3 VirusTotal

​ 可以在线免费分析文件或者URL。其提供了一个API,可以不通过浏览器来提供分析结果,可以自动分析。其以JSON文件的形式提供分析结果,不同反病毒应用引擎和浏览器的分析结果会分开存放。

3.4 数据集生成

​ 本文的数据集有着简单明了的结构。数据集以CVS格式文件提供来提高互操作性,而且并不需要特定的软件或者库来读取他们。数据由来自不同Github页面的Git命令实施收集,数据集中的每一行都是在沙箱中分析的Windows操作系统的API调用序列。

​ 数据集的生成过程如下:

1. 沙箱环境准备:

​ 分析机器使用Ubuntu系统,将Cuckoo沙箱安装在其中,分析机运行虚拟服务,Windows操作系统就运行在虚拟服务上,同时关掉防火墙,系统升级。

2. 分析恶意软件:

​ 虚拟机中同时运行超过20000个恶意软件,应用程序会将每个恶意软件的分析结果写入MongoDB数据库,分析结果中包含恶意软件的行为数据,这些数据都是恶意软件在Win7上的API调用请求。

3. 处理API调用:

​ 我们在数据集中收集到了342种API调用,这些调用会被以0-341来标记,以此生成一个新数据集。我们使用了该数据集中至少有10个不同API调用的恶意软件的分析结果。

4. 使用Virus Total公用API分析恶意软件:

​ 作为分析的补充,所有在数据集中的恶意软件也会被Virus Total所分析,通过这种方式,每个恶意软件都会被不同的反病毒引擎所分析,结果会被记录。

5. 处理分析结果:

​ Virus Total服务使用大约66个不同的防病毒应用程序进行文件分析。利用我们利用这个服务得到的每个研究结果,我们识别了每个恶意软件的家族。通过观察,我们发现对于同一恶意软件,不同的防病毒应用程序给出了不同的结果。此外,观察到并非每一个防病毒应用程序都能检测到一些恶意软件。因此,在检测每一个恶意软件类时,认为它属于所有分析中的大多数类。