来源:Malware Data Science Attack Detection and Attribution
在第2章中,您学习了高级静态分析技术,以反汇编从恶意软件中恢复的汇编代码。虽然静态分析可以通过研究磁盘上的不同组件来获得有关恶意软件的有用信息,但是它不允许我们观察恶意软件的行为。
在本章中,您将了解动态恶意软件分析的基础知识。与静态分析不同,动态分析关注的是恶意软件在文件形式中的外观,而动态分析则是在一个安全的、包含恶意软件的环境中运行恶意软件,以查看它的行为。这就像把一种危险的菌株引入一个封闭的环境中,观察它对其他细胞的影响。
通过使用动态分析,我们可以绕过常见的静态分析障碍,比如打包和混淆,并且可以更直接地了解给定恶意软件样本的目的。我们首先探讨基本的动态分析技术,它们与恶意软件数据科学的关系,以及它们的应用。我们使用像malwr.com这样的开源工具来研究动态分析的实例。注意,这是对该主题的简要概述,并不打算全面。要获得更完整的介绍,请查看实用恶意软件分析。
一、为什么使用动态分析?
为了理解为什么动态分析很重要,让我们考虑打包恶意软件的问题。回想一下打包恶意软件是指压缩或混淆恶意软件的x86汇编代码,以隐藏程序的恶意性质。一个打包的恶意软件样本在感染目标机器时将自己解包,以便代码可以执行。
我们可以尝试使用第2章中讨论的静态分析工具来解压缩或混淆的恶意软件样本,但这是一个费力的过程。例如,使用静态分析,我们首先必须找到混淆代码在恶意软件文件中的位置。然后,我们必须找到解模糊子程序的位置,这些子程序可以解模糊代码,使其能够运行。在找到子例程之后,我们必须弄清楚这个去混淆过程是如何工作的,以便在代码上执行它。只有这样,我们才能开始对恶意代码进行逆向工程的实际过程。
一个简单而聪明的替代方法是在一个称为沙箱的安全、包含的环境中执行恶意软件。在沙箱中运行恶意软件可以让它自己解压,就像感染真实目标一样。通过简单地运行恶意软件,我们可以找出一个特定的恶意软件二进制文件连接到什么服务器,它更改了什么系统配置参数,以及它试图执行什么设备I/O(输入/输出)。
二、恶意软件数据科学的动态分析
动态分析不仅适用于恶意软件逆向工程,而且适用于恶意软件数据科学。因为动态分析揭示了恶意软件样本的功能,所以我们可以将其行为与其他恶意软件样本进行比较。例如,因为动态分析显示了恶意软件样本写入磁盘的文件,所以我们可以使用这些数据来连接那些将类似文件名写入磁盘的恶意软件样本。这些线索帮助我们根据共同特征对恶意软件样本进行分类。它们甚至可以帮助我们识别由相同组织编写的恶意软件样本,或者是相同活动的一部分。
最重要的是,动态分析对于构建基于机器学习的恶意软件检测器非常有用。通过在动态分析过程中观察恶意二进制文件和良性二进制文件的行为,我们可以训练一个检测器来区分恶意二进制文件和良性二进制文件。例如,通过观察恶意软件和良性文件中的数千条动态分析日志,机器学习系统可以了解到,当msword.exe启动一个名为powershell.exe的进程时,该操作是恶意的,但是当msword.exe启动Internet Explorer时,这可能是无害的。第8章将详细介绍如何使用基于静态和动态分析的数据构建恶意软件检测器。但在创建复杂的恶意软件检测器之前,让我们先看看一些用于动态分析的基本工具。
三、动态分析的基本工具
您可以在网上找到许多免费的、开放源码的动态分析工具。本节主要介绍malwr.com和CuckooBox。malwr.com站点有一个web界面,允许您免费提交二进制文件进行动态分析。CuckooBox是一个软件平台,它允许您设置自己的动态分析环境,以便在本地分析二进制文件。CuckooBox平台的创建者也运营着malwr.com, malwr.com在后台运行CuckooBox。因此,学习如何在malwr.com上分析结果将使您了解CuckooBox的结果。
四、典型的恶意行为
以下是恶意软件样本在执行时可能采取的主要行动类别:
(1)例如,修改文件系统,将设备驱动程序写入磁盘,更改系统配置文件,向文件系统添加新程序,修改注册表项以确保程序自动启动
(2)修改Windows注册表以更改系统配置,例如更改防火墙设置
(3)例如,加载记录用户击键的设备驱动程序
(4)例如,解析域名和发出HTTP请求等网络操作
我们将使用恶意软件样本更详细地研究这些行为,并在malwr.com上分析其报告。
五、加载malwr.com上的文件
要通过malwr.com运行恶意软件样本,请导航到https://malwr.com/,然后单击Submit按钮上传并提交用于分析的二进制文件。我们将使用一个二进制文件,它的SHA256散列以字符d676d95开头,您可以在本章附带的数据目录中找到它。我鼓励您将这个二进制文件提交到malwr.com,并在运行过程中亲自检查结果。submit页面如图3-1所示
通过此表单提交示例后,站点应该提示您等待分析完成,这通常需要5分钟。当结果加载时,您可以检查它们,以了解可执行文件在动态分析环境中运行时做了什么。
六、分析malwr.com上的结果
示例的结果页面应该如图3-2所示。
该文件的结果说明了动态分析的一些关键方面,我们将在接下来进行研究。
(1)签名面板
您将在结果页面上看到的前两个面板是分析和文件详细信息。它们包含文件运行的时间和关于文件的其他静态细节。这里我将重点关注的面板是signature面板,如图3-3所示。此面板包含来自文件本身及其在动态分析环境中运行时的行为的高级信息。让我们讨论一下这些签名的含义。
图中显示的前三个签名来自静态分析(也就是说,这些签名来自恶意软件文件本身的属性,而不是其操作)。第一个签名只是告诉我们,流行的杀毒聚合器VirusTotal.com上的许多杀毒引擎将该文件标记为恶意软件。第二个表示二进制文件包含压缩或加密的数据,这是混淆的常见标志。第三个例子告诉我们,这个二进制文件是用流行的UPX封隔器压缩的。虽然这些静态指示器本身并没有告诉我们这个文件做了什么,但是它们告诉我们它可能是恶意的。(注意,颜色并不对应静态和动态类别;相反,它代表了每条规则的严肃性,红色(这里是深灰色)比黄色更可疑。
接下来的三个签名来自文件的动态分析。第一个签名表示程序试图识别系统的硬件和操作系统。第二个迹象表明,该程序使用了Windows的一个有害特性,即备用数据流(ADS),它允许恶意软件隐藏磁盘上的数据,以便在使用标准文件系统浏览工具时不可见。第三个签名表示文件更改了Windows注册表,以便当系统重新启动时,它指定的程序将自动执行。这将重新启动恶意软件,每当用户重新启动他们的系统。
正如您所看到的,即使在这些自动触发的签名级别上,动态分析也会极大地增加我们对文件预期行为的了解。
七、截屏面板
在签名面板下面是截图面板。这个面板显示了恶意软件运行时动态分析环境桌面的截图。图3-4显示了这样一个示例。
您可以看到,我们正在处理的恶意软件是勒索软件,这是一种恶意软件,加密目标的文件,并迫使他们付出代价,如果他们想要回他们的数据。通过简单地运行我们的恶意软件,我们就可以发现它的目的,而不用求助于逆向工程。
八、修改后的系统对象面板
屏幕截图下面的一行标题显示了恶意软件样本的网络活动。我们的二进制文件没有参与任何网络通信,但是如果它参与了,我们将在这里看到它所联系的主机。图3-5显示了Summary面板。
这将显示恶意软件修改了哪些系统对象,如文件、注册表项和互斥对象。
在每个文件路径之后都是一个扩展名为.locked的文件,我们可以推断它是已替换文件的加密版本。接下来,我们将查看Registry Keys选项卡,如图3-7所示。
注册表是Windows用来存储配置信息的数据库。配置参数存储为注册表项,这些项具有关联的值。与Windows文件系统上的文件路径类似,注册表键也是用反斜杠分隔的。Malwr.com显示了我们的恶意软件修改了哪些注册表键。虽然这不是如图3 - 7所示,如果你把完整的报告在malwr.com上,你应该看到一个明显的注册表键我们的恶意软件改变微软HKEY_LOCAL_MACHINE \ SOFTWARE \ \ Windows \ CurrentVersion \运行,这是一个告诉Windows注册表键运行程序每次用户登录。很可能是我们的恶意软件修改了这个注册表,以告诉Windows在每次系统启动时重新启动恶意软件,从而确保恶意软件感染从重启持续到重启。
malwr.com报告中的互斥对象选项卡包含恶意软件创建的互斥对象的名称,如图3-8所示。
互斥锁是一种锁定文件,它表示程序已经拥有了某些资源。恶意软件通常使用互斥体来防止自己感染系统两次。结果,至少创建了一个互斥量(ctf . timlistcache . fmpdefaults -1-5-21-1547161642-507921405-839522115- 1004tex)。安全社区知道DefaultS-1-5-21-1547161642-507921405-839522115-1004是与恶意软件相关的,可能在这里服务于这个目的。
九、API调用分析
单击malwr.com UI左侧面板上的behavior Analysis选项卡,如图3-9所示,应该会显示关于恶意软件二进制代码行为的详细信息。
这显示了恶意软件启动的每个进程的API调用,以及它们的参数和返回值。仔细阅读这些信息非常耗时,并且需要Windows api的专业知识。虽然对恶意软件API调用分析的详细讨论超出了本书的范围,但是如果您有兴趣了解更多信息,您可以查询各个API调用来发现它们的效果。
虽然malwr.com对于动态分析单个恶意软件样本是一个很好的资源,但是对于对大量样本执行动态分析却不是很好。在动态环境中执行大量样本对于机器学习和数据分析非常重要,因为它可以识别恶意软件样本的动态执行模式之间的关系。创建能够基于恶意软件的动态执行模式检测恶意软件实例的机器学习系统需要运行数千个恶意软件样本。
除了这个限制之外,malwr.com不提供机器可解析格式(如XML或JSON)的恶意软件分析结果。要解决这些问题,您必须设置并运行自己的CuckooBox。幸运的是CuckooBox是免费的开源软件。它还提供了设置您自己的动态分析环境的逐步说明。我鼓励您访问http://cuckoosandbox.org/。现在您已经了解了如何解释malwr.com(它在幕后使用CuckooBox)中的动态恶意软件结果,您还将了解如何在CuckooBox启动并运行后分析CuckooBox结果。
十、基本动态分析的局限性
动态分析是一个强大的工具,但它不是恶意软件分析的万灵药。事实上,它有严重的局限性。一个限制是,恶意软件的作者知道CuckooBox和其他动态分析框架,并试图绕过它们,让它们的恶意软件在检测到自己在CuckooBox中运行时无法执行。CuckooBox的维护人员知道恶意软件的作者试图这样做,所以他们试图绕过恶意软件绕过CuckooBox的企图。这种猫捉老鼠的游戏不断地上演,以至于一些恶意软件样本不可避免地会检测到它们正在动态分析环境中运行,而当我们试图运行它们时却无法执行。
另一个限制是,即使没有任何规避尝试,动态分析也可能无法揭示重要的恶意软件行为。考虑恶意软件二进制文件的情况,它在执行时连接回远程服务器,并等待发出命令。例如,这些命令可能告诉恶意软件样本在受害主机上查找特定类型的文件,记录击键,或打开网络摄像头。在这种情况下,如果远程服务器没有发送任何命令,或者不再运行,这些恶意行为都不会显示。由于这些限制,动态分析并不是恶意软件分析的万能工具。事实上,专业的恶意软件分析师将动态分析和静态分析结合起来,以达到最佳的可能结果。
总结
在本章中,您使用malwr.com对勒索软件恶意软件样本进行了动态分析,以分析结果。您还了解了动态分析的优点和缺点。既然您已经学习了如何进行基本的动态分析,那么您已经准备好深入研究恶意软件数据科学。
本书的其余部分侧重于在基于静态分析的恶意软件数据上执行恶意软件数据科学。我将重点介绍静态分析,因为与动态分析相比,静态分析更简单、更容易获得良好的结果,这使它成为您接触恶意软件数据科学的良好起点。不过,在后面的每一章中,我还将解释如何将数据科学方法应用于基于动态分析的数据。