Win-Profiles
快速开始¶
在分析Windows 7或更高版本系统的内存时,选择正确配置文件的指南如下:
- 如果你知道目标机器的构建号(从实时机器或内存收集工具保留的元数据中获取),请参阅下表中的“构建”列以选择正确的配置文件名称。
- 否则,尝试确定内存收集的时间,并考虑目标系统是否接收了Microsoft更新。在下表中查找该日期,以帮助选择要尝试的相关配置文件。
- 如果其他方法都失败了,运行kdbgscan以获取配置文件建议,并结合插件输出的其他信息(如主要/次要构建号、构建字符串和进程/模块数量)考虑这些建议。
背景¶
长期使用Volatility的用户会发现,在2.6版本中,Windows配置文件名称有所不同。特别是,我们添加了一组新的配置文件,名称中包含了Windows OS构建号,例如Win10x86_14393
用于10.0.14393.0
。添加这些配置文件的目的是支持Microsoft为修复漏洞、安全更新和功能增强而频繁更改关键数据结构的趋势。这主要适用于Windows 7及更高版本。如果你一直在关注我们的代码库,在发布前的几个月里,你可能已经看到了根据某些版本的Windows内核文件的PDB GUID命名的配置文件(即Win10x64_1AC738FB
)。我们决定放弃PDB命名约定,转而使用上述构建号格式。以下部分涵盖了你需要了解的关于这些新配置文件的信息,包括何时使用它们以及如何选择它们。
问题¶
在大多数情况下,操作系统补丁一次只会更改几个数据结构。因此,当你运行Volatility插件时,大多数插件在收集自最近打补丁的系统的内存样本上可能仍然可以正常工作。然而,依赖于更改结构的少数插件会报告不完整或不正确的结果。以下是使用错误配置文件的常见迹象列表。
- pslist成功枚举进程,但进程名称看起来被破坏了。例如,你可能会在末尾看到合法进程名称的一部分,如
?|?A☺???csrss.ex
- psscan没有找到任何进程
- filescan没有找到任何文件
- hivelist没有找到任何注册表文件
- vadinfo输出看起来被破坏了
虽然罕见,但有些补丁会破坏Volatility识别DTB地址(用于虚拟地址转换)的能力,导致没有任何插件能够工作。如果你遇到任何这些问题,请参考下表来确定正确的配置文件。
Profile Lists¶
这个表格总结了Volatility 2.6中添加的新配置文件。例如,如果你有一个64位Windows 10内存样本,并且标准的Win10x64
配置文件表现出上述症状,你可能需要使用其中一个新配置文件。虽然每个主要操作系统发布只有几个可能性,并且按顺序尝试它们不会花费太长时间,但如果你知道你的目标系统的构建号或大致估计它最后一次完全打补丁的时间,你可以加快这个过程。如果你可以访问运行中的机器,这些信息是容易获得的。否则,一些内存获取工具,如Volexity Surge Collect Pro,会与内存捕获一起记录必要的元数据,从而为你保留它。
表格中的构建号和日期并不意味着相应的配置文件/仅/适用于该单个Windows构建。例如,Win10x64_10586
很可能适用于2016-04-23的10.0.10586和2016-07-16的10.0.14393之间的所有构建。
OS | Build | Date | PDB | Profile |
---|---|---|---|---|
10 x64 | 10.0.10586.306 | 2016-04-23 | 1AC738FB | Win10x64_10586 |
10 x64 | 10.0.14393.0 | 2016-07-16 | DD08DD42 | Win10x64_14393 (Anniversary) |
10 x64 | 10.0.15063.0 | 2017-04-04 | Win10x64_15063 (Creators) | |
10 x86 | 10.0.10586.420 | 2016-05-28 | 44B89EEA | Win10x86_10586 |
10 x86 | 10.0.14393.0 | 2016-07-16 | 9619274A | Win10x86_14393 (Anniversary) |
10 x86 | 10.0.15063.0 | 2017-04-04 | Win10x86_15063 (Creators) | |
2008 R2 SP1 x64 | 6.1.7601.23418 | 2016-04-09 | 632B36E0 | Win2008R2SP1x64_23418 |
2008 R2 x64 | 6.3.9600.18340 | 2016-05-13 | 54B5A1C6 | Win2012R2x64_18340 |
7 SP1 x64 | 6.1.7601.23418 | 2016-04-09 | 632B36E0 | Win7SP1x64_23418 |
7 SP1 x86 | 6.1.7601.23418 | 2016-04-09 | BBA98F40 | Win7SP1x86_23418 |
7 SP1 x64 | 6.1.7601.24000 | 2018-01-09 | Win7SP1x64_24000 | |
7 SP1 x86 | 6.1.7601.24000 | 2018-01-09 | Win7SP1x86_24000 | |
8 x64 | 6.3.9600.18340 | 2016-05-13 | 54B5A1C6 | Win8SP1x64_18340 |
上表可能不会在每次向Volatility添加新配置文件时更新。要获取最准确/最新的数据,请运行--info
并使用grep
搜索Win7
或Win10
(取决于你感兴趣的版本)。例如:
$ python vol.py --info | grep Win10
Volatility Foundation Volatility Framework 2.6.1
Win10x64 - A Profile for Windows 10 x64
Win10x64_10240_17770 - A Profile for Windows 10 x64 (10.0.10240.17770 / 2018-02-10)
Win10x64_10586 - A Profile for Windows 10 x64 (10.0.10586.306 / 2016-04-23)
Win10x64_14393 - A Profile for Windows 10 x64 (10.0.14393.0 / 2016-07-16)
Win10x64_15063 - A Profile for Windows 10 x64 (10.0.15063.0 / 2017-04-04)
Win10x64_16299 - A Profile for Windows 10 x64 (10.0.16299.0 / 2017-09-22)
Win10x64_17134 - A Profile for Windows 10 x64 (10.0.17134.1 / 2018-04-11)
Win10x64_17763 - A Profile for Windows 10 x64 (10.0.17763.0 / 2018-10-12)
Win10x64_18362 - A Profile for Windows 10 x64 (10.0.18362.0 / 2019-04-23)
Win10x64_19041 - A Profile for Windows 10 x64 (10.0.19041.0 / 2020-04-17)
Win10x86 - A Profile for Windows 10 x86
Win10x86_10240_17770 - A Profile for Windows 10 x86 (10.0.10240.17770 / 2018-02-10)
Win10x86_10586 - A Profile for Windows 10 x86 (10.0.10586.420 / 2016-05-28)
Win10x86_14393 - A Profile for Windows 10 x86 (10.0.14393.0 / 2016-07-16)
Win10x86_15063 - A Profile for Windows 10 x86 (10.0.15063.0 / 2017-04-04)
Win10x86_16299 - A Profile for Windows 10 x86 (10.0.16299.15 / 2017-09-29)
Win10x86_17134 - A Profile for Windows 10 x86 (10.0.17134.1 / 2018-04-11)
Win10x86_17763 - A Profile for Windows 10 x86 (10.0.17763.0 / 2018-10-12)
Win10x86_18362 - A Profile for Windows 10 x86 (10.0.18362.0 / 2019-04-23)
Win10x86_19041 - A Profile for Windows 10 x86 (10.0.19041.0 / 2020-04-17)