内存取证工具Volatility 3 正式发布

admin 2025年5月18日20:57:21评论3 views字数 4588阅读15分17秒阅读模式

Volatility 团队非常自豪和兴奋地宣布 Volatility 3 的第一个官方版本,它不仅可以完全取代 Volatility 2 用于现代调查,而且还具有许多令人兴奋的新功能!

在这篇博文中,我们记录了许多这些新功能,快速浏览了 Volatility 3 本身,并提供了许多资源的链接,这些资源将帮助分析师掌握前沿的内存取证技术和能力。

随着 Volatility 3 的正式发布,Volatility 2 现已弃用,并且 GitHub 存储库已被存档。

一览

  • Volatility 3 已经达到了功能奇偶校验;Volatility 2 现已弃用。
  • Volatility 3 支持最新版本的 Microsoft Windows 和 Linux。
  • Volatility 3 拥有许多 Volatility 2 中从未提供过的全新插件和功能。
  • Volatility 3 将被积极支持多年。
  • 内存分析 | 恶意软件和内存取证培训课程 已完全更新,重点关注 Volatility 3。

Volatility 的历史和 Volatility 3 的动机

Volatility 最初以 VolaTools 的形式在 2007 年黑帽大会上亮相 ,此后已成为使用最广泛的开源内存取证框架。该框架的第二个版本 Volatility 2 一直是该框架的长期主要版本,并为分析师提供了许多创新功能,用于执行从内部威胁到恶意软件分析再到主动威胁狩猎的调查。

随着现代调查的规模和范围发生变化,单个系统默认情况下从低至 512MB 或 1GB 的 RAM 发展到如今的许多 GB,标准调查涉及数十个系统,Volatility 2 的初始设计开始变得紧张。广泛的用户群多年来也要求提供许多功能,例如通用输出格式、默认时间线集成和插件工具,这些在 2007 年是很难设想和设计的。

查看 Volatility Framework 的完整历史记录,请看详细时间线 !

为了纠正这种情况并更新 Volatility 以满足现代调查的广泛需求,Volatility 3 从头开始设计,注重可扩展性、易用性和长期的、灵活的 API。 这项架构和设计工作由 Mike Auty (@ikelos) 领导,使 Volatility 3 能够从一开始就解决 Volatility 2 的用户和开发人员的所有痛点。

这项工作的重点包括取消所有操作系统的 --profile 参数要求、自动整合所有生成时间戳的插件的时间线,以及可扩展的结构化输出格式,并自动支持添加到框架中的所有插件。 这些功能,以及稍后讨论的 --filters 功能,在最近基于 Volatility 3 的研讨会和培训中收到了非常积极的反馈。

详细的新功能

在本节中,我们将重点介绍 Volatility 3 中一些最有用的、评价很高的新功能。完整的项目文档会持续添加到我们的 Read The Docs 网站 上,我们也很乐意接受核心团队之外的贡献者提供的优质文档贡献。

不再需要 ‐-profile!

所有用户都欢欣鼓舞的功能是 Volatility 3 中删除了 ‐-profile。Volatility 3 不再依赖用户输入来确定操作系统类型,而是可以自行确定特定的操作系统版本,从而获得更准确的结果,并解锁跨多个插件和内存样本进行脚本分析的能力。

对于 Windows,如果分析系统在线并可以访问 Microsoft 的符号服务器,则此处理会自动发生。对于离线 Windows 用户,或用于分析 Linux 系统,请参阅 Read The Doc 链接以添加支持和自动化。

‐-filters 标志

即使是命令行高手也常常发现很难使用 grep 和 awk 等工具正确过滤 Volatility 2 的输出。当试图搜索跨插件的特定数字时,这些插件会生成多个数字列,以及搜索非常短的字符串时,尤其如此。

值得庆幸的是,由于增加了 the ‐-filters 标志 ,用户不再需要为此担心。有了这个功能,用户可以指定一个或多个列进行自动搜索,并且只生成匹配至少一个过滤器的行。搜索词可以是一个简单的字符串、完整的正则表达式或一个数值。

下图显示了我们培训课程中的一张幻灯片,其中 ImageFileName 列的 windows.pslist 被过滤为仅包含 jqs.exe 的条目。幻灯片底部还包括关于不同输入格式的注释。

内存取证工具Volatility 3 正式发布
volatility3-filters-vadinfo

如前所述,‐-filters 标志也支持数值,如下面的截图所示,当列出从地址 0x1000000 开始的内存范围 (VAD) 时:

内存取证工具Volatility 3 正式发布
volatility3-plsist-filter-jqs

在此示例中,Start VPN 列正在通过其十六进制地址进行过滤。使用 Volatility 2 和 grep,这个数字可能部分或完全匹配任何列,导致包含不需要的输出。使用 Volatility 3,仅搜索指定的列,并且仅搜索指定的值。

我们强烈建议用户尝试和学习此功能,而不是使用基于通过操作系统的内置过滤工具管道 Volatility 输出的不精确过滤器。

通用输出格式,包括对齐表

在 Volatility 3 中,默认的输出渲染器将按照插件生成行的顺序生成行,并且每行的列宽各不相同,这与 Volatility 2 相同。这可能很难阅读,因为列值可能会交错。在上方的截图中,由于 Volatility 根据列长对输出进行对齐,因此 VAD 的元数据非常容易阅读。这种对齐是由于在命令行上指定了 -r pretty。

由于 Volatility 3 的设计,所有插件都通用地支持所有输出格式。在撰写本文时,除了默认的 quick 和 pretty 之外,输出选项还包括 csv、json 和 jsonl。如果您希望贡献自己的输出格式,请参阅 Volatility 源代码中的 volatility3/volatility3/cli/text_renderer.py,其中实现了现有的渲染器。

请注意,框架范围的命令行选项,例如 -r 和 ‐-filters,必须在插件名称之前指定才能生效。

一致的数据提取配置

使用 Volatility 2 从内存中提取文件、进程、内存范围和内核模块需要一定的学习曲线,因为每个插件都可以自由选择自己的命令行选项名称、输入格式和输出结构。 Volatility 3 的核心架构为插件开发人员和用户引入了一个一致的界面。

使用 Volatility 3,所有提取数据的核心插件都需要遵循文件提取 API,这意味着:

  • 用户可以在插件名称前添加 -o 来指定输出目录以写入文件。否则,文件将被写入调用 Volatility 的目录。
  • 所有提取数据的插件都采用一个 ‐-dump 选项。

操作系统支持

为了支持对现代系统的调查,Volatility 3 在各种操作系统版本上进行了开发和广泛测试(完整细节将在本文后面介绍),包括前沿版本。这种支持是持续的,Volatility 团队将继续修复错误并在操作系统发布不断发展的同时添加新功能。

Windows 支持

Volatility 3 旨在支持 Windows XP 到 11,及其服务器版本,适用于 32 位和 64 位 Intel 系统。我们注意到许多旧内核,例如早期版本的 XP 和 Vista,在微软的服务器上存在损坏和/或缺失的调试符号文件,因此不支持这些版本中的某些内核版本。鉴于这些版本的年代久远,我们希望分析师不会经常遇到它们,但我们痛苦地意识到它们仍在生产环境中使用。

Linux 支持

Volatility 3 旨在支持 Linux 2.6.18 (发布年份 2008) 直到最新版本。鉴于 Linux 内核核心变化的步伐,以及各种发行版所做的各自修改,我们对此并非总是完美,因此如果您正在针对前沿内核进行测试并且插件出现问题,请在我们的 GitHub 追踪器上提交错误报告。

我们注意到,Linux 和 Windows 的 ARM 支持正在开发中,但由于我们团队最近专注于实现同等版本发布,目前还没有正式纳入的时间表。

macOS

苹果公司公开宣布并引发争议,决定将第三方排除在内核之外——至少是那些希望通过合法途径进入的第三方。 因此,在按需情况下,无法获取现代苹果系统的内存。 让系统信任并加载内核扩展以收集内存需要大量的设置(提前)并且至少需要重新启动一次系统。 因此,Volatility 3 不支持 macOS。

幸运的是,在企业环境中,获取障碍的挑战较小,因为系统可以通过 MDM 进行配置以接受第三方驱动程序。 许多组织目前使用这种方法来在其关键 macOS 系统上获得内存取证的重要功能,而无需禁用 SIP 或引入新的安全风险。 我们建议联系 Volexity,以获取企业 macOS 内存获取解决方案以及对最新版本 macOS 的分析支持。

发布时间表

我们计划每三到四个月发布一次 Volatility 3 的官方版本。如果框架中发现了关键错误,或者操作系统供应商发布了破坏大量插件或分析工作流程的更新,此时间表可能会发生变化。请参阅这篇博文的结尾,了解有关更新的新闻的方法。

GitHub 上的发布页面包含每个版本的所有文件和更改日志条目。这包括一个 Python wheel 文件以及源代码快照。除了错误修复之外,更改日志还列出了自上次发布以来添加的新插件。

Volatility 3 将在未来很长一段时间内保持积极开发。如果您在最新版本的 Volatility 3 中遇到错误,您应该检查 GitHub 存储库的 develop 分支是否已修复该错误。 develop 分支包含自上次官方发布以来对 Volatility 3 的所有已批准的代码更改,并将包含自发布以来应用的错误修复。

内存取证工具Volatility 3 正式发布
Vol3-feature-parity-release-github-snapshot

自动化测试

为了在发布前检测分析错误,并避免将分析回归添加到框架中,Volatility 3 采用了几种现代编码实践。

首先,在允许合并之前,会在拉取请求上运行一系列自动化测试 。我们不断扩展这些测试以提供更好的覆盖范围;捕捉常见的、无意的 Volatility 3 API 误用;并执行编码标准 。我们接受为实现这些目标而进一步测试的贡献,因此,如果您是 CI/CD 专家,请考虑贡献更多测试!

其次,在发布官方版本之前,会针对之前的版本进行全面的回归测试。这次回归测试使用 Volexity 维护的一组约 500 个 Windows 和 Linux 内存样本,涵盖了广泛的操作系统版本;合法的第三方应用程序;恶意软件样本;开源和私有后渗透框架;以及反取证工具。这次回归测试旨在确保 Volatility 3 在其整个生命周期内稳定支持工件和工作流程。

致谢

我们衷心感谢自 2008 年以来一直支持我们社区。正如任何软件开发人员所知,这种规模和大小的完全重写通常会失败。最终推出 Volatility 3 成为可能,仅仅是因为了不起的社区一直在支持和维护该项目。

特别是,很高兴看到新一代贡献者正在确保 Volatility 将继续在未来蓬勃发展。

我们还要感谢 Volexity 持续的支持和资源。

结束语

我们希望 Volatility 3 能继续支持成功的调查,并激励新一代的 DFIR 研究人员。

一如既往,如果您在活动中看到我们,请来打个招呼,我们希望您能在今年十月的 FTSCon 上加入我们!(请关注即将发布的博文,宣布详细信息!)

-- Volatility 团队

原文链接:https://volatilityfoundation.org/announcing-the-official-parity-release-of-volatility-3/

原文始发于微信公众号(独眼情报):内存取证工具Volatility 3 正式发布

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月18日20:57:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内存取证工具Volatility 3 正式发布https://cn-sec.com/archives/4075372.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息