使用波动性框架分析物理内存转储
导语:在本文中,我们分享使用波动性框架进行物理内存转储分析的经验。本文将对需要分析 RAM 映像并考虑使用 Volatility 的开发人员有所帮助。
分析物理内存转储可以帮助您发现错误、病毒和恶意软件。操作系统在崩溃时总是会创建易失性转储文件,这些文件包含可用于确定系统崩溃原因的信息。
此外,分析 RAM 转储对于提高系统性能和收集网络犯罪证据很有用。
在本文中,我们分享使用波动性框架进行物理内存转储分析的经验。本文将对需要分析 RAM 映像并考虑使用 Volatility 的开发人员有所帮助。
易失性存储器是需要电流来保留数据的计算机存储器。当电源关闭或系统因任何原因关闭时,存储在易失性存储器中的所有数据(即所有易失性数据)都将被擦除。
易失性数据可能包括浏览历史记录、聊天消息和其他应用程序信息,这些信息通常不会存储在设备上的其他位置,并且不太可能恢复。最常见的易失性存储器类型是随机存取存储器或RAM。
RAM 存储有关所有正在运行的进程和服务(系统级和用户级)的当前状态的信息。由于数据不断变化,不可能直接使用 RAM。因此,存储在 RAM 中的数据只能作为图像进行访问。
内存转储是包含特定时间(通常是系统崩溃时)计算机易失性内存副本的文件。内存转储也可以定义为获取 RAM 中包含的所有信息并将其写入存储驱动器的过程。
捕获 RAM 的内存转储可用于查找有关正在运行的程序和操作系统本身的信息。
开发人员通常分析内存转储以:
收集诊断信息
找出系统崩溃的原因
找出内存泄漏、错误和错误的原因
找出可疑活动的原因(例如恶意软件)
内存转储分析广泛应用于计算机取证。该领域的目标是捕获和收集计算机和数字存储介质上发现的数字信息,并确定该信息是否可以用作法律案件中的证据。组织经常使用计算机取证作为网络安全深度防御方法的一个要素。例如,组织可以利用计算机取证的法律和技术方面的知识来确定其网络是否已受到损害。
有几种流行的 RAM 图像分析工具,包括Redline、SANS SIFT、Rekall Forensics和MemGator。为了向您展示如何分析物理内存转储的示例,我们选择了波动性框架。让我们探讨一下这个工具的优点和缺点。
假设您在计算机的 RAM 中发现了恶意软件活动。现代计算机病毒不会将数据存储在硬盘上。相反,它们存在于 RAM 中,其中包含有关开放网络连接、文件描述符(处理程序)、库、运行进程等的不断变化的数据。
因此,使用传统的防病毒软件检测和消除恶意软件可能具有挑战性,有时甚至是不可能的。您可以做的是使用在可疑活动时拍摄的解析内存映像来进行全面分析并检测病毒。但要做到这一点,您需要找到一个工具来分析这些数据。
在本文中,我们选择了Volatility Framework,因为它是一个开源项目,拥有大型社区和大量插件,涵盖了易失性内存转储分析所需的一切。
可以使用波动率框架检索的基本信息:
拍摄图像的日期和时间
正在运行的进程
打开网络套接字
打开网络连接
为每个进程加载的库
每个进程的打开文件名
内存地址
操作系统内核模块
物理偏移到虚拟地址的映射
波动性框架是目前最流行的易失性内存分析工具之一。这个跨平台框架允许您处理易失性内存的图像、分析它们、从中获取有关系统过去状态的数据等等。
使用 Volatility 的主要缺点是缺乏图形界面,因为通过命令行工作可能不方便。此外,RAM 是一个动态变化的对象。因此,您总是有可能在内存转储中获得不一致的数据状态,从而导致无法解析该数据。因此,不能 100% 保证 Volatility 可以从内存转储中提取特定文件。
尽管如此,波动率框架还是有很多优点。例如这个工具:
可在 Windows、Linux 和 Mac 上运行
支持多种文件格式
配备快速高效的算法来分析大型系统的 RAM 转储
拥有一个大型存储库,用于存储不同操作系统的配置文件
显示正在运行的进程和打开的网络套接字的列表
更详细的文档和插件列表可以在官方网站和项目的GitHub 页面上找到。现在让我们探讨如何使用 Volatility Framework 进行内存分析。
要使用波动性框架,您需要 Python 2.6 或更高版本。Python 默认安装在大多数 Unix 系统上,但在 Windows 上安装它也很容易。要获取最新版本的波动性框架,请使用git clone命令下载最新源或将其下载为 ZIP 存档。
安装 Volatility 后,您可以开始使用 RAM 映像。分析图像中的数据时,有必要使用特定操作系统的配置文件。配置文件是由特定操作系统内核中使用的结构数据、算法和符号组成的数据集合。
在Windows系统中,配置文件存储在源代码中,因此您不必执行任何额外的操作。对于 Unix 系统,您必须自己创建配置文件。由于存在大量独特的内核程序集,因此不可能为所有可能的选项准备一个数据集。
您可以在 Volatility GitHub 页面上找到有关为 Linux 和 macOS 创建 Unix 系统配置文件的更多信息:
让我们看看如何在 Windows 中使用 Volatility。
首先,我们需要了解转储是从哪个系统获取的。这可以使用 imageinfo 插件来完成。从包含波动源的目录执行以下请求:
python vol.py -f %image_name% imageinfo
下面的屏幕截图显示了该命令的输出:
在这种情况下,我们需要关注以下字段:
Suggested Profile(s)— 从中获取图像的可能操作系统的列表
AS Layer2: FileAdressSpace— 分析后的物理内存映像的路径
Image date and time— 拍摄图像的日期和时间 (UTC)
Image local date and time— 捕获图像的当地时间
在我们的示例中,操作系统的版本是 Windows Server 2012 R2 x64。这是 Volatility 建议的,但不是第一个选择。不幸的是,由于 RAM 操作的原理,我们无法通过内存映像 100% 准确地确定系统的配置文件。由于 RAM 不断变化,因此工具在某个时间点可能无法将其图像识别为有效。不幸的是,没有任何工具可以更可靠地完成这项工作。
让我们继续我们的转储分析。一旦我们从发生过事件的 PC 获得物理内存转储,我们就可以分析所有正在运行的进程以查找可疑进程。
进程列表或树将向我们显示所有父进程的子进程。然后我们可以加载特定进程的内存转储并分析它在 PC 上做了什么。
借助 Volatility,我们可以使用pslist和pstree插件列出所有正在运行的进程。pstree插件以树的形式显示活动进程的列表,并且比pslist更详细,后者显示进程与其父进程的链接。
为了说明这一点,让我们看看使用两个插件的同一请求的结果:
python vol.py -f %path_to_image% --profile=%profile_name% pstree
需要-f标志来指定 RAM 转储的路径:
python vol.py -f %path_to_image% --profile=%profile_name% pslist
虽然这种调用列表的方式可以让我们看到所有进程,但是我们无法知道父进程和子进程之间的继承关系。因此,我们无法看到哪个进程触发了可疑活动。
除了用于查看所有进程列表的插件之外,Volatility 还包括许多其他有用的插件。您可以使用–info命令调用所有这些列表:
python vol.py --info
此命令的输出包括各种操作系统的可用配置文件列表、可用地址空间列表和插件列表。
Volatility 2.6.1 有超过 250 个插件。例如,剪贴板插件可提取 Windows 剪贴板的内容,而句柄插件可打印每个进程的打开句柄列表。
如果我们需要查看进程的操作,查看库列表比加载 RAM 映像要快得多。库列表可以帮助我们假设特定进程对系统执行了哪些操作。然后我们就可以决定是否进行进一步的分析。
现在,我们通过运行dlllis插件来查找进程 ID 2612 (PID 2612) 的postgres.exe进程中使用的动态链接库(dll)的列表。对于本示例,我们从postgres.exe进程列表中随机选择 PID 2612,它不是系统进程。
为了更详细地分析该进程,您可以从原始 RAM 映像中加载该进程使用的整个分配的内存。
为此,请使用memdump插件:
python vol.py –f% image_name% memdump –p 2612 --dump =% dump_directory%
-f标志指示文件的路径。-p标志指示所需的 PID。保存后,我们得到一个可以用任何反编译器分析的.dmp文件。
分析 Unix 系统的 RAM 转储几乎是相同的,除了获取用于解析图像的配置文件的方法之外。由于即使对于一些最流行的发行版来说,也有大量的内核程序集,因此创建适用于 Windows 的现成配置文件将具有挑战性。
通过获取物理内存转储并使用波动性框架来分析它们,您可以:
即使在事件发生后也可以随时进行分析
分析物理内存转储而不影响系统可用性
如果您已经注意到可疑进程(例如,访问系统文件或可疑 IP 地址的进程),请在内存映像中查找恶意活动的其他证据
如果在采取上述步骤后检测到任何恶意进程,此信息将提示您它可能影响哪些文件、进程、连接或处理程序。
在本文中,我们探讨了如何使用波动性进行内存分析并与物理内存图像进行交互。该框架使我们能够找出在某个时间点计算机上运行的进程 - Process Explorer 及其类似工具等其他工具无法做到这一点。
内存映像显示了拍摄时系统的完整状态,并且无法更改。因此,波动性可以用于查找恶意软件、错误、错误和系统崩溃的原因,以及使用所有获得的数据作为调查与计算机信息相关的犯罪的数字证据。
发表评论