Introduction to Windows Forensics

计算机取证是网络安全的一个重要领域,涉及收集在计算机上执行的活动的证据。它是更广泛的数字取证领域的一部分,负责对所有类型的数字设备进行取证分析,包括恢复、检查和分析在数字设备中发现的数据。数字和计算机取证的应用范围很广,从法律领域(用于支持或反驳民事或刑事案件中的假设)到私人领域(在企业内部调查以及事件和入侵中有所帮助)分析。
数字取证解决刑事案件的一个完美例子是 BTK serial killer 连环杀手案。当凶手开始通过发信嘲弄警察时,这个案子已经冷了十多年了。当他将一张软盘寄给当地一家新闻台时,案件发生了重大转折,后来被警方作为证据。警方能够恢复驱动器上已删除的 Word 文档,并使用元数据和其他一些证据,确定并逮捕了他。
Microsoft Windows 是目前使用最多的桌面操作系统。私人用户和企业更喜欢它,它目前拥有大约 80% 的桌面市场份额。这意味着对于对数字取证感兴趣的人来说,了解如何在 Microsoft Windows 上执行取证分析非常重要。在本模块中,我们将了解从 Windows 注册表收集取证数据的不同方法,并根据这些数据对 Windows 系统上执行的活动做出结论。

Forensic Artifacts

在进行取证分析时,您经常会听到“人工制品”这个词。法医文物是提供人类活动证据的重要信息。例如,在犯罪现场调查过程中,指纹、衬衫或外套的纽扣破损、用于实施犯罪的工具都被视为法医文物。所有这些文物结合在一起,重现了犯罪行为的故事。
在计算机取证中,取证工件可以是留在计算机系统上的小活动足迹。在 Windows 系统上,由于 Windows 系统为给定活动创建的各种工件,可以使用计算机取证非常准确地追溯一个人的行为。这些工件通常位于“普通”用户通常不会冒险去的位置。出于我们的目的,可以分析这些工件以提供活动试验以进行调查。

So is my computer spying on me?

Windows 系统会跟踪用户执行的大量活动。但是,所有这些跟踪都是出于恶意目的,还是有其他原因?正如我们将在本会议室中看到的,取证专家认为的文件系统组件主要源自微软为改善用户体验所做的努力。
假设系统上安装了相同版本的 Windows,不包括在安装期间采取的操作,所有用户的开箱即用体验都是相似的。然而,随着时间的推移,每个用户都会根据自己的喜好个性化他们的计算机。这些首选项包括桌面布局和图标、互联网浏览器中的书签、用户名、不同应用程序的安装以及使用互联网浏览器为每个应用程序和其他帐户登录到不同帐户。
Windows 会保存这些首选项以使您的计算机更加个性化。但是,取证调查人员使用这些偏好作为工件来识别在系统上执行的活动。因此,虽然您的计算机可能在监视您,但这并不是出于间谍的明确原因,而是根据您的喜好使使用计算机更加愉快。但是法医调查人员使用相同的信息进行法医分析。当我们穿过这个房间时,我们将看到 Windows 将这些工件存储在整个文件系统中的不同位置,例如注册表、用户配置文件目录、应用程序特定文件等。

Windows Registry and Forensics

Windows Registry

Windows 注册表是包含系统配置数据的数据库集合。该配置数据可以是关于硬件、软件或用户信息的。它还包括有关最近使用的文件、使用的程序或连接到系统的设备的数据。如您所知,从取证的角度来看,这些数据是有益的。在整个会议室中,我们将学习读取这些数据以识别系统所需信息的方法。您可以使用 regedit.exe 查看注册表,这是一个用于查看和编辑注册表的内置 Windows 实用程序。在接下来的任务中,我们将探索其他工具来了解注册表。
Windows 注册表由键和值组成。当您打开 regedit.exe 实用程序查看注册表时,您看到的文件夹是注册表项。注册表值是存储在这些注册表项中的数据。 Registry Hive是存储在磁盘上的单个文件中的一组键、子键和值。

Structure of the Registry

任何 Windows 系统上的注册表都包含以下五个根键:

  1. HKEY_CURRENT_USER
  2. HKEY_HKEY_USERS
  3. HKEY_LOCAL_MACHINE
  4. HKEY_CLASSES_ROOT
  5. HKEY_CURRENT_CONFIG

当您打开 regedit.exe 实用程序时,您可以查看这些键。要打开注册表编辑器,请同时按 Windows 键和 R 键。它将打开一个运行提示,如下所示:
image.png
在此提示中,键入 regedit.exe,您将看到注册表编辑器窗口。它看起来像这样:
image.png
在这里,您可以在显示包含的注册表项的树视图的左窗格中看到根键,并且所选键中的值显示在右窗格中。您可以右键单击右侧窗格中显示的值并选择属性以查看该值的属性。
以下是 Microsoft 如何定义这些根键。有关以下 Windows 注册表项的更多详细信息和信息,请访问 Microsoft 文档。

Folder/predefined key Description
HKEY_CURRENT_USER 包含当前登录用户的配置信息的根目录。用户的文件夹、屏幕颜色和控制面板设置都存储在这里。此信息与用户的个人资料相关联。该键有时缩写为 HKCU。
HKEY_USERS 包含计算机上所有主动加载的用户配置文件。 HKEY_CURRENT_USER 是 HKEY_USERS 的子项。 HKEY_USERS 有时缩写为 HKU。
HKEY_LOCAL_MACHINE 包含特定于计算机的配置信息(对于任何用户)。此密钥有时缩写为 HKLM。
HKEY_CLASSES_ROOT
- 是 HKEY_LOCAL_MACHINE\Software 的子项。此处存储的信息可确保在您使用 Windows 资源管理器打开文件时打开正确的程序。此键有时缩写为 HKCR。
- 从 Windows 2000 开始,此信息存储在 HKEY_LOCAL_MACHINE 和 HKEY_CURRENT_USER 键下。 HKEY_LOCAL_MACHINE\Software\Classes 项包含可应用于本地计算机上所有用户的默认设置。 HKEY_CURRENT_USER\Software\Classes 键的设置会覆盖默认设置并仅适用于交互式用户。
- HKEY_CLASSES_ROOT 键提供了一个注册表视图,它合并了来自这两个源的信息。 HKEY_CLASSES_ROOT 还为为早期版本的 Windows 设计的程序提供此合并视图。要更改交互式用户的设置,必须在 HKEY_CURRENT_USER\Software\Classes 下而不是在 HKEY_CLASSES_ROOT 下进行更改。
- 要更改默认设置,必须在 HKEY_LOCAL_MACHINE\Software\Classes 下进行更改。如果您将密钥写入 HKEY_CLASSES_ROOT 下的密钥,系统会将信息存储在 HKEY_LOCAL_MACHINE\Software\Classes 下。
- 如果您将值写入 HKEY_CLASSES_ROOT 下的键,并且该键已存在于 HKEY_CURRENT_USER\Software\Classes 下,系统会将信息存储在那里而不是 HKEY_LOCAL_MACHINE\Software\Classes 下

HKEY_CURRENT_CONFIG 包含有关本地计算机在系统启动时使用的硬件配置文件的信息。

Accessing registry hives offline

如果您正在访问WINDOWS系统,您将能够使用 regedit.exe 访问注册表,并且您将看到我们在上一个任务中了解的所有标准根密钥。但是,如果您只能访问磁盘映像,则必须知道注册表配置单元在磁盘上的位置。这些配置单元中的大多数位于 C:\Windows\System32\Config 目录中,并且是

  1. DEFAULT (mounted on HKEY_USERS\DEFAULT)
  2. SAM (mounted on HKEY_LOCAL_MACHINE\SAM)
  3. SECURITY (mounted on HKEY_LOCAL_MACHINE\Security)
  4. SOFTWARE (mounted on HKEY_LOCAL_MACHINE\Software)
  5. SYSTEM (mounted on HKEY_LOCAL_MACHINE\System)

包含用户信息的 Hives:
除了这些配置单元之外,还可以在用户配置文件目录中找到另外两个包含用户信息的配置单元。对于 Windows 7 及更高版本,用户的配置文件目录位于 C:\Users\\ 中,其中配置单元为:

  1. NTUSER.DAT (mounted on HKEY_CURRENT_USER when a user logs in)
  2. USRCLASS.DAT (mounted on HKEY_CURRENT_USER\Software\CLASSES)

USRCLASS.DAT 配置单元位于目录 C:\Users\\AppData\Local\Microsoft\Windows
image.png
NTUSER.DAT 配置单元位于目录 C:\Users\<用户名>\
image.png
请记住 NTUSER.DAT 和 USRCLASS.DAT 是隐藏文件。

The Amcache Hive:
除了这些文件之外,还有另一个非常重要的配置单元,称为 AmCache 配置单元。此配置单元位于 C:\Windows\AppCompat\Programs\Amcache.hve。 Windows 创建此配置单元以保存有关最近在系统上运行的程序的信息。

事务日志和备份:

其他一些非常重要的取证数据来源是注册表事务日志和备份。事务日志可以被认为是注册表配置单元更改日志的日志。在将数据写入注册表配置单元时,Windows 经常使用事务日志。这意味着事务日志通常可以在注册表中包含尚未进入注册表配置单元本身的最新更改。每个 hive 的事务日志作为 .LOG 文件存储在与 hive 本身相同的目录中。它与注册表配置单元同名,但扩展名为 .LOG。例如,SAM 配置单元的事务日志将位于文件名 SAM.LOG 中的 C:\Windows\System32\Config 中。有时也可能有多个事务日志。在这种情况下,它们将具有 .LOG1、.LOG2 等作为其扩展名。在执行注册表取证时查看事务日志也是谨慎的做法。
注册表备份与事务日志相反。这些是位于 C:\Windows\System32\Config 目录中的注册表配置单元的备份。这些配置单元每十天被复制到 C:\Windows\System32\Config\RegBack 目录。如果您怀疑某些注册表项最近可能已被删除/修改,这可能是一个很好的查看位置。

Data Acquisition

在进行取证时,我们会遇到实时系统或系统的图像。为了准确起见,建议对系统进行映像或制作所需数据的副本并对其进行取证。这个过程称为数据采集。下面我们讨论从实时系统或磁盘映像获取注册表数据的不同方法:
虽然我们可以通过注册表编辑器查看注册表,但取证正确的方法是获取此数据的副本并对其进行分析。但是,当我们从 %WINDIR%\System32\Config 复制注册表配置单元时,我们不能,因为它是受限制的文件。那么,现在该怎么办?
为了获取这些文件,我们可以使用以下工具之一:
KAPE:
KAPE 是一种实时数据采集和分析工具,可用于获取注册表数据。它主要是一个命令行工具,但也带有一个 GUI。下面的屏幕截图显示了 KAPE GUI 的外观。在此屏幕截图中,我们已经选择了使用 KAPE 提取注册表数据的所有设置。我们将在专门的 KAPE 房间了解更多关于使用 KAPE 收集法医文物的信息。
image.png
Autopsy:
Autopsy 让您可以选择从实时系统或磁盘映像中获取数据。添加数据源后,导航到要提取的文件的位置,然后右键单击并选择提取文件选项。它看起来与您在下面的屏幕截图中看到的相似。
image.png
FTK Imager:
FTK Imager 类似于 Autopsy,允许您通过在 FTK Imager 中安装所述磁盘映像或驱动器来从磁盘映像或实时系统中提取文件。您可以在下面看到导出文件的选项,如屏幕截图中突出显示的那样。
image.png
FTK Imager提取注册表文件的另一种方法是通过获取受保护的文件选项。此选项仅适用于实时系统,并在下面的屏幕截图中突出显示。此选项允许您将所有注册表配置单元提取到您选择的位置。但是,它不会复制 Amcache.hve 文件,这通常是调查最后执行程序的证据所必需的。
image.png

Exploring Windows Registry

一旦我们提取了注册表配置单元,我们需要一个工具来查看这些文件,就像我们在注册表编辑器中一样。由于注册表编辑器仅适用于实时系统并且无法加载导出的配置单元,因此我们可以使用以下工具:
Registry Viewer:
正如我们在下面的屏幕截图中看到的, AccessData’s Registry Viewer 的注册表查看器具有与 Windows 注册表编辑器类似的用户界面。但是,有一些限制。它一次只加载一个配置单元,并且不能考虑事务日志。
image.png
Zimmerman’s Registry Explorer:
Eric Zimmerman 开发了一些对执行数字取证和事件响应非常有用的tools。其中之一是注册表浏览器。它看起来像下面的屏幕截图。它可以同时加载多个配置单元,并将事务日志中的数据添加到配置单元中,以使用更多最新数据制作更“干净”的配置单元。它还有一个方便的“书签”选项,其中包含取证调查人员经常寻找的重要的取证注册表项。调查人员可以通过书签菜单项直接访问感兴趣的注册表项和值。我们将在接下来的任务中更详细地探讨这些。

image.png
RegRipper:
RegRipper 是一个实用程序,它将注册表配置单元作为输入并输出一个报告,该报告从该配置单元中的一些取证重要的键和值中提取数据。输出报告在一个文本文件中,并按顺序显示所有结果。
RegRipper 以 CLI 和 GUI 形式提供,如下面的屏幕截图所示。
image.png
RegRipper 的一个缺点是它没有考虑交易日志。在将输出发送到 RegRipper 以获得更准确的结果之前,我们必须使用 Registry Explorer 将事务日志与相应的注册表配置单元合并。
尽管我们已经讨论了这些不同的工具,但出于本会议室的目的,我们将仅使用 Registry Explorer 和 Eric Zimmerman 的一些工具。这里提到的其他工具将在单独的房间中介绍。