计算机取证学习指南-二-

118 阅读52分钟

计算机取证学习指南(二)

原文:annas-archive.org/md5/a8da66cb74d555d7026b936a6c2b843b

译者:飞龙

协议:CC BY-NC-SA 4.0

第五章:计算机调查流程

成为数字取证检查员需要你有一个调查计划。例如,有一种所谓的“厨房水槽方法”——即请求检查的人说,我要所有的信息。然而,这种方法并不实际,因为最小的驱动器可能包含数十万页或事件。因此,尽管“厨房水槽方法”是一个计划,但它可能不是最有效的。

实际上,你的搜索方法将取决于你正在调查的犯罪类型,以及搜索范围是否有限制。例如,在某些调查中,司法机关可能会限制调查员访问数字证据,只能查看电子邮件信息,或者你可能仅限于在法医镜像中查找特定日期和时间。

本章将首先讲解时间轴分析,分析用户活动的时间性。接下来,我们将检查用户使用的存储容器。你还将了解字符串搜索,即通过匹配字符字符串在数据集中进行搜索。最后,在最后一节中,我们将分析从文件系统中删除的数据。

本章将介绍以下内容:

  • 时间轴分析

  • 媒体分析

  • 字符串搜索

  • 恢复删除的数据

时间轴分析

在调查过程中,你可能会发现看似显示被告有罪或无罪的遗留物。然而,我们不能仅凭遗留物的存在就推断嫌疑人有罪或无罪。相反,这些遗留物需要放在用户和系统活动的背景下进行分析。

例如,我被聘为一个案件的顾问;他们指控嫌疑人身体虐待自己的孩子。作为反对嫌疑人的证据之一是关于如何处理伤害的 Google 搜索次数过多。他们将这些搜索归咎于被告,即父亲。最具挑战性的证据是,在争议行为发生时,如何证明键盘背后的用户身份。由于这些项目出现在互联网历史记录中(我们将在第九章互联网遗留物中深入讨论),我想检查搜索发生的时间背景。妻子是这台笔记本电脑的主要拥有者,但丈夫也是这台笔记本的常用用户。那么,如何将这些搜索归因于特定用户,尤其是在有多个用户使用同一台笔记本并且使用相同账户的情况下?

一个人的互联网浏览习惯几乎可以像指纹一样具有独特性。当我查看超过一百万行的互联网历史记录时,我能够区分笔记本电脑上的两个不同用户。我能够将社交媒体的使用与每个用户相关联,并将 Google 搜索归因于孩子的母亲。当她面对这些发现时,母亲承认她曾搜索如何处理孩子的伤势。在出示了证据和母亲的证词后,陪审团判定客户无罪,不构成虐待儿童罪。

假设在做出起诉决定之前他们进行了时间线分析,我相信父亲不会被起诉,因为唯一针对他的证据是从妻子的笔记本电脑中发现的数字证据。

你创建时间线以分析系统和用户行为的能力,让你能够对数字证据有更深入、更全面的理解。当我刚开始从事这个领域时,时间线是初步的,通常基于文件系统的 MAC 时间。MAC时间指的是修改时间、访问时间和创建时间,这些记录由文件系统在文件创建、编辑或访问时生成。仅使用 MAC 时间进行时间线分析的缺点是记录的时间可能不准确。例如,当文件从一个卷移动到另一个卷,或者用户使用第三方工具更改时间戳,并且时间戳依赖于系统时间时,就可能发生这种情况。

我们现在将使用多个来源来帮助我们确定系统中与特定证据相关的事件上下文。这些附加来源可能不像 MAC 时间那样容易被篡改,并且能够确定时间戳中的任何异常。例如,使用法医镜像中的多个资源,我们可以看到用户登录、启动可执行文件,并访问与可执行文件相关联的文件。这种访问多个来源的方法有助于我们确认并验证 MAC 时间提供的信息。

将多个参考框架应用于正在调查的事件,能帮助我们支持对事件的假设。例如,我们是否能够判断调查事件是由用户活动引起的,还是系统进程的结果?此外,使用所有可用的资源,如事件日志、文件系统日志或系统捕获的互联网历史记录,可以帮助我们深入细节,了解事件的上下文。

通过从多个来源收集数据点,你可以创建出罗布·李(Rob Lee)在 SANS 研究所所称的超级时间线,因为你需要筛选的大量数据点会使得这一过程更加复杂。

硬盘容量并没有变小,反而以惊人的速度在增长。用户和开发人员利用这种增加的容量来存储更多的数据,并增加可以追踪系统中发生事件的日志数量。在某些调查中,你可能不需要检查文件的内容;例如,在涉及非法图片的调查中,我无需查看文件的视觉内容。相反,为了回答一个用户是否知道某个特定文件的存在,我可以使用时间线分析来做出这个判断。

商业取证工具(以及开源工具)在创建时间线方面取得了许多进展。例如,曾经你需要使用多个工具来提取数据以创建时间线。现在,你只需使用一个工具就可以创建时间线。

注意

在本章中,我们将讨论日期和时间,这些将被转换为 UTC/GMT。始终注意你的数据集操作的时区以及它存储的时区。我在进行审查时使用 GMT/UTC 作为标准。

在本章中,我将演示使用几种工具,让你了解它们输出的区别,并讨论这些工具从哪里获取信息。

X-Ways

X-Ways Forensics 内置了一个非常强大的时间线创建工具,叫做事件列表。X-Ways 整合了多个来源的数据,如文件系统级别的时间戳、内部时间戳、浏览器历史记录、事件日志、注册表配置单元、电子邮件等。当你启动事件列表时,数据将按时间顺序呈现,形成时间线。事件列表是一条非常详细的时间线,包含大量信息,允许你看到你正在调查的事件的时间顺序。

注意

在你探索新工具的功能时,记得用已知的数据集来验证工具。我们将在本实验中使用 Digital Corpora 提供的取证镜像。你可以访问digitalcorpora.org/并查看 2008 年 M–57 Jean 案例,获取更多信息。

在这种情况下,你正在调查一起数据泄露事件。有人将一份包含某组织机密信息的电子表格发布到竞争对手的网站上,而这份电子表格来自首席财务官(CFO)Jean 的计算机。在她的面谈中,Jean 表示她根据总裁 Allison 的要求,将这份电子表格通过邮件发送给了她。电子表格名为m57plan.xls,可以在 Jean 账户的桌面上找到。该文件的 MD5 哈希值为e23a4eb7f2562f53e88c9dca8b26a153,修改时间为2008-JUL-20 01:28:03 GMT,这与 Jean 关于她何时发送电子表格的陈述相符。

文件名和时间范围为我们提供了进行时间线分析的起点。当你进入 X-Ways Forensics 的用户环境时,选择事件列表图标:

图 5.1:X-Ways

如前图所示,当你选择日历选项时,它会显示日历界面,方便你深入查看特定日期。如果我不对事件列表中的结果进行筛选,那么会有超过一百万条记录需要我逐一解析。我的首选工作流程是从大的数据集开始,然后逐步筛选结果,以满足调查的需求。

当我将筛选范围缩小到 7 月 20 日时,我将结果减少到了 4,052 个事件,更加易于管理。

一旦筛选了结果,我们可以搜索文件名,看看发生了什么活动。第一个结果显示,在 01:27:42,系统为电子表格创建了一个链接文件。在接下来的截图中,你可以看到从 01:27 到 01:28 的用户活动。在 01:27 时,创建了一个预取文件(EXCEL.EXE-1C75F8D6.pf),这表示用户启动了 Excel 程序并打开了电子表格,正好对应了链接文件的创建。

图 5.2:筛选结果

查看事件列表时,你可以看到法医工具获取并展示信息的来源。预取文件的创建始于 NT user.dat 文件的变更。工具会跟踪从内部文件元数据到操作系统工件的整个过程。我们可以跟踪并观察用户和系统层面的活动,记录下用户操作的全过程。

如果你查看时间戳 01:28:00,可以看到 Jean 发送了一条消息。在名称列中,我们可以看到邮件的主题,双击后可以查看邮件内容:

图 5.3:Jean 的邮件

我们可以看到 Jean 发出了邮件,收件人看似是 allison@M57.biz,但实际上是发送到了 tuckgorge@gmail.com。然后,我们可以根据文件类型进行筛选,在这种情况下是 .eml 文件,筛选结果如下:

图形用户界面,文本,应用程序,电子邮件 说明自动生成

图 5.4:Jean 的邮件头

查看发件人收件人列,并按时间顺序排列数据,你可以大致了解攻击者与 Jean 之间的邮件通讯。看起来他们已经入侵了 Allison 的账户,因为我们可以看到“Alex”这个名字和与该账户关联的邮件地址 tuckgorge@gmail.com

使用 X-Ways Forensics 的事件列表功能可以帮助我们准确定位文件何时被篡改以及通过什么途径。现在我们可以将调查方向指向 Allsion 的计算机,以确定攻击者是否侵入了她的系统。根据这些初步结果,我认为攻击者通过网络钓鱼攻击瞄准了 Jean。

我喜欢 X-Ways Forensics 的一点是,它能够从传统来源收集日期和时间,并将这些信息与实际的证据(在本例中为电子邮件)结合起来。这为你的调查提供了更高的细节层次和背景。

X-Ways Forensics 文档列出了以下内容作为事件列表功能的信息来源:

图表 描述自动生成

如你所见,这展示了一个非常多样化的信息来源列表。然而,在用于分析时,它可以使调查员更加信赖他们在调查中报告的日期时间戳。

我发现法医套件也包含了时间线分析功能。我曾讨论过 X-Ways Forensics 及其通过事件列表功能创建时间线进行分析的能力。我列出了你可以用来分析时间线数据的一些其他法医套件。以下列表并不包含所有可用的法医套件:

X-Ways 并不是唯一可以用来创建时间线的工具;你还可以使用一些开源工具。最常见的工具之一是Plaso/log2timeline,我们接下来将讨论它。

Plaso(Plaso Langar Að Safna Öllu)

Plaso(Plaso Langar Að Safna Öllu)是一个 Python 后端和log2timeline工具的框架。log2timeline是一个法医工具,它从系统中提取时间戳并创建一个所有事件的数据库,也叫超级时间线。

注意

你可以从github.com/log2timeline/plaso下载 Plaso。

Plaso 适用于大多数操作系统,最初设计用于替代 Perl 版本的log2timeline。然而,开发现在已经转向模块化,并且他们创建了多个由 Plaso 后台支持的 CLI 工具。

Plaso 支持的工具是通过命令行界面CLI)激活的。尽管 CLI 可能会让用户感到害怕,但如果你慢慢来,逐步进行操作,你会发现 CLI 并不神秘。许多开源工具使用 CLI 而不是图形用户界面GUI)。CLI 的核心由两部分组成:可执行文件和修饰符。一旦你掌握了 CLI 命令的特定修饰符,你会发现一切都能井然有序地运作。

让我们来谈谈 Plaso 中包含的工具:

  • image_export

  • log2timeline

  • pinfo

  • psort

  • psteal

image_export

image_export 将从设备、媒体镜像或法医镜像中导出文件内容。你可以使用多个参数来定义你希望提取的信息。

在 Windows 版本的可执行文件中,可执行文件以.exe结尾。而在 macOS 中,可能会看到它以.sh结尾。

使用–h--help将给出完整的参数列表:

图 5.5:image_export

在屏幕下方,你将看到修饰符的详细解释。请注意,我只会涵盖最常用的选项;这里有更多的文档,我们将不再讨论:

  • --names NAMES:对文件名的过滤。此选项接受一个用逗号分隔的字符串,表示所有文件名,例如,x NTUSER.DAT, UsrClass.dat

  • -w PATH, --write PATH:提取的文件应存储的目录。

  • --data PATH:包含数据文件的目录路径。

  • -x EXTENSIONS, --extensions EXTENSIONS:对文件名扩展名的过滤。此选项接受多个用逗号分隔的值,例如,csvdocx,和pst

如果使用以下命令,它将把.xls文件导出到files文件夹中:

image_export --names 'm57plan.xls' C:\tools\plaso\image\jean.001 -w C:\tools\plaso\export\files 

你可以看到前面命令的分解如下:

图 5.6:CLI 映射

在这里,使用image_export命令,我们使用names修饰符来查找特定文件。在此情况下,它是M57plan.xls

现在,你可以告诉可执行文件在哪里进行搜索;在此命令中,我们在取证镜像jean.001中进行搜索(确保包含取证镜像所在位置的完整路径)。接下来,你可以指定将导出的文件发送到哪里。-w修饰符将指定写入位置。

你会发现,这些修饰符与 Plaso 框架中的命令有一些共通之处。

log2timeline

log2timeline是一个命令行工具,旨在从文件、目录、取证镜像和设备中提取基于时间的事件。它将创建一个数据库文件(.plaso),然后可以通过各种工具进行分析。

如下图所示,-h修饰符(帮助)将显示命令的选项。与之前一样,虽然有些详细解释没有显示,但它们能为这些命令提供额外的上下文。你应该能够从我们之前看的命令中识别出一些:

图 5.7:log2timeline

尝试使用info修饰符,如下所示:

c:\tools\plaso>log2timeline.exe --info 

你将看到所有支持的插件、解析器和输出模块的列表:

图 5.8:info 修饰符的结果

从前面的输出中,你可以看到一些预设包括从多个文件系统中收集工件。

在一个非常基础的层面上,你可以使用以下命令结构:

log2timeline OUTPUT INPUT 

log2timeline的一个特点是,输出文件是可执行文件的第一个修饰符,然后你再指定输入:

log2timeline C:\tools\plaso\export\files\jean.plaso C:\tools\plaso\image\jean.001 

当命令执行时,你应该在屏幕上看到以下输出:

图 5.9:输出

当命令执行时,它会定位包含可执行文件依赖项的数据文件夹,然后搜索包含可能存储在系统中的工件信息的文件。这是一个默认文件夹,在你安装 plaso 时会自动安装。

现在我们有了一个 .plaso 文件,可以在 files 文件夹中找到它。在某些情况下,你可能不希望为每个选项都创建数据库文件,即不想“厨房水槽式”地处理所有内容。相反,你可能希望对时间线进行有针对性的检查,这时你需要使用过滤器。使用 -f 修饰符可以实现这一点。

注意

如果你想下载一些预制的过滤器,可以访问 github.com/mark-hallman/plaso_filters

我下载了预制的过滤器,并在 plaso 安装路径下创建了一个名为 filter 的文件夹。如以下截图所示,我将 plaso 安装在了 C 盘根目录下的一个名为 tools 的文件夹中:

log2timeline -f filter_windows.txt C:\tools\plaso\export\files\jeanfilter.plaso C:\tools\plaso\image\jean.001 

如以下截图所示,工具能够在 artifacts 文件夹中找到我的过滤器,并创建了一个新的 Plaso 数据库文件:

图 5.10:过滤器

到目前为止,我们已经介绍了几个命令;然而,我们还有更多内容要讲解。框架中的下一个命令是 pinfo

pinfo

pinfo 是一个命令行,用于显示关于 Plaso 数据库文件(.plaso)的信息。

plaso 数据库文件将包含以下信息:

  • 用户执行工具时

  • 执行工具时使用的选项

  • 工具在预处理阶段获取的信息

  • 数据库元数据

  • 解析了什么内容以及使用的参数

  • 提取的事件数量

  • 标记事件

要了解更多关于前述选项的信息,请使用 -h 修饰符执行命令。虽然这些选项相似,但与其他工具相比,你的选择会少得多,正如下图所示:

图 5.11:pinfo

当你以最简单的形式使用 pinfo 命令时,将获得以下结果:

---------------------------------------------------------------
*********************** Plaso Storage Information ***********************
Filename: jeanfilter.plaso 
Format version: 20190309 
Serialization format: JSON 
---------------------------------------------------------------
*********************************** Sessions *****************************
276a7520-999e-428b-a6b4-11fcf9cf987d : 2019-07-19T22:19:36.092703Z 
--------------------------------------------------------------- 

如前面的输出所示,你可以查看文件的存储信息以及创建该文件所用的会话数量。

你可以将结果发送到标准输出,也就是显示器,或者使用 -w 修饰符将结果保存到一个文本文件中。对 .plaso 文件使用额外工具将生成 GUID 以及分析进行时的日期时间戳。

该工具还可以提供你正在检查的源系统的系统信息:

--------------------------------------------------------------------------
******* System configuration: 276a7520-999e-428b-a6b4-11fcf9cf987d *******
Hostname: N/A 
Operating system: Windows NT 
Operating system product: Microsoft Windows XP 
Operating system version: 5.1 
Code page : cp1252 
Keyboard layout: N/A 
Time zone: GMT 
-------------------------------------------------------------------------- 

在验证数据库文件中的信息后,你可以继续执行下一个命令。

psort

psort 是一个命令行工具,允许你筛选、排序并分析 plaso 数据库文件的内容。就像其他命令一样,-h 修饰符将显示该命令的所有选项。在下面的 psort 截图中,你可以看到可用选项,并且你应该能识别出所有 plaso 架构中命令选项的共性:

图 5.12:psort

让我们讨论一些新的选项:

-o FORMAT, --output_format FORMAT, --output-format FORMAT 

以下是可用的输出格式列表:

名称描述
dynamic将事件输出为分隔符(默认是逗号)分隔的值格式,支持动态选择字段。
elastic将事件输出到 ElasticSearch 数据库。需要 elasticsearch-py。
elastic_ts将事件输出到 ElasticSearch 数据库,以供 Timesketch 使用。需要 elasticsearch-py。仅供 Timesketch 后端使用。
json将事件输出为 JSON 格式。
json_line将事件输出为 JSON 行格式。
kml将含有地理数据的事件输出为 KML 格式。
l2tcsv将事件输出为 log2timeline.pl 的传统 CSV 格式,包含 17 个固定字段。
l2ttln将事件输出为 log2timeline.pl 的扩展 TLN 格式,包含 7 个固定字段。
null不输出事件。
rawpy以“原始”(或本地)Python 格式输出事件。
tln将事件输出为 TLN 格式,包含 5 个固定字段。
xlsx将事件输出为 Excel 电子表格(XLSX)。

当你使用 psort 进行处理时,可以将结果导出到 plaso 数据库之外。你可以使用多种选项导出数据以便分析。一个常见的导出格式是 l2tcsv,它是 log2timeline 的传统格式,采用 .csv 工作表格式。

在创建 .csv 工作表时,你可能会遇到一个潜在问题,即如果你创建的文件太大,一些工具可能无法分析它,或者你无法用你喜欢的电子表格程序打开它。

--analysis listpsort 默认安装了分析插件(你仍然可以创建自定义插件),允许你浏览数据库文件并提取和分析内容。

你可以使用 --analysis list 修饰符查看完整的插件列表:

图 5.13:分析插件列表

如果我们运行该命令,它会遍历 plaso 数据库文件,标记在 tag_windows.txt 文件中已识别的特定事件(该文件是默认安装的一部分,可以在 data 目录中找到):

psort -o null --analysis tagging --tagging-file tag_windows.txt c:/tools/plaso/export/files/jean.plaso 

处理完成后,它会显示已应用于数据库的标签数量:

************************** Analysis report: 0 **************************
String: Report generated from tagging 
Generated on:2019-07-20T20:04:46.000000Z 
Report text: Tagging plugin produced 9754 tags
--------------------------------------------------------------- 

此外,你还可以使用 --slice 修饰符过滤掉多余的数据。

注意

5 分钟是默认值。如果你想要更长或更短的时间切片,可以在DATE TIME后添加--slice_size <VALUE>来指定。

如果你发现了GET事件,你可能希望通过观察发生在之前和之后的事件来为其提供上下文:

psort -q --slice '2008-07-20 01:26:17' c:/tools/plaso/export/files/jean.plaso -w c:/tools/plaso/export/files/jeansliceoutput.csv 

该命令将创建一个csv文件,包含时间戳前后各 5 分钟的事件。

框架中的最后一个工具是psteal,我们接下来会讨论它。

psteal

psteal是 plaso 框架中的最终 CLI 命令。它将log2timelinepsort命令结合在一起,通过一步操作提取和处理事件。这是一种典型的“万金油”方法,也可以称为“我想要所有的”,与框架中其他 CLI 命令相比,它有一个有限的修饰符选择。

再次提醒,-h会为你提供命令的选项列表,具体内容如下截图所示:

图 5.14:psteal

至少需要指定源和输出。该过程将创建 plaso 数据库文件,并将其放置在 plaso 安装目录的根目录中。此位置允许你在命令完成后执行额外的标记、筛选或分析。创建的数据库文件的命名约定为<timestamp>-<source>.plaso

这是命令。它创建了一个几乎 1GB 大小的.csv文件。然而,如果我将输出更改为.xlsx,文件大小会减少到 35MB。所以,请记住,你正在处理和分析你的数据集:

psteal --source C:/tools/plaso/image/jean.001 -o l2tcsv -w c:/tools/plaso/export/files/jean.csv 

我正在使用一个相对较小的 20GB 硬盘的法医镜像。试想一下,如果你使用的是 500GB 或 1TB 的硬盘,并且该硬盘已经使用了较长时间,会是什么情况。

现在我们已经创建了数据库文件并导出了与调查相关的数据集,接下来该做什么呢?是时候分析数据集,找出能够证明或反驳指控的证据了。你用来分析的工具可以是你喜欢的 Office 套件中的电子表格阅读器,也可以是专门为此目的设计的商业开源工具。

本书无法涵盖所有可供检查员使用的工具选项。我将突出显示一些可用的选项并为你总结这些工具。最终,数据的分析是检查员通过查看数据集并审查结果来完成的。再次强调,这都归结于对法医工具的验证/确认,确保它们提供准确的结果。

以下是一些工具:

  • ELK 堆栈:可以在www.elastic.co找到。它是三个开源项目的缩写:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是搜索和分析引擎,Logstash 是数据处理和摄取引擎,而 Kibana 是可视化工具。您可以选择下载这三个引擎并安装到您选择的操作系统中。提供了 macOS、Windows 和 Linux 版本。如果您不希望在自己的环境中托管这些系统,还可以选择付费使用云环境。

  • TimelineMaker Pro:可以在www.timelinemaker.com找到。它是一个专门设计用于创建时间轴图表的商业产品。通过这个工具,您可以导入使用 plaso 框架创建的 CSV 文件。

  • TimeSketch:可以在github.com/google/timesketch找到。它是一个开源的取证时间轴分析工具。它是基于 Linux 的。我已经将它安装在一个虚拟环境中,这样我就可以根据需要使用它。不同团队成员也可以共同使用它。您还可以从各种 plaso 框架输出选项中导入数据。

  • Aeon Timeline:可以在www.aeontimeline.com找到。它是一个专门设计用于创建可视化时间轴的商业产品。它将帮助您查看事件之间的关系。最初是为作家设计的,但也可以用来分析超时间轴。您可以导入使用 plaso 框架创建的 CSV 文件。

  • Timeline Explorer:可以在ericzimmerman.github.io/#!index.md找到。Timeline Explorer 是由 Eric Zimmerman 创建的开源平台,旨在提供一个无需使用 Microsoft Excel 即可读取 MAC 时间和 plaso 生成的 CSV 文件的工具。它并不是专门设计来查看非常大的 CSV 文件;事实上,Zimmerman 明确建议,最好打开较小且有针对性的时间轴,而不是一个巨大的时间轴。

媒体分析

您可以在多个维度上使用时间轴分析,例如网络分析、媒体分析、软件分析和硬件分析。网络分析是分析日志文件、跟踪文件以及用户与其设备之间的通信内容。媒体分析是分析物理存储设备,如硬盘、SSD 驱动器、U 盘或光盘存储。您将检查内容、分配的空间以及空闲空间。最后,在进行软件分析时,您将逆向工程恶意代码并分析保护代码,以防止潜在的外泄。

那么,让我们来看看媒体分析。您的数字调查的主要来源将是存储设备(如硬盘、SSD、USB 设备、光盘以及智能手机等移动设备)的取证映像。根据您的组织,您可能是负责创建取证映像的人,或者取证映像可能是由组织的其他部门提供给您的。请记住,取证映像是源设备的逐位复制。在大多数情况下,您不希望使用备份作为数字取证调查的源,因为备份不会包含存储设备上的所有信息。

存储设备可能包含四种不同类型的数据,您可能需要检查:

  • 已分配空间:这是存储设备上被文件占用的空间。文件系统将该存储空间识别为已使用。

  • 未分配空间:这是存储设备上未被文件占用的空间。文件系统将该存储空间识别为可用空间。

  • 空闲空间:当数据存储在一个簇中时,如果文件没有完全填满簇,未被文件占用的剩余空间被称为空闲空间。

  • 坏块/扇区/簇:这是磁盘上由于缺陷而被文件系统标记为坏的空间。它也可以被用户用来隐藏数据,以防被随意检查。

Brian Carrier 在他的论文《定义数字取证检查和分析工具》中描述了媒体分析的进展,内容如下:

  • 磁盘:物理存储设备,如硬盘、SSD 或闪存介质。

  • :一个容器,由单个磁盘或多个磁盘组成。您可能会在单个磁盘上找到多个卷,或者一个卷可能跨越多个磁盘。您可能会看到“卷”一词与“分区”一词互换使用。Brian Carrier 将分区定义为仅限于单个物理磁盘,而卷是一个或多个分区的集合。

  • 文件系统:这是在卷的边界内使用的,跟踪文件分配和簇的使用情况。

  • 数据单元:文件系统可用的最小分配单元。在大多数情况下,这将是簇,或者在基于 UNIX 的系统中,它将是块。

  • 元数据:这是关于数据的数据。它包括修改、访问和创建的日期时间戳,以及文件系统和某些应用程序跟踪的关于文件的其他信息。

在数字取证调查中的媒体分析目标是找到相关的证据,这些证据将支持或反驳您正在调查的指控。此外,在进行数字取证调查时,您可能会发现一些证据,它们会将您的注意力引导到其他位置。

现在,我们将讨论在数字取证调查过程中可能使用的一些不同分析技术。

字符串搜索

在你的数字取证调查过程中,可能会使用字符串或字节搜索。这个搜索技术在你有一个特定的关键词列表时使用。大多数商业和开源的取证工具都允许进行字符串搜索,并会搜索分配区、未分配区和文件空闲区。你可以使用特定的单词、符号或字母组合作为搜索条件。一般来说,你会希望在开始数字取证调查之前,先准备一些预定义的关键词列表。

你的关键词列表将属于以下类别之一:

  • 通用关键词列表:这是你在每个案件中都会使用的关键词列表。这个列表还可以根据调查的主题进一步分类。例如,你可能会有一个用于调查欺诈活动的数字取证案件的关键词列表,也有一个用于调查非法图像的数字取证案件的关键词列表。

  • 特定案件关键词列表:这是你将在特定数字取证调查中使用的关键词列表。在你准备进行数字取证调查时,你将根据参与者、地点以及有时参与者使用的俚语来确定关键词。例如,你可以有基于用户名、电子邮件地址、物理地址、电话号码、信用卡号码等的关键词。

备注

你应该避免使用那些通用的或具有其他含义的关键词。例如,如果你正在调查一起凶杀案,“kill”这个词看似是一个有效的搜索词。不幸的是,“kill”也是你在计算机系统中可能遇到的编程语言中的一个术语。这会导致大量的假阳性。理想情况下,目标是通过关键词列表帮助过滤掉无关数据,以便高效集中精力。

在你进行数字取证图像搜索时,可能会遇到不同的编码方案,例如以下几种:

  • 美国信息交换标准代码 (ASCII) 是一种最初基于美国英语的字符编码方案,且限制为 256 个字符代码。

  • Unicode 是为了克服 ASCII 的限制而开发的。每个字符都有一个独特的 2 字节值,从而能够定义超过 65,000 个字符。

尽管关键词搜索非常强大,但它也有一个缺点,因为在根据关键词搜索内容时,它是非常字面上的。例如,如果你搜索一个单词,它不会找到替代拼写;也就是说,如果你搜索ally,过滤器不会找到alley。幸运的是,还有一种替代的搜索方法,叫做模式匹配/正则表达式。

正则表达式使用字符字符串来创建搜索模式,并找到所有与该模式匹配的实例。以下是一些常用符号及其在创建正则表达式时的含义:

  • 星号符号(*:匹配前面的字符(或字符集)重复 X 次。例如,ca*t 将返回匹配 ctcatcaatcaaat 的结果。

  • 井号(#:这将匹配一个数字(0-9)。

  • 反斜杠(\:接下来的字符将按字面意思解释。\. 将被解释为句点。

  • 脱字符(^:匹配文本的开始。例如,¹²³ 会使匹配的结果以 123 开头。

  • 美元符号($:匹配文本的结束。例如,123$ 将导致匹配结果以 123 结尾。

  • 加号符号(+:重复前面的字符(或字符集)一次或多次。例如,ca+t 将返回匹配 catcaatcaaat 的结果。

  • 大括号({…}:重复前面的字符(或字符集)X 次(取决于大括号中的值)。

  • 方括号([...]:这将匹配方括号中的任何单个字符。例如,[b,c,d] 将匹配 b、c 或 d。

  • 方括号 w/ ^ [^...]:这将匹配方括号中不包含的任何单个字符。例如,[^b,c,d] 将匹配除 b、c 或 d 以外的任何字符。

  • 方括号(范围)[..-..]:这将匹配给定范围内的任何字符。[0-9] 将匹配从 0 到 9 的任何字符。

  • 点号(.:点号可以代替任何字符。

  • 问号(?:前面的字符可能会出现也可能不会出现。例如,.e01? 将返回 .e0(x) 值。x 表示它可能会找到 .e0 后的任何值。

  • 管道符号(|:这匹配由管道符号(|)分隔的任何一个字符集。例如,br(ead|ake|east) 将返回匹配 breadbrakebreast 的结果。

以下是一些常见的模式匹配示例,可能对你有所帮助。

要搜索 IP 地址,你可以使用以下正则表达式:

\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} 

\d 表示接下来的内容将匹配一个数字。大括号 {1,3} 表示数字可以是 1 到 3 位。\. 表示搜索 . 字符。\d{1,3} 模式将重复三次,直到获得 IPv4 地址的值。

要搜索美国电话号码,你可以使用以下表达式:

((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4} 

\( 将匹配开括号。\d{3} 将匹配三位数。\) 将匹配闭括号。这个模式将给出区域代码 (###),格式为 (###)。其余的正则表达式将提供前面三位数字 \d{3}、破折号 - 和最后四位数字 \d{4},这是美国电话号码的格式。如果电话号码不是按照 (###) ###-#######-###-#### 格式提供的,你将无法得到匹配。

正则表达式是一个强大的工具,但它们也可能非常复杂。我喜欢使用正则表达式库(可以在 regexlib.com/Default.aspx 找到)来帮助我提升正则表达式技能。

那么,当用户从媒体中删除一个文件或文件夹时会发生什么呢?接下来我们来讨论当文件或文件夹被删除时会发生什么。

恢复已删除的数据

当文件在 FAT 文件系统中被删除时,数据本身并没有被改变。目录条目的第一个字符会被更改为xE5,并且文件分配表条目会被重置为x00。当文件系统读取目录条目时,如果遇到xE5,它将跳过该条目,并开始读取后续条目。

要恢复已删除的文件,我们需要逆转文件系统删除文件的过程。记住,它并没有改变文件内容;它们仍然物理存在于它们分配的簇中。现在我们需要逆向工程删除操作,并重新创建文件条目和文件分配表中的条目。为此,我们需要找到文件的第一个簇、文件的大小以及卷中簇的大小:

图 5.15:已删除的条目

在上面的截图中,我们有一个目录条目,显示一个文件已被删除。我们看到目录条目开头的xE5。(这需要使用十六进制编辑器进行修改。)接下来,我们必须确定起始簇,x00 x08(显示为x08 x00),即簇号8。要确定文件大小,请查看最后四个字节(记住,FAT 文件系统以小端格式存储数据,这意味着最不重要的字节在左侧,因此我们读取的值是x00 x00 x00 x27,而不是显示的x27 x00 x00 x00),当我们将十六进制值转换为十进制时,得到文件大小为 39 字节。

现在我们需要确定一个簇由多少个扇区组成以及每个扇区的大小。你需要查看引导记录以获取这些信息。引导记录显示每个扇区有 512 字节,每个簇有 8 个扇区,这意味着簇大小为 4,096 字节:

图 5.16:引导记录

这意味着我们的文件只占用一个簇。接下来,我们查看文件分配表,并查看簇号 8 的条目,发现它已被清零:

图 5.17:已删除的 FAT

要恢复已删除的文件,请执行以下步骤:

  1. 你需要将文件分配表中的条目从x0000 x0000更改为xFFFF FFF8xFFFF FF0F。如果这是一个较大的文件,你需要将文件分配表条目更改为指向下一个簇,直到你到达包含文件末尾的簇。如果你在到达文件末尾之前找到标记为已分配的条目,可能是你在处理一个碎片化的文件。另一种可能性是,在文件被删除时,簇被释放,新的文件数据被放置在这些可用空间中,这样就会导致旧数据被新文件的数据覆盖。

  2. 下一步是返回目录条目并将xE5替换为另一个字符。在替换目录条目中文件名的xE5字符时,要小心不要猜测字符是什么。如果选择了错误的字符,可能会改变其含义或使新文件名产生偏差,这样是不正确的。

我建议在恢复删除的文件时,将第一个字符替换为下划线或破折号,以避免对文件名的误解。

在恢复长文件名的文件时,重要的是要将长文件名与短文件名重新链接。这是因为当为适应长文件名而创建附加目录时,系统会基于短文件名的数据生成校验和。当你更改了短文件名条目的xE5值时,你还需要为长文件名目录条目的后续xE5条目使用相同的替换字符。将长文件名与短文件名链接的原因是,短文件名目录条目包含诸如日期和时间、起始簇和文件大小等信息。

正如我们在第四章中讨论的,《计算机系统》,当在 NTFS 卷上创建文件/目录时,系统会在$MFT文件中创建一个条目。MFT 记录将包含关于文件/目录的元数据;如果文件内容是非驻留的,那么$Bitmap文件将更新,显示文件占用的簇已被分配。

当文件/目录被删除时,MFT 文件记录头中的序列计数会增加一位。记录的分配状态将从已分配更改为未分配。如果文件数据是非驻留的,系统会更新$Bitmap文件,显示文件占用的簇现在是未分配的。

每个 MFT 文件条目将以文件的文件签名开始,你可以使用它作为搜索词,在未分配空间中定位 MFT 文件条目。直到磁盘上包含数据的簇被覆盖,我们才能恢复数据。

如果 MFT 文件记录未使用,则可以反向操作并恢复该文件。您可以解密文件记录,如我们在第四章计算机系统中讨论的那样。如果文件存在于文件记录中,当您恢复 MFT 文件记录时,将恢复数据。如果数据是非驻留的,那么您将需要解密 MFT 文件记录,以确定数据是否连续并识别占用的簇。

如果系统已覆盖 MFT 文件记录,则无法恢复已删除的 MFT 文件记录数据或任何驻留数据。您可能可以恢复非驻留数据,但这取决于文件的大小和碎片化程度。一旦 MFT 记录被覆盖,您将失去有关数据运行和哪些簇包含数据的任何信息。

总结

在本章中,我们详细讨论了使用开源和商业取证工具进行时间线创建和时间线分析。我们深入探讨了利用商业取证工具 X-Ways Forensics 和开源 plaso 框架进行log2timeline的使用。我们还提到使用“厨房水槽法”或针对数据集的定向检查。记住,我们不是分析文件的内容,而是分析与文件和操作系统及文件系统内的其他事件相关的时间线。

在下一章中,我们将讨论文件的内容,具体来说,是 Windows 工件。

问题

  1. 对考察员来说,了解证据收集时的时区非常重要。

    1. 正确

    2. 错误

  2. 在创建 _________ 列表时,您可以使用 X-Way Forensics 进行时间线分析。

    1. 时间线

    2. 日期/时间

    3. 事件

  3. Plaso 是一个包含多少个工具的框架?

  4. pinfo会给你提供什么信息?

    1. 考察员信息

    2. 数据库文件信息

    3. 取证机器信息

    4. 嫌疑人信息

  5. log2timeline是一个基于 ___________ 的工具。

    1. CLI

    2. GUI

    3. VFD

    4. XYZ

  6. psort将给你 ___________。

    1. 排序能力

    2. 过滤能力

    3. 连接能力

    4. 以上所有

  7. 您可以使用 Excel 电子表格进行时间线分析。

    1. 正确

    2. 错误

进一步阅读

您可以参考以下链接,获取更多关于本章内容的信息:

练习

数据集

Chapter 5 Emails.xlsx

Chapter 5 Carving.dd

所需软件

时间线探索器 - ericzimmerman.github.io/#!index.md

需要 Microsoft .NET 6 或更高版本。如果没有至少.NET 6,您会遇到错误。若有疑问,请安装它!如果计划运行任何 GUI 程序,请确保安装桌面运行时。

Autopsy - www.autopsy.com/

邮件练习

一名 m57.biz 外部人员从 Craigslist 购买了一台笔记本电脑。这台笔记本电脑包含儿童色情内容,该人员决定向警方报告。

调查人员能够追踪到这台笔记本电脑属于 m57.biz。当警方联系 m57.biz 的 CEO 时,CEO 报告称该笔记本电脑以及其他物品已从 m57 的库存中被盗。

m57 的 CEO 同意让警方调查员搜索 m57.biz 并对所有 m57.biz 电脑、公司电话及 USB 驱动器进行成像。

分析在Chapter 5 emails.xlsx电子表格中找到的电子邮件,识别潜在嫌疑人及其活动时间线。

数据切割练习

  1. 启动 Autopsy 并开始一个新案件。

  2. 选择磁盘映像虚拟机文件作为数据源。

  3. 导航到存储图像Chapter 5 Carving.dd的文件夹。仅选择以下导入模块:

    • PhotoRec Carver 嵌入式文件提取器
  4. 从下拉菜单中选择所有文件目录未分配空间

分析结果。

加入我们社区的 Discord

加入我们社区的 Discord 空间,与作者和其他读者进行讨论:

packt.link/CyberSec

第六章:Windows 人工制品分析

世界上大多数设备都运行 Microsoft Windows 操作系统,微软的操作系统市场份额接近 90%(netmarketshare.com/)。根据我个人的经验,我检查过的 Windows 操作系统远远多于其他任何操作系统;macOS 是第二常见的操作系统,而 Linux 则排名第三。尽管你必须准备分析所有操作系统,但无论哪个操作系统在你所工作领域中最为常见,你应该将重点放在它上面。

本章将帮助你理解 Windows 操作系统以及你可能发现的人工制品。关于 Windows 操作系统有整本书籍讨论;本章的目标是让你了解在调查过程中可能遇到的更常见的操作系统人工制品。你将从用户配置文件入手,检查大多数用户数据所在的地方。接着,我们将研究 Windows 注册表,以识别 Windows 设置。你还将查看人工制品,以确定用户的活动并了解如何识别在系统上使用过的 USB 设备。最后,我们将在以下主题中全面覆盖这些内容:

  • 了解用户配置文件

  • 了解 Windows 注册表

  • 确定帐户使用情况

  • 确定文件知识

  • 确定物理位置

  • 探索程序执行

  • 了解 USB/附加设备

操作系统管理硬件资源,并允许用户运行其他应用程序,这些程序本质上是操作系统环境中的程序。它可以成为一个宝贵的资源库,帮助我们在任何特定时刻重建用户或系统的活动。当我们讨论 Windows 操作系统时,这个话题可能涵盖多个版本。目前 Windows 操作系统的版本是 Windows 11,但 Windows 10 仍然占据大多数系统的份额。这并不意味着你检查的每一台系统上都安装了 Windows 10。即使在企业环境中,你仍然有可能检查到 Windows XP 客户端,尽管微软在 2001 年发布了它并且不再提供支持。

在本章剩余部分,我将重点讨论 Windows 7、8 和 10。然而,首先可能会提到 Windows XP,因为微软对该操作系统的遗留支持。

我想讨论的第一个问题是不同类型的用户配置文件,以及操作系统会将用户数据存储在哪里。

了解用户配置文件

当 Windows 操作系统安装时,它会创建一个默认的文件夹结构来存储用户和应用程序数据。有时,仅仅查看文件夹结构就能告诉你是否安装了某个版本。

当你寻找用户帐户配置文件时,位置可能会根据操作系统的版本而有所不同:

  • 针对 Windows XP、WinNT 和 Win2000

    • C:\Documents and Settings\%UserName%
  • 对于 Windows Vista、7、8 和 10

    • C:\Users\%UserName%

当用户首次登录系统时,系统会创建一个用户配置文件。此配置文件将用于任何后续的登录,并且现在成为用户在系统上活动的环境。微软定义了不同类型的用户配置文件:

  • 本地用户配置文件:当用户首次登录计算机时,会创建此配置文件。您会在硬盘上找到该配置文件。当对配置文件进行更改时,这些更改将特定于用户并存储在本地计算机上。

  • 漫游用户配置文件:此配置文件是由管理员创建的基于网络的配置文件。当用户登录到系统时,配置文件将被下载到本地主机。当在本地主机上对配置文件进行任何更改时,用户注销本地主机时更改也会同步到服务器副本。此配置文件类型消除了用户在登录网络中的不同主机时需要创建配置文件的要求。(此类型的配置文件仅在企业环境中存在。)

  • 强制用户配置文件:此配置文件由网络管理员创建,用于在用户使用网络中的主机时锁定一组特定的设置。未经管理员批准,用户将无法更改该配置文件。用户对本地主机环境所做的任何更改将在用户注销本地主机时丢失。

  • 临时用户配置文件:当系统加载用户配置文件时发生错误时,会创建此配置文件。用户注销时,配置文件将被删除。在运行 Windows 2000 及更高版本的计算机上,您会看到临时配置文件的使用。

每个用户配置文件都会有一个注册表哈希文件 —— NTUSER.DAT —— 并且在用户登录时会映射到系统注册表项HKEY Current User。该注册表哈希包含用户的偏好设置和配置。

每个用户配置文件包含以下文件夹:

  • \Users\$USER$\Documents

  • \Users\$USER$\Music

  • \Users\$USER$\Pictures

  • \Users\$USER$\Videos

AppData 文件夹是一个隐藏文件夹,包含特定于用户的偏好设置和配置,并进一步分为三个子文件夹:

  • \Users\$USER$\AppData

  • \Users\$USER$\AppData\Local

  • \Users\$USER$\AppData\LocalLow

  • \Users\$USER$\AppData\Roaming

Roaming 文件夹包含可以在服务器环境中同步的数据。例如,Web 浏览器的收藏夹或书签将随着用户的登录在不同的工作站之间传递:

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Cookies

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Network Shortcuts

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Printer Shortcuts

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Recent

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\SendTo

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Start Menu

  • \Users\$USER$\AppData\Roaming\Microsoft\Windows\Templates

Local 文件夹包含与程序安装相关的数据。它是特定于工作站的,并且不会与服务器(在服务器环境中)同步。临时文件也会存储在这里:

  • \Users\$USER$\AppData\Local

  • \Users\$USER$\AppData\Local\Microsoft\Windows\History

  • \Users\$USER$\AppData\Local\Microsoft\Windows\Temporary Internet Files

LocalLow 文件夹包含低级别的访问数据,例如浏览器在受保护模式下运行时的临时文件。

这完成了我们关于用户账户的讨论,现在让我们转向注册表,它是 Windows 操作系统的核心和灵魂。

理解 Windows 注册表

Windows 注册表是 Windows 操作系统的核心,它将成为我们稍后章节中讨论的许多重要内容的来源。首先,我将提供注册表的高层次概览。然后,假设你想深入了解注册表的细节,强烈推荐哈兰·卡维(Harlan Carvey)的书籍 Windows Registry Forensics – Advanced Digital Forensic Analysis of the Windows Registry。哈兰·卡维也是工具 RegRipper 的开发者,这个工具是我们在本章节中将要使用的工具。

什么是注册表?微软将注册表定义为一个中央层级数据库。这个数据库用于存储关于用户、硬件设备和应用程序的配置信息。

但是,这对法医调查员意味着什么呢?Windows 在操作过程中不断引用注册表中的信息。注册表中的信息将包含每个用户的配置文件、已安装的应用程序、不同的文档类型以及文件夹和应用程序图标的属性设置。注册表还将包含关于系统硬件的信息,包括用于网络连接的端口信息。

哇,真是内容繁多,但简单来说,注册表包含了关于计算机系统几乎所有内容的信息。

注册表的组件位于 %SystemRoot%\System32\Config 文件夹中,称为 hive 文件。你会找到 SAMSECURITYSOFTWARESYSTEM 分支。以下是各个分支的简要描述:

  • SAM 分支是安全账户管理器,包含关于用户的登录信息。

  • SECURITY 分支包含安全信息,并可能包含密码信息。

  • SOFTWARE 分支包含关于应用程序信息和默认 Windows 设置的信息。

  • SYSTEM 分支包含关于硬件和系统配置的信息。

还有一个额外的 hive,NTUser.dat,它存储在用户配置文件的根目录中。这个 hive 包含关于用户行为和设置的信息。

另一个 hive 格式的文件是UsrClass.dat文件,它位于用户账户的\AppData\Local\Microsoft\Windows文件夹中。你会找到关于用户访问控制UAC)配置和关于图形用户界面GUI)显示的用户体验的信息。

Hive 包括包含类型和特定数据或设置的子键。这将为我们提供参考框架,帮助我们探索注册表中包含的遗留物。

如下图所示,难以解读子键和值的含义以及它们代表的内容:

图 6.1:注册表编辑器显示 USBSTOR 注册表项

在浏览这些遗留物时,我将向你展示你将在注册表查看器中看到的视图,以及通过取证工具创建的更易读的解析版本。

在本章中,我们将使用一些开源工具:

我们会在几个类别中寻找遗留物。我喜欢使用 SANS 目录中对遗留物的描述,可以在digital-forensics.sans.org/community/posters找到,具体如下:

  • 账户使用情况

  • 文件知识

  • 物理位置

  • 程序执行

  • USB/驱动器使用情况

  • 浏览器使用(我们将在第九章互联网遗留物中讨论)

在了解了用户档案后,我们将讨论一些能确定与用户账户相关的操作的遗留物。

确定账户使用情况

识别键盘后面的用户是进行数字取证检查时最难的任务之一。你需要解析许多遗留物来帮助做出这个判断。首先,你需要尽可能多地收集有关该用户账户的信息,并查看是否能将其与物理人物关联起来。你会希望尽可能多地了解该用户账户及其与正在调查事项相关的活动。接下来,我们将讨论一些来自基于 Windows 的操作系统的遗留物,这些遗留物可以帮助你确定并识别该账户的活动,从用户的最后一次登录或密码更改开始。

最后登录/最后密码更改

以下路径将包含有关系统上用户账户的信息:

C:\windows\system32\config\SAM\Domains\Account\Users 

为了导航到包含用户账户信息的位置,我将使用埃里克·齐默尔曼的注册表浏览器。我已经从取证镜像中导出了注册表数据文件来运行注册表浏览器和 RegRipper。

在以下截图中,我们可以看到我已经打开了文件夹路径和子键,在Users子键中,有以十六进制名称命名的文件夹和一个名为Names的文件夹。在Names子键中,你会看到该计算机上帐户的列表:

图形用户界面,文本,应用程序 说明自动生成

图 6.2:注册表浏览器显示 USERS 键和子键

它列出了英文名称,因此易于读取。在显示的六个帐户中,一个已被删除(defaultuser0),一个用户名为jcloudyjcloudy子键的值将指向具有十六进制值的子键。在这里,jcloudy指向x3E9

在子键x3E9中,如下图所示,我看到有一个F和一个V值,在下面,我可以看到与用户密码相关的信息:

图形用户界面,文本,应用程序,电子邮件 说明自动生成

图 6.3:注册表子键 X3E9

为了简化,我们可以运行 RegRipper,看看是否能得到更易读取的输出。以下是jcloudy帐户的输出示例:

文本 说明自动生成

图 6.4:jcloudy 帐户的 RegRipper 输出

RegRipper 解析数据并以易于读取的格式呈现。我们可以看到帐户何时创建,密码提示,用户最后一次登录时间,以及用户登录系统的次数。

当你查看用户名jcloudy时,你可以看到数字1001,在下面是一个标记为SID的条目。

SID是 Windows 操作系统用于标识内部对象的安全标识符。这是 Windows 如何在内部寻址组件。在 SID 的末尾是相对标识符RID),它是 SID 后的最后几位数字。例如,如果你看到500作为 RID,那将标识该系统的管理员帐户。访客帐户的 RID 将是501。在这种情况下,如下图所示,我们看到 RID 为1001。这告诉我jcloudy帐户是用户创建的,而不是系统通过自动化过程创建的帐户:

图表 说明自动生成

图 6.5:SID 的细分

在做考试时,最常查看的 SID 部分是 RID。我们可以将 RID 与特定的用户帐户关联。当用户在系统上创建帐户时,RID 会增加一个数字。例如,我们可能有一个用户user X,其 RID 为1005,如果我找不到10011004的帐户,可能是有人或某些东西删除了这些用户帐户。

我们正在通过注册表查找支持(或不支持)我们关于发生了什么的假设的证据。帮助确定系统上发生了什么的另一个信息来源是事件日志。

Windows 将事件分类为三种不同的类别:

  • 系统:由 Windows 操作系统生成的信息

  • 应用程序:本地计算机上应用程序生成的信息

  • 安全:与登录尝试相关的信息

在 Windows Vista 到 Windows 10 中,我们可以在以下路径找到事件日志:

C:\Windows\System32\winevt\logs 

当用户因被指控使用系统进行犯罪或不当行为而辩解时,常见的借口是其他人曾访问过他们的系统。远程桌面协议RDP)是一种从另一位置访问主机的方法。安全日志将记录任何使用 RDP 协议的访问。你需要查找事件 ID 47784779,它们会显示服务连接/重新连接的时间和断开连接的时间。

你还可以搜索系统的登录类型。例如,当我们检查安全日志中的事件 ID 4624时,它将告诉我们登录的日期、时间、用户名和登录成功的方式。正如你在以下事件查看器的截图中看到的,你可以使用这个应用程序查看导出的日志文件。

一旦加载了你要查看的日志文件,你可以过滤结果,只显示与你的调查相关的事件:

图 6.6:事件查看器显示事件信息

登录类型也很重要。用户是在键盘前坐着,还是从远程站点登录的?事件 ID 4624将标识用户使用的登录类型。在以下截图中,你可以看到事件查看器的输出,显示用户何时登录以及使用了哪种登录类型。

这里显示了用户的登录类型为 2,即“交互式”:

图形用户界面 描述自动生成,置信度较低

图 6.7:事件查看器显示登录类型

以下是 Microsoft 列出的其他登录类型及其描述:

表格 描述自动生成

图 6.8:Microsoft 登录类型

你可能还想建立尝试登录的事件,以确定攻击者是否入侵了账户。以下事件 ID 将帮助你做出这个判断:

  • 4624 - 登录成功

  • 4625 - 登录失败

  • 4634 - 登录会话终止

  • 4647 - 用户终止的登录会话

  • 4648 - 用户尝试使用不同凭据登录

  • 4672 - 用户使用管理员权限登录

  • 4720 - 用户账户创建

可以在以下位置找到 Microsoft Windows 事件 ID 的完整列表:

www.ultimatewindowssecurity.com/securitylog/encyclopedia/

假设你看到很多失败的登录尝试,或者一个平时没有超级用户权限的用户被授予了管理员权限。在这种情况下,这些事件 ID 提供了额外的调查线索,帮助你确定发生了什么。

现在我们已经检查了用户的账户活动,接下来我们将讨论与用户账户文件访问相关的遗留文件。

确定文件知识

一些你调查的事件可能涉及非法图像、被窃取的数据或非法访问数据。你需要判断用户是否知道相关文件的存在,或者这些文件是否存在于用户的系统中。

现在我们将讨论一些你可以在 Windows 操作系统中找到的遗留文件,这些文件可以帮助你做出判断。

探索缩略图缓存

缩略图缓存是使用 Windows 资源管理器在缩略图视图中时创建的缩略图图像数据库。根据缩略图的大小,可能会有多个数据库,存储着相同的图像但大小不同。这取决于用户在 Windows 资源管理器中选择的视图。数据库中找到的图像并不能实质性地证明用户知道该图像存在于系统中。系统可以在用户不知情的情况下将缩略图添加到缓存中。缩略图缓存可以在用户的个人资料中找到,路径如下:

AppData\Local\Microsoft\Windows\Explorer 

你的商业取证工具将能够顺利处理缩略图缓存。如果你想使用开源工具,可以使用缩略图查看器(可在 thumbcacheviewer.github.io/ 下载)。

以下是缩略图查看器输出的示例:

图 6.9:缩略图查看器输出

如你所见,缩略图的文件名与源图像不同。为了识别创建缩略图的原始文件,我们需要查看 Windows 搜索索引数据库 Windows.edb,该数据库可以在以下路径找到:

C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb 

你将需要一个额外的工具来查找有关用于创建缩略图的图像的信息。你可以使用 ESEDatabaseView(位于 www.nirsoft.net/utils/ese_database_view.html)。

缩略图的名称是 96 5a be bc cc 2b f2 27,由十六进制字符组成。为了在数据库中搜索,我们需要将这些值反转,因此我们将搜索 27 f2 2b cc bc be 5a 96。我们要寻找的信息根据操作系统的不同,可能位于不同的位置。

  • 在 Windows 7 系统上,你可能想要查看表 SystemIndex_0A 的内容。

  • 在 Windows 8/10 计算机上,你可能想要查看表 SystemIndex_PropertyStore 的内容。

一旦我们将十六进制值输入到筛选器中,它将数据缩减为一行:

图形用户界面,文本,应用程序,电子邮件 描述自动生成

图 6.10:筛选后的数据库结果

在以下截图中,我们可以看到文件来自用户jcloudy的桌面。图片的名称是MyTiredHead.jpg

图形用户界面,文本,应用程序,电子邮件描述自动生成

图 6.11:数据库中的文件名显示

在以下截图中,当我们查看System_ThumbnailCacheID字段时,可以验证这是正确的文件:

图 6.12:数据库中的缩略图名称

这完成了关于缩略图缓存的讨论。接下来,我们将探索由 Edge/Internet Explorer/文件资源管理器浏览器创建的人工制品。

探索微软浏览器

微软使用相同的方法记录用户的文件活动和 Internet Explorer/文件资源管理器/Edge 浏览器的互联网历史。此外,它还记录本地和远程文件访问。大多数商业取证工具可以轻松解析这些文件。根据版本,历史文件将位于以下位置:

文本描述自动生成

图 6.13:IE 位置

在以下截图中,你可以看到用户正在使用 10/11 版本,因为存在WebCacheV01.dat文件:

图形用户界面,表格描述自动生成

图 6.14:文件资源管理器显示 WebCacheV01.dat 文件

.dat文件是一个 ESE 数据库。如果你想使用单次用途的取证工具,你可以将.dat文件从取证镜像中导出,并使用开源取证工具如ESEDatabaseView查看它。

(位于www.nirsoft.net/utils/ese_database_view.html

你需要导航到Containers表。以下截图是来自 X-Ways Forensics 的输出:

图形用户界面,文本,应用程序,电子邮件描述自动生成

图 6.15:X-Ways 显示 WebCache 的内容

如你所见,我们有一个日期和时间戳,以及查看的文件路径。我们看到有一个离线 HTML 文件(第一行),它位于用户的桌面上。我们看到用户打开了两个 PDF 文件、两个 JPEG 文件、一个 HTML 文件和一个 DOCX 文件。

还有一些额外的人工制品,显示了用户帐户访问了一个文件,我们接下来将讨论这些。

确定最近使用/最近访问

MRU最近使用)是存储在用户NTUSER.DAT注册表中的一个最近使用文件的列表。当你打开一个应用程序并看到应用程序的历史记录列表时,这些文件就是 MRU 列表中的文件。注册表文件中存储着很多 MRU 列表。我们将讨论一些常见的存储位置。

来自用户 NTUSER.DAT 文件的 OpenSavePidlMRU 跟踪通过 Windows 公共对话框打开/保存的最后 20 个文件(这些是常见的 打开/另存为 对话框)。在以下示例中,我们可以看到用户最近使用的 20 个文件:

图 6.16:NTUSER.DAT 密钥的内容 - OpenSavePidlMRU

另一个需要查看的密钥是:

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

此密钥包含通过 Windows 资源管理器应用程序执行/打开的文件列表。你还将拥有子键,根据文件扩展名列出已执行/打开的文件。系统将按文件执行/打开的时间顺序存储这些条目。

查看密钥的最后一个条目/修改时间时,它将与列表中的最后一个条目对应。此密钥将跟踪最近打开/执行的 150 个文件。以下是该密钥的输出(为简洁起见,我只显示了顶级条目):

Graphical user interface, text, application  Description automatically generated

图 6.17:最近的文档条目

这是我之前描述的文件扩展名子键的一个示例,它显示了最近使用的 CSV 文件:

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.csv 

A picture containing application  Description automatically generated

图 6.18:NTUSER.DAT 密钥的内容 - Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs 中的 CSV 文件

这是我之前描述的文件扩展名子键的一个示例,它显示了最近使用的 DOCX 文件:

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.docx 

Text  Description automatically generated

图 6.19:NTUSER.DAT 密钥的内容 - Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs.docx

这是我之前描述的文件扩展名子键的一个示例,它显示了最近使用的 HTML 文件:

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\.html 

Text  Description automatically generated with medium confidence

图 6.20:NTUSER.DAT 密钥的内容 - Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs.html

还有一个额外的子键,\Folder,它列出了用户在系统上打开文件夹的时间,具体如下所示:

Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\Folder 

Graphical user interface, text, application  Description automatically generated

图 6.21:NTUSER.DAT 密钥的内容 - Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs\Folders

可能有兴趣的条目包括 OneDrive 和 CloudLog。如果我在寻找特定文件的证据,目标可能将数据存储在云存储中。当我看到显示使用云存储的证据时,这就提供了额外的位置信息,我需要定位并获取这些数字证据,以继续我的数字取证调查。

如你所见,这些是查看用户访问了哪些文件的好证据,但如果用户删除了文件,会发生什么呢?这就引出了我们下一个话题,回收站。

查看回收站

回收站是微软为了保护用户免受错误操作的努力。它为用户删除文件时提供了一个中介步骤。Windows 会将文件移入一个称为回收站的暂存区。

回收站是一个隐藏的文件夹,存储在系统每个固定磁盘的根目录中。文件夹名为$Recycle.Bin。在 NTFS 格式化的磁盘上,将会有以用户 SID 命名的子文件夹。这些子文件夹会在用户首次登录系统时创建:

  • $Recycle.Bin

    • S-1-5-21-2734969515-1644526556-1039763013-1001

当用户删除一个文件时,原始文件会被重命名,并成为Recycle.Bin文件集的一部分。系统会将原始文件重命名为$R,然后是六个随机的字母数字字符作为文件名,文件扩展名保持不变。系统会创建第二个文件,以$I开头,后面跟着与$R文件相同的六个字母数字字符。$I文件也将与$R文件具有相同的文件扩展名。

$I文件将跟踪删除时间和原始文件位置的路径:

  • 大小:4.9 MB

  • 已移至回收站04/05/2018 02:20:17 +0 C:\Users\jcloudy\Desktop\Larry King_ Time to Repeal the 'Poorly Written' Second Amendment_files

如你所见,我们得到了原始文件的大小、用户删除文件的时间以及包括文件名在内的原始路径。

如果用户删除了一个目录,你仍然会保留该目录的$R$I文件。$R文件将包含所有子目录和所有具有原始名称的文件,如下图所示:

图 6.22:已删除的目录

用户可以清空回收站。当这样做时,文件系统会更新,标记这些簇现在可以重新使用。在系统覆盖数据之前,您可以从未分配的簇中恢复数据。请注意,$I(在 NTFS 卷上)将是 MFT 中的常驻数据。NTFS 在重用 MFT 中的文件条目方面非常高效,因此很难恢复$I文件中的信息。

如果回收站被清空,其他遗留物可能仍然引用该文件。接下来我们要讨论的内容是链接(LNK)文件。

理解快捷方式(LNK)文件

.lnk文件是 Windows 操作系统用作快捷方式或链接到文件、应用程序或资源的文件。它是一种简单、易用的方法,让用户可以访问常用的文档或应用程序。链接文件将包含对数字取证调查员有用的信息,包括以下内容:

  • 文件的 MAC 时间

  • 文件大小

  • 文件路径

  • 卷详细信息

即使目标文件已被删除,这些信息仍将保留。每次双击文件或使用文件打开对话框时,系统都会创建一个链接文件。这些链接文件将存储在位于以下路径的Recent文件夹中:

%Username%\Appdata\Roaming\Microsoft\Windows\ 

大多数商业取证工具可以分析链接文件。一个开源选项是 Eric Zimmerman 的 LECmd 工具(可以在ericzimmerman.github.io/找到)。

当我们分析链接文件的内容时,我们可以看到大量可能对数字取证调查员有帮助的信息:

图形用户界面,文本,应用程序 描述自动生成

图 6.23:链接文件内容

我们可以看到目标文件是存储在用户桌面上的 Microsoft Word 文档。当我们查看字段 ID 列表时,我们还可以看到文件的内部元数据(MAC 值)。这些数据在试图将文件的知识与特定用户关联时可能非常重要。我们还可以看到系统创建链接文件的日期/时间。其他信息包括卷类型/序列号和主机名,这使我们能够将此链接文件与目标文件的特定位置关联起来。请注意,这是用户或系统管理员可以关闭的选项。与 LNK 文件类似的另一个工件是 JumpList。

解读 JumpLists

JumpLists 在 Windows 7 中引入,与Recent文件夹非常相似(我们在 LNK 文件中讨论过)。它们允许用户从 Windows 任务栏访问常用/最近使用的文件。即使用户清空了Recent文件夹,也不会清除 JumpLists 中存储的信息。

JumpLists 可以在以下路径中找到:

  • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\Automaticdesti nations

  • %UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations

JumpLists 有两种类型:

  • 自动 – 系统创建的。记录有关文件使用的信息。

  • 自定义 – 应用程序创建的。记录有关应用程序的任务特定信息。

在下方的截图中,你可以看到AutomaticDestinations文件夹,文件夹内将包含包含 JumpLists 的文件:

图 6.24:JumpList 显示

系统根据 JumpLists ID 命名 JumpLists。例如,在前面的截图中,我们看到5d696d521de238c3.automaticDestinations-ms。在 JumpLists ID 列表中搜索(可以在community.malforensics.com/t/list-of-jump-list-ids/158找到)显示,这是 Google Chrome 浏览器的 JumpLists ID。

大多数商业取证工具都会解析出 JumpLists。一个开源选项是 Eric Zimmerman 的 JumpList Explorer。

(位于ericzimmerman.github.io/

以下是文件中包含的信息。你可以看到用户正在使用 Chrome 浏览器查看 PDF 文件和离线 HTML 文件。它还包含用户打开文件的日期/时间:

  • 7 04/06/2018 03:56:32 +0 C:\Users\jcloudy\Desktop\LeftUsesBoycotts.pdf

  • 6 04/06/2018 03:55:00 +0 C:\Users\jcloudy\Desktop\AMEN.pdf

  • 5 04/05/2018 05:51:41 +0 C:\Users\jcloudy\Desktop\UKknifeBan.pdf

  • 4 04/05/2018 05:48:40 +0 C:\Users\jcloudy\Desktop\SelfDefenseisMurder.pdf

  • 3 03/30/2018 04:32:25 +0 C:\Users\jcloudy\Desktop\Cubs' Anthony Rizzo Praises Parkland Kids, Says 'It's too Easy to Get a Gun'.html

  • 2 03/30/2018 04:29:48 +0 C:\Users\jcloudy\Desktop\Larry King_ Time to Repeal the 'Poorly Written' Second Amendment.html

  • 1 03/27/2018 09:51:18 +0 C:\Users\jcloudy\OneDrive\Getting started with OneDrive.pdf desktop-pm6c56d

跳转列表是关于文件的工件;下一个工件将显示用户访问了哪些文件夹。

打开 shellbags

Shellbags 是一组注册表键,记录了用户通过 GUI 访问的文件夹和库的大小和位置。此外,你还可能找到显示用户与网络设备、可移动媒体或加密容器互动的工件。

你可以在名为USRCLASS.DAT的注册表树中找到它们,该文件位于用户的AppData\Local\Microsoft\Windows文件夹中。

大多数商业取证工具会解析USRCLASS.DAT文件中的 shellbags,但工件的呈现方式会有所不同。我喜欢使用 Eric Zimmerman 的 Shellbag Explorer 作为开源替代方案。

在以下截图中,你可以看到用户通过 Windows GUI 访问的文件夹的图形表示。此截图来自 Shellbag Explorer:

图 6.25:Shellbag Explorer:shellbags 的图形表示

通过这个工件,你无法判断用户是否访问了文件夹内的任何文件。这个工件显示的是用户访问了该文件夹。从显示的信息来看,我看到用户正在使用三个云存储服务。我们之前已经见过关于 Box Sync 和 Dropbox 的工件,但这是我第一次看到关于 Google Drive 的相关信息。

在以下 RegRipper 输出中,我们可以看到访问日期和时间戳,以及第一次访问的日期/时间:

图形用户界面,文本,应用程序,电子邮件  描述自动生成

图 6.26:RegRipper 输出 Google Drive

如果受访者表示他们不知道文件/文件夹的位置,那么这个工件非常重要。这个工件是通过用户的操作生成的。下一个工件也可以用来显示用户对文件的了解。

理解预取

预取是微软引入的一项功能,用于提升用户在 Windows 操作系统中的体验。它通过预加载数据到内存中,提前满足用户或系统的需求,从而加快响应时间。你可以在以下路径找到预取文件:

%WINDOWS%\PREFETCH 

这些文件的扩展名为 .pf。此外,预取文件将包含与其关联的可执行文件的信息,例如可执行文件使用的文件列表、用户运行该可执行文件的次数以及用户上次运行该可执行文件的日期/时间。

大多数商业法证工具都会解析预取文件。对于开源选项,您可以使用 NirSoft 的 WinPrefetchViewtool

(位于 www.nirsoft.net/utils/win_prefetch_view.html

在以下截图中,我们正在查看 WinPrefetchView 的输出。您可以看到日期和时间戳以及可执行文件的进程路径(请注意,由于系统监控预取文件的方法,您可能需要从创建/修改时间中减去 10 秒,以获取准确的时间):

图 6.27:WinPrefetchView 显示的预取文件

使用这些工件,您可以确定用户正在使用哪些应用程序,这可能会导致发现隐藏的分区、移动设备、加密容器或云存储。

随着操作系统的更改或更新,工件可能会移动或被删除。您需要保持更新,了解已知的变化。接下来我们将查看帮助我们确定系统物理位置的工件。

确定物理位置

知道系统的物理位置可能有助于您证明或反驳针对您正在调查的对象的指控。例如,曾经对某组织网络泄露事件进行过调查。由于该员工在解雇过程中曾有威胁,该前员工成为了攻击的嫌疑人。在对嫌疑人进行面谈时,他否认自己在该地区,并表示他当时不在本州。一位法官批准了对嫌疑人移动设备和笔记本电脑的搜查令。在对笔记本电脑进行法证分析时,检查员发现它已恢复到操作系统的新版本。未分配空间中的工件使我们相信该用户已擦除该设备(该用户用十六进制 00 字符覆盖了所有可用扇区)。嫌疑人没有篡改移动设备,且我们能够对设备进行分析。我们能够绘制出该设备在嫌疑人声称不在本州时所连接的 Wi-Fi 热点。当面对这些数字证据时,嫌疑人承认了自己忘记了手机,并表示它自动连接到了 Wi-Fi 热点。

现在我们将讨论一些您可以查看的系统工件,以帮助确定事件发生时的物理位置。

确定时区

系统的时区信息为你提供了一个起点,用于将记录的活动与事件发生的日期/时间进行关联。所有内部日期和时间戳将基于注册表中记录的时区信息。我们可以在系统 hive 中找到时区信息。相关的键位路径如下:

SYSTEM\CurrentControlSet\Control\TimeZoneInformation 

这将通过 RegRipper 给出以下输出:

文本 描述自动生成

图 6.28:RegRipper 输出 - SYSTEM\CurrentControlSet\Control\TimeZoneInformation

Tzres.dll是时区资源的DLL。你可以看到BiasActiveTimeBias字段,分别显示为300240,即与 GMT 的时间偏移分钟数。然后是时区的常用名称,在这种情况下是东部标准时间

时区并不总是准确的——用户可以将时区设置为自己选择的区域。接下来我们将检查的文物可能有助于定位物理位置。

探索网络历史

了解嫌疑人连接过哪些网络,无论是有线还是无线,可能会为你提供关于他们在事件发生时位置的线索。你可以在Software hive或操作系统管理的 XML 文档中找到相关信息。Wi-Fi 文档的路径如下:

C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces 

该目录包含每个接口的子文件夹(使用 GUID 命名规则)。XML 文档将包含该接口连接过的网络的SSID服务集标识符)。以下输出与您在 XML 文档中找到的信息一致:

图 6.29:WLAN 配置文件的 XML 输出

如你所见,网络的 SSID 是Net 2.4,并且使用WPA2PSK认证。

如果你访问注册表位置,你将找到包含网络信息的子 hive,比如Profiles子键,它提供了嫌疑人连接的无线网络的更多信息:

SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList 

以下是networklist子 hive 的 RegRipper 输出:

图 6.30:RegRipper 输出 - SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList

注册表 hive 提供了更多信息,包括 MAC 地址、连接的日期和时间戳。我们还可以查看另一个日志文件:WLAN 事件日志。

理解 WLAN 事件日志

微软 Windows 也会记录无线连接的事件日志。该日志可以在以下路径找到:

C:\windows\System32\winevt\Logs\Microsoft-Windows-WLAN-AutoConfigOperational.evtx 

该日志包含 SSID 信息、MAC 地址,以及连接的日期和时间戳。以下事件 ID 号可能与您的调查相关:

  • 11000 - 无线网络关联

  • 8001 - 已连接到无线网络

  • 8002 - 无法连接到无线网络

  • 8003 - 已断开与无线网络的连接

  • 6100 - 网络诊断(系统日志)

注意

关于 Microsoft Windows 的所有信息,你可以在docs.microsoft.com/en-us/找到。

以下输出与你在事件日志中看到的内容一致:

图 6.31:WIFI 访问事件日志

这是11000事件 ID,表示无线连接的开始。因此,基于这个特定的痕迹,你可以表明在 2018 年 3 月 27 日 12:15:58(GMT),计算机SYSTEM已连接到无线网络Net 2.4

如果你知道无线网络Net 2.4的位置,你可以将这台计算机与该物理位置关联起来。

接下来,我们将讨论可以帮助我们确定用户是否执行了特定程序的痕迹。

探索程序执行

程序执行痕迹指示系统上运行过的程序或应用程序。用户可以直接触发执行,或者通过系统管理的自动启动/运行事件。一些类别与本章早些时候讨论的文件知识类别重叠。我不会在本节重新审视这些特定的痕迹。请注意,来自最近应用程序、JumpLists、MRU 和预取文件的痕迹也将包含有关程序/应用程序活动的信息。

确定 UserAssist

UserAssist是用户NTUSER.DAT文件中的一个注册表键,位于以下路径:

NTUSER.DAT\Software\Microsoft\Windows\Currentversion\Explorer\UserAssist 

该密钥跟踪系统中启动的基于 GUI 的应用程序。系统使用 ROT 13 编码对密钥中的数据进行编码。RegRipper 将自动解码数据。以下是你将从 RegRipper 看到的输出:

图 6.32:NTUSER.DAT\Software\Microsoft\Windows\Currentversion\Explorer\UserAssist 的内容

如前面的输出所示,你可以看到最后一次执行的日期和时间戳,以及可执行文件的路径。括号中的数字表示用户/系统激活可执行文件的次数。接下来,我们将讨论 Shimcache,它也包含有关已执行程序的信息。

探索 Shimcache

这是 Shimcache 的默认位置:

SYSTEM\CurrentControlSet\Control\Session Manager\AppCompatCache 

Shimcache 用于跟踪已执行程序的兼容性问题。存储在此缓存中的一些信息如下:

  • 文件路径

  • $Standard信息属性修改时间

  • Shimcache 的更新时间

以下是你将从 RegRipper 看到的输出:

文本,字母说明自动生成

图 6.33:Shimcache 输出

在 Shimcache 中找到的痕迹可以为系统中发现的其他痕迹提供支持证据,即注册表、事件日志、文件系统等。

有时,用户会将程序或文件存储在便携设备中。下一组痕迹将涉及 USB 设备的使用。

理解 USB/附加设备

USB 设备存在若干安全风险。它们体积小、便于携带,是高容量存储设备,可能被用于从组织中窃取数据,或者用于将恶意软件传递给组织,从而破坏其安全协议。

作为一名数字取证调查员,你会想知道是否有任何 USB 设备连接到你正在检查的主机。接下来,我们将讨论一些 Windows 系统工件,帮助你识别主机上的 USB 设备使用情况。

接下来我们将查看两个注册表键的结果,第一个键可以在以下路径找到:

SYSTEM\CurrentControlSet\Enum\USB 

这个注册表键识别连接到系统的 USB 设备,如下输出所示:

Text  Description automatically generated with medium confidence

图 6.34:注册表键的内容 - SYSTEM\CurrentControlSet\Enum\USB

我们可以看到系统在不同时间连接了两台 USB 设备。我们有不同的卷序列号和系统访问设备时的最后写入时间。注册表中找到的卷序列号并不是物理设备的序列号。

注意

没有唯一卷序列号的设备将会在卷序列号的第二个字符上出现 &

接下来你需要查看的注册表键是:

SYSTEM\CurrentControlSet\Enum\USBSTOR 

当我们查看 USBSTOR 中的值时,会得到关于设备的更多信息,包括设备的商业名称。我们还通过这两个 SYSTEM hive 中的条目确认了设备的序列号:

Text  Description automatically generated

图 6.35:注册表键的内容 - SYSTEM\CurrentControlSet\Enum\USBSTOR

SYSTEM hive 中的 MountedDevices 键,路径为 SYSTEM\MountedDevices,我们可以通过序列号将 USB 设备映射到系统中的驱动器字母:

Graphical user interface, text, application, email  Description automatically generated

图 6.36:注册表键的内容 - SYSTEM\MountedDevices

当我们分析数据时,可以看到有两个 USB 设备(序列号为 AA010215170355310594594AA010603160707470215)连接到系统。其中一个被识别为 D: 驱动器,第二个设备被识别为 E: 驱动器。

问题是否依然存在,究竟是哪个用户账户负责 USB 设备的使用?为了回答这个问题,我们需要从每个 USB 设备中提取 GUID,并将它们与用户的 NTUSER.DAT 文件进行比对。我们正在寻找的 GUID 是 3869c27a-31b8-11e8-9b12-ecf4bb487fed5c3108bb-31c0-11e8-9b10-806e6f6e6963

RegRipper 还会分析 NTUSER.DAT 文件,并提供有关与用户账户关联的设备的信息:

Graphical user interface, text, application  Description automatically generated

图 6.37:注册表项内容 - Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2

如你所见,我们在注册表条目中找到了两个 GUID,显示了设备最后挂载的时间。因此,我们现在可以说,jcloudy 账户登录时,用户使用了特定的 USB 设备。

总结

本章中,我们讨论了如何在基于 Microsoft Windows 的操作系统上定位文物,以确定受调查者在调查事项中的责任。你已经了解了不同类别的文物以及它们代表的用户/系统行为。运用你从本章学到的知识,你可以快速确定在你调查的时间框架内哪些账户处于活动状态,以及该事件是否涉及可移动存储设备。此外,你还了解了如何分析文物,以确定用户是否知道特定的文件或应用程序。最后,我们使用了几种商业和开源取证工具来访问这些文物。因此,你现在知道如何找到并分析在基于 Microsoft Windows 的操作系统上找到的数字证据。

下一章将讨论内存取证。

问题

  1. 你可以在何处找到注册表文件?

    1. %SystemRoot%\System32\Config

    2. %SystemRoot%\System32

    3. %SystemRoot%\\Config\System32

    4. %SystemRoot%\System64\Config

  2. 在检查日志文件时,哪个事件 ID 表示成功登录?

    1. 4624

    2. 4625

    3. 4672

    4. 4642

  3. 缩略图缓存是一个 ______________。

    1. 脚趾甲图像的数据库

    2. 缩略图图像的数据库

    3. 已删除缩略图图像的数据库

    4. 已删除图像的数据库

  4. 用户可以使用 Internet Explorer/Edge 查看文件。

  5. 在 LNK 文件中可以找到以下哪项?

    1. 卷序列号

    2. 路由器名称

    3. 删除日期

    4. 卷详细信息

  6. 以下哪种 Microsoft Windows 操作系统使用 JumpLists?

    1. Windows 98

    2. Windows ME

    3. Windows 7

    4. Windows 2000

  7. 在哪个注册表配置区可以找到与 USB 设备相关的文物?

    1. NT USER.DAT

    2. 系统

    3. 软件

    4. 安全

答案可以在书本后面的 评估 部分找到。

进一步阅读

有关本章所涵盖主题的更多信息,请参考以下链接:

练习

数据集

第六章 猫头鹰练习.e01

所需软件

Autopsy - www.autopsy.com/

情景

在一个猫头鹰交易和购买是非法的司法管辖区,两个用户正在讨论非法交易猫头鹰。一台属于一个试图非法购买猫头鹰的用户的计算机被作为证据收缴。要求你对数字证据进行分析。已经获取了取证镜像,准备好给你分析。你可以使用 Autopsy 或任何其他工具。

你可能需要查找的某些证据包括:

  • 网络搜索

  • 购物搜索

  • 聊天客户端

  • 电子邮件

  • 文档

  • 社交网络

  • 操作系统证据

  • LNK 文件

  • 回收站

  • Shellbag

可能的关键词:

  • 猫头鹰

  • 小猫头鹰

  • 羽毛

  • 鸟蛋

  • 杂交

  • 夜行性

  • 巢穴

  • 猫头鹰叫声

  • 保护

  • 翼展

加入我们社区的 Discord

加入我们社区的 Discord 空间,与作者和其他读者进行讨论:

packt.link/CyberSec

第七章:RAM 内存取证分析

RAM 是一个重要的数字证据来源,但在历史上常常被忽视。随着我们对数字证据的了解不断深入,检查员意识到 RAM 中存在潜在的数字证据来源。最终,你将有一个额外的多吉字节信息来源需要检查,可能包含传统位置中不存在的数字痕迹。

本章将介绍内存的基础知识。然后,我们将了解不同的内存来源,并学习如何使用 RAM 捕获工具来捕获 RAM。在本章结束时,你将理解处理易失性内存的各种方法和工具。

本章将涵盖以下主题:

  • 内存基础

  • 随机存取内存

  • 识别内存来源

  • 捕获 RAM

  • 探索 RAM 分析工具

内存基础

随机存取内存 (RAM) 包含什么信息?它将提供系统在关闭之前的当前运行状态信息。它将包含任何正在运行的程序信息;这些可能是合法的进程,也可能包含正在运行的恶意程序进程。如果攻击者已侵入主机,恶意程序可能驻留在 RAM 中。

你还会发现与主机与其他节点之间网络连接相关的信息。这可能是合法的点对点文件共享,也可能显示与攻击者主机的连接。这些连接是你可以追踪的线索。用户也可能正在共享非法图片。同样,连接到其他计算机将允许你跟踪并调查更多的用户,查明同样的犯罪。

如果用户使用云服务,我们可能永远无法在系统的物理磁盘中找到他们创建的数据。相反,我们可能只能看到以 RAM 形式托管在云中的数据证据。

RAM 是计算机系统中的“厨房桌”。用户/系统的任何操作都会访问 RAM。例如,每次鼠标点击和每次按下的键盘按钮都会通过 RAM 进行处理,并且你可以恢复整个文件、密码以及放入剪贴板的文本。所有这些都是潜在的数字证据来源。有时,你还能恢复用户创建的加密容器中的加密密钥。

2004 年,Rajib K. Mitra 因干扰警察无线电通讯而被定罪。调查结果没收了多件数字证据。主侦探 Cindy Murphy 在 2009 年得知,恢复仅存在于 RAM 中的加密密钥是可能的。Murphy 侦探回过头重新检查了证据,成功找到了 Mitra 用来保护加密容器的加密密钥。当 Murphy 侦探打开加密容器时,发现了许多非法图片,最终导致 Mitra 因持有这些图片而被定罪。

分析 RAM 与分析硬盘有何不同?RAM 是一个活跃运行系统的快照,而硬盘检查则是静态的。在检查硬盘时,我们已经关闭了系统,并正在检查物理设备上的数据。RAM 更加短暂,如果你在两个不同的时间点获取 RAM 的法医影像,你将得到不同的结果。捕获 RAM 中的数据会导致潜在证据的丢失。你在收集 RAM 时实际上是在改变证据。

那么,让我们来讨论一下什么是 RAM。

随机存取内存?

RAM 暂时存储在活动计算机系统上的工作数据/代码。与传统的存储设备(如硬盘)不同,数据可以以极快的速度在 RAM 上读取/写入。当前技术允许在一个集成电路芯片上制造 RAM 芯片,并使用金属氧化物半导体单元。存储在 RAM 芯片中的数据是易失性的。

当计算机系统断电时,我们会丢失易失性数据。这是“拔掉插头”战术不再推荐用于应对激活计算机系统的现场的一个重要原因。

你可能会遇到两种不同类型的 RAM:静态 RAMSRAM)和动态 RAMDRAM)。SRAM 被认为在速度和能效方面更优,而 DRAM 比 SRAM 更便宜。因此,SRAM 通常用于作为 CPU 的缓存内存,而 DRAM 则作为计算机系统的内存芯片。

以下是你在调查中可能遇到的 DRAM 芯片的表示:

一张包含文本、电子元件、线路的图片 说明自动生成

图 7.1:DRAM 图像

不要将 RAM 与 只读内存ROM)混淆。ROM 永久存储数据在内存芯片中,并且是非易失性的。

例如,32 位的微软 Windows 系统计算机内存限制为 4 GB,而 64 位的微软 Windows 系统计算机内存限制为 128 GB。这是一个相当显著的潜在证据,历史上尚未进行过分析。

为了让 CPU 访问存储在内存芯片中的数据/执行代码,必须为该数据的位置提供一个唯一的标识符。当我们开始检查原始内存转储时,我们将处理物理地址,这是内存转储的偏移量。

存储在 RAM 中的数据以 4 KB 大小的页面存储(但大小可以变化),当系统处理并添加/读取数据到 RAM 中的页面时,它们正在使用虚拟地址。

所有操作系统以相同的方式访问 RAM。因此,让我们讨论一些操作系统中常见的概念:

  • 权限分离:权限决定了用户、用户帐户和进程可以访问的内容。它是一种访问控制形式,当操作系统使用时,它通过将用户和 CPU 内核的操作隔离来帮助提供系统的稳定性。操作系统在受信模式下运行,即内核模式,而用户应用程序则在不受信模式下运行,即用户模式,在系统中执行命令时。

  • 系统调用:为了访问由操作系统内核控制的资源,用户应用程序必须请求访问。这是通过对内核进行系统调用来实现的。它是应用程序与操作系统之间的桥梁,使得不受信任模式在特定实例中变得可信。

  • 进程管理:程序代码在内存中执行。操作系统负责管理进程。当前的操作系统作为多程序系统运行,允许多个进程同时执行。在分析内存转储时,我们正在查看在捕获时执行了哪些进程,并分析存储在 RAM 中的数据。

  • 线程:一个进程可以有多个线程。线程是使用系统资源(如 CPU)的基本单位。当我们分析内存转储时,我们正在寻找进程的时间戳和起始地址,这有助于识别进程中的代码。

RAM 的内容可能包括系统中发生的或曾经发生过的事件的痕迹。它可以包括以下内容:

  • 配置信息

  • 输入的命令

  • 密码

  • 加密密钥

  • 未加密的数据

  • IP 地址

  • 上网历史

  • 聊天记录

  • 电子邮件

  • 恶意软件

正如你所看到的,通过收集 RAM,可以获得大量有价值的证据。那么,在哪里可以找到存储在 RAM 中的数据呢?有几个不同的来源,接下来我们将讨论这些来源。

识别内存来源

如果你不是现场的调查员,且在收集 RAM 中的数字证据时,他们没有收集易失性数据,会发生什么?即便系统已经关闭,是否仍然可以访问 RAM?虽然你无法分析 RAM,但仍然可以检查其他包含存储在 RAM 中相同数据的来源。这个选项可能并不总是可行,具体取决于数字证据扣押时的具体情况。

你需要知道,在 RAM 中可能还包含有相同或相似数据的潜在额外来源。它们如下所示:

  • 休眠文件(hiberfill.sys):休眠是指在关闭计算机电源的同时,仍然保持系统的当前状态。在 Windows 中,RAM 被压缩并存储在 hiberfill.sys 文件中。这样,系统可以完全关机,但当系统重新启动时,hiberfill.sys 文件的内容将重新加载到 RAM 中。

    注意

    如果你正在检查一台笔记本电脑,休眠通常是通过关闭笔记本电脑来启动的。在台式机中,这将由用户手动启动。hiberfill.sys 文件的文件头可能是 hibrHIBRwakeWAKE。当系统重新启动时,文件头会被清零。hiberfill.sys 文件是一个压缩文件,必须在分析之前进行解压。

    在分析 hiberfill.sys 文件时,最后修改日期/时间戳将显示 RAM 内容被添加到该文件的时间。

    注意

    如果你处于现场且无法进行实时内存捕获,另一种选择是将系统置于休眠状态,这样会创建 hiberfill.sys 文件,并保存系统当前的状态。

  • 分页文件(pagefile.sys):分页是一种存储/检索数据的方法,使用虚拟内存文件在传统存储设备上存储与 RAM 芯片中使用的数据。虽然它的速度不如单独使用 RAM,但它允许程序超出物理内存的容量。当使用分页时,系统会以页面为单位传输数据。分页文件中存储的数据通常是内存中请求最少的数据。当对这些数据的请求被处理时,它会将数据重新放回物理内存。

    注意

    在 Windows 操作系统中,分页文件 pagefile.sys 存储在操作系统卷的根目录下。请注意,用户可以更改此位置。通常,分页文件的大小可以是系统物理内存的 1 到 3 倍。

  • 交换文件(Swapfile.sys):在 Microsoft Windows 8 中,Microsoft 引入了 Swapfile.sys 文件。它与我们刚才讨论的分页文件类似,但有所不同。交换文件的创建是为了让操作系统可以用于处理挂起的现代 Windows 应用程序的分页操作。当应用程序挂起时,系统会将应用程序的所有数据写入交换文件中。这释放了物理内存中的空间,当应用程序恢复时,数据会被移回物理内存。

  • 崩溃转储(memory.dmp):如果你使用过任何版本的 Microsoft Windows,你可能会遇到系统崩溃或 蓝屏死机BSoD)。发生这种情况时,系统可能会创建内存转储,存储崩溃时系统状态的信息。

根据设置,你可能会得到以下几种类型之一:

  • 完整内存转储:包含物理内存中的数据。(由于物理内存芯片的容量问题,这种方式并不常见。)

  • 内核内存转储:只会包含处于内核模式下的数据页面。

  • 小型转储文件:包含崩溃时运行的进程/加载的驱动程序信息。

SYSTEM hive 中将包含一个键,用于确定在你正在检查的系统上存在的内存转储。你需要查看的键如下:

SYSTEM\CurrentControlSet\Control\CrashControl\CrashDumpEnable 

转储文件将采用专有格式,并需要使用第三方工具进行转换(可在www.comae.com下载)。到目前为止,我们已经讨论了提供内存来源的位置。最终,你需要捕获内存芯片中的数据,这是我们接下来的话题。

捕获 RAM

当决定从系统中捕获 RAM 时,必须考虑多个因素。最重要的问题是,在收集易失性数据时,你将改变系统的状态。

数字证据科学工作组SWGDE)已探讨了易失性数据的收集,并提出了以下考虑事项:

  • 用于收集内存数据的应用程序将覆盖一些内存内容。

  • 工具及其相关文件越大,它覆盖的数据就越多。

  • 系统可能会将 USB 设备驱动程序加载到内存中。

  • 系统可能会将 USB 设备驱动程序加载到注册表中。

  • 用于收集内存数据的应用程序将出现在一些最近使用的文件MRUs)中。

收集 RAM 可能会导致系统死机或不稳定。因此,数字取证调查员必须了解该工具如何影响不同的操作系统。

在计算了风险与回报后,你决定继续并收集 RAM 内容。那么,你需要做些什么才能完成这项任务呢?最好决定选择哪种工具,它在你创建内存转储的环境中最适用。关于工具选择的一个考虑因素是该工具在系统上留下的痕迹有多大。

准备捕获设备

要成功地获取 RAM 镜像,你需要三样东西:

  • 捕获设备(如 USB 设备)

  • 访问系统

  • 管理员权限

注意

记住,系统中安装的 RAM 数量将决定外部存储设备的大小。如果系统有 16GB 的 RAM,那么你的外部存储设备需要大于 16GB。内存转储的大小将与已安装的 RAM 容量相同。

在响应现场之前,你需要准备好外部存储设备。你的设备应该格式化为 NTFS 分区。这样可以避免如果你使用 FAT32 格式化设备时可能遇到的文件大小问题。

现在我们将讨论一些用于创建 RAM 原始取证镜像的工具。

探索 RAM 捕获工具

我将简要介绍一些用于捕获 RAM 的工具。还有其他商业和开源工具可供选择。我们可以写一本完整的书(实际上已经有这样的书)来介绍一些内存取证工具。本节的目标是为你提供概览和完成成功内存转储所需的技能,但请注意,你可以比我在本章中所讲的更深入地了解这些工具。

以下工具都是开源的,并且可以自由使用。

使用 DumpIt

DumpIt(可在 github.com/thimbleweed/All-In-USB/tree/master/utilities/DumpIt 上找到)最初由 MoonSols 开发。随后,Comae 维护了该项目。截至 2021 年,DumpIt 似乎已被整合到 Comae Platform V2.0 的闭门测试版中。它是 Win32ddWin64dd 的结合体,打包成一个可执行文件。最终用户无法进行任何配置。这款工具快速、小巧、便携,并且对 RAM 的占用极少。

DumpIt 是所有工具中最简单的一个。创建外部设备并回应场景后,你需要按照以下步骤操作:

  1. 将你的 U 盘插入目标主机。

  2. 输入 cmd(如下面的截图所示):

图 7.2 – 搜索栏

图 7.2:搜索栏

  1. 右键点击 命令提示符,以管理员身份运行(如下图所示):

管理员图像

图 7.3:以管理员身份运行

  1. 一旦命令提示符出现,导航到 U 盘上的文件夹,找到包含可执行文件的文件夹。然后你需要输入 cmd 命令并执行它。

  2. 系统将显示一个屏幕,展示物理内存的大小和设备上的空间。然后它会询问你是否继续。选择 y,如下面的截图所示:

图 7.4:DumpIt 屏幕

  1. 安装的 RAM 大小将决定创建内存转储所需的时间。一旦该过程完成,程序会通知你成功:

图 7.5:DumpIt 成功

DumpIt 并不是唯一可用的工具。还有其他开源替代工具,如 FTK Imager,接下来我们将讨论它。

使用 FTK Imager

FTK Imager Lite(可在 accessdata.com 获取)是一个基于图形界面的工具,允许用户转储运行 Windows 32 位或 64 位操作系统的计算机系统的内存。这个工具易于使用,并且可以部署在 U 盘上。它还允许我们挂载二进制转储文件进行查看。由于是图形界面的,它对 RAM 留下了较大的足迹。

FTK Imager 也相对易于使用。记住,它是基于图形界面的,因此在从外部存储设备启动可执行文件时,它会在内存中覆盖比基于命令行的工具更多的数据。

一旦你回应了该场景,你需要执行以下操作:

  1. 将你的 U 盘插入目标主机。

  2. 如果 文件资源管理器 没有自动启动,请使用 Windows + E 快捷键打开它。

  3. 启动 FTK Imager,左键点击 文件,然后选择 捕获内存...,如下面的截图所示:

图 7.6:FTK Imager 菜单

  1. Memory Capture窗口将会如以下截图所示出现。在这里,您可以填写目标路径:FTK Imager 内存捕获

    图 7.7:FTK Imager 内存捕获

    然而,请确保选择您的外部存储设备。

  2. 您还可以选择pagefile。没有理由不选择它。勾选该框,然后左键点击Capture Memory

  3. 一旦工具完成操作,您将收到成功通知,如下图所示。此操作将把内存文件存储到您的外部存储设备上:

FTK Imager 成功

图 7.8:FTK Imager 成功

无论您使用哪种工具来收集内存,一旦收集完成,您需要获取刚刚创建的文件的哈希值。您不想使用嫌疑人的系统,因为任何发出的命令都会改变证据的状态。您将需要使用您的取证笔记本电脑或实验室的取证工作站来生成哈希值。

现在您已经创建了 RAM 的内存转储,接下来用什么工具来分析它呢?让我们来讨论一些可以用来分析 RAM 的工具。

探索 RAM 分析工具

就像我们分析来自传统存储设备的取证镜像一样,您有选择开源或商业软件的权利。选择哪个工具取决于检查员的个人偏好(有时还涉及预算),用以分析数据集。我们将介绍一些可用的工具,但这不是一个全面的列表。大多数商业工具都能分析内存文件;在这里,我们将讨论一些可用的开源选项:

  • Bulk Extractor:Bulk Extractor(可从digitalcorpora.org/downloads/bulk_extractor下载)扫描目标介质(磁盘镜像、文件、目录)并提取它认为有用的信息。它忽略文件系统结构,这使得它能够并行处理源数据集的不同部分。与传统的取证工具相比,这使得它非常快速。随着 Bulk Extractor 找到它认为相关的数据,它会生成一个艺术品的直方图。

  • Volatility:Volatility(可从www.volatilityfoundation.org下载)是一个开源框架,用于事件响应和恶意软件分析。Volatility 支持多种操作系统的内存转储。Volatility 非常强大,并且有许多插件可用。

  • VOLIX II v2:VOLIX II(可从www.fh-aachen.de/en/people/schuba/forschung/it-forensik/projekte/volix-en下载)是 Volatility 的图形用户界面前端。它允许您结合命令以增强可用性和速度。它省去了使用命令行界面的麻烦,并且使您可以通过点击和选择来实现相同的结果。

我们将讨论一些开源选项的使用。

使用 Bulk Extractor

让我们看看 Bulk Extractor 是如何工作的:

  1. Bulk Extractor 的文档列出了其输出的以下信息:

表格描述自动生成

图 7.9:Bulk Extractor 输出选项

  1. 您需要左键单击 工具 并选择 运行 bulk_extractor… 来开始分析您的内存转储,如下图所示。当您运行 Bulk Extractor 时,查看器将显示出来:

    图 7.10:Bulk Extractor 菜单 – 运行 bulk extractor 选项

    然后,它将呈现 运行 bulk_extractor 菜单。

  2. 将工具指向您的图像文件位置和您希望使用的输出目录。如下面的截图所示,您可以看到 Bulk Extractor 工具使用的多个扫描器,它们用于在内存文件中查找证据:一个图形用户界面截图  描述自动生成

    图 7.11:Bulk Extractor 菜单选项以运行

    您可以根据需要选中或取消选中特定的证据搜索项。

  3. 一旦您对设置感到满意,左键单击 提交运行 按钮以开始提取过程。一旦提取开始,它将呈现提取窗口,如下面的截图所示:

Bulk Extraction 成功提取窗口

图 7.12:Bulk Extraction 窗口

  1. 左键单击 关闭 按钮以返回查看器。以下截图显示了 Bulk Extractor 查看器

图 7.13:Bulk Extractor 查看器 – 提取的内容

在左侧,我们可以看到该工具恢复的具体证据。在前面的截图中,我选择了 email_histogram.txt 文件,它提供了该工具找到某个特定电子邮件地址的时间列表。通过查看直方图窗口,我可以看到它找到了 jcloudy1 电子邮件地址超过 8,000 次。当您浏览电子邮件列表时,可能会找到具有证据价值的邮件,以便在使用传统媒体时跟进。

Bulk Extractor 是一个快速高效的工具,用于提取您可以在调查中跟进的数据字符串。接下来我们将讨论的工具是 Volix II。

使用 VOLIX II

Volix 是 Volatility 框架的 GUI 前端。它使得不习惯使用 命令行界面CLI)的用户操作起来更加简便。下载程序并首次启动后,它将呈现以下界面:

Volix 设置

图 7.14:Volix 设置

然后,您将被指引到 Volatility 框架的位置。您可以使用独立的可执行文件或二进制文件来运行 Python 脚本。在这里,我已经下载了独立的可执行文件并将 Volix 指向它。

你可以选择的其他选项包括你希望使用的 Volix 语言。如果你有 VirusTotal API 密钥,你可以在该页面插入它。这将比较从 RAM 捕获的数据,并查看是否与 VirusTotal 跟踪的任何恶意软件匹配。

你还可以选择将 Volix 指向 John the Ripper 可执行文件。如果你想解码/解密可能存储在 RAM 中的潜在密码,请按照以下步骤操作:

  1. 一旦你选择了案例,选择新建。它会询问你要分析的内存文件的位置,如下图所示:

Volix RAM 位置

图 7.15:Volix RAM 位置

  1. 如果你点击报告,你可以指定 Volix 生成的报告文件路径。

  2. 一旦你选择确定,Volix 向导屏幕将出现。你现在可以选择通过问卷来确定你希望在内存文件上运行的选项。你还可以选择一个预创建的脚本来搜索特定的工件,如病毒检测解密 SAM 哈希值,如下图所示:

图 7.16:VOLIX 向导

  1. 我选择了完整扫描。你可以在以下截图中看到结果:

图 7.17:Volix 扫描结果

从前面的截图中,你可以看到我选择了getsids。在屏幕下方,它列出了在收集时内存中的 SIDs。

你要求它一次搜索多少个工件,会决定应用程序完成所需的时间。总体而言,与其他工具相比,这是一个相对快速的搜索。

总结

在本章中,你了解了从 RAM 中可以恢复的各种工件。你了解了可以用于收集过程的不同工具,以及可以用于分析的工具。记住,工具会随着技术不断变化,随着新操作系统的发布,你的主要工具可能无法收集到 RAM 数据。遇到这种情况时,一定要有备份计划。

现在你已经具备了识别和捕获符合最佳实践的 RAM 的技能。当你分析捕获到的 RAM 时,你可能会发现一些工件,显示出用户在系统上的活动,例如社交媒体工件、密码或加密密钥,这些都可以恢复。

你甚至可能会发现与用户使用电子邮件相关的信息,这将引导我们进入下一章,专门讲解电子邮件取证。

问题

  1. 以下哪些是 RAM 数据的来源?

    1. 物理内存

    2. Pagefile.mem

    3. Swapfile.page

    4. ROM

  2. 当计算机进入睡眠状态时,哪个文件会被创建?

    1. Pagefile.sys

    2. Swapfile.sys

    3. Hiberfill.sys

    4. Hibernation.sys

  3. 你应该什么时候捕获 RAM?

    1. 每小时

    2. 每周

    3. 在每次数字取证调查中

    4. 当你认为它很重要时

  4. 通常来说,你需要多少项才能收集 RAM?

    1. 1

    2. 2

    3. 3

    4. 4

  5. DumpIt 是一个图形界面工具。

    1. 正确

    2. 错误

  6. 在嫌疑人的计算机上安装 DumpIt 是可以接受的。

    1. 正确

    2. 错误

  7. 以下哪些是分析工具?

    1. DumpIt

    2. FTK Imager

    3. Volatility

    4. MD5 哈希

进一步阅读

Ligh, M. H., Case, A., Levy, J., & Walters, A. (2014). 记忆取证的艺术:检测 Windows 中的恶意软件和威胁,Linu。约翰·威利父子公司。(可在www.amazon.com/Art-Memory-Forensics-Detecting-Malware/dp/1118825098获取。)

加入我们在 Discord 上的社区

加入我们社区的 Discord 空间,与作者和其他读者进行讨论:

packt.link/CyberSec

第八章:电子邮件取证 - 调查技术

电子邮件只是全球互联网的一部分,已成为消费者和企业领域的日常资源。它已成为几乎每个工业化国家公民的主要通信工具之一。既然电子邮件已成为每个人日常生活的一部分,罪犯也将利用这一途径犯罪,并与同谋合作。

对于数字取证调查员来说,将电子邮件从目标追溯到源头可能是困难的。因此,数字取证调查员必须熟悉电子邮件生命周期中的方法和传递系统。当数字取证调查员成功确定电子邮件的来源时,这将引导他们对源头发现的数字证据进行进一步的取证调查。

在电子邮件调查中,你可以在哪里找到与电子邮件相关的数字证据?本地机器将保存目标版本的电子邮件,邮件服务器,访问电子邮件的设备(如手机),以及互联网服务提供商的日志。数字取证调查员必须知道哪些工具可以分析电子邮件及其复合文件,特别是某些邮件套件使用的邮箱文件。了解如何将这些信息呈现给非技术人员,对于传达调查员恢复数据的相关性至关重要。在本章结束时,你将了解用于发送和接收电子邮件的协议、如何解码电子邮件头以及如何分析客户端和基于 Web 的电子邮件。

本章将涵盖以下主题:

  • 理解电子邮件协议

  • 解码电子邮件

  • 理解基于客户端的电子邮件分析

  • 理解 WebMail 分析

理解电子邮件协议

电子邮件协议是一种标准,用于允许两个计算机主机之间交换电子邮件通信。当电子邮件被发送时,它从发送方的主机传输到邮件服务器。邮件服务器可以通过一系列中继转发电子邮件,直到它到达一个接近接收方主机的邮件服务器。接收方会收到一条通知,说明有邮件可用;接收方随后将联系邮件服务器以获取邮件。

用户通常使用电子邮件客户端访问邮件。电子邮件客户端可以使用不同的协议来访问邮件。现在,我们将讨论一些在进行数字取证调查时可能遇到的电子邮件协议。

理解 SMTP - 简单邮件传输协议

SMTP 是电子邮件传输的协议。它是基于 RFC 821 的互联网标准,但后来更新为 RFC 3207、RFC 5321/5322。

提示

RFC 代表“请求评论”。它用于互联网/通信技术中制定标准。RFC 可以来自不同的机构,例如互联网架构委员会/互联网工程任务组或独立研究人员。最初它是为了跟踪原始 ARPANET 的发展,但现在已经发展成关于互联网规范和通信协议的官方文档来源。

邮件服务器使用 SMTP 从访问互联网的所有位置发送和接收电子邮件消息。通常,您会在网络上找到一个利用传输控制协议TCP)端口25的 SMTP 服务器。发送方到接收方的路径在下图中进行了概述:

图 8.1:SMTP 地图

图 8.1:通过 SMTP 发送的电子邮件示意图

当用户发送电子邮件时,邮件将从主机出发,经过一系列 SMTP 服务器,直到到达目标 SMTP 服务器。接收方需要使用不同的协议来检索电子邮件,这是我们接下来的话题。

我们将讨论的下一个协议是 POP3。

理解邮局协议

POP3 是标准化的协议,允许用户访问收件箱并下载电子邮件。POP3 专门设计用于接收电子邮件;该系统不允许用户发送电子邮件。此协议使用户在撰写、阅读或回复时可以离线,并可以根据用户的请求随时访问在线邮箱。请注意,您正在进行数字取证检查的电子邮件可能是唯一副本。用户可以选择不将电子邮件副本保留在服务器上。一旦电子邮件被下载,系统可以将其删除,以减少服务器上的存储空间。

您会发现 POP 使用端口110进行网络通信。

在下图中,您可以看到 SMTP-POP 过程的基本功能:

图 8.2:SMTP-POP 地图

图 8.2:SMTP-POP 地图

在这里,您可以看到电子邮件的传输路径,如下所示:

  1. 电子邮件来自发送方。

  2. SMTP 服务器将其转发到目标地址。

  3. 接收方从服务器收取电子邮件。接收方可以决定电子邮件副本是否保留在服务器上,或者在用户从服务器下载电子邮件时电子邮件是否被删除。

当我们查看下一个协议时,我们将讨论与 SMTP 相似的功能,但有一些显著的不同之处。我们将在下一节中讨论这些不同之处。

IMAP – 互联网邮件访问协议

IMAP互联网邮件访问协议,是一种标准协议,供电子邮件客户端访问邮件服务器上的电子邮件。该协议设计用于允许多个客户端对收件箱进行完整的管理。在大多数情况下,电子邮件消息会保留在服务器上,直到用户将其删除。IMAP 比 POP 协议更新,但两者仍然是目前广泛使用的电子邮件标准。IMAP 和 POP 之间最显著的区别在于,POP 检索邮箱内容,而 IMAP 则是为远程访问邮箱而设计的协议。

在下面的图示中,你可以看到 SMTP-IMAP 流程的基本功能:

图 8.3:IMAP 地图

图 8.3:IMAP 地图

在这里,你可以看到电子邮件的传递路径:

  1. 电子邮件来源于发件人。

  2. SMTP 服务器将其转发到目标地址。

  3. 收件人从服务器收取电子邮件。电子邮件的副本会保留在服务器上,直到用户明确删除它。

我们刚才讨论的三种协议通常用于电子邮件客户端和服务器之间的关系。用户在访问电子邮件时还可以选择另一种方式,称为基于 Web 的电子邮件,这是下一节的主题。

理解基于 Web 的电子邮件

基于 Web 的电子邮件是用户通过 Web 浏览器访问的服务。标准的 Web 邮件服务商有 Gmail、Yahoo Mail 和 Outlook/Hotmail。一些互联网服务提供商也提供用户可以通过 Web 浏览器访问的电子邮件账户。

用户删除的电子邮件存储在基于 Web 的电子邮件服务器上,通常会保留在服务器上,直到系统删除它们。基于 Web 的电子邮件的一个特点是,当用户删除电子邮件时,它会从收件箱移动到已删除/垃圾箱文件夹,并且仍然可以访问。然而,在电子邮件在已删除文件夹中保留一段设定的时间后,系统会永久将其从用户的收件箱中删除。

我们已经讨论了用户访问电子邮件服务的不同方法。然而,一旦你获得了可供检查的电子邮件数据集,你可能会发现电子邮件的内容是经过编码的。那么,如何解码电子邮件的内容以判断是否发生了犯罪/违规行为呢?

在下一个话题中,我们将解码电子邮件头部,以便你可以对你的调查工作做出明智的选择。

解码电子邮件

电子邮件具有许多独特的标识符,供数字取证调查员识别和追踪。邮箱和域名,以及消息 ID,将允许数字取证调查员向供应商送达司法批准的传票/搜索令,以跟进任何调查线索。

在本节中,我们将逐一解析电子邮件头部的各个部分,以便你可以决定如何进行调查。首先,我们将从讨论电子邮件信封开始。

理解电子邮件消息格式

绝大多数电子邮件用户只熟悉基本的电子邮件信息,如下所示:

Subject background checks 
Date 07/19/2008 23:39:57 +0 
Sender alison@m57.biz 
Recipients jean@m57.biz 

我们回到处理我们的朋友 Jean 的问题,通过查看这封邮件,我们可以看到几个通常与电子邮件相关的字段。在这里,我们知道主题是背景调查,用户发送邮件的日期和时间,发送者和收件人。

我们还可以看到邮件的内容,如下所示:

Jean,
One of the potential investors that I've been dealing with has asked me to get a background check of our current employees. Apparently they recently had some problems at some other company they funded.
Could you please put together for me a spreadsheet specifying each of our employees, their current salary, and their SSN? Please do not mention this to anybody.
Thanks.
(ps: because of the sensitive nature of this, please do not include the text of this email in your message to me. Thanks.) 

当我们查看这封邮件时,似乎邮件是从Alison发送给Jean的。Alison 请求一个包含机密员工信息的电子表格。根据对这封邮件的基本检查,邮件的内容似乎没有什么与初始的假设相矛盾。

用户已经创建了收件人发件人字段,以及邮件的主题内容。系统从系统时间中推导出日期和时间,用户可以设置系统时间。

在典型的邮件信息下,另一层数据在进行调查时至关重要。这就是所谓的邮件头,它包含了关于特定邮件的来源、传输和目的地的信息。

大多数电子邮件客户端需要额外的命令来查看邮件头。例如,Gmail 需要你点击显示原始邮件才能查看邮件头。例如,以下是 Jean 从 Alison 收到的邮件头:

-----HEADERS-----
Return-Path: simsong@xy.dreamhostps.com
X-Original-To: jean@m57.biz
Delivered-To: x2789967@spunkymail-mx8.g.dreamhost.com
Received: from smarty.dreamhost.com (sd-green-bigip-81.dreamhost.com [208.97.132.81]) by spunkymail-mx8.g.dreamhost.com (Postfix) with ESMTP id E32634D80F for <jean@m57.biz>; Sat, 19 Jul 2008 16:39:57 -0700 (PDT)
Received: from xy.dreamhostps.com (apache2-xy.xy.dreamhostps.com [208.97.188.9]) by smarty.dreamhost.com (Postfix) with ESMTP id 6E408EE23D for <jean@m57.biz>; Sat, 19 Jul 2008 16:39:57 -0700 (PDT)
Received: by xy.dreamhostps.com (Postfix, from userid 558838) id 64C683B1DAE; Sat, 19 Jul 2008 16:39:57 -0700 (PDT)
To: jean@m57.biz From: alison@m57.biz 
subject: background checks 
Message-Id: 20080719233957.64C683B1DAE@xy.dreamhostps.com
Date: Sat, 19 Jul 2008 16:39:57 -0700 (PDT) 

邮件头显示了邮件的来源以及它经过了哪些服务器。从底部开始,我们可以看到Message-Id字段:

Message-Id: <20080719233957.64C683B1DAE@xy.dreamhostps.com> 

Message-Id字段包含每封已发送邮件的唯一 ID。当用户发送邮件时,邮件将从其接触的第一个邮件服务器接收消息 ID。该消息 ID 将是全球唯一的,因此不应该有其他邮件与相同的消息 ID。如果你发现不同的邮件包含相同的消息 ID,可能出现以下两种情况之一:

  • 该邮件服务器不符合标准。

  • 用户已更改了邮件。

当你查看消息 ID 时,你会看到一串随机的字母数字字符,以及@符号和域名。有时,这串任意的字母数字字符包含一个日期/时间戳。从前面的例子来看,我们可以看到数字20080719233957,它可以翻译为2008 年 07 月 19 日——年、月、日。23:39:57是电子邮件到达第一个服务器时的时间(GMT),按小时、分钟和秒表示。

我们可以从底部向上看到第一条Received行。此邮件经过三个不同的邮件服务器。在邮件到达目的地的过程中,每个邮件服务器都会在前一条Received行的顶部附加一条Received行。你可以从源头到目的地跟踪邮件路径。在这封邮件中,我们正在检查邮件接触的第一个服务器,具体如下:

Received: by xy.dreamhostps.com (Postfix, from userid 558838) id 64C683B1DAE; Sat, 19 Jul 2008 16:39:57 -0700 (PDT) 

这是邮件触及的第一个服务器;我们有域名 dreamhostps.com 和用户 ID。下一步逻辑将是向 ISP 提交传票并识别用户 ID 558838。最后,术语 Postfix 标识了邮件服务器。Postfix 是一个免费的开源邮件传输代理,可能是一个商业邮件服务器,或由潜在恶意行为者维护的邮件服务器。

接下来的两行 Received 标识了到达目的地的路径中的后续服务器:

Received: from smarty.dreamhost.com (sd-green-bigip-81.dreamhost.com [208.97.132.81])
by spunkymail-mx8.g.dreamhost.com (Postfix) with ESMTP id E32634D80F for <jean@m57.biz>; 
Sat, 19 Jul 2008 16:39:57 -0700 (PDT)
Received: from xy.dreamhostps.com (apache2-xy.xy.dreamhostps.com [208.97.188.9]) 
by smarty.dreamhost.com (Postfix) with ESMTP id 6E408EE23D for <jean@m57.biz>; 
Sat, 19 Jul 2008 16:39:57 -0700 (PDT) 

在这两种情况下,我们现在得到了触及该邮件的具体服务器的 IP 地址(和服务器名称)。

有趣的是,当我们查看 Return-Path 字段时:

Return-Path: <simsong@xy.dreamhostps.com> 

Return-Path 是发送无法投递的邮件的地址。Return-Path 还会覆盖用户看到的 From 字段。你会看到在邮件列表中使用这个字段,在那里你可以回复发帖的用户,而不是回复整个列表。

在你的调查中,你可能会遇到一些可选字段。这些字段通常以 X– 开头,如此处所示:

X-Priority: 3 
X-Mailer: PHPMailer 5.2.9 (https://github.com/PHPMailer/PHPMailer/)
Message-Id: ff176aaf06e2f6958ada6e2d3c43b095@x3.netcomlearning.com
X-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com 
X-Report-Abuse: You can also report abuse here: http://mandrillapp.com/contact/abuse?id=30514476.1925a088d66f450cb25a4034f3ec6942 X-Mandrill-User: md_30514476 

这些字段不是电子邮件协议标准的一部分。它们可以包含关于病毒扫描、垃圾邮件扫描或服务器信息等内容。如你所见,它提供了关于滥用(如垃圾邮件)相关的联系信息。你可能还会看到一个可选字段 X–Originating–IP,它可能包含发送者的 IP 地址,当用户发送消息时。电子邮件提供商可以删除这些信息,并用服务器地址替代,当邮件从 Gmail 发送时就是这种情况。

关于 IP 地址的备注:IPv4 地址有两种类型:公有地址和私有地址。在邮件头中,你可能会看到这两种地址。然而,如果你看到的是私有 IP 地址,你无法识别出提供商(除非你在组织内部进行调查)。私有 IPv4 地址的地址方案如下:

  • 10.X.X.X

  • 127.X.X.X

  • 172.16.X.X

  • 192.168.X.X

我们将在下一部分讨论电子邮件附件。

邮件附件

MIME多用途互联网邮件扩展 的缩写,这是允许电子邮件接受除了 ASCII 以外的文本、二进制附件、多部分消息体以及非 ASCII 基本头信息的互联网标准。当你查看邮件头时,你会看到 MIME 用以下方式表示:

MIME-Version: 1.0 

一个例子如下:

MIME-Version: 1.0 
Content-Type: text/html; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

在这里,我们可以看到内容类型是 HTML,并且接下来的这一行显示它使用了 7 位编码。如果有附件,我们还会看到 Base64 编码,它将二进制数据转换为 ASCII 文本。

系统会根据每个段落的数据类型分离邮件正文。例如,一个 JPEG 图像将与一个段落一起存储,而 ASCII 文本则存储在另一个段落中。此外,每个段落都会以一个 MIME 头开始,该头包含关键字 _PART_

既然我们已经讨论了电子邮件和邮件头,接下来需要看看用户可能使用的某些客户端来访问这些电子邮件。

理解基于客户端的电子邮件分析

用户可以访问多种电子邮件客户端来检索、阅读和发送电子邮件。根据你所处的消费者或商业环境,你可能会遇到不同的电子邮件客户端。在消费市场中,由于 Microsoft Outlook/Outlook Express 是预装在系统中的,因此它们会占据主导地位。此外,Microsoft Outlook 还随 Microsoft Office 套件一起提供。也有一些免费的选项,例如 Thunderbird 电子邮件客户端。

你可以通过导出客户端使用的容器并用安装在法医计算机上的电子邮件客户端打开它来进行电子邮件检查。另一种选择是使用为电子邮件检查创建的专用商业法医软件。更常见的法医套件通常会分析更常见的电子邮件客户端容器。

我们将在接下来的章节中讨论一些更常见的电子邮件客户端。

探索 Microsoft Outlook/Outlook Express

Outlook 将电子邮件信息存储在几种文件类型中,例如 pst.mdb.ost。我们将在用户的硬盘中找到 PST 文件,路径如下:

\Users\$USER$\AppData\Local\Microsoft\Outlook 

OST 文件是一个离线文件,也可能存储在用户硬盘上,与 PST 文件在相同路径下。最后,你会在服务器上找到 MDB 文件。通常,在调查企业环境时会找到这个文件。

系统会将 Outlook 客户端使用的所有内容存储在 PST/OST 文件中。请注意,用户可以更改默认位置和命名约定。你不需要登录就可以访问 PST/OST 文件。

如果你需要从存储设备的未分配空间中提取 PST/OST 文件,可能需要处理文件碎片问题,因为 PST/OST 文件可能会非常大。

Microsoft 已用 Windows Live 替代了 Outlook Express。以下部分将提供关于此客户端的详细信息。

探索 Microsoft Windows Live Mail

从 Windows Vista 和 Windows 7 开始,Windows Live 成为 Windows 操作系统默认的电子邮件客户端。(请注意,Windows Live 已经停用,现在 Windows 10 包含 Windows Mail 作为默认客户端。Windows Mail 不会将电子邮件存储在硬盘上,电子邮件仅存在于云端。)客户端会将电子邮件消息存储在以下路径:

\Users\$USER$\AppData\Local\Microsoft\Windows Live Mail 

用户还可以使用此客户端访问基于 Web 的电子邮件。Windows Live Mail 会下载这些账户的内容,并在用户的路径中创建文件夹结构。

客户端会将电子邮件作为 .eml 文件存储在 Windows Live Mail 文件夹中,如下所示:

A picture containing text, receipt, screenshot  Description automatically generated

图 8.4:Windows Live Mail 文件夹

如你所见,这个用户正在使用 Windows Live Mail 应用程序访问 Hotmail。你可以看到电子邮件地址little9@hotmail.com,并且可以看到有 54 封电子邮件被存储在用户的文件夹中。

电子邮件采用标准的文本格式.eml,任何取证工具都可以读取这种格式。或者,你也可以使用文本编辑器。下一个客户端也是非常流行且免费的:Mozilla Thunderbird。

Mozilla Thunderbird

Thunderbird 是由 Mozilla 提供的免费开源电子邮件客户端。Thunderbird 会将电子邮件存储在.MBOX文件中。MBOX 格式是用于存储电子邮件的一种通用文件格式术语。它将文件夹中的所有电子邮件保存在一个单一的数据库文件中。默认情况下,检查者可以在以下路径中找到 MBOX 文件:

$USERNAME$\AppData\Roaming\Thunderbird\Profiles 

以下是 Thunderbird 安装时会看到的文件夹结构:

图 8.5:Thunderbird 文件夹结构

配置文件名称由 Thunderbird 创建。用户安装的软件的发布版本也可以在此处查看。通过分析文件夹结构,我们将看到它包含有关崩溃的信息,并在发生崩溃时将数据存储在 minidump 中。此文件夹中可能还有日历数据和邮件箱。

在这里,用户使用 IMAP 协议访问他们的 Yahoo 邮件账户,文件夹中存储了 15 项内容。

当我们查看文件夹时,将看到以下文件:

  • Archive.msf

  • Archives.msf

  • Bulk Mail.msf

  • Draft.msf

  • Drafts.msf

  • INBOX

  • INBOX.msf

  • msgFilterRules.dat

  • Sent-1.msf

  • Sent.msf

  • Templates.msf

  • Trash.msf

MSF文件是邮件摘要文件,是电子邮件的一部分。电子邮件客户端 Thunderbird 将邮件数据存储在两个不同的部分。第一部分是 MBOX 文件,没有文件扩展名。MSF 文件是 Thunderbird 的索引文件,包含电子邮件头和摘要。Thunderbird 使用这些文件作为索引来定位存储在 MBOX 中的电子邮件。

在以下截图中,三封电子邮件被存储在 MBOX 中。当 X-Ways 解析收件箱时,电子邮件将具有.eml文件扩展名:

图 8.4:Thunderbird 收件箱

图 8.6:Thunderbird 收件箱

MBOX 格式被许多电子邮件客户端使用,包括 Apple Mail、Opera Mail 和 Thunderbird。此外,大多数商业和开源取证工具套件将处理 MBOX 文件并提供访问电子邮件的功能。

虽然用户可以通过客户端访问他们的电子邮件,但另一种流行的选择是让用户无需使用客户端即可访问电子邮件:WebMail。

理解 WebMail 分析

随着我们从二十世纪过渡到二十一世纪,基于 Web 的电子邮件变得越来越流行。它易于访问,几乎不需要用户配置,并且可以从任何计算机访问。简单来说,WebMail 只是另一种用于进行浏览器分析的互联网工件(我们将在第九章互联网工件中介绍互联网工件)。

服务提供商维护用户的电子邮件,并可能提供其他服务,如通讯录和日历。用户可以使用主机客户端访问基于网页的电子邮件。然而,我发现当内容由服务提供商托管时,使用主机客户端的用户是少数,这为数字取证调查员带来了额外的障碍。与内容相关的唯一证据可能存在于用户的互联网历史中,这些记录可能是碎片化的。如果数字取证调查员希望访问用户的基于网页的电子邮件内容,他们必须向服务提供商提交搜索令状(在美国如此,你的管辖区可能有不同要求)。你可能无法访问或恢复任何已删除的邮件,这将取决于每个服务提供商的具体情况。

假设数字取证调查员希望调查用户对基于网页的电子邮件的使用。在这种情况下,他们必须分析用户系统上的临时互联网文件或互联网缓存。临时互联网文件/缓存包含了用户在浏览器中查看过的图像、文本或任何网页组件。

他们的浏览器将这些信息保存在临时互联网文件/缓存位置,以提升用户体验。这样做可以通过更快的响应时间来展示页面内容,而不是不断重新下载内容,可以从缓存中提取并展示这些信息给用户。

Gmail 非常流行,当该服务首次部署其网页应用程序时,改变了 WebMail 的展示方式。不再是静态网页显示电子邮件内容和用户的电子邮件文件夹。相反,Gmail 动态地为每个用户即时生成内容。系统不再将图像文件和文本保存到用户的本地存储设备,而是使用了异步 JavaScriptAJAX)和 XML 文件。不幸的是,这种新方法使得调查员无法重建网页。

你仍然可以从互联网缓存以及其他潜在来源中恢复相关信息,如用户本地存储设备上的 RAM 或页面文件。你需要对电子邮件地址或与调查相关的术语进行关键词搜索。

在查看缓存之前,我想先查看已安装浏览器的互联网历史记录,看看用户是否访问过基于网页的电子邮件。对于 Chrome 浏览器,你可以在以下路径找到存储的历史记录,这些历史记录保存在名为History的 SQLite 数据库中:

$USER$\AppData\Local\Google\Chrome\User Data\Default 

History 数据库的分析显示,用户访问了 Gmail 的基于网页的服务,具体见下图:

图 8.5:电子邮件 - 历史记录

图 8.7:电子邮件 - 历史记录

我们有日期/时间戳和电子邮件地址。该信息还显示,当用户访问服务时,收件箱中有两封未读邮件。

我在 Google Chrome 浏览器的互联网缓存中发现了这个,检查员可以在以下位置找到它:

$USER$\AppData\Local\Google\Chrome\User Data\Default\History Provider Cache 

如下所示的 Chrome 缓存截图中,内容难以解读,并且没有给我们提供很多后续线索:

图 8.8:显示的 Chrome 缓存

如果我们继续搜索在缓存中找到的电子邮件地址badguyneedslove@gmail.com,可能会找到其他证据,如下所示:

{"endpoint_info_list":[{"endpoint":"**smtp:badguy27@yahoo.com**",
"c_id":"d24c.2d00",
"c_name":"**Joe Badguy Smith**"},
{"endpoint":"**smtp:badguyneedslove@gmail.com**",
"c_id":"e80f.5b71","c_name":"**John Badguy Smith**"},
{"endpoint":"**smtp:yahoo@mail.comms.yahoo.net**",
"c_id":"624f.10f0","c_name":"**Yahoo! In********c.**"}]}**** 

****检查员可以在缓存中找到的这个证据提供了另一个电子邮件地址badguy27@yahoo.com,以供进一步调查。不幸的是,电子邮件的内容仍然无法访问。

让我们看看 Firefox 缓存,看看它是否能提供更好的缓存和历史记录视图。

检查员可以在以下位置找到 Firefox 浏览器的缓存和历史记录:

$USERS$\AppData\Local\Mozilla\Firefox\Profiles\<profile>\cache2 

Firefox 会将互联网历史和缓存存储在用户的个人资料中。你将看到的文件夹结构可能如下所示:

Text Description automatically generated

图 8.9:Firefox 文件夹结构

看起来,Firefox 缓存的视觉呈现并没有好多少:

图 8.10:Firefox 缓存

它没有提供大量信息,但它为我们提供了可以跟进的线索,进行进一步的调查。

在取证领域,你依赖的证据可能会随着软件的更新或操作系统的变化而迅速变化。要灵活运用调查技术,以便能够及时适应最新的技术,使你的调查获得成功。一旦你确定你的调查对象使用的是基于网页的电子邮件,最佳的做法是向服务提供商提交适当的司法文件,冻结账户并获取所需的内容。

总结

在本章中,我们讨论了标准电子邮件协议:系统使用 SMTP 发送电子邮件,而 POP 和 IMAP 用于接收电子邮件。IMAP 还包括用户可用于管理收件箱的功能。我们还讲解了电子邮件头信息以及组成头信息的各个组件。我们还讨论了 WebMail 和电子邮件客户端。

你现在具备了读取电子邮件头信息的技能,可以确定用户用于发送电子邮件的服务器以及系统用于发送和接收电子邮件的协议。在进行数字取证检查时,你现在能够识别出典型电子邮件客户端和基于网页的电子邮件的证据。

在下一章中,你将了解基于网页的电子邮件客户端之间的相似性。

问题

  1. 以下哪一项不是电子邮件协议?

    1. HTML

    2. POP

    3. SMTP

    4. IMAP

  2. 以下哪项允许用户管理他们的收件箱?

    1. COC

    2. POP

    3. FreeBSD

    4. IMAP

  3. 电子邮件头信息是由用户输入的信息创建的。

    1. 正确

    2. 错误

  4. Thunderbird 将电子邮件存储在哪个文件中?

    1. 收件箱

    2. 发件箱

    3. MBOX

    4. 信箱

  5. 哪个电子邮件客户端使用 PST 文件?

    1. Thunderbird

    2. Gmail

    3. Yahoo Mail

    4. Outlook

  6. Windows Live Mail 被哪个客户端替代了?

    1. Outlook Express

    2. Outlook

    3. Windows Mail

    4. Windows Email

  7. 你总是能在用户的缓存中找到基于网页的电子邮件内容。

    1. 正确

    2. 错误

你将在本书的后面找到答案,位于评估部分。

进一步阅读

练习

数据集

Jean outlook.pst

所需软件

Autopsy - www.autopsy.com/

情境

一家公司 XYZ 有限公司发现一份包含机密信息的电子表格作为附件被发布在竞争对手网站的“技术支持”论坛上。

该电子表格来自 XYZ 有限公司的首席财务官 Jean 的电脑。

面谈

你的任务是调查机密信息泄露事件。为此,你将分别与 XYZ 有限公司的总裁和首席财务官,Alison 和 Jean 进行面谈。以下是他们面谈的摘录:

Alison(总裁):

  • 我不知道 Jean 在说什么。

  • 我从未向 Jean 索要电子表格。

  • 我从未通过电子邮件收到电子表格。

Jean(首席财务官):

  • Alison 让我准备电子表格,作为新一轮融资的一部分。

  • Alison 让我通过电子邮件将电子表格发送给她。

  • 这是我所知道的全部信息。

电子邮件账户

Alison(总裁):

alison@m57.biz

Jean(首席财务官):

jean@m57.biz

待回答问题

检查 Jean 的电子邮件——这些文件是如何出现在竞争对手的网站上的?使用 Autopsy(或你选择的工具)分析.pst文件中包含的电子邮件。

加入我们在 Discord 上的社区

加入我们社区的 Discord 空间,与作者和其他读者进行讨论:

packt.link/CyberSec

****