Windows 注册表取证实践-缓存提取

Windows 注册表取证实践-缓存提取

Shimcache

也称为应用程序兼容性缓存 (AppCompatCache),是有关已在系统上运行的可执行文件的信息记录,它通常保存文件的名称和路径、运行的时间戳和其他元数据等信息。此功能旨在证明较新版本的 Windows 上较旧的应用程序具有向后兼容性。在较旧的 Windows 版本(例如 7/8)中,此工件只有一个标记文件是否已执行的功能。但是,在 Windows 10 中,除了此功能之外,shimcache 还存储文件资源管理器中可见的可执行文件名称。

shimcache 存储内容:

  • 可执行执行的证据
  • 可执行文件存在的证据(只有GUI 查看的记录,从 CLI 列出的文件名不会填充在此注册表项中

值得注意的是,shimcache 可以被攻击者修改或删除,因此在检查 shimcache 时保留证据的完整性非常重要。位于:

C:\Windows\system32\config\SYSTEM: CurrentControlSet\Control\Session Manager\AppCompatCache

注意:如果在 SYSTEM 配置单元中没有看到名为“CurrentControlSet”的键,那么可以选择 ControlSet001,因为它和当前的 ControlSet001 实际上是相同的。其余路径相同。

AppCompatCacheParser

Shimcache 数据不像 shellbags 那样是直接可读的格式。我们可以使用 Eric Zimmerman 的另一个工具,名为 AppCompatCache parser。

https://ericzimmerman.github.io/#!index.md

此工具基于 CLI。它将解析工件并创建带有输出的 CSV 文件。我们从 CLI 运行以查看可用的参数。注意:以管理员权限运行命令提示符。

C:\Users\Administrator\Downloads\AppCompatCacheParser>AppCompatCacheParser.exe
Option '--csv' is required.

Description:
  AppCompatCache Parser version 1.5.0.0

  Author: Eric Zimmerman (saericzimmerman@gmail.com)
  https://github.com/EricZimmerman/AppCompatCacheParser

  Examples: AppCompatCacheParser.exe --csv c:\temp -t -c 2
            AppCompatCacheParser.exe --csv c:\temp --csvf results.csv

            Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes

用法:
AppCompatCacheParser [选项]

选项:
-f         <f>:要处理的 SYSTEM 配置单元的完整路径。如果未指定此选项,则将使用实时注册表。
--csv      <csv>(必填):用于保存 CSV 格式结果的目录。请务必用双引号括起完整路径。
--csvf     <csvf>:用于保存 CSV 格式结果的文件名。如果存在,则覆盖默认名称。
--c        <c>:要解析的 ControlSet。默认是提取所有控制集[默认值:-1]。
-t:       按降序对最后修改时间戳进行排序[默认值:False]。
--dt       <dt>:显示时间戳时要使用的自定义日期/时间格式。有关选项,请参阅 https://goo.gl/CNVq0k[默认值:yyyy-MM-dd HH:mm:ss]。
--nl:     当为 true 时,忽略脏配置单元的事务日志文件[默认值:False]。
--debug:  在处理过程中显示调试信息[默认值:False]。
--trace:  在处理过程中显示跟踪信息[默认值:False]。
--version:显示版本信息。
-?、-h、--help:显示帮助和用法信息。

命令: AppCompatCacheParser.exe –csv “保存路径” –csvf 文件名

AppCompatCacheParser.exe --csv .\ --csvf shimcache.csv

然后使用时间线浏览器打开 CSV,它以比 Excel 更整洁、更干净的格式显示信息,并根据时间戳对条目进行排序。

我们可以从文件资源管理器中找到最近执行或浏览的应用程序,如果我们知道事件发生的时间,可以查找在该时间范围内执行的应用程序。

取证调查人员可以使用 Shimcache 来确定系统上运行了哪些程序、执行的确切时间戳以及可执行文件是否存在(即使它们尚未执行)。即使文件本身很久以前就被删除,它也会存储已执行应用程序的信息。这在各种情况下都很有用,包括事件响应、恶意软件分析和数字取证。

举个例子:
假设目录中有 20 个不同的可执行文件。在文件资源管理器中打开该目录,但只有 5 个可执行文件可见,因为文件资源管理器的大小已调整为较小比例。在这种情况下,shimcache 将保存这 5 个可执行文件的信息,即使它们未被执行。如果最大化资源管理器窗口并且所有 20 个文件均可见,则这 20 个可执行文件将位于 shimcache 数据中。这些文件可能只是在文件资源管理器上浏览过。

Shimcache 是一种有价值的取证工具,因为它可以证明文件的存在,即使该文件已从磁盘中删除。另一个价值是它存储我们上面讨论的数据,无论它来自本地系统、网络共享还是 USB 设备。

Amcache

amcache hive 是 Windows 系统上的一个hive,其中包含有关在系统上执行的应用程序和程序的信息。它是 Windows 应用程序兼容性缓存的一部分,存储有关在系统上运行的程序的信息,以帮助它们更有效地运行。

从取证的角度来看,amcache可用于确定在系统上运行的程序及其运行的确切时间。这些信息对于试图确定嫌疑人活动的取证人员很有用。它还可用于识别软件在系统上的安装时间以及安装文件的位置。这对于识别未经授权的软件安装或跟踪组织中的软件部署非常有用。Amcache hive 还存储来自外部设备/源(如网络共享、USB 设备等)的已执行应用程序数据。

Amcache 包含键值对,保存应用程序路径、文件元数据(描述、发布者名称)、时间戳(创建、修改和删除)和文件的 SHA-1 哈希等信息。该hive位于:

- C:\Windows\AppCompat\Programs\Amcache.hve

Amcache 和 Shimcache 之间的区别 

与 shimcache 相比,Amcache 可以被视为更可靠的执行证据。Amcache 存储其他数据,如首次执行时间戳、删除时间戳(如果文件被删除)、可执行文件的哈希值等。它还存储应用程序发布者名称,这可能有助于我们找到可疑和不受信任的文件,因为它们没有任何发布者名称。虽然在创建可执行文件时添加发布者名称并不困难,但大多数恶意软件生成器(如 metasploit、empire)在创建 stager 时都没有任何元数据。

在 Windows 7 及更早版本中,amcache 被命名为“RecentfileCache”,位于:

- C:\Windows\AppCompat\Programs\recentfilecache.bcf

该hive对应的键位于:

C:\Windows\appcompat\Programs\Amcache.hve: Root\InventoryApplicationFile

即使文件被删除,“InventoryApplicationFile”键仍存储着有关系统上执行的可执行文件的详细信息。

如果出现应急响应事件,我们可以尝试查找事故发生前后执行的应用程序。这可以让我们排除无关数据,只关注相关的进程信息。

我们还可以从以下键查看驱动程序数据:

C:\Windows\appcompat\Programs\Amcache.hve: Root\InventoryDriverBinary

这有助于我们发现充当 rootkit 等的恶意驱动程序。这个工件的一个优点是它存储了 SHA-1 哈希值,可以快速地验证文件的信誉,除非它是看不见的恶意软件。

但是如果存在大量数据,从注册表进行分析可能会很麻烦。我们可以使用 Eric Zimmerman 设计的另一个名为 AmcacheParser 的工具生成CSV文件,然后用Timeline Explorer 打开分析。

AmcacheParser 

C:\Users\Administrator\Downloads\AmcacheParser>AmcacheParser.exe
Option '-f' is required.
Option '--csv' is required.

Description:
  AmcacheParser version 1.5.1.0

  Author: Eric Zimmerman (saericzimmerman@gmail.com)
  https://github.com/EricZimmerman/AmcacheParser

  Examples: AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" --csv C:\temp
            AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" -i --csv C:\temp --csvf foo.csv
            AmcacheParser.exe -f "C:\Temp\amcache\AmcacheWin10.hve" -w "c:\temp\whitelist.txt" --csv C:\temp

            Short options (single letter) are prefixed with a single dash. Long commands are prefixed with two dashes

用法:
AmcacheParser [选项]

选项:
-f <f>(必填)       要解析的 Amcache.hve 文件
-i                  为程序条目包含文件条目[默认值:False]
-w <w>              包含要从结果中排除的 SHA-1 哈希的文件路径。黑名单覆盖白名单
-b <b>              包含要从结果中包含的 SHA-1 哈希的文件路径。黑名单覆盖白名单
--csv <csv>(必填)  用于保存 CSV 格式结果的目录。请务必用双引号括起完整路径
--csvf <csvf>       用于保存 CSV 格式结果的文件名。存在时,覆盖默认名称
--dt <dt>           显示时间戳时使用的自定义日期/时间格式。有关选项,请参见 https://goo.gl/CNVq0k [默认值:yyyy-MM-dd HH:mm:ss]
--mp                显示更高精度的时间戳[默认值:False]
--nl                为 true 时,忽略脏蜂巢的事务日志文件。默认值为 FALSE [默认值:False]
--debug             在处理过程中显示调试信息[默认值:False]
--trace             在处理过程中显示跟踪信息[默认值:False]
--version           显示版本信息
-?、-h、--help      显示帮助和用法信息

注意:以管理员身份运行 CMD。

我们可以指定一个文件,其中包含已知正常的应用程序的 SHA-1 哈希值。通过使用 -w 选项,我们可以排除 amcache 中发现的已知正常应用程序,然后分析其余文件。可以显著缩短分析时间,因为取证人员没必要将时间浪费在正常的应用程序上。

我们也可以指定一个已知恶意软件 SHA-1 哈希的文件。通过使用 -b 选项,可以仅找到匹配的恶意文件的 amcache 结果,这将在调查过程中非常有用。例如,如果遭遇 Emotet 恶意软件变种的攻击,以收集在野外发现的所有 Emotet 变种的 SHA-1 哈希值,并在此处进行匹配以查看它们是否成功。

AmcacheParser.exe -f "C:\Windows\appcompat\Programs\Amcache.hve" --csv . --csvf output.csv

可以看到生成了多个CSV 文件,我们在时间线资源管理器中打开“amcache_UnassociatedFileEntries”文件。

我们可以在根据amcache提供的sha1在威胁情报网站如VT上进行快速检索。

最近的文件

这是 Windows 中的一项功能,它允许我们访问最近使用的应用程序。当我们打开“文件资源管理器”或“开始菜单”时,我们可以看到一些最近使用的文件/应用程序。

%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Recent

实际数据保存在用户的 NTUSER.DAT 配置单元中。存储此数据的键是:

- NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs

这个键 存储了打开的文件/应用程序的名称、快捷方式文件、上次访问时间。注意,此文件包含所有正在打开/修改的文件的信息。可以归类为访问证据,而不是执行证据。

如果我们通过命令行更改文件内容或重命名文件,它将填充到此注册表项中。我们没有执行文件,而是对其进行了修改,也会被记录在这个dat文件。我们可以使用此dat文件建立与文件的交互并将其作为证据提交。

可以看到目标名称(即文件名)、Lnk 名称(即该文件的快捷方式,我们在“最近的项目”中看到过)以及打开时间(即最近访问时间)。

从取证的角度来看,RecentDocs非常有价值,可以快速查看特定用户(内部威胁/不当行为/攻击者)在特定时间范围内访问过的文件。

对话框 MRU

“对话框 MRU”是 Microsoft Windows 操作系统对话框中访问或选择的文件名、时间戳和路径的记录。每当打开其他对话框时(例如在网站上上传文件时),文件资源管理器中就会出现一个对话框,供选择要上传的文件。

我们可以获取有关用户最近在系统上的活动的重要信息,包括他们访问过的文件和文件夹或修改过的文件路径。这可用于帮助重建用户的操作并为其他取证提供信息。

该信息存储在 NTUSER.DAT 配置单元中的 2 个键中。

- NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\LastVisitedPidlMRU
- NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU

OpenSavePidlMRU

每当我们需要从另一个应用程序打开或加载文件时,系统都会提示我们打开一个文件资源管理器窗口,然后我们选择要加载的文件。打开/加载/保存的文件路径存储在此键中。例如,我们正在从 Microsoft Word 上传 Word 文档。

现在当我们选择文件并单击“打开”时,它将再在 Microsoft Word 应用程序中打开。此文档的文件路径将保存在 OpenSavePidlMRU 键中。查看此文档名称是否存在于 opensave 键中。在RegistryExplorer中打开该键。


注意:可能需要重新启动注册表资源管理器,然后再次加载配置单元,才能看到实时完成的更改。

当我们需要找出用户使用其他应用程序加载了哪些类型的应用程序时,“OpenSavePidlMRU”键非常有用。例如,如果用户在网站上上传了一个文件,我们可以使用此键找出用户上传了哪个文件。

LastVisitedPidlMRU

LastVisitedPidlMRU 跟踪负责从我们之前讨论过的 Windows 资源管理器提示符打开/保存文件的应用程序可执行文件。此键不存储文件名的路径(如 OpenSavePidlMRU),而是存储用于打开/保存文件的可执行文件以及打开/保存文件的文件夹的路径。

在上一个案例的示例中,文件名为“liutech.docx”,保存文件的文件夹路径为“C:\Administrator\”。我们使用 Microsoft Word 打开了该文档,因此此键中的可执行文件名称应为“windword.exe”。

这是此键中的最新条目,路径和时间戳符合我们的标准。但可执行文件名称是一个 GUID 值。事实证明,该键有时不会为某些应用程序记录正确的数据。在这个例子中,可执行文件应该是 winword.exe,它会告诉我们从此路径打开了一个文档。

我们可以使用之前的案例中做过的另一个示例来证明。比如我们使用过ida64.exe打开过文件。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

2条评论

匿名 发布于8:44 下午 - 12月 5, 2024

师傅我想问下Amcache 我无法用registry explorer打开

    匿名 发布于8:47 下午 - 12月 5, 2024

    没事了

发表评论