Kali-Linux-数字取证(全)

Kali Linux 数字取证(全)

原文:annas-archive.org/md5/8FE31A420313B3F8EBAD75F795E950BF

译者:飞龙

协议:CC BY-NC-SA 4.0

前言

在今天的世界中,新的威胁、违规行为和恶意活动经常在新闻、网站和门户网站上被发现和发布。尽管我们尽力保护我们的数据、系统和网络,但仍然会发生违规行为。为了了解发生了什么,我们转向数字取证领域。尽管数字取证仍然是一个相对较新的领域,但在考虑到任何访问互联网并意图进行恶意活动的人可以获得的大量信息时,取证已经变得和安全一样重要。值得庆幸的是,数字指纹和工件有时会留下痕迹,无论是在已删除或隐藏的文件、电子邮件、某人的浏览历史、远程连接列表,甚至是移动短信中。

这本书甚至为绝对初学者提供了一个结构化的方法和最佳实践,以使用 Kali Linux 中流行且强大的取证工具进行调查,其中许多工具被世界各地的军事组织和取证调查人员使用。

本书涵盖的内容

第一章,“数字取证简介”,介绍了数字取证科学的各个方面。

第二章,“安装 Kali Linux”,展示了如何安装、配置和更新 Kali Linux。安装过程将在物理机和虚拟机上进行,以使单台和多台机器的用户都能受益于运行 Kali Linux。安装完成后,我们将探索 Kali Linux 中的取证菜单。

第三章,“理解文件系统和存储介质”,深入探讨操作系统和文件存储的各种格式,包括即使对于最终用户或操作系统也看不到的秘密隐藏位置。我们还检查关于数据的数据,即元数据,并研究其易失性。

第四章,“事件响应和数据获取”,询问当事件被报告或检测到时会发生什么?谁是第一响应者,以及维护证据完整性的程序是什么?在本章中,我们将探讨数据获取和证据收集的最佳实践和程序。

第五章,“使用 DC3DD 和 Guymager 进行证据获取和保留”,着重介绍了取证获取中最重要的一个方面。学会使用哈希工具创建数据的取证镜像,并保持完整性。

第六章,“使用 Foremost、Scalpel 和 Bulk Extractor 进行文件恢复和数据刻录”,指出数据会消失,无论是意外地、故意地还是只是隐藏在操作系统中。在本章中,我们将介绍两种强大的工具用于执行文件恢复,并了解高级搜索功能。

第七章,“使用 Volatility 进行内存取证”,指出在当今数字世界中,我们有时会遇到需要使用活动内存取证的情况。学会使用这个强大的内存取证工具来查看运行中的进程、程序和活动工件。

第八章,“Autopsy – The Sleuth Kit”,介绍了 Autopsy,它被认为是为数不多的可以与商业取证工具匹敌的工具之一,这个强大的工具将取证能力和调查提升到专业水平,涵盖了从哈希到报告的全方位数字取证调查的所有方面。

第九章,“使用 Xplico 进行网络和互联网捕获分析”,使用这个强大的工具对捕获的网络和互联网流量进行调查和分析。

第十章,使用 DFF 揭示证据,展示了两个工具胜过一个的原理。使用另一个高级取证框架工具进行完整和专业的数字取证调查,通过比较结果来确保您发现的结果的完整性。

本书所需内容

要按照本书中的练习,读者需要下载以下内容:

  • Kali Linux 2017.2 x64 和 Kali Linux 2017.1 x64

  • VirtualBox 5.2 或更高版本

  • 将 Kali Linux 2017.2 刻录到 DVD

这本书适合谁

本书适用于网络、系统和安全管理员;信息安全官员;审计员;IT 经理;以及学生、研究人员、安全爱好者以及对数字取证领域感兴趣或有兴趣了解各个调查阶段的特定工具的任何人,从证据获取和保留到分析,使用强大的取证套件。

约定

在本书中,您将找到许多文本样式,用于区分不同类型的信息。以下是一些这些样式的示例及其含义的解释。文本中的代码词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄显示如下:“要开始安装 DFF,我们首先需要使用 Kali Sana 中使用的存储库更新sources.list。”

代码块设置如下:

deb http://http.kali.org/kali kali-rolling main contrib non-free
deb src http://http.kali.org/kali kali-rolling main contrib non-free
deb http://http.kali.org/kali sana main contrib 

当我们希望引起您对代码块的特定部分的注意时,相关行或项目将以粗体显示:

deb http://http.kali.org/kali kali-rolling main contrib non-free
deb src http://http.kali.org/kali kali-rolling main contrib non-free
deb http://http.kali.org/kali sana main contrib 

任何命令行输入或输出都写成如下形式:

dc3dd if=/dev/sdb hash=sha1 log=dd_split_usb ofsz=500M ofs=split_test_usb.img.ooo

新术语重要单词以粗体显示。

警告或重要说明显示如下。

提示和技巧显示如下。

第一章:数字取证简介

数字取证已经吸引了我超过 13 年的注意。自从我得到了我的第一台个人电脑(谢谢,爸妈)以来,我一直想知道当我从我的巨大的 2GB 硬盘驱动器中删除文件或将文件移动(大多数时候是隐藏)到一个不那么显眼的 3.5 英寸软盘中,会发生什么,这个软盘的容量最多只有 1.44MB。

正如我很快了解到的那样,硬盘驱动器和软盘驱动器并没有我如此自信地相信的数字不朽。可悲的是,许多文件、文档和由我亲自在 Microsoft Paint 中创作的无价艺术品都消失在了数字世界中,再也无法找回了。叹息。世界将永远不会知道。

直到多年后,我在浏览互联网时偶然发现了一篇关于文件恢复和相关工具的文章,这是在我拥有闪电般快速的 42Kbps 拨号互联网连接时(这得益于我非常昂贵的 USRobotics 拨号调制解调器),每次我尝试连接到互联网的时候,都会唱出科技之神的赞歌。这个过程需要一种像忍者一样的隐秘技能,即使是黑色行动小组也会羡慕,因为这样做是不让父母注意到的,这样他们就无法使用电话线打电话或接电话了。(对不起,亲爱的母亲、父亲和年长的姐姐)。

之前关于数据恢复的文章并不像今天广泛可得的许多优秀的同行评议论文、期刊和书籍那样详细和充满事实。作为一个完全的新手(也被称为 noob),我确实学到了很多关于文件系统、数据和元数据、存储测量以及各种存储介质的基础知识。

就在这个时候,尽管我已经阅读过关于 Linux 操作系统及其各种发行版(或 distros)的文章,我开始了解为什么 Linux distros 在数据恢复和取证中如此受欢迎。

在那个时候,我勇敢地在拨号连接上下载了 Auditor 和 Slax Linux 发行版。仅仅下载这些操作系统就是一项了不起的成就,这让我感到非常自豪,因为我根本不知道如何安装它们,更不用说真正使用它们了。在那些日子里,易安装和图形用户界面仍在积极开发中,正如它们当时一样用户友好,或者在我这种情况下,用户不友好(主要是因为我的经验不足,缺乏推荐的硬件,以及缺乏在线论坛、博客和 YouTube 等资源……这些我当时还不知道)。我将在第二章中更多地解释 Auditor 和 Slax 操作系统,安装 Kali Linux,包括它们在臭名昭著的 BackTrack 和现在的 Kali Linux 操作系统中的作用。

随着时间的推移,我研究了在 Windows、Macintosh 和许多 Linux 发行版上找到的许多工具。我发现许多数字取证中使用的工具可以安装在各种 Linux 发行版或版本中,这些工具都得到了良好的维护,不断地在发展,并且被同行广泛接受。Kali Linux 是一种 Linux 发行版或版本,但在我们继续之前,让我解释一下 Linux 发行版或版本的概念。想象一下你最喜欢的饮料:这种饮料可以有很多口味,有些没有甜味剂或糖,有不同的颜色,甚至有不同的大小。无论有什么变化,它仍然是组成饮料的基本成分。同样,我们也有 Linux,以及不同类型和品种的 Linux。一些更受欢迎的 Linux 发行版和版本包括 RedHat、CentOS、Ubuntu、Mint、Knoppix,当然还有 Kali Linux。关于 Kali Linux 的更多内容将在第二章中讨论,安装 Kali Linux

对于本书,我们采取了非常结构化的数字取证方法,就像我们在法庭科学中一样。我们首先进入数字取证的世界,了解其历史,一些用于取证的工具和操作系统,并立即向您介绍涉及证据保全的概念。

我们开始吧。让我们开始吧!

本章介绍了数字取证科学的各个方面。

本章我们将涵盖的主题有:

  • 什么是数字取证?

  • 数字取证方法。

  • 数字取证的简史。

  • 随着技术的进步,数字取证的需求也在增加。

  • 反取证:对数字取证的威胁

  • 数字取证领域可用的商业工具。

  • 开源工具。

  • 内置数字取证工具的操作系统。

  • 在调查中需要使用多种取证工具,以提供强有力的完整性证据。

什么是数字取证?

我想在本章中首先介绍的是对数字取证及其正确实践和程序的理解。在某个时候,你可能已经接触过几本书、博客,甚至演示了数字取证的各个方面和不同的工具。重要的是要理解,取证本身是一门科学,涉及非常详细的最佳实践和方法,以揭示某事是否存在。

数字取证涉及对各种存储介质中的证据进行保全、获取、文档化、分析和解释。它不仅限于笔记本电脑、台式机、平板电脑和移动设备,还包括在公共或私人网络上传输的数据。

在大多数情况下,数字取证涉及使用各种方法和工具来发现和/或恢复数据。数字取证调查包括但不限于:

  • 数据恢复:调查和恢复可能已被删除、更改为不同文件扩展名甚至隐藏的数据。

  • 身份盗窃:许多欺诈活动,从盗用信用卡到虚假社交媒体资料,通常涉及某种形式的身份盗窃。

  • 恶意软件和勒索软件调查:迄今为止,通过特洛伊木马和蠕虫传播的勒索软件是公司、军事组织和个人面临的最大威胁之一。恶意软件也可能传播到移动设备和智能设备上。

  • 网络和互联网调查:调查DoS(称为拒绝服务)和DDoS(称为分布式拒绝服务)攻击,并追踪访问的设备,包括打印机和文件。

  • 电子邮件调查:调查源和 IP 来源、附件内容和地理位置信息都可以进行调查。

  • 企业间谍活动:许多公司正在摆脱纸质副本,转向云和传统磁盘媒体。因此,总是会留下数字足迹;如果敏感信息被访问或传输,会留下数字足迹吗?

  • 儿童色情调查:可悲的是,儿童在互联网和深网中被广泛剥削。借助技术和高技能的取证分析师,可以通过分析互联网流量、浏览器历史、支付交易、电子邮件记录和图像来进行调查,以打击剥削团伙。

数字取证方法

请记住,取证是一门科学,数字取证要求人们遵循适当的最佳实践和程序,以便一次又一次地产生相同的结果,提供证据、保全和完整性的证明,这些可以被复制;如果需要的话。

尽管许多人可能不会进行数字取证以作为法庭证据,最好还是以一种可以在法庭上被接受和呈现的方式进行实践。遵循专门从事数字取证和事件响应的组织制定的最佳实践的主要目的是在调查期间保持证据的完整性。如果调查人员的工作必须由另一方或对立方进行审查和批评,调查人员发现的结果必须能够被重现,从而证明调查的完整性。这样做的目的是确保您的方法可以重复,并且如果被剖析或审查,每次都能产生相同的结果。所使用的方法,包括调查的程序和结果,应始终允许数据的完整性得到维护,无论使用何种工具。

本书中展示的最佳实践确保原始证据未被篡改,或者在调查设备和数据的实时或生产环境中,展示了在调查过程中采取了必要步骤以避免对证据进行不必要的篡改,从而保持了证据的完整性。对于完全不熟悉调查的人,我建议熟悉一些专业社区提供的各种实践和方法。

因此,存在一些指南和方法论,人们应该采用,或者至少遵循,以确保检查和调查在法医上是可靠的。

本章提到的两个最佳实践文件是:

  • ACPO 的数字证据良好实践指南

  • SWGDE 的计算机取证最佳实践。

尽管这篇文章是在 2012 年写的,但英国首席警官协会(ACPO),现在作为国家警察局长委员会(NPCO)运作,提出了一份名为《ACPO 数字证据良好实践指南》的 PDF 文件,其中介绍了进行数字取证调查时的最佳实践,特别关注证据获取。《ACPO 数字证据良好实践指南》随后被英格兰、威尔士和北爱尔兰的执法机构采纳和遵守,并可在www.7safe.com/docs/default-source/default-document-library/acpo_guidelines_computer_evidence_v4_web.pdf上完整下载。

另一份有用且更为最新的文件是在 2014 年 9 月发布的,关于数字取证最佳实践的文件,由科学数字证据工作组(SWGDE)发布。SWGDE 成立于 1998 年,由联邦犯罪实验室主任组成,主要成员和贡献者包括联邦调查局、缉毒局、美国国家航空航天局和国防部计算机取证实验室。尽管该文件详细介绍了正式计算机取证实验室环境中的程序和实践,但这些实践仍然可以应用于目前不在或无法接触到这种环境的非实验室调查人员。

《SWGDE 计算机取证最佳实践》阐明了以下章节涵盖的许多主题:

  • 证据收集和获取

  • 调查通电和断电的设备

  • 证据处理

  • 分析和报告

完整文件可在www.swgde.org/documents/Current%20Documents/SWGDE%20Best%20Practices%20for%20Computer%20Forensics上公开获取。

数字取证的简要历史

尽管法庭科学本身(包括第一次记录的指纹)已经存在了 100 多年,但与数字世界相关的数字取证是一个更年轻的领域,主要是在 20 世纪 80 年代个人计算机问世后才开始流行。

为了比较,试图理解数字取证作为相对较新的概念,考虑到第一个实际的法庭科学实验室是由 FBI 于 1932 年开发的。

数字取证调查中最早使用的一些工具是在 1984 年左右由 FBI 实验室开发的,数字取证调查由 FBI 的专门的 CART(计算机分析和响应团队)领导,该团队负责协助数字调查。

数字取证作为自己的领域在 20 世纪 90 年代大幅增长,几个执法机构和部门负责人合作,甚至定期会面,将他们的专业知识带到桌面。

最早的正式会议之一是由 FBI 于 1993 年举办的。这次名为“国际执法部门计算机证据会议”的活动的主要焦点是解决数字取证和证据获取的正式标准和程序的需求。

许多这些会议导致了处理数字取证标准和最佳实践的机构的形成。例如,SWGDE 是由联邦犯罪实验室主任于 1998 年成立的。SWGDE 负责制定被广泛采用的计算机证据最佳实践(本章后面讨论)。SWGDE 还与其他组织合作,例如成立于 1973 年的非常受欢迎的美国犯罪实验室主任协会(ASCLDs),自那时以来一直在最佳实践、程序和培训的持续发展方面发挥着重要作用,与法庭科学相关。

然而,直到 21 世纪初,FBI 才建立了一个正式的区域计算机取证实验室(RCFL)。2002 年,成立了国家计划办公室(NPO),作为一个中央机构,基本上协调和支持 RCFL 执法部门之间的努力。

自那时以来,我们已经看到几个机构,如 FBI、CIA、NSA 和 GCHQ,每个机构都有自己的完整网络犯罪部门、完整的数字取证实验室、专门的现场和外勤特工,努力合作,以应对可能是不折不扣的 Sisyphean 任务,考虑到技术的快速增长和对互联网甚至暗网的更容易访问。

随着技术的进步,数字取证工具必须定期更新,不仅是为了打击网络犯罪,还为了提供问责制和检索丢失的数据。自从软盘、磁盘驱动器和拨号上网访问的日子以来,我们已经走了很长一段路,现在面临着 SD 卡、固态驱动器和以千兆速度的光纤互联网连接。

随着技术的进步,数字取证的需求

你们中的一些人可能年轻到足以记得 Windows 95、3.x 甚至 DOS(磁盘操作系统)的日子。今天的智能手表、计算器和许多物联网设备比第一代个人计算机和服务器快得多。1995 年,常见的硬盘驱动器容量在 4GB 到 10GB 之间,而今天你可以轻松购买容量为 2TB 及以上的驱动器。

还要考虑今天的各种存储介质,包括闪存驱动器、SD 卡、CD、DVD、蓝光光盘、混合和固态驱动器,与旧的软盘相比,后者在其最紧凑和高效的状态下只能在 3 ¼英寸的磁盘上存储 1.44 MB 的数据。尽管在后面的章节中有详细讨论,但我们现在不仅有许多存储数据的选项,还有丢失和隐藏数据的选项。

随着技术的进步,人们对编程语言、普通和高级操作系统的理解更加深入,对数字设备的知识和利用也更加深入。这也转化为更加用户友好的界面,可以完成许多与 CLI 相同的任务,主要由高级用户使用。基本上,今天的简单 GUI,再加上搜索引擎上随处可见的大量资源,可以使某些任务(如隐藏数据)比以前更容易。

隐藏大量数据如今也更加简单,考虑到处理器的速度,加上大量的内存,包括可以充当内存的设备,远远超过了仅仅五年前的情况。还必须提到和考虑到显卡,因为越来越多的移动设备配备了非常强大的高端 NVIDIA 和 ATI 显卡,它们也有自己独立的内存,有助于处理过程。考虑到所有这些因素确实支持了戈登·E·摩尔在 20 世纪 70 年代提出的一个观点,即计算能力每两年翻一番,通常被称为摩尔定律。

然而,英伟达首席执行官黄仁勋最近表示,由于 GPU(图形处理单元)的性能、技术进步和处理人工智能的能力,摩尔定律正在消失,GPU 最终将取代 CPU。黄仁勋的声明也得到了英特尔首席执行官布莱恩·克兰齐奇的支持。

总的来说,现在有几种进行网络犯罪的途径,包括恶意软件和勒索软件分发,DoS 和 DDoS 攻击,间谍活动,勒索,身份盗窃,数据盗窃,非法在线活动和交易以及大量其他恶意活动。其中许多活动是匿名的,因为它们发生在互联网上,通常使用掩盖的 IP 地址和公共网络进行,因此使得相关机构在确定位置和逮捕嫌疑人方面更加困难。

由于网络犯罪是一门大生意,执法官员和机构的反应在研究、开发、情报和培训部门必须同样令人印象深刻,如果他们要在数字世界中进行看似永无止境的战斗中进行抵抗。

数字取证不仅适用于存储介质,还适用于网络和互联网连接、移动设备、物联网设备,实际上,任何可以存储、访问或传输数据的设备。因此,根据手头的任务,我们有各种商业和开源工具可供选择。

数字取证领域提供的商业工具

尽管本书关注 Kali Linux 操作系统中的工具,但重要的是要认识到我们可以使用的商业工具,其中许多工具在确定偏好之前可以作为试用版或演示版下载。

由于本书主要关注开源工具,我只会提及一些更受欢迎的商业工具以及它们的主页。这些工具仅按字母顺序列出,不反映任何评级、评论或作者的个人偏好:

许多商业工具都允许以下功能,并且还提供几个专有功能,包括:

  • 写入阻塞

  • 逐位或比特流复制和磁盘克隆/证据克隆

  • 取证合规的证据获取

  • 使用哈希保留证据

  • 文件恢复(隐藏和删除)

  • 现场和远程取证

  • RAM 和交换/分页文件分析

  • 镜像挂载(支持各种格式)

  • 高级数据和元数据(关于数据的数据)搜索和过滤

  • 文件和扇区的书签

  • 哈希和密码破解

  • 自动生成报告

商业工具的主要优势通常是自动化,并且实际上是一套几乎总是可以完成整个调查的工具,只需点击几下。我必须提到的另一个优势是购买许可证时提供的工具支持。这些工具的开发人员还雇用研究和开发团队,以确保对其当前和新产品进行持续测试和审查。

数字取证的操作系统和开源工具

就像有几种商业工具可用一样,调查人员和业余和专业人员也有许多开源工具可用。其中许多工具是基于 Linux 的,并且可以在几个免费的取证发行版中找到。

在选择工具时通常出现的主要问题通常基于商业与开源。无论使用商业工具还是开源工具,最终结果应该是相同的,即保留和保持原始证据的完整性应该是首要任务。

预算始终是一个问题,一些商业工具(尽管它们可能非常强大、准确和用户友好)可能会花费数千美元。

开源工具可以免费使用,根据不同的开源许可证,不应该被排除在外,只因为它们没有企业开发人员和研究人员的支持。许多开源工具受到取证社区的广泛审查,可能会更受到审查,因为它们更广泛地向公众开放,并且是以非专有代码构建的。

尽管本书的重点是 Kali Linux 中的取证工具,我们将在本节末尾和之后开始查看,但以下是一些更受欢迎的开源取证发行版或发行版。

以下各节提到的发行版都可以在许多地方免费获得,但出于安全原因,我们将提供它们主页的直接链接。本节中展示的操作系统仅按字母顺序列出,并不反映任何评级、评论,甚至不反映作者的个人偏好。

数字取证和取证工具 Linux

数字取证和取证工具DEFT)Linux 有完整版本和称为DEFT Zero的轻量级版本。出于取证目的,您可能希望下载完整版本,因为 Zero 版本不支持移动取证和密码破解功能。

就像本列表中提到的其他发行版一样,DEFT 也是一个完全功能的现场响应取证工具,可以在无法关闭计算机的情况下使用,并且还允许对 RAM 和交换文件进行即时分析:

从 DEFT Linux DVD、可启动的闪存或其他媒体启动时,用户会看到各种选项,包括将 DEFT Linux 安装到硬盘,或者选择 DEFT Linux 8 live 选项,作为现场响应工具或操作系统使用。

在上一张截图中,可以看到 DEFT Linux 8 中有几个取证类别,如反恶意软件、数据恢复、哈希、成像、移动取证和网络取证、密码恢复和报告工具。在每个类别中都有几个由各种开发人员创建的工具,给调查人员提供了多种选择。

有关Digital Evidence Forensic ToolkitDEFT)Linux 操作系统在本出版时包含的功能和软件包的完整列表,请访问以下链接:

www.deftlinux.net/package-list/

计算机辅助调查环境

计算机辅助调查环境CAINE)是一个可启动的现场响应 CD/DVD,具有安全模式、文本模式、作为现场系统或在 RAM 中启动的选项,如下所示:

在选择启动选项后,CAINE 最引人注目的特点之一是轻松找到写入阻断器功能,如下图所示的 BlockON/OFF 图标。激活此功能可以防止 CAINE OS 向证据机器或驱动器写入数据:

在 CAINE 中,取证工具是列出的第一个菜单。与 DEFT Linux 一样,在菜单中有几个类别,如下图所示,其中包含一些在开源取证中使用的更受欢迎的工具。除了类别外,还有一些直接链接到一些更知名的工具,如GuymagerAutopsy,这两者都将在后面的章节中详细介绍:

有关 CAINE 在本出版时包含的功能和软件包的完整列表,请访问以下链接:

www.caine-live.net/page11/page11.html

Kali Linux

最后,我们来到这个可爱的宝石,Kali Linux,在下一章和本书的整个过程中将详细讨论其从安装到高级取证使用的细节。

  • 主页www.kali.org/

  • 基于:Debian

  • 发行类型:渗透测试、取证和反取证

Kali Linux 是作为渗透测试或渗透测试发行版而创建的,最初名为 BackTrack,后来在 2015 年演变为 Kali Linux。这个强大的工具是全球渗透测试人员和安全爱好者的首选工具。作为Certified EC-Council InstructorCEI)的Certified Ethical HackerCEH)课程,这个操作系统通常是课堂上的明星,因为它包含了许多令人印象深刻的捆绑安全程序,从扫描和侦察工具到高级利用工具和报告工具。

与上述工具一样,Kali Linux 可以用作现场响应取证工具,因为它包含了进行全面调查所需的许多工具。但是,Kali 也可以用作完整的操作系统,因为它可以完全安装到硬盘或闪存驱动器上,并且还包含了一些用于生产力和娱乐的工具。它配备了许多成功使用硬件、图形和网络所需的驱动程序,并且在 32 位和 64 位系统上以最少的资源平稳运行;它还可以安装在某些移动设备上,如NexusOnePlus手机和平板电脑上。

除了其多功能性之外,从光盘/闪存驱动器启动时,调查人员还有几个选择,包括现场(取证模式),这样可以保持证据驱动器的完整性,并且不会干扰它,同时还禁用了任何闪存驱动器和其他存储介质的自动挂载,确保在整个调查过程中原始证据的完整性。

当从 DVD 或闪存驱动器启动到 Kali Linux 时,用户首先会看到现场环境和安装的选项。从列表中选择第三个选项将进入现场(取证模式),如下面的屏幕截图所示:

一旦 Kali Live(取证模式)启动,调查人员将看到与在 Kali 中使用任何 GUI 时看到的完全相同的主屏幕,如下面的屏幕截图所示:

单击“应用程序”可以在左上角找到 Kali 菜单。这将带用户进入菜单列表,显示较低的取证类别,如 11-取证。以下屏幕截图展示了 Kali 中一些取证工具的情况,我们将在本书中稍后使用:

应该注意的是,列出的工具并不是 Kali 中唯一可用的工具。正如我们将在后面的章节中看到的,还有其他几个工具可以通过终端调用。

值得注意的是,当它处于取证模式时,Kali 不仅不会篡改原始证据驱动器,而且也不会向交换文件中写入数据,其中可能存储了最近访问和存储在内存中的重要数据。

下面的屏幕截图显示了使用侧边栏菜单中最后一个图标(类似于方形中的九个点)访问取证工具菜单的另一个视图:

有关 Kali Linux 操作系统在发布时包含的功能和软件包的完整列表,请访问以下链接:

tools.kali.org/tools-listing

在提到的三个取证发行版中,Kali 可以作为现场响应取证工具运行,但也可以像 Windows、Mac 和 Android 一样作为完整的操作系统使用,因为它包含了几个内置的生产力和日常使用工具。Kali 可以安装到硬盘上,这意味着可以定期下载和更新其他工具,持续访问所有 IT 安全和取证工具,允许用户在使用工具时保存进度,而不必过多担心重新启动他们的机器,如果他们决定将其用作完整的操作系统。

使用这些开源取证操作系统,如 Kali,为我们提供了一系列可供选择和使用的工具。在每个发行版的每个类别中都有许多执行相同任务的工具。这是好事,因为我们的发现应该能够使用不同的工具来复制。这在调查人员的工作可能受到批评,案件和证据的完整性受到质疑和审查的情况下尤为重要;正确使用多个工具将产生一致的结果。

数字调查中需要多个取证工具

证据保全至关重要。正确使用商业和开源工具将产生结果;然而,为了获得法医学上可靠的结果,有时最好使用多个工具并产生相同的结果。

使用多个工具的另一个原因可能仅仅是成本。我们中的一些人可能有很大的预算可以使用,而其他人可能根本没有或预算有限。商业工具可能成本高昂,特别是由于研发、测试、广告和其他因素。开源工具虽然经过社区测试,但可能没有商业工具那样的资源和资金。

那么,我们如何知道选择哪些工具呢?

数字取证通常非常耗时,这也是您可能希望使用多个证据的数字取证副本的原因之一。这样,您可以同时使用不同的工具来加快调查的进展。虽然快速工具可能是一件好事,但我们也应该质疑工具的可靠性和准确性。

国家标准与技术研究所NIST)制定了一个计算机取证工具测试CFTT)计划,测试数字取证工具并将所有发现结果提供给公众。根据其特定能力选择了几种工具,并将其放入磁盘成像、刻录和文件恢复等测试类别。每个类别都有一个正式的测试计划和测试策略,以及一个可供公众查阅的验证报告。

有关 CFTT 计划的更多信息可以在www.cftt.nist.gov/disk_imaging.htm找到。有关本书涵盖的许多工具的测试和验证报告可以在www.dhs.gov/science-and-technology/nist-cftt-reports找到。

为了强调使用多个工具来维护调查和发现的完整性的重要性,本书的第三和第四部分将演示多个工具。

反取证:对数字取证的威胁

尽管我们希望数字取证中涉及的任务尽可能简单,但我们确实会遇到使调查和数字取证人员的生活变得不那么简单甚至有时会感到有压力的情况。希望隐藏信息、掩盖行踪甚至那些恶意意图或实际参与网络犯罪的人经常采用各种方法来试图挫败数字取证人员的尝试,希望阻碍或停止调查。

在最近的一段时间内,我们看到了在线数字入侵事件,特别是从 2011 年开始。其中许多攻击据称来自或声称是臭名昭著的黑客组织,如 LulzSec、Anonymous、Lizard Squad 等,还有许多其他人,包括个人和网络活动人士(为特定原因或目的而进行黑客攻击并且不太关心在监狱中度过的时间)。其中一些黑客攻击不仅使几家主要网络和机构瘫痪,还直接和间接造成了数百万美元的损失;结果,公众对这些公司的信心丧失,进一步增加了损失。

这些大胆、有创意和公开的攻击导致了许多其他新团体的出现,他们从 Anonymous 和其他人过去的失误中吸取了教训。社交媒体和地下通信渠道很快成为志同道合的黑客和网络活动人士之间最简单的沟通形式。随着互联网和万维网变得更容易访问,这也导致了不仅是 IP 之间的竞争,还有私营公司和企业之间的竞争,这导致了几乎每条街上都有免费无线热点的出现,无论是小型还是大型企业。

在几乎每家咖啡店都有互联网接入的情况下,任何人都可以使用智能手机、平板电脑、笔记本电脑或其他设备几乎无需认证地访问互联网。这使他们可以访问黑客网站和门户,以及下载工具、上传恶意软件、发送感染的电子邮件,甚至进行攻击。

加密

在这种情况下,还有更多用户友好的工具可用于帮助掩盖公开可识别信息PII),或者任何可能在取证调查中揭示涉及网络犯罪嫌疑人的信息。用于数据加密和匿名性的工具,例如 IP 地址的掩盖,对任何人都是随时可用的,其中大部分是越来越用户友好的。

还应该注意,许多 Wi-Fi 热点本身可能非常危险,因为这些可以很容易地设置为拦截个人数据,例如登录和密码信息以及 PII(例如社会安全号码、出生日期信息和电话号码)从任何连接到 Wi-Fi 并输入此类信息的用户那里。

加密的过程提供了通信各方之间的保密性,并且在很大程度上使用技术的方式与我们使用锁和钥匙来保护我们的个人和私人物品的方式非常相似。要打开一个锁,必须有一个特定的匹配钥匙。同样,在数字世界中,数据被加密或锁定使用加密算法,并且必须使用相同的密钥来解密或解锁数据。还存在另一种情况,一个密钥可以用来加密或锁定数据,另一个密钥用来解密数据。两个非常流行的加密工具是 TrueCrypt 和 VeraCrypt。

这两个加密工具使用非常高的加密方法来保持数据的保密性。取证的主要障碍可能是获取解密密钥以解密或解锁对数据的访问。

TrueCrypt 和 VeraCrypt 不仅加密文件,还加密文件夹、分区和整个驱动器!

在线和离线匿名性

特别是加密可能使调查变得非常困难,但还有匿名性的概念,这增加了在调查中保持真实来源准确性的复杂性。与加密一样,存在着几个免费和开源的工具,适用于所有操作系统平台,如 Windows、Mac、Linux 和 Android,试图并且通常成功地掩盖某人的数字足迹。这个数字足迹通常通过 IP 地址和MAC媒体访问控制)地址来识别设备。不涉及网络方面的事情,这两个数字地址可以与一个人的全名和家庭地址相比较。

尽管一个人的 IP 地址可以根据他们的私人网络(家庭和工作)和公共网络(互联网)访问而改变,但 MAC 地址保持不变。然而,也有各种工具可以自由地伪造或伪造一个人的 IP 和 MAC 地址,以实现隐私和匿名的目的。除此之外,用户可以使用在线服务器和设备的数据路由系统,使得追踪发送数据的源变得非常困难。这个系统被称为代理链,确实隐藏了一些用户的身份。

一个很好的例子是 Tor 浏览器;它使用洋葱路由和全球几个代理来将数据从一个代理传递到另一个代理,使得追踪源变得非常困难,但并非不可能。您可以将代理链想象成接力赛,但是不是有四个人,一个人将接力棒传递给下一个,而是数据在全球数百个代理设备之间传递。

总结

恭喜!你已经到达第一章的结尾。在我们进入第二章之前,让我们回顾一下刚才讨论的内容。

我们看到数字取证仍然是一个相对较新的领域,尽管法庭科学已经存在了很长时间,早在 20 世纪初就有了。虽然数字取证可能只是在 21 世纪初才出现在舞台上,作为一门科学,我们有一些最佳实践、程序和标准,比如由 ACPO 和 SWGDE 制定的标准。这些标准在进行调查时保持了准确性和证据的完整性,无论是作为业余还是专业的数字取证调查员。

提到的一些商业工具包括 EnCase、FTK 和 Magnet Forensics。许多开源工具适用于基于 Linux 的发行版,可以单独下载,但许多工具也可以在特定的取证和安全操作系统或发行版中轻松获得。其中一些发行版包括 DEFT Linux、CAINE,当然还有 Kali Linux;所有这些都可以在提供的链接中免费下载。

希望这个数字取证的介绍对你有启发和乐趣。现在我们已经建立了取证的基础,让我们深入了解 Kali Linux,学习如何在第二章中下载、安装和更新 Kali。我们下一页见。

第二章:安装 Kali Linux

我们到这里了。让我们开始安装 Kali Linux。我们的一些读者可能已经熟悉安装过程,甚至可能熟悉一些高级功能,如分区和网络设置。对于初学者和新手,我们鼓励您特别关注本章,因为我们将从下载 Kali Linux 的绝对基础开始,逐步进行成功安装。

本章我们将要涵盖的主题是:

  • 软件版本

  • 下载 Kali Linux

  • 安装 Kali Linux

  • 在 VirtualBox 中安装 Kali Linux

软件版本

Kali 已经存在了相当长的时间。之前被称为 BackTrack,从版本一到五,Kali Linux 首次出现在 2015 年,并作为 Kali 1.0 发布。从 2016 年起,Kali 的命名则根据年份。例如,在撰写本书时,使用的版本是 2017 年 9 月发布的 Kali 2017.2。

对于那些运行较旧版本的 Kali,或者在以后购买本书时可能会有新版本的 Kali Linux 可用的读者,您可以通过使用sudo apt-get update distro命令轻松更新 Kali Linux 的实例,本章末尾有演示。

下载 Kali Linux

出于安全和安全原因,最好总是直接从其创建者Offensive Security的网站上下载 Kali Linux。这样做的主要原因是其他页面上的 Kali 下载可能是假的,或者更糟糕的是,可能被感染了木马、rootkit 甚至勒索软件等恶意软件。Offensive Security 还在其网站上包含了所有 Kali 下载版本的哈希值,允许用户将其下载的 Kali 版本的哈希值与 Offensive Security 在其网站上生成和发布的哈希值进行比较(www.kali.org)。一旦进入网站,您可以单击下载链接,或者直接访问 Kali Linux 下载页面,网址为www.kali.org/downloads/

在下载页面上,我们可以看到有六个 Kali 可用的下载版本,每个版本都有特定的类别信息:

  • 镜像名称:指定下载的名称以及操作系统是 32 位还是 64 位。

32 位操作系统仅限于使用 4GB RAM。如果您的系统 RAM 超过 4GB,您可能希望下载 Kali Linux 的 64 位版本。

  • 下载ISO(国际标准组织的缩写)通过用户的浏览器直接下载。Torrent 需要安装特殊软件才能下载。

ISO 文件(或常称为 ISO 镜像)是在复制数据时使用的精确副本。

  • 大小:以 GB 为单位的文件大小。

  • 版本:Kali Linux 的版本。

  • *sha256sum*:Linux 中用于生成现有数据的校验和或数字输出的命令,然后可以用来与下载副本的校验和进行比较,以确保没有数据或位被更改或篡改:

对于本书,我们将使用 Kali 64 位版本,以 ISO 镜像的形式下载,如下所示:

安装 Kali Linux

如 第一章 中所述,数字取证简介,Kali Linux 可以用作现场响应操作系统,也可以作为完整操作系统安装和运行。下载 Kali Linux 后,ISO 镜像可以使用任何 ISO 文件刻录工具(如 ImgBurn)刻录到 DVD 上。然后可以将 DVD 用作现场操作系统,也可以用于将 Kali 安装到硬盘上。用户还可以使用 UNetbootin 等工具将 Kali Linux 安装到可移动存储介质上,包括闪存驱动器、SD 卡或外部硬盘驱动器,具体取决于用户的偏好。

为了配合本书的使用,我建议您首先将 Kali Linux 刻录到 DVD,然后安装 Kali 到新的硬盘上,从而满足取证准备的概念。在这种情况下,取证准备是指硬盘是全新的和未触及的,因此在任何方面都没有受损,以维护调查人员和调查的完整性。

对于那些没有可用资源在全新硬盘上安装 Kali Linux 的人来说,还有在虚拟环境中安装 Kali Linux 的选项。用户可以使用虚拟化技术,如 VMware 和 VirtualBox,在宿主机中运行 Kali Linux 操作系统作为客户机。

在 VirtualBox 中安装 Kali Linux

VirtualBox 可以在许多平台上运行,包括 Windows、macOS、Linux 和 Solaris。在本节中,我们将VirtualBox 5.1.28安装到我们的宿主机,并从那里开始。

VirtualBox 可以在www.virtualbox.org/wiki/Downloads找到:

准备 Kali Linux 虚拟机

一旦 VirtualBox 被下载,它可以被安装,然后配置以运行 Kali Linux 和许多其他操作系统,取决于可用的 RAM 数量。

在设置新的客户操作系统或客户虚拟机时,我们首先点击新建,然后填写以下细节:

  • 名称Kali-Forensic(或您选择的名称)

  • 类型:Linux

  • 版本:Debian(64 位)

然后点击下一步,继续在内存大小提示中分配 RAM:

在上述内存大小截图中,我们可以看到屏幕右侧的最大 RAM 容量。我使用的机器有 16,384 MB(四舍五入为 16 GB)的 RAM。虽然 Kali 的推荐内存大小只有 1024 MB(1 GB),但我建议至少为使用取证工具时的平稳功能分配 4 GB 的 RAM。我已经为我的虚拟机分配了 8,192 MB 的 RAM。

接下来,通过添加虚拟硬盘来创建虚拟机。我建议从新的虚拟硬盘开始,这是选择中的第二个选项。点击创建以继续,然后选择 VDI(VirtualBox 磁盘映像)作为硬盘文件类型:

选择 VDI,然后点击下一步:

一旦选择了 VDI,选择动态分配选项以允许虚拟硬盘在需要时扩展:

接下来,我们选择文件位置和所选虚拟硬盘的大小。Kali Linux VDI 的推荐大小为 8 GB,但我分配了 64 GB,以备不时之需存储文件和镜像驱动器的副本。

完成后,点击创建以完成虚拟硬盘的创建:

在虚拟机上安装 Kali Linux

一旦虚拟硬盘已经准备好并且按照上一节的步骤完成,我们就可以开始实际的 Kali Linux 安装过程。在 Oracle VM VirtualBox Manager 中,这是 VirtualBox 的主操作系统管理窗口,我们可以看到为我们的 Kali Linux 安装准备的虚拟机现在可用。

在屏幕中间,我们还可以看到分配的资源,如通用部分中的名称和操作系统类型,以及系统部分中分配的 RAM 数量。其他设置,如VRAMVideo RAM的缩写)、网络和显示设置也可以在此部分中访问。

要开始安装 Kali Linux,点击左侧的 Kali-Forensic 条目,然后点击绿色的启动箭头:

在下一步中,我们必须找到我们从 Offensive Security 网站下载的 Kali Linux ISO 映像。单击“主机驱动器'D:'”旁边的文件夹图标,并搜索下载的 Kali Linux ISO 映像:

选择 ISO 映像后,您会注意到所选条目更改为 kali-linux-2017.2-amd64.iso(2.81 GB)。单击“开始”开始启动过程:

单击“开始”后,启动菜单显示了各种可用选项,包括 Kali 的实时版本。在这个演示中,我们将选择“图形安装”选项将 Kali 安装到虚拟硬盘:

值得一提的是,我还应该提醒您关注“实时(取证模式)”选项,当从 DVD、闪存驱动器或其他可移动存储介质引导时,这个选项将对我们可用。在可能需要实时响应的情况下,始终保留 Kali Linux 的副本是个好主意。

好的,回到我们的安装。在启动菜单中点击“图形安装”选项后,我们将被提示选择语言、位置和键盘布局。

在下一步中,我们为 Kali Linux 客户端指定主机名,这与 Windows 环境中的用户名相同:

对于域名区域,我将其留空,因为我不会将此主机加入域。

设置密码时,请确保使用您能记住的密码。如果您在启动时记不住密码,使用一个由大写字母、小写字母和数字字符组成的复杂密码,长度为 16 个字符,是没有意义的:

分区磁盘

硬盘(无论是虚拟还是物理)的分区涉及将驱动器分割成逻辑驱动器。可以将其视为一个由一个大房间组成的大公寓。现在想象一下,您设置了一堵墙,将公寓分成两半。它仍然是一个物理上的公寓,但现在分成了两个房间。一个可以用作主公寓,另一个可以用作存储,或者您甚至可以有两个较小的公寓与自己和朋友共享。同样,分区可以允许在硬盘上安装多个操作系统,甚至创建额外的卷用作存储空间。

继续我们的 Kali Linux 安装,下一步提供了有关虚拟磁盘分区使用的选项。由于这是一个虚拟磁盘,我建议使用引导-使用整个磁盘分区方法。这种方法非常简单,使用在前面步骤中分配给虚拟磁盘的所有可用空间。首先,让我们选择推荐的分区方法:

上面的截图中的其他选项为用户提供了设置 LVM(逻辑卷管理器)和加密 LVM 的选项。LVM 管理逻辑分区,可以创建、调整大小和删除 Linux 分区。

提示警告说,如果选择此选项,磁盘上的所有数据(如果有的话)将被删除;但是,这是一个没有现有数据的新虚拟磁盘,所以我们可以继续安装。

在选择 VirtualBox 磁盘后,确保选择一个分区中的所有文件:

随着我们继续分区过程,我推荐“引导分区”选项的主要原因之一是因为它几乎为我们做了所有事情。从这里开始,我们只需选择最后一个可用选项,即“完成分区并将更改写入磁盘”,然后单击“继续”:

分区过程的最后一步要求确认将指定的配置和更改写入磁盘。在单击“继续”之前,请务必选择“是”:

我们现在离安装和运行 Kali Linux 虚拟机只有几步之遥。

安装完成后,软件包管理器提示选择网络镜像,这允许我们访问软件的更新版本。我建议通过单击“否”跳过此步骤,因为一旦我们运行起来,我们很快就会手动安装 Kali 的更新。

安装过程中的最后一步是在硬盘上安装 GRUB 引导加载程序。不详细介绍,GRUB(GRand Unified Bootloader)允许在启动屏幕上安全地拥有和选择操作系统,从而实现多重引导环境,保留每个已安装操作系统的引导条目。

尽管我们可以选择不安装 GRUB(因为我们的虚拟硬盘上只安装了一个操作系统),但是如果要与其他操作系统进行双重或多重引导,则应选择“是”选项:

如果选择是安装 GRUB,请确保选择可引导设备:

单击“继续”后,安装完成并启动 Kali Linux。

探索 Kali Linux

安装完成后,我们可以启动 Kali Linux。要登录,请输入root作为用户名和之前配置的密码:

登录后,我们应该在终端中输入三个命令来更新 Kali。

要进入终端(相当于 Windows 中的命令提示符),请单击应用程序|终端。

打开终端后,输入以下命令,以便 Kali 可以检查软件包更新、软件升级和发行版更新:

  • apt-get update

  • apt-get upgrade

  • apt-get dist-update

此时,我们已经成功更新了 Kali Linux 的安装。由于本书涉及 Kali Linux 中的数字取证,我们可以通过查看菜单上可用的取证工具来立即开始。

在 Kali Linux 中有两种方法可以进入取证菜单:

  • 第一种方法是单击“应用程序”,然后移动到菜单项 11 - 取证,如下面的屏幕截图所示:

  • 对于第二种方法,只需单击“显示应用程序”项目(浮动侧边菜单中的最后一个图标),然后选择取证:

您会注意到在第二个选项中有更多的工具可用。这并不是说这些是 Kali Linux 中所有可用的取证工具。许多工具可以通过终端访问,其中一些将在后面的章节中以这种方式访问。

我还鼓励您探索 Kali Linux 及其许多出色的功能,这也使其成为一个完全功能的操作系统,不仅用于取证和渗透测试。

如果您对 Kali 作为渗透测试(pen-testing)发行版感兴趣,Packt有许多关于 Kali Linux 的详细书籍,我全力推荐。我拥有其中许多平装书,并且在工作中经常使用它们,也用于准备我的讲座。

总结

在本章中,我们深入探讨了 Kali Linux 的技术方面,并发现了通过 Kali Linux ISO 映像可用的各种模式,无论是从光盘实时运行还是在虚拟环境中安装。除了作为从 DVD 的实时响应取证工具外,Kali 还可以安装到可移动存储介质,如闪存驱动器或 SD 卡上。作为一种多功能操作系统,我们还可以将 Kali 安装为一个完整的操作系统。

我们还深入研究了在虚拟环境中使用 VirtualBox 安装 Kali Linux。对于初学者,我绝对推荐这种安装方法,因为它允许在隔离的环境中进行试错。请确保分配足够的 RAM,并且记住,Kali 的 32 位版本只允许识别和利用高达 4GB 的 RAM。作为提醒,我再次建议您同时拥有 Kali Linux 的 Live DVD 和 OS 的安装版本,无论是物理还是虚拟的,以确保所有情况都覆盖到。

在 Kali 中使用的取证工具是进行调查的绝佳方式,但我们还需要了解存储介质、文件系统、数据类型和位置的工作原理。在下一章中,加入我,我们将首先了解这些基本概念,继续我们的数字取证之旅。在第三章中见。

第三章:了解文件系统和存储介质

成为数字取证调查员需要的不仅仅是技术知识。案件本身还需要大量的研究、流程和分析。想象一下,你需要建造一座房子。当然,我们需要木材、钉子、水泥、金属、玻璃和所有其他原材料,我们还需要熟练的劳工和承包商来建造结构并将其组装在一起。除了材料、工具和资源之外,我们还需要进行研究,以确保我们了解这个项目成功所需的一切。

例如,我们必须获得建筑许可证,进行土壤分析,考虑天气,然后根据天气、位置、土壤类型等选择材料。毫无疑问,必须对该领域的基本概念有所了解,才能有效地完成任务。同样,我们需要了解文件系统、操作系统、数据类型和位置,以及保留数据、存储介质和一般证据的方法和程序。

在本章中,我们将学习以下主题:

  • 存储介质的历史

  • 文件系统和操作系统

  • 数据呢?

  • 数据的易失性

  • 页面文件及其在数字取证中的重要性

存储介质

任何调查的最终结果都是证明某事是否存在或发生过。在笔记本电脑、台式机、移动设备和智能设备中,数据必须存储在某个地方,即使只是暂时的。我们大多数人可能熟悉笔记本电脑、台式机、移动设备等中的硬盘驱动器,但我们也需要关注可移动和便携式存储设备。这些包括 DVD、便携式驱动器、拇指或闪存驱动器、SD 和 microSD 卡,以及旧的介质,如 CD 和软盘等等。

我们还应该考虑,许多便携式闪存驱动器以新奇的形状和大小作为特色商品出现,可能不像普通的矩形驱动器那样。另一个需要考虑的问题是,这些存储介质设备多年来尺寸发生了变化,可能变得更小,通常是由于技术的进步。

IBM 和存储介质的历史

在没有提到三个字母IBM的情况下,关于硬盘驱动器和存储介质的历史,就不可能有任何故事、日志、书籍,甚至讨论。我们都熟悉这个著名的科技巨头,但我们可能并不熟悉它的一些伟大成就。

国际商用机器公司,或者我们所知道的IBM,已经存在了相当长的时间。在 20 世纪初被称为计算-制表-记录公司(或CTR),IBM 更为人所知的是建造了第一台硬盘驱动器、第一台个人电脑、其服务器、台式机和笔记本电脑。

在 1956 年和 1957 年之间,IBM 在 305 RAMAC(随机存取会计和控制方法的缩写)的开发和发布方面取得了重大进展,该设备采用了第一代磁盘存储技术。这项革命性的技术重达约一吨,大约有 16 平方英尺大小。然而,这个庞然大物的磁盘容量只有 5 MB(兆字节 - 是的,我说的是兆字节)。

尽管按照今天的标准,5 MB 大约是使用移动设备拍摄的高清照片的大小,但总的来说,这确实是当时一个巨大的成就。在 IBM 的发明之前,数据是存储在可以达到数百万张卡的打孔卡上,只能容纳几兆字节的数据。

当时引入这种数字存储的一个主要问题是设备的大小。对于许多人来说,飞机和卡车运输可能不是一个选择;存储这些设备的空间也可能是一个问题。

随着技术的进步,IBM 在 1975 年宣布了一款更加便携的计算机,名为 IBM 5100 便携式计算机。在 1980 年代,特别是 1981 年,我们看到了 IBM 个人电脑的诞生。这款便携式计算机比前任轻得多,价格也更加实惠,介于 8000 至 20000 美元之间。

直到 1981 年 IBM 发布了第一台个人电脑,计算机的便携性才真正成为现实。售价为 1565 美元,用户可以获得键盘和鼠标,并可选择监视器、打印机和软盘驱动器。除了软盘驱动器,这是今天个人电脑的标准。

随着这种更新和更加便携的技术,多年来数据存储介质也有所改进,从磁带存储到软盘和磁盘、CD、DVD、蓝光光盘,当然还有机械和固态驱动器。

可移动存储介质

继续我们关于存储介质的话题,我首先想要讨论可移动存储介质,因为它们在当今世界的作用和固定存储介质一样重要。

磁带驱动器

IBM 在 1950 年代推出了磁带,这是一种简单而非常快速的存储数据的方式,速度与其处理时间相等。IBM 726 磁带读写器是第一批提供这种存储的设备之一,带密度为每英寸 100 位。 英寸的磁带应该可以说明磁带的大小,它缠绕在一个大轮子上,类似于旧的电影胶卷。

使用磁带存储介质,数据是在由间隔块分隔的帧中横跨磁涂层塑料带的宽度上写入的。磁带存储介质今天仍然被广泛使用,并且像许多其他存储介质类型一样,在尺寸上显著减小,容量和速度增加。

举个例子,截至 2017 年,IBM 已经开发出了新的磁带存储介质,每英寸带密度为 200 Gbps,单个磁带可以记录高达 333 GB 的数据。这些磁带(对于像我这样的老年人来说)的大小与盒式磁带相当,或者(对于年轻人来说)几乎和普通智能手机一样大,可以放在手中。

软盘

软盘再次由 IBM 推出,首次与软盘驱动器一同出现在 1971 年。尽管当时的大型计算机已经有硬盘驱动器和磁带存储介质,但是需要一种简单和更便宜的方式来保存和传递软件和指令给大型计算机,之前是使用速度慢得多的穿孔卡完成的。

软盘的核心是一个小磁盘,尽管当时比磁带存储和硬盘驱动器更便携,但存储容量远低于我们提到的其他介质。

软盘的演变

尺寸:8 英寸

推出年份:1971 年

最大容量:80 KB(千字节)

尺寸:5.25 英寸

推出年份:1976 年

最大容量:360 KB

尺寸:3.5 英寸

推出年份:1984 年

最大容量:1.2 MB(兆字节)

1986 年,软盘的容量增加到了 1.44 MB,一直保持到索尼(最后一家生产软盘的制造商)在 2011 年停产。

光学存储介质

光学存储介质之所以被这样称呼,是因为数据是通过使用不同类型的激光在磁盘表面上写入的。

尽管在没有默认标签的情况下可能有些难以区分各种光盘,但它们在颜色和色调上有些微的差异,这是由于用于将数据写入其中的激光的大小不同。

光盘

紧凑盘(或 CD)由坑和地形制成,作为盘的底部凸起,涂有一层薄铝,形成反射表面。数据被写入同心圆中,进一步分成每个 512 字节的扇区,每个扇区在盘的内部到外部(或边缘)被称为 CD 上的轨道:

  • 直径:120 毫米

  • 用于写入数据的激光类型:780 纳米(红外)激光

  • CD 的最大容量:650-700 MB

各种类型的 CD:

  • 紧凑盘-只读存储器(CD-ROM):这种盘上有程序、游戏、音乐等数据,只能读取

  • 可记录紧凑盘(CD-R):数据可以写入这个盘,但只能写入一次

  • 紧凑盘-可重写(CD-RW):数据可以多次写入这个盘

数字多功能光盘

数字多功能光盘(或 DVD),尽管直径相同,但可以存储比 CD 更多的数据:

  • 直径:120 毫米(与 CD 相同)

  • 用于写入数据的激光类型:650 纳米(红激光)

  • DVD 的最大容量:4.7 GB(千兆字节)和 15.9 GB(双层 DVD)

各种类型的 DVD:

  • 数字多功能光盘-只读存储器(DVD-ROM):DVD 上已经写入数据,就像 CD-ROM 一样。

  • 数字多功能光盘-可记录(DVD-R):数据可以写入一次到 DVD。

  • 数字多功能光盘+可记录(DVD+R):数据可以写入一次到 DVD。+R DVD 利用更先进的错误检测和管理技术。

  • 数字多功能光盘-可重写(DVD-RW):数据可以多次写入 DVD。

  • 数字多功能光盘-可记录双层(DVD-R DL):DVD 包含双层,导致存储容量更高,DVD-9 盘上为 7.95 GB,DVD-18 盘上为 15.9 GB。

  • 数字多功能光盘-可记录双层(DVD+R DL):与 DVD-R DL 相同,但被认为是更有效的格式,减少错误。

  • 数字多功能光盘-随机存取存储器(DVD-RAM):主要用于视频录制设备,因为它的弹性(可持续长达两十年)和重写数据的能力。这种盘比其他 DVD 格式更昂贵,也不兼容许多常见的 DVD 驱动器和播放器。

蓝光盘

可移动磁盘媒体的当前标准,蓝光盘得名于用于读取和写入盘的激光的颜色。由于蓝光盘的高容量存储,高清晰度(HD)内容可以轻松存储在蓝光盘上而不会失去质量:

  • 直径:120 毫米(与 CD 和 DVD 相同)

  • 用于写入数据的激光类型:405 纳米(蓝光)激光

  • DVD 的最大容量:27 GB(千兆字节)和 50 GB(双层蓝光)

闪存存储介质

闪存存储器之所以被称为闪存,是因为数据是通过电荷写入和擦除的。你可能听说过有人说他们不得不“刷”他们的移动设备。这与在智能手机和智能设备上擦除闪存存储介质类似,只是像 Android 和 iOS 等操作系统的设备需要更复杂的程序来刷写和重新安装它们的操作系统。然而,最终结果是非常相似的,即内存和存储区域被重置或擦除。

闪存芯片有两种类型,称为 NAND 和 NOR 闪存,负责在闪存媒体上高速和高容量地存储数据。它们是较新的EEPROM芯片(电可擦可编程只读存储器的缩写),而不是像较慢的 EEPROM 一样一次只擦除一个字节,而是可以擦除数据块或整个驱动器。这种闪存芯片是非易失性的,意味着即使芯片断电,数据仍然存储在芯片上。当通过一种称为电路写入的方法以电信号的形式发送特定指令到芯片时,数据会相应地被擦除。

以下图片显示了我旧的 1GB 闪存驱动器,上面有一个三星 NAND 芯片,用来存储数据。如果你想深入了解芯片的技术细节,可以查看这个芯片的数据表 PDF:datasheet.iiic.cc/datasheets-1/samsung_semiconductor_division/K9K4G08U0M-PCB00.pdf

闪存媒体存储到目前为止已经成为便携性的终极选择,有许多类型,从拇指大小到小指甲盖大小。闪存存储的寿命取决于使用情况,因为它们都有平均读写使用率,有时会显示在设备的包装上。读写速度也是目前一些最快的,这就是为什么硬盘驱动器已经从传统的机械盘机制转向了固态盘机制。本章后面将进一步讨论固态硬盘。

从 2GB 到 256GB 的闪存媒体容量,特别是 SD、microSD 和闪存驱动器,现在可以作为非常快速的可移动驱动器,上面可以安装操作系统,甚至可以使用各种工具进行分区。没错,Kali Linux 绝对可以安装到闪存驱动器、SD 卡或 microSD 卡上(并且可以制作成可启动的),只需 8GB 的存储空间。

USB 闪存驱动器

通用串行总线USB)端口或接口于 1995 年发布,已成为所有设备的标准,取代了旧设备,这些设备本来会连接到计算机上的特定并行端口。几乎可以看到几乎任何设备或外围设备都通过 USB 连接到计算机,包括鼠标、键盘、闪存驱动器、打印机、扫描仪、相机、移动设备以及几乎所有其他设备。

USB 端口的演变:

USB 版本 发布年份 数据传输速度
USB 1.0 和 1.1 1995 12 Mbps
USB 2.0 2000 480 Mbps
USB 3.0 2008 5 GBps
USB 3.1 2013 10 GBps

USB 闪存驱动器如今有各种各样的形状和大小,从标准的矩形形状到各种想象得到的形状。USB 闪存驱动器使用 NAND EEPROM 芯片来存储数据,如今有各种版本可定义闪存驱动器的读/写速度。

以下图片显示了各种闪存驱动器,从最旧到最新,从左到右。前三个驱动器都是 USB 2.1;然而,前两个是 8GB 的闪存驱动器,第三个则明显较小,是 32GB 的闪存驱动器。第四个驱动器(海盗船)是一个 64GB 的 USB 3.1 驱动器:

我应该特别提到这里的大象在房间里,即新颖的闪存驱动器,它可以轻松地当作钥匙链或玩具,实际上可能对不允许员工携带闪存驱动器上班或离开的组织构成威胁,因为组织内的数据具有敏感性。

闪存卡

与闪存驱动器一样,闪存存储卡(或者称为存储卡)也使用 NAND 闪存存储器,正如我们之前了解的那样,这是一种非易失性固态存储器。然而,与 USB 闪存驱动器不同,这些卡不带有 USB 接口,必须使用适配器或存储卡读卡器。

多年甚至几十年来,我们的台式机,笔记本电脑,手机和其他设备,包括相机,MP3 播放器甚至玩具,都使用了几种格式的存储卡。尽管我只会介绍一些当今更流行的卡,但重要的是你至少要熟悉存储卡,并且能够识别它们。

闪存存储卡类型:

  • Memory Stick PRO DuoMSPD,索尼开发的专有卡)

  • Secure DigitalSD

  • MicroSD

  • 紧凑闪存CF

  • MultiMediaCardMMC

  • xD-PicturexD

  • Smart MediaSM

在上述中,我选择在下面的图片中展示我的收藏中的三个。左边的卡是索尼 Memory Stick PRO Duo。中间的卡是一个带有侧滑锁的 SD 卡,用于防止数据被覆盖。右边的卡是今天更常见的 microSD 卡:

我想简要比较一下 PRO Duo(左边的卡),SD(中间的卡)和 microSD 卡(右边的卡)。PRO Duo 卡至少有十年的历史,更老,容量为 2GB。尽管 SD 卡上看不到,它的容量是 4GB,而右边最小最新的 microSD 卡实际上有 64GB 的存储容量。

看一下下面的图片,可以近距离看到 microSD 卡。它显示了 64GB 的容量,以及 microSD 卡的等级(Class 10)。64GB 的数据放在指甲盖大小的东西上!不过,microSD 卡正在开发更大容量的 128GB 甚至 256GB:

各种等级的 microSD 卡标识了它们的读/写速度和建议用途。如果购买的话,我建议购买 Class 10 的 microSD 卡,因为 C10 比其他等级(2、4 和 6)要快得多,并支持持续的高清和甚至 4k 视频录制。

如前所述,闪存存储卡需要读卡器,它们通过 USB 端口连接到笔记本电脑,台式机和其他媒体播放器。下面的图片显示了我的许多读卡器之一,它支持紧凑闪存,Memory Stick PRO Duo,Secure Digital,甚至 Smart Media 卡:

硬盘驱动器

现在我们已经对包括磁带存储和闪存存储在内的非易失性存储有了很好的了解,让我们深入一点了解硬盘驱动器的世界,它们作为固定存储介质。我将尝试通过主要关注取证调查人员特别需要的知识来保持简单和简短。

硬盘驱动器技术肯定已经走过了一段很长的路,从最初在 IBM 大型机上看到的庞大存储设备,现在更加紧凑,更快,更实惠,容量达到了几 TB。

尽管新型固态驱动器使用与闪存存储设备相同类型的存储器,但与机械驱动器相比,它们仍然有点昂贵。这也许是老式机械驱动器技术仍在使用的原因之一。机械驱动器由包括盘片,臂和非常强大的磁铁在内的运动部件组成。尽管在今天的笔记本电脑和硬盘驱动器中仍然很常见,但它们比新型的固态驱动器慢得多,后者没有运动部件,看起来非常类似于 USB 闪存驱动器的芯片组。

在您的取证调查和冒险中,您可能会遇到或被呈现出使用不同接口和不同电缆技术连接到主板的旧 HDD。我们来看一看,好吗?

IDE HDDs

在 20 世纪 80 年代中期,许多最早的个人电脑配备了使用PATA并行高级技术附件的缩写)和IDE集成驱动电子学的缩写)技术的硬盘。与当时的所有旧设备一样,采用了并行传输,导致吞吐量非常有限。识别旧 IDE 驱动器的简单方法是查看数据和电源电缆连接到驱动器的接口。

如下图所示,这些旧驱动器有四个用于电源的引脚,连接到一个 Molex 连接器,另外有八个用于将设备设置为主设备或从设备的引脚,然后是 40 个用于 IDE 数据电缆的引脚,用于将数据传输到主板:

1994 年,技术的进步导致了EIDE增强集成驱动电子学的缩写)的发布,从 40 个引脚的数据电缆增加到 80 个引脚,同时将传输速度从 4 Mbps 提高到可能的 133 Mbps。

然而,IDE/EIDE 仍然限制每台计算机最多四个 IDE/EIDE 驱动器,因为驱动器上的跳线引脚只允许两个主要驱动器和两个次要驱动器,设置为主设备和从设备。还必须考虑到 CD-ROM 和 RW 设备以及 DVD-ROM 和 RW 设备当时也在使用 IDE/EIDE 技术。

SATA HDDs

2002 年,希捷发布了一种 HDD 技术,称为SATA串行高级技术附件的缩写),它使用串行传输而不是较慢的并行传输。而 PATA 驱动器的速度为 33/66/133 Mbps,SATA 驱动器的速度为 150/300/600 Mbps。这意味着最低的 SATA 传输速度 150 Mbps 比最高的 PATA 速度 133 Mbps 要快。

SATA 驱动器的连接接口也不同,但当时常见的是 SATA 驱动器同时具有 SATA 和 PATA 电源电缆的连接器,以实现向后兼容性。

SATA 数据电缆比 PATA 电缆要薄得多,因为它们只包含连接到七个引脚的七根导线。每个 SATA 设备使用一个电缆,而 PATA 设备连接在一个 IDE/EIDE 电缆上的两个驱动器以主/从配置连接。

以下图片显示了一个带有 SATA 数据和电源连接器的旧 SATA 驱动器,连接在右侧,以及一个传统的 IDE Molex 电源电缆(四个引脚)连接在左侧:

SATA 仍然是今天台式机和笔记本电脑驱动技术的标准,并且已经进行了几次修订,如下所列。列出的速度以 MBps 而不是 Mbps 为单位:

  • SATA 1:150 MBps

  • SATA 2:300 MBps

  • SATA 3:600 MBps

以下图片显示了两个 SATA 笔记本电脑 2.5 英寸驱动器。左侧的那个已经损坏,已经打开让我们看到中间的圆盘和顶部略微位置在圆盘上方的臂。在臂的末端是一个读/写头,实际上进行数据的读写。

图片中右侧的驱动器实际上是一个混合驱动器,或者SSHD固态混合硬盘的缩写)。这实际上是一个像左侧那样的机械驱动器,但也在其中具有闪存内存,以便更快地访问盘片上的数据:

固态硬盘

如前所述,SSD 是非易失性存储介质,并使用 NAND 闪存内存阵列来存储数据。SSD 已经存在了相当长的时间;然而,由于驱动器的高成本,主流使用可能会受到很大阻碍。三星于 1996 年首次发布了一款带有 PATA 接口的 32GB SSD,随后是 SanDisk 的 32GB SSD,但采用 SATA 接口。

尽管 SSD 驱动器使用闪存内存,但所使用的材料比闪存驱动器中的材料更高端,这使得它非常适合用作硬盘,但同时也导致了非常高的成本。

SSD 的一些优势来自于 SSD 中没有移动部件这一事实。没有移动部件使得 SSD 在摔落或者快速踢到 PC 塔的情况下更加耐用,因为没有盘片或者臂部来被刮擦或者撞击。此外,更快的读/写速度和访问时间大大减少了设备启动或者启动所需的时间,甚至在使用资源密集型软件和游戏时提供了更好的体验。

就数字取证而言,SSD 仍然是一种相对较新的技术,将在未来一段时间内不断改进。重要的是要记住,你正在处理的不是机械驱动器,并且要记住,SSD 上的数据,就像闪存驱动器或存储卡上的数据一样,可能在几分钟甚至几秒钟内丢失或擦除。尽管传统工具可以用于从 SSD 中提取和恢复数据,但我强烈建议在进行任何取证活动之前研究任何 SSD 驱动器,以更好地了解其工作原理和复杂性,如去芯和磨损平衡算法。

文件系统和操作系统

现在我们已经涵盖了物理方面,让我们来谈谈逻辑!任何类型的存储介质都需要使用特定的文件系统进行格式化。所选择的文件系统还将确定可以安装在介质上的操作系统,以及文件和分区的大小。

一个简单的想法是将一张空白纸张想象成任何类型的新的或擦除的存储介质。我们可以在这张纸上放置多种类型的信息,但我们可能首先想要以一种使我们的数据易于理解、访问甚至存储的方式来组织或准备这张纸。我们可以选择在上面写字,从左到右用英语句子和段落,或者我们可以创建表格,使用行和列。我们甚至可以使用打印幻灯片来展示我们的数据,或者甚至使用图像、图表和流程图。此外,我们可以以最适合存储和使用的数据的方式格式化存储介质。

文件系统确保数据以一种易于识别和索引的方式组织。想象一下文件柜内的存储空间,有多个隔间。有些可能专门用于按字母顺序存储文件,其他按时间顺序,有些隔间用于存放文具用品,杂项,甚至随机物品。尽管用于存储不同的物品,它们都可以被标记和轻松识别,并且以一种可以轻松访问或者移除每个隔间内容的方式组织。

要在硬盘或可移动存储介质上安装任何操作系统,设备必须首先通过选择适当的文件系统进行格式化和准备。Windows、macOS、Android、Kali 等都有文件系统,可以组织存储介质,以便成功安装操作系统。

一些更受欢迎的操作系统及其文件系统是:

  • Microsoft Windows

  • 文件系统NTFS(网络技术文件系统)

  • 支持的版本:Windows 10、8、7、Vista、XP、2000、NT

  • 最大卷大小:16 EB(艾字节)

  • 最大支持文件大小:256 TB

  • NTFS 功能:压缩,EFS(加密文件系统),磁盘配额

较早版本的 Microsoft Windows 默认支持FAT文件分配系统)文件系统。较新版本的 Windows 也支持 FAT 和 FAT32,但有驱动器大小限制(8 TB)和文件大小限制(4 GB)。exFAT 是为了消除 FAT32 的限制而创建的,但可能没有 FAT32 那么广泛地得到支持。

  • MacintoshmacOS):

  • 文件系统HFS+分层文件系统

  • 支持的版本:macOS 直到版本 10

  • 最大卷大小:2 TB

  • 最大支持文件大小:2 GB

在撰写本文时,苹果已经升级到了一个称为APFSApple 文件系统)的新文件系统,以取代 HFS+,专门针对 SSD 进行了优化。APFS 将在 macOS 10.12.4 和 iOS 10.3 中提供。

  • Linux

  • 文件系统Ext4(第四扩展文件系统)。Linux 有几种文件系统可用,但如果您不确定应该使用哪种,我建议使用这种。

  • 支持的版本:RedHat、Kali、Ubuntu 等

  • 最大卷大小:1 EB

  • 最大支持文件大小:16 TB

许多开源操作系统发行版都基于 Linux,包括 Kali Linux 和 Android,因此使用 ext2/ext3/ext4 文件系统。它们也能够使用 FAT32 文件系统。

FAT32 可以在任何平台上使用,包括较旧版本的 Windows、Mac 和 Linux,并且几乎任何带有 USB 端口的设备都支持它。

那么数据呢?

到目前为止,在本章中,我们已经看过了用于存储数据的各种介质。现在我想谈谈实际的数据本身,它的一些状态,以及在访问时会发生什么。

数据状态

首先,有运动中的数据,也称为运动中的数据。这只是描述正在移动的数据,可能在设备之间或者在存储介质之间穿行,积极地在不同位置之间移动。

然后是使用中的数据。在这种状态下的数据目前正在被用户访问,或者被 CPU 处理。当数据被访问或使用时,它会从硬盘中提取并临时存储在 RAM 中,这比硬盘(特别是机械硬盘)要快得多,并且只要用户访问它并且设备有电源,数据就会存储在那里。

当数据既不在运动中也不在使用中时,它被描述为静态数据。在这种状态下,数据静止或驻留在非易失性介质上,如硬盘驱动器、光盘、闪存驱动器和存储卡上。

元数据

元数据只是关于数据的数据。以仓库中存储的笔记本电脑为例。在仓库中的某个地方(可能还在其他地方,如云中),可能有关于笔记本电脑的几个信息片段,可以称为关于笔记本电脑的数据,甚至是笔记本电脑的元数据,例如:

  • 笔记本电脑在仓库内的位置

  • 笔记本电脑品牌和型号

  • 制造日期

  • 保修日期和信息

  • 硬件和软件规格

  • 颜色和大小

此外,数据可能至少包含一些基本信息,无论是静止还是运动中。在静止状态下,数据可能被索引在硬盘的文件表中,以确定数据的位置以及是否可供用户使用,或者正在等待被覆盖。在传输中的数据也会包含头部信息(将在后面的章节中讨论),其中包含有关源地址和目的地址以及数据大小的信息,仅举几例。

松弛空间

簇是存储介质上的最小磁盘空间或分配单元,用于存储数据。在格式化驱动器时,我们需要定义这些分配单元的大小,或者我们可以使用默认的 4 千字节簇大小。这就是松弛空间的作用。

松弛空间是包含数据但未完全填满数据的簇内的空闲未使用空间。要完全理解这一点,我们首先需要了解操作系统指定的默认簇大小。使用 NTFS 格式化的驱动器(用于 Windows)具有默认的簇大小为 4 KB。假设您将一个文件大小为 3 KB 的文本文件保存到磁盘上。这意味着您在该簇内仍有 1 KB 未使用的松弛空间。

松弛空间对于法医调查员来说是特别重要的,因为数据可以很容易地隐藏在松弛空间中。幸运的是,我们有几种可用的工具,例如Sleuth KitAutopsy,在 Kali Linux 中,可以帮助调查松弛空间并找到隐藏的文件。

数据易失性

在本节中,我们将看看为什么在易失性内存断电时会丢失数据。

只要存储数据的介质能够存储数据,数据就可以存在。硬盘驱动器(机械和固态)、闪存驱动器和存储卡都是非易失性存储介质。尽管 SSD 在数据访问时间方面已经取得并持续取得了巨大的改进,但到目前为止,RAM 仍然是更快的内存类型,通常只被称为设备内部的内存

然而,RAM 是易失性内存。与硬盘驱动器和闪存驱动器中的非易失性内存不同,RAM 中存储的数据只在芯片提供电流的时间内暂时保留。我们需要了解的 RAM 有两种类型:静态 RAMSRAM)和动态 RAMDRAM)。

SRAM 优于 DRAM,但由于构建芯片所使用的材料广泛,因此比 DRAM 昂贵得多。SRAM 也比 DRAM 体积大得多。SRAM 可以在 CPU 缓存(L11 级)和主板上的一些芯片(L2/L3)中找到,尽管由于成本和物理尺寸的原因,它们的尺寸非常小(KB)。

尽管 DRAM 速度较慢,但由于成本较低,仍然是设备中主要内存使用的原因之一。RAM 易失性的原因是其组件,如晶体管电容器。您们中的一些人可能已经从诸如A+的认证课程中熟悉了这个主题,但为了所有读者的利益,让我更详细地介绍一下。

DRAM 使用电容器,它们在刷新电路的一部分暂时存储电荷。芯片需要不断刷新以保持在访问时的数据。然而,在刷新之间,会创建一个等待状态,这使得 DRAM 比使用晶体管而不是电容器的 SRAM 更慢,后者不会有等待状态。

几十年来,已经有许多类型的 DRAM 或略有不同尺寸和增加的引脚与主板接触的内存条。按年龄顺序排列的一些 RAM 类型是:

  • 扩展数据输出 RAMEDO RAM):早期的 DRAM 类型之一。

  • 同步动态 RAMSDRAM):开始与 CPU 时钟速度同步。最大传输速率为 133 MT/s(每秒传输的百万次)。标记为 PC100、PC133、PC166。

  • DDR-SDRAM/DDR 1(双倍数据传输速率 - SDRAM):有效地将 SD RAM 的传输速率加倍。最大传输速率为 400 MT/s。

  • DDR2:最大传输速率为 800 MT/s。

  • DDR3:比 DDR2 消耗的电力少三分之一。最大传输速率为 1600 MT/s。

  • DDR4:最大传输速率为 3200 MT/s。

在今天的笔记本电脑和台式电脑中,主要可能会遇到 DDR3 和 DDR4,但可能也不罕见遇到具有 DD2 或(奇迹般地)DDR1 的传统机器。以下图片显示了不同类型的 RAMDIMM双列直插内存模块)从上到下,SDRAM(顶部)、DDR1、DDR2,最后是 DDR3:

笔记本电脑也使用 DDR RAM,但以更紧凑的尺寸称为SODIMM小外形 DIMM)模块。

分页文件及其在数字取证中的重要性

操作系统有能力使用硬盘的一部分作为 RAM 的扩展。这被称为虚拟内存,如果计算机或笔记本电脑的 RAM 有限,这通常是一个好主意。尽管硬盘比 RAM 慢得多,但磁盘上的交换文件或分页文件可以存储访问较少的文件和程序,使 RAM 可用于存储频繁访问的数据。这个过程涉及操作系统交换较少使用的数据页面,并将数据移动到硬盘上专用的分页文件区域。

在法证调查中,分页文件对我们非常重要。虽然不像 RAM 本身那样易失性,因为它存储在硬盘上,但它是 Windows 中的一个隐藏文件,称为pagefile.sys,应该始终使用您选择的工具进行检查,因为这个文件可能会揭示加密区域的密码,访问的网站信息,打开的文档,已登录的用户,打印的项目等等。

特别是机械驱动器上的数据以分散的方式存储;然而,分页文件或交换文件的优势在于数据可以以连续的方式存储,一个接一个地,从而实现更快的访问时间。

建议将分页文件的大小设置为内存量的 1.5 倍,并且如果可能的话,将其存储在一个单独的驱动器上,而不仅仅是一个单独的分区。

Pagefile.sys可以在 Windows 注册表路径中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management

总结

在本章中,我们花时间介绍了一些关于非易失性存储介质的基础知识,即在介质没有供电时仍然存储数据。非易失性介质包括不同类型的硬盘驱动器,如机械和固态 PATA 和 SATA 驱动器、闪存驱动器和存储卡。

包括 SSD 在内的新型存储介质设备使用一种称为 NAND 闪存的特殊类型的闪存存储数据。这种闪存比传统的机械驱动器快得多,更耐用,因为设备不含有运动部件;然而,它们目前仍然相当昂贵。

我们还研究了与各种操作系统相关的各种文件系统,并看到数据的最小分配被称为簇,其中可以存在松弛空间。松弛空间是簇内未使用的空间,可以隐藏数据。数据本身具有不同的状态,可以是静止的、运动中的或正在使用的。无论数据的状态如何,始终存在一些关于数据本身的信息,称为元数据。

用户或操作系统访问的任何数据都会暂时存储在易失性内存或 RAM 中。尽管数据可以在非易失性内存上存储很长时间,但当易失性内存(RAM)的电荷丢失时,数据也会丢失。硬盘的一个区域称为分页文件,可以充当虚拟 RAM,使计算机认为其安装了更多的 RAM。

我鼓励您进行更多的研究,扩展您对这些主题的了解,让您对所涵盖的内容有更多的理解。现在让我们继续下一章,我们将学习有关调查程序和事件响应的最佳实践,例如获取易失性数据和处理和分析实时机器的程序。

第四章:事件响应和数据获取

有时很难确定什么样的东西算是证据,特别是在调查刚开始时,可能还没有收集或陈述所有发生的事实。就像任何调查一样,我们应该意识到并遵循获取证据的指南、实践和程序,以确保它不被篡改,或者在最坏的情况下丢失。

在犯罪现场,比如说枪击案,有一些特定的物品可能立即被视为证据。物证很容易被收集,放入证据袋中,标记,然后运送到实验室和安全存储区域进行保管。这些证据可能包括已使用的子弹壳、也许是一把枪、指纹和血样。别忘了还有目击证人的陈述和CCTV(闭路电视的缩写)录像。还有值得关注的是,要考虑到执法机构的人员可能会出现在现场,以及他们可能到达的顺序。看起来很简单。

然而,当报告涉及计算机或智能设备的违规行为或犯罪时,收集证据有时并不像想象的那么简单,因为在将任何物品标记为证据之前,必须考虑许多因素。

例如,如果桌面参与了行为,我们是只带走主机还是也带走显示器、键盘、鼠标和扬声器?打印机和扫描仪等其他外围设备呢?现场是否有任何额外的固定或可移动存储介质,我们也要带走吗?

本章回答了所有这些问题,并提供了事件响应、证据获取和其他主题的指南和最佳实践,包括:

  • 数字证据获取程序

  • 保存证据的完整性

  • 写阻塞和哈希

  • 开机与关机设备的获取

  • 现场获取的最佳实践

  • 数据成像和哈希

  • 责任链

数字证据获取和程序

正如我们在上一章中所讨论的,数据可以存储在固定和可移动的存储介质上。然而,数据可以很容易地被删除或完全丢失,这取决于许多必须考虑的因素,如果我们要确保数据的保存。甚至可以说,数字存储面临的威胁比纸质存储更多。以下是对两者威胁的一些比较:

  • 纸质存储的威胁包括:

  • 火灾和湿度

  • 虫害

  • 年龄

  • 自然灾害——洪水、地震、龙卷风、飓风等等

  • 存储介质上的数据威胁包括:

  • 人为错误和疏忽

  • 磁性和电磁场

  • 水和凝结

  • 灰尘

  • 影响

  • 电压

  • 静电

  • 自然灾害——洪水、地震、龙卷风、飓风等等

数据何时成为证据?在考虑发生的事件时,特定数据可能对调查具有相对价值。

事件响应和第一响应者

保存证据并不仅仅是在获取数据时开始,而是在早期对嫌疑设备进行物理检查时就开始了。对于疑似犯罪或违规行为,应该有一种结构化的反应,就像报警给警察一样。同样,一个人打电话给紧急服务,然后派遣警察、消防队和救护人员以及其他第一响应者,他们可能会将问题升级到联邦调查局或其他机构。处理需要数字调查的报告时,也应该有类似的指挥链。

当发现或怀疑有违规行为或犯罪时,应该有专门的第一响应者被警报并被召唤到现场。这个人通常对设备、网络甚至组织中的 IT 基础设施(如果适用)有一定的了解。

第一响应者人员可能包括:

  • 系统管理员

  • 网络管理员

  • 安全管理员

  • IT 管理员

虽然前述角色中的人员可能不擅长数字取证或数字调查,但他们将负责保护现场,并确保数据、外围设备、设备和存储介质不被未经授权的个人使用、篡改、移除或损害。

急救人员的职责包括:

  • 作为第一批应对现场的人员(正如名字所示),并进行初步评估

  • 以房间中心为焦点,以圆形方式完全记录现场和房间

  • 通过不允许未经授权的用户或嫌疑人访问设备或区域,特别是易挥发的数据和存储介质,来保护现场

  • 保存和包装证据以便运输,确保使用责任链CoC)表格

文档记录和证据收集

应该由急救人员进行现场文档记录,以帮助调查。现场文档记录应包括照片、视频、语音记录和以下内容的手动文档记录:

  • 设备所在的房间(桌子、天花板、入口/出口、窗户、照明、电源插座和数据插座)

  • 设备的状态(开启、关闭、电源指示灯闪烁)

  • 屏幕内容(如果设备正在运行),操作系统,运行程序,日期和时间,有线和/或无线网络连接

  • 书籍、笔记、纸张

  • 连接和断开的电缆

一旦现场由急救人员保护和记录,如果尚未被警告,还应该召集法庭调查员。

如果急救人员接受了证据收集和保存的培训,他们也可以开始获取可以视为物理证据的东西。

物理证据的例子包括:

  • 计算机主机

  • 笔记本电脑

  • 平板电脑

  • 固定和可移动存储介质:硬盘驱动器、光盘、磁带存储、存储卡、读卡器、适配器、对接站、打印机、扫描仪、手机和 iPod。可能已用于进行侵入的媒体和 MP3 播放器以及其他设备。路由器和交换机也可能包含证据,例如连接日志、源和目的地地址,甚至访问的网站。

  • 电缆和充电器

物理证据收集和保存

在考虑证据收集阶段的物理方面时,应该考虑。与任何其他调查一样,应该在遵循适当的指南和最佳实践的同时进行文档记录、收集和保存,以确保调查的完整性。例如,在犯罪现场,证据必须被正确识别,标记为由授权人员处理,并接受调查程序的培训,这些程序可以在法庭上受到审查。

急救工具包应包含以下物品,以准备在现场进行文档记录、证据收集和保存:

  • 防护服,包括眼镜和手套

  • 防静电垫或腕带

  • 标识标签、贴纸和便携式标签设备(如果有)

  • 各种笔和标记工具,便于识别

  • 电缆束带

  • 各种尺寸的十字螺丝刀、平头螺丝刀、扭矩螺丝刀和专用螺丝刀或螺丝刀头的工具包

  • 手电筒和放大镜

  • 扣押和保管责任表格

  • 容器、盒子和包装材料,包括防静电和牢固的袋子

这是一个预算有限但便携且非常有组织的螺丝刀套装,我将其放在我的急救工具包中。它具有打开台式机、笔记本电脑、平板电脑的所有附件,甚至用于移动和打开可移动存储介质,如硬盘驱动器、光驱,甚至软盘驱动器的螺丝刀:

物理获取工具

我们已经看过了收集和获取物理证据所需的工具,但是我们获取和提取数字证据需要什么工具呢?还记得我们在第三章中讨论的不同类型的存储介质和文件系统吗?我们看到许多存储介质都有自己的连接器,因为它们的尺寸各不相同。

以下是从证据获取时所需的一些设备清单:

  • 写保护器(也可以基于软件)

  • 读卡器

  • 各种适配器(USB 至 SATA 和 EIDE,USB 至各种类型的 USB)

  • 设备电缆,如电源、SATA、EIDE、HDMI、VGA

  • 网络电缆,如直通、交叉、控制台

以下图片显示了各种 USB 适配器的集合,所有价格都在 10 美元以下,并且都可以在亚马逊上购买:

对于笔记本硬盘,我还使用了一个 SATA 至 USB 3.0 适配器,就像这里看到的一样:

用于连接路由器和交换机的控制台电缆和串行至 USB 电缆也可以包含在您的工具包中,就像这里看到的一样:

所有移动设备,包括手机和平板电脑,也可以通过 USB 端口连接到笔记本电脑和台式电脑。以下图片显示了一个 OTG 电缆,它可以将 USB 设备连接到具有 OTG 功能的手机或平板电脑:

物理收集和保存指南:

  • 标记所有电缆和连接器

  • 根据需要使用标记的证据收集袋

  • 在存储具有无线和无线电功能的设备时,可能需要使用特殊的强固袋,以防止与其他设备通信

  • 将硬盘驱动器和闪存驱动器等敏感设备存放在防静电袋和保护外壳中

  • 标记用于运输途中存储的容器

  • 在将证据从一个人/处理者传递给另一个人/处理者时保持保管链表格(本章后面讨论)

挥发性顺序

在收集证据时,我们应该牢记数据的挥发性。正如本章前面提到的,数据很容易丢失或被销毁。因此,在收集数据时,一个良好记录和常见的最佳做法是尽可能按照最易挥发至最不易挥发的顺序收集证据。

数字证据科学工作组SWGDE)的现场系统获取文件列出了从最易挥发至最不易挥发和关键的挥发顺序如下:

  • RAM

  • 运行进程

  • 活动网络连接

  • 系统设置

  • 存储介质

保管链表格

保管链表格是一种法律上确保证据完整性的表格,因为它在个人之间交换证据时提供了一定程度的责任追究,因此在填写表格时需要个人身份证明。该表格提供了从现场收集到在法庭上呈现的交通和交换的确切记录和账目。

保管链表格上的一些典型字段包括:

  • 案件编号

  • 罪行

  • 受害者和嫌疑人姓名

  • 扣押日期和时间:

  • 扣押时的位置

  • 物品编号

  • 物品描述

  • 释放和接收物品的个人签名和身份证明

  • 处置授权

  • 证据销毁见证

  • 交还给合法所有者

可以直接从国家标准与技术研究所NIST)下载样本保管链表格:

www.nist.gov/document/sample-chain-custody-formdocx

开机与关机设备获取

在调查已开机和已关机的设备时,必须特别考虑数据的挥发性。启动、重新启动或关闭设备可能会导致数据被写入硬盘甚至在 RAM 和分页文件中丢失。

已开机设备

在调查通电设备时,应采取以下预防措施:

  • 如果怀疑设备可能处于休眠状态,请移动鼠标或在触摸板上滑动手指。不要点击按钮,因为这可能会打开或关闭程序和进程。

  • 拍摄和记录屏幕和所有可见的程序、数据、时间和桌面项目。

  • 拔掉台式机的电源线,拆下便携设备的电池(如果可能)。

非常重要的是,尽可能少地修改 RAM 和分页文件中存储的数据。后续章节将使用像 Guymager 和 Kali Linux 中的 DC3DD 这样的镜像工具进行更多介绍。其他实时获取工具,如 C.A.I.N.E 和 Helix,也可以用于获取 RAM 和分页文件。

有很多原因需要镜像和获取 RAM。如前一章所述,用户可能已加密的数据可能存储在未加密状态的 RAM 中。如果分析 RAM 和分页文件,可以提取和分析已登录用户、已打开的程序、已访问的文件和正在运行的进程。但是,如果设备关闭或重新启动,这些数据和证据很容易丢失。

对于通电的便携式设备和通电设备,应尽可能拆下电池。然而,有些设备可能没有可拆卸的电池。在这种情况下,应按下电源按钮 30 到 40 秒,强制设备关机。

关机设备

关机设备不应该被打开,除非由法证调查员进行。必须采取特殊措施确保现有数据不被擦除,也不会写入新数据。

设备通常看起来像是关机的,但它们可能处于休眠或休眠状态。作为一个简单的测试,可以移动鼠标并打开显示器(如果有的话)以确定它们实际上处于这两种状态之一。即使它们处于关闭状态,也应该拍摄屏幕和端口。

在已关闭状态下调查便携式和移动设备时,建议拆下电池(如果可能),并将其放入证据袋中,以确保一旦拔掉插头就没有意外打开设备的方法。根据NIST.SP.800-101r1移动取证指南,应注意,即使处于关闭状态,拆下电池也可能改变易失性内存中的内容。

写入阻塞

一旦我们的证据被正确记录和收集,我们就可以开始着手获取实际的数字证据。我会在几次提到这一点,但原始证据应该只用于创建法证副本或镜像,这将在本章和其他章节中进一步讨论。

处理原始证据可能会修改介质的内容。例如,将扣押的笔记本电脑引导到其原生操作系统将允许数据被写入硬盘,也可能会擦除和修改 RAM 和分页文件中包含的内容。

为防止发生这种情况,必须使用写入阻塞器。正如其名称所示,写入阻塞器可以防止数据被写入证据介质。写入阻塞器既有硬件类型,也有软件类型。如果没有硬件写入阻塞器,软件版本也可以在法证操作系统中找到,包括在第一章中提到的数字取证导论中,也作为一些商业和开源工具的独立功能,如 EnCase 和 Autopsy。

再次强调,在调查中使用写入阻塞器保护和保留原始证据不被修改非常重要。以下图片显示了一个便宜而高效的便携式 SATA 和 IDE 适配器,带有写入阻塞开关,用于驱动获取和恢复:

数据成像和哈希

成像是指精确复制数据,无论是作为文件、文件夹、分区还是整个存储介质或驱动器。当复制文件和文件夹时,根据其属性设置为系统或隐藏,可能不会复制所有文件。为了防止文件被遗漏,我们执行一种特殊类型的复制,其中每一位都被精确复制或成像,就像在当前介质上拍摄数据的照片或快照一样。

精确复制每一位数据,被称为物理图像。执行比特流复制可以确保复制的完整性。为了进一步证明这一点,对原始证据和物理图像进行哈希计算并进行比较。如果复制的数据有一位不同,哈希值将会有很大的不同。

原始证据应该只由合格和授权的专业人员处理,并且也只能用来创建法医学上可靠的物理图像。否则,原始证据绝不能被使用,因为这会损害完整性和调查。

消息摘要(MD5)哈希

特定算法产生哈希值,并用于验证证据的完整性,证明数据没有被修改。哈希值可以被看作是数字指纹,因为它们是独一无二的,在证据和物理图像的识别中起着重要作用。

尽管存在漏洞,但一种常用的加密哈希算法是消息摘要MD5),它产生 128 位的十六进制输出值。

作为一个工作示例,让我们打开浏览器,前往passwordsgenerator.net/md5-hash-generator/

该网站将单词和句子创建为字符串的哈希值。在这个例子中,我输入了字符串Digital Forensics with Kali Linux,不包括括号。自动计算的 MD5 值显示为 7E9506C4D9DD85220FB3DF671F09DA35,如下面的截图所示:

通过从Kali中移除K,从现在读作Digital Forensics with ali Linux的相同字符串中,MD5 现在读作 7A4C7AA85B114E91F247779D6A0B3022,如下面的截图所示:

作为一个快速比较,我们可以看到,只是从Kali中移除K就会产生明显不同的结果:

  • Digital Forensics with Kali Linux: 7E9506C4D9DD85220FB3DF671F09DA35

  • Digital Forensics with ali Linux: 7A4C7AA85B114E91F247779D6A0B3022

我鼓励你自己尝试一下,也许在字符串中添加逗号或句号以进一步比较哈希值。

安全哈希算法(SHA)

在取证中常用的另一种加密哈希算法是 SHA1。安全哈希算法-1SHA1)比 MD5 更安全,因为它产生的是 160 位的输出,而不是 MD5 的 128 位输出。由于已知对 MD5 和 SHA-1 的碰撞攻击,现在更安全和更健壮的哈希选项是SHA-2

SHA-2 实际上是一组哈希算法,而不仅仅是一个,就像 SHA-1 一样,最常见的位长度是 SHA-256,它产生 256 位的输出。SHA-2 的备用位长度算法包括 SHA-224、SHA-384 和 SHA-512。

使用更强大的加密算法,被攻击或 compromise 的可能性就越小。这意味着证据和物理图像的完整性保持完好,这在法庭鉴定和法庭案件中将会很有用。

更多关于创建哈希的内容将在第五章中进行演示,使用 DC3DD 和 Guymager 进行证据获取和保护,使用 DC3DD 和 Guymager。

设备和数据获取指南和最佳实践

虽然我已经试图给你一个收集和保留证据程序的概述,但有几份官方文件我强烈建议你阅读并熟悉,它们都提供了关于现场文档、证据收集和数据获取的详细信息和指南。

SWGDE(数字证据科学工作组)计算机取证最佳实践版本 3.1,于 2014 年 9 月发布,概述了以下领域的计算机取证最佳实践:

  • 证据收集和处理

  • 证据获取和运输

  • 调查开机和关机系统媒体和服务器的指南

  • 考试和报告

完整的 SWGDE 计算机取证最佳实践文件可以从这里下载:

www.swgde.org/documents/Current%20Documents/SWGDE%20Best%20Practices%20for%20Computer%20Forensics

SWGDE 捕获活动系统文件,第 2.0 版,于 2014 年 9 月发布,虽然篇幅较短,内容不够详细,但仍适用于涉及活动(开机)系统的取证调查。该文件提供了调查活动系统时的指南,包括易失性顺序、内存取证包括分页文件取证,以及活动物理和文件系统获取。

这份文件只有六页,可以从这里下载:

www.swgde.org/documents/Current%20Documents/SWGDE%20Capture%20of%20Live%20Systems

NIST(国家标准与技术研究所)移动设备取证指南 也是另一份非常有用的文件,专门适用于移动设备。该文件的第一版于 2014 年发布,详细介绍了移动取证调查的各个方面。内容包括:

  • 移动和手机特性

  • 现场评估和文档记录

  • 设备隔离和包装

  • 设备和存储器获取

  • 检查、分析和报告

完整文件可以从这里下载:

nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-101r1.pdf

总结

如果只有一件事我希望你从本章中记住,那就是原始证据,特别是硬盘、存储介质和 RAM 镜像,只能用来创建取证完整的比特流副本。原始证据永远不能被处理。

总结,当有违规行为被报告时,应该有一个指定的第一响应者,按照规程执行文档记录和保护现场以及收集和保留证据的任务。第一响应者应该携带各种工具和物品的工具包,用于获取证据,并在将证据交给其他方时,确保保持证据链的完整性。

我们还研究了调查开机和关机设备时的各种程序和最佳实践,并讨论了使用写入阻断器防止原始证据被篡改,然后使用哈希工具进行完整性验证的重要性。

你已经走了这么远,我知道这可能有点信息过载,但现在我们可以进入本书的实践部分,在 Kali Linux 中使用数字取证工具开始我们的调查。让我们开始吧!

第五章:使用 DC3DD 和 Guymager 进行证据获取和保留

在上一章中,我们了解到文档和适当的程序对于任何调查都是关键的。这些确保了调查的完整性,通过提供数据真实性的证据和原始证据和文档的保留,可以在重复使用工具和方法时达到完全相同的结果。

在本章中,我们将演示使用比特流副本进行数据取证的取证技术。

我们将使用的第一个获取工具称为DC3DD国防部网络犯罪中心)。DC3DD 是非常流行的数据转储或 DD 工具的一个补丁,用于取证获取和哈希。

这些是数据转储DD)的特点:

  • 比特流(原始)磁盘获取和克隆

  • 复制磁盘分区

  • 复制文件夹和文件

  • 硬盘驱动器错误检查

  • 对硬盘驱动器上的所有数据进行取证擦除

然后我们将探索另一个非常流行的获取工具,名为 Guymager,它在 GUI 中提供了许多相同的功能。

Linux 中的驱动器和分区识别

对于 Kali 或任何 Linux 变体的新用户来说,他们可能会发现 Kali 中的驱动器和分区识别和命名与 Windows 设备不同。

在 Linux 中,典型的设备可以被称为/dev/sda,而在 Windows 中,驱动器通常被识别为Disk 0Disk 1等等:

  • /dev:指的是 Linux 可以读取或写入的所有设备和驱动器的路径

  • /sda:指的是SCSI小型计算机系统接口),SATA 和 USB 设备

sd代表SCSI 大容量存储驱动器,后面的字母代表驱动器号:

  • sda:驱动器0或第一个被识别的驱动器

  • sdb:第二个驱动器

虽然 Windows 将分区识别为主分区、逻辑分区和扩展分区,但 Linux 分区被识别为驱动器字母后的数字:

  • sda1:第一个磁盘(sda)上的分区 1

  • sda2:第一个磁盘上的分区 2

  • sdb1:第二个磁盘(sdb)上的分区 1

  • sdb2:第二个磁盘上的分区 2

使用 fdisk 命令进行设备识别

在开始使用 DD 之前,我需要再次提醒您 DD 的一个特点,即能够擦除数据、分区和驱动器。因此,您可能会发现 DD 有时也被亲切地称为数据销毁者。在使用 DD 和 DC3DD 时,一定要首先确定您的设备、分区、输入和输出文件以及参数。

在本章的练习中,我将使用一个旧的 2GB 闪存驱动器进行使用 DC3DD 进行获取过程。在执行任何获取操作之前,应该先运行fdisk -l命令来列出您的设备并确保您已经了解它们。如果前一个命令不起作用,可能需要使用sudo fdisk -l命令。

在以下截图中,已经运行了fdisk -l命令,然后连接了 2GB 闪存驱动器以列出已连接的设备。有一个硬盘列为sda。主分区列为sda1扩展Linux swap分区分别列为sda2sda5

在连接 2GB 闪存驱动器进行获取后,再次运行fdisk -l命令,并且可以在以下截图中看到以下细节:

  • 磁盘sdb

  • 大小1.9GB

  • 扇区大小512 字节

  • 文件系统FAT32

如前面的截图所示(并且在本章的前面也有解释),Kali Linux 识别了两个设备:

  • sda:带有三个分区的主硬盘

  • sdb:要进行取证获取或成像的闪存驱动器

现在我们已经确定了要成像的驱动器(sdb),我们可以开始使用 DC3DD 进行取证成像。

尽管我使用了一个较旧的 2GB 闪存驱动器来演示 DC3DD 的用法,但您可以使用任何驱动器(便携式或其他)来练习本章中的工具。请确保使用fdisk -l命令来识别您的驱动器和分区。

保持证据的完整性

为了证明证据没有被篡改,应在获取之前和期间或之后提供证据的哈希。

在 Kali Linux 中,我们可以使用md5sum命令,后跟设备的路径,来创建证据/输入文件的 MD5 哈希。例如,md5sum /dev/sdx

您还可以尝试使用超级用户权限输入sudo md5sum /dev/sdx命令。

在此示例中,我将使用的 2GB 闪存驱动器(名为test_usb)被识别为sdb,因此我将使用的命令如下截图所示:

在前面的示例中,md5sum对 2GB 闪存驱动器的输出显示为“9f038....1c7d3 /dev/sdb”。当使用 DC3DD 执行驱动器的获取或取证成像时,我们还应该在对创建的映像文件输出进行哈希时获得确切的结果,以确保原始证据和副本完全相同,从而保持证据的完整性。

我还使用以下语法创建了一个 SHA-1 哈希(将用于比较目的):

在 Kali Linux 中使用 DC3DD

DC3DD 是由国防部网络犯罪中心开发的,并且在 DD 更新时进行更新。DC3DD 提供了 DD 的最佳功能,包括:

  • 使用更多的算法选择(MD5、SHA-1、SHA-256 和 SHA-512)进行即时哈希处理

  • 用于监视进度和获取时间的仪表

  • 将错误写入文件

  • 分割输出文件

  • 文件验证

  • 擦除输出文件(模式擦除)

尽管我们只关注 DD 和 DC3DD,但还有另一个名为DCFLDD的工具,可以安装在基于 Linux 的系统上。DCFLDD 是 DD 的增强版本,并由Defense Computer Forensics LabsDCFL)维护和支持,其发布时间表与 DD 不同步更新。

DC3DD 是一个 CLI,可以通过首先打开终端并输入dc3dd来轻松在 Kali Linux 中运行。首先建议使用dc3dd --help命令,该命令列出了与dc3dd一起使用的可用参数:

如前面的屏幕截图所示,使用dc3dd --help命令,DC3DD 命令的典型用法如下:

dc3dd [option 1] [option 2] ... [option n]

在我们之前的示例中,我使用了以下选项:

dc3dd if=/dev/sdb hash=md5 log=dc3ddusb of=test_usb.dd

  • if:指定输入文件,即我们将进行成像的设备。

  • 哈希:指定用于完整性验证的哈希算法的类型。在这种情况下,我使用了较旧的 MD5 哈希。

  • log:指定记录设备和获取详细信息的日志文件的名称,包括错误。

  • of:指定由 DC3DD 创建的取证映像的输出文件名。在本示例中指定了.dd映像文件类型,DC3DD 也识别其他格式,包括.img,如后面的示例中所示。

应注意设备大小(以扇区和字节表示),并稍后与设备的输出结果进行比较。

最后一行还显示了获取过程的进度和状态,显示了已复制的数据量、经过的时间(以秒为单位)以及成像过程的速度(以 Mbps 为单位):

要获取的驱动器或文件越大,所需的时间就越长。我建议您喝杯咖啡或清爽的饮料,或者看看 Packt 提供的其他精彩书籍www.packtpub.com/

一旦获取过程完成,输入和输出结果将被显示:

分析结果,我们可以看到已经成像了相同数量的扇区(3913664),没有坏扇区被替换为零。我们还可以看到为图像创建了确切的 MD5 哈希,确保我们创建了一个没有修改的精确副本。

在终端中,我们还可以使用ls命令列出目录内容,以确保 DC3DD 输出文件(test_usb.dd)和日志(dc3ddusb)已经创建:

要访问我们的取证图像和日志文件,我们可以通过点击“位置”(左上角)然后Home,进入/home目录。

在我的Home文件夹中,第一个文件2GBdcedd.dd是使用of=test_usb.dd命令由 DC3DD 创建的输出图像。最后一个文件dc3ddusb是日志文件,当我们使用log=dc3ddusb命令时创建的。

保留这个日志文件很重要,以记录获取过程及其结果,这些结果在完成时显示在屏幕上:

在未来的章节中,我们将使用各种工具分析获取的取证图像;然而,如果调查人员希望,该图像也可以被复制或直接克隆到另一个设备。

例如,我们可以将之前获取的取证图像(test_usb.dd)克隆到一个新的被识别为sdc的驱动器上。执行此任务的命令是:

dc3dd if=test_usb.dd of=/dev/sdc log=drivecopy.log

将图像复制到驱动器时,目标驱动器的大小应与图像文件相等或更大。

使用 DC3DD 进行文件分割

根据证据的大小,可管理性和可移植性可能成为一个问题。DC3DD 有能力将取证获取的图像分割成多个部分。

这是通过使用ofszofs选项完成的:

  • ofsz指定了每个输出文件部分的大小

  • ofs指定了带有数字文件扩展名的输出文件,通常为.000.001.002

始终确保你已经为文件扩展名指定了足够的零。逻辑上,.000允许比.00更多的部分。

在这个例子中,我使用了之前的相同的 2GB 闪存驱动器;但是,为了演示目的,你会注意到两个变化。

我已经指定使用 SHA-1 而不是 MD5 哈希,并且输出文件类型将是.img而不是以前使用的.dd

在这种情况下,成像的 2GB 闪存大小将被分成多个部分(总共四个),每个部分为 500MB,使用ofsz=500M,部分的名称为2GBdc3dd2.img.ooo2GBdc3dd2.img.oo12GBdc3dd2.img.oo22GBdc3dd2.img.oo3

用于实现这一点的命令是:

dc3dd if=/dev/sdb  hash=sha1  log=dd_split_usb  ofsz=500M ofs=split_test_usb.img.ooo

完成后,设备的输入结果显示了 SHA-1 哈希输出,并显示了分割图像文件的第一部分:

再次使用ls命令,我们可以看到四个分割输出文件的扩展名都是从.000.003的数字格式:

图像文件的所有分割部分都可以在Home文件夹中找到,以及日志文件:

验证分割图像文件的哈希值

要验证分割文件的哈希值,可以使用以下命令:

cat split_test_usb.img.* | sha1sum

这也与 2GB 闪存驱动器本身的sha1sum输出相匹配,通过使用以下命令显示:

sha1sum /dev/sdb

使用 DC3DD 擦除驱动器

我们已经看到 DC3DD 作为一个非常出色的取证工具,但我还想进一步介绍它作为数据擦除工具的能力。DC3DD 可以通过三种方式覆盖数据来擦除数据和驱动器:

  • 使用dc3dd wipe=/dev/sdb命令覆盖并填充数据和驱动器为零。

  • 使用dc3dd wipe=/dev/sdb pat=000111命令覆盖并填充数据和驱动器使用十六进制模式。

  • 使用dc3dd wipe=/dev/sdb tpat=cfsi命令覆盖并填充数据和驱动器使用文本模式。

使用 Guymager 进行图像采集

Guymager 是另一个独立的取证工具,可用于创建取证图像和执行磁盘克隆。Guymager 由 Guy Voncken 开发,完全开源,具有 DC3DD 的许多相同功能,也仅适用于基于 Linux 的主机。虽然一些调查员可能更喜欢 CLI 工具,但 Guymager 是一个 GUI 工具,适合初学者,因此可能更受欢迎。

对于此采集,我还将使用 DC3DD 示例中使用的相同 2GB 闪存驱动器,最后我们可以比较结果。在获取和创建证据和驱动器的取证图像时,继续使用写入阻止器非常重要,以防止向驱动器写入数据或修改原始证据文件。

与 DC3DD 采集中一样,我们应该首先确保熟悉连接到我们机器的设备,使用fdisk -lsudo fdisk -l命令。

运行 Guymager

可以通过 Kali 菜单启动 Guymager,单击侧边菜单上的应用程序,然后单击取证,向下滚动到 Guymager:

也可以通过终端启动 Guymager,输入guymager。也可以尝试sudo guymager命令。一旦启动,日志文件和配置(cfg)文件的默认位置可以根据需要更改:

Guymager 应用程序运行,然后显示 Kali Linux 中识别的现有驱动器。如下截图所示,显示了正在使用的 2GB 闪存驱动器的详细信息,包括以下内容:

  • Linux 设备:识别为/dev/sdb

  • 型号:USB_Flash_Memory

  • 状态:显示为空闲,因为图像采集尚未开始

  • 大小:2.0GB

如果您的设备在 Guymager 中未列出,或者需要添加其他设备,请单击应用程序左上角的重新扫描按钮。

使用 Guymager 获取证据

要开始采集过程,请右键单击证据驱动器(在本例中为/dev/sdb)并选择获取图像。请注意,如果您希望将证据驱动器克隆到另一个驱动器,则还可以使用克隆设备选项。再次提醒,当克隆设备时,目标设备的容量必须等于或超过源(原始)证据驱动器的容量:

在实际采集过程开始之前,调查员被提示输入有关自己和证据的详细信息,分为以下三个部分:

  • 文件格式:

  • 文件扩展名.dd.xxx.Exx

  • 分割大小:允许调查员选择多个图像部分的大小

  • 案例管理信息:案件编号,证据编号,审查员姓名,描述和备注

  • 目的地:

  • 图像目录:创建的图像文件和日志(信息文件)的位置

  • 图像文件名:图像文件的名称

  • 哈希计算/验证:

  • 可以选择和计算多种哈希算法,允许调查人员从 MD5、SHA-1 和 SHA256 中进行选择

  • 获取后重新读取源以进行验证:这验证了源

  • 获取后验证图像:这验证了目的地

Guymager 还添加了一个方便的“复制图像…”按钮,可以创建重复的副本,而无需重复输入数据的过程。

对于新用户,您可能想要指定图像文件将被保存的目录。在目标部分,点击图像目录按钮,选择您的位置。对于这次获取,我选择了桌面目录作为图像和日志/信息文件的位置:

下面的截图显示了我用于 Guymager 获取的数据,选择了桌面作为图像目录和 MD5 和 SHA-1 哈希算法:

点击开始按钮后,您会注意到状态从空闲变为运行。进度字段现在也显示一个进度条:

仔细看屏幕左下角的细节,我们可以看到大小、图像和信息文件路径、名称和扩展名、当前速度和选择的哈希计算。我们还看到图像验证已打开:

获取过程完成后,状态字段按钮的颜色从蓝色变为绿色,表示获取过程已完成,并且如果在哈希验证/计算区域选择了验证选项,则还会显示“完成-已验证&ok”。进度条也显示 100%:

我们的输出文件和信息文件可以在桌面上找到,因为这是在之前的获取图像部分中指定的。如果您选择了不同的目录,请使用新终端中的cd命令切换到新目录。在下面的截图中,我使用cd Desktop命令切换到桌面目录,然后使用ls命令列出内容:

我们还可以浏览桌面,甚至是桌面文件夹,打开信息文件,其中包含有关获取细节的信息:

哈希验证

在图像目录位置双击信息文件,可以检查从开始到完成的获取过程的各种细节,包括哈希输出。

这个信息文件包含的数据比 DC3DD 生成的日志文件要多得多,包括案件管理细节:

让我们更仔细地查看.info文件中的哈希细节。

我们可以看到 MD5 和 SHA-1 哈希已经被创建和验证,并且如下截图的最后一行所述,“图像验证 OK。图像包含了确切写入的数据”:

如果我们将这些哈希与使用 DC3DD 创建的哈希进行比较,我们将得到完全相同的 MD5 和 SHA-1 输出,证明这些图像是原始证据的精确取证副本。

将由 DC3DD 创建的哈希与之前由 Guymager 创建的哈希进行比较,如下截图所示:

  • DC3DD MD5 哈希

  • DC3DD SHA-1 哈希

总结

在本章中,我们已经介绍了 Kali Linux 中两个用于获取数字证据的工具。能够准确区分设备非常重要,这样您就可以使用fdisk -l命令准确获取证据文件的取证和精确副本或图像。对于取证分析,需要使用证据的比特流副本,因为这些副本提供了证据的比特位的精确副本,这就是为什么我们使用 DC3DD 和 Guymager。

首先,我们使用了 DC3DD,这是数据转储工具的增强版,并通过终端执行了许多任务,包括设备成像、哈希、文件分割和文件验证。尽管 DC3DD 是一个命令行界面程序,但选项仍然相同,使其相当容易学习和使用。

我们的第二个工具 Guymager 具有内置的案件管理功能,并且与 DC3DD 有许多功能上的相似之处,但它是一个图形界面工具,可能更容易使用。

这两个工具都能提供准确和取证上可靠的结果。对于那些可能不经常使用 Guymager、DD 和 DC3DD 的人来说,Guymager 可能是更容易使用的工具,因为所有获取选项,包括克隆,都可以通过图形界面轻松获得,并且具有易于阅读的日志,提供案件管理细节。然而,对于高级用途,如驱动擦除,您可能希望使用 DC3DD。然而,最终选择仍然取决于您。

在 Kali Linux 中,我们的第一个取证工具还不错。接下来,我们将使用实际的取证图像,使用NIST(国家标准与技术研究所)创建的一些分析和文件恢复工具。令人兴奋的事情!

第六章:使用 Foremost、Scalpel 和 Bulk Extractor 进行文件恢复和数据切割

现在我们已经学会了如何创建证据的取证镜像,让我们来看看如何使用 Foremost、Scalpel 和 Bulk Extractor 进行文件恢复和数据切割。

上次我们讨论文件系统时,我们看到各种操作系统使用自己的文件系统来存储、访问和修改数据。同样,存储介质也使用文件系统来做同样的事情。

元数据,或关于数据的数据,帮助操作系统识别数据。元数据包括技术信息,如创建和修改日期,以及数据的文件类型。这些数据使定位和索引文件变得更加容易。

文件切割是从未分配空间中检索数据和文件,使用文件结构和文件头部等特定特征,而不是由文件系统创建或关联的传统元数据。

正如其名称所示,未分配空间是存储介质上被操作系统或文件表标记为空或未分配给任何文件或数据的区域。尽管文件的位置和信息不在,有时会损坏,但文件的头部和尾部仍然包含可以识别文件甚至文件片段的特征。

即使文件扩展名已更改或完全丢失,文件头包含的信息可以识别文件类型,并尝试通过分析头部和尾部信息来切割文件。数据切割是一个相当冗长的过程,应该使用自动化工具来节省时间。如果调查人员知道他们正在寻找的文件类型,这也有助于更好地聚焦和节省时间。尽管如此,这是取证工作,我们知道时间和耐心至关重要。

一些常见的文件类型,如十六进制格式在文件头中显示:

  • 联合图像专家组JPEG):FF D8 FF E0

  • 便携式文档格式PDF):25 50 44 46

虽然关于文件和头部的更多分析将在后面的章节中进行,让我们来看看 Kali Linux 中用于数据切割的三种工具。

Foremost 和 Scalpel 中使用的取证测试镜像

对于这个工具,使用了由 Nick Micus 创建的数字取证工具测试镜像,专门用于测试数据切割工具。选择这个特定的镜像进行练习的主要原因之一是 Nick Mikus 被列为 Foremost 的贡献开发者之一。正如在 Foremost 的第一行中所看到的,显示了版本号以及作者 Jesse Kornblum 和 Kris Kendall。该镜像可以在dftt.sourceforge.net/test11/index.html上免费下载。

一旦熟悉了这个练习,可以尝试从dftt.sourceforge.net/上的其他镜像中提取数据。

使用 Foremost 进行文件恢复和数据切割

Foremost 是一个简单而有效的 CLI 工具,通过读取文件的头部和尾部来恢复文件。我们可以通过单击应用程序| 11-取证| Foremost 来启动 Foremost:

一旦 Foremost 成功启动,一个终端会打开,显示程序版本、创建者和许多用法开关。

要更好地了解 Foremost 和使用的开关,请尝试浏览 Foremost 的系统管理手册。可以通过输入以下命令来完成:

man foremost

使用 Foremost 的语法如下:

foremost -i (forensic image) -o (output folder) -options

在这个例子中,我们指定了位于桌面上的11-carve-fat.dd文件作为输入文件(-i),并指定了一个名为Foremost_recovery的空文件夹作为输出文件(-o)。另外,还可以根据需要指定其他开关。

要开始使用 Foremost 切割11-carve-fat.dd图像,我们在终端中输入以下命令:

foremost -i 11-carve-fat.dd -o Foremost_recovery

虽然在处理过程中找到的字符看起来相当模糊,但结果将清晰地分类和总结在指定的输出文件夹中。

要快速访问 Foremost 中的一些命令,也可以使用foremost -h

指定的输出文件夹必须为空,否则您将遇到问题,如下图所示:

查看 Foremost 结果

一旦 Foremost 完成切割过程,我们就可以进入Foremost_recovery输出文件夹:

如果我们打开输出目录,我们可以看到按文件类型分类的切割项目,以及包含发现详细信息的audit.txt文件夹:

audit.text文件中,我们看到了 Foremost 找到的项目的列表视图,以及它们的大小文件偏移位置:

audit.txt文件上滚动时,您应该看到找到的文件的摘要,这在切割较大的图像时特别有用:

audit.txt文件中列出的前三个文件是.jpg图像文件,我们可以在Foremost_recovery输出文件夹的jpg子文件夹中看到这些文件:

正如我们所看到的,Foremost 是一个非常强大的数据恢复和文件切割工具。文件切割可能需要很长时间,具体取决于驱动器或图像的大小。如果需要恢复的文件类型已知,可以使用-t选项指定该文件类型,以减少与搜索整个图像相比所需的时间。

在再次运行 Foremost 之前,请记住选择一个新的或空的输出文件夹。

使用 Scalpel 进行数据切割

Scalpel 是作为 Foremost 的一个较早版本的改进而创建的。Scalpel 旨在解决 Foremost 在切割数据时的高 CPU 和 RAM 使用问题。

在 Scalpel 中指定文件类型

与 Foremost 不同,调查人员必须在 Scalpel 配置文件中指定感兴趣的文件类型。该文件称为scalpel.conf,位于etc/scapel/

要指定文件类型,调查人员必须删除包含文件类型的行开头的注释,因为所有支持的文件类型都以文件类型开头的哈希标签进行注释。以下屏幕截图显示了默认的 Scalpel 配置文件(scalpel.conf),其中所有文件类型都被注释掉。请注意,每行都以井号开头:

我们已经删除了一些行开头的哈希标签,以便让 Scalpel 知道搜索这些特定的文件类型,这也减少了搜索所有支持的文件类型所需的时间。以下屏幕截图显示了 Scalpel 将搜索 GIF 和 JPG 文件,因为注释已被删除:

在指定要切割的图像之前,请务必执行此步骤。未能这样做将向调查人员显示一个有用的错误消息,提醒他们这样做。

使用 Scalpel 进行文件切割

一旦我们对包括文件类型在内的更改并保存了scalpel.conf文件,我们就可以通过单击侧边栏上的“显示应用程序”按钮并在顶部出现的搜索框中输入scalpel来启动 Scalpel,如图所示。单击scalpel框开始:

一旦启动,终端会显示版本号(1.60)、作者(Golden G. Richard III),并且如前所述,它是基于 Foremost 0.69。与 Foremost 一样,Scalpel 的用法语法和其他选项也会显示出来:

在这个例子中,使用了与 Foremost 相同的图像进行雕刻(11-carve-fat.dd)。与 Foremost 一样,必须指定输入文件和输出文件夹。要列出 Scalpel 中可用的选项和开关,请使用scalpel -h

Scalpel 使用了以下语法:

scalpel -o scalpelOutput/ 11-carve-fat.dd

在前面的截图中,我们可以看到 Scalpel 构建了一个雕刻列表,显示了带有页眉和页脚信息的文件类型,以及雕刻出的文件数量。

仔细查看 Scalpel 输出产生的最后几行,我们可以看到雕刻过程完成了100%,共雕刻出了18个文件:

查看 Scalpel 的结果

现在我们可以转到名为ScalpelOutput的输出文件夹,查看雕刻出的文件:

Scalpel 输出的结果与 Foremost 类似,两个输出文件夹都包含各种子文件夹,其中包括雕刻文件以及一个包含发现细节的audit.txt文件:

jpg-1-o文件夹中,我们可以看到五个.jpg文件,其中三个是实际图像:

尽管 Scalpel 的结果显示在运行工具时在雕刻列表中识别出了五个带有.jpg头和页脚的文件,但其中一些可能无法打开。这些文件很可能是误报:

以下截图显示了audit.txt文件的片段,显示了有关雕刻文件的信息:

比较 Foremost 和 Scalpel

尽管 Scalpel 返回的文件比 Foremost 多,但是请自行比较 Foremost 和 Scalpel 找到的雕刻文件。不幸的是,这两个工具返回的文件名不是原始文件名,在某些情况下,可能会有雕刻文件的重复,因为许多文件可能是碎片化的,看起来像是单独的文件。尝试手动查看 Foremost 和 Scalpel 输出文件夹中找到的文件,并进行自己的比较研究,看看哪个工具更成功。

在 Foremost 和 Scalpel 中使用的测试图像文件(11-carve-fat.dd)包含了各种类型的 15 个文件,如下载页面上所列出的那样(dftt.sourceforge.net/test11/index.html)。这在比较雕刻文件时应该很有用:

Bulk_extractor

Bulk_extractor 是本章中我们将介绍的第三个也是最后一个工具。正如我们迄今所见,Foremost 和 Scalpel 在文件恢复和雕刻方面非常出色,但仅限于特定文件类型。为了进一步提取数据,我们可以使用 Bulk Extractor。

虽然 Foremost 和 Scalpel 可以恢复图像、音频、视频和压缩文件,但 Bulk Extractor 可以提取几种额外类型的信息,这在调查中可能非常有用。

尽管 Bulk Extractor 能够恢复和雕刻图像、视频和文档类型文件,但 Bulk Extractor 可以雕刻和提取的其他数据包括:

  • 信用卡号码

  • 电子邮件地址

  • 网址

  • 在线搜索

  • 网站信息

  • 社交媒体资料和信息

用于 Bulk_extractor 的取证测试图像

在这个例子中,我们将使用一个名为terry-work-usb-2009-12-11.E01的免费可用证据文件。

这个文件可以直接从数字语料库网站下载,该网站允许将法证图像用于法证研究。本练习中使用的文件可以直接从downloads.digitalcorpora.org/corpora/scenarios/2009-m57-patents/drives-redacted/下载。

所需的文件是下载页面上的最后一个文件,大小只有 32MB:

使用 Bulk_extractor

首先输入bulk_extractor -h来启动 Bulk Extractor,显示一些常用的参数和选项:

与 Foremost 和 Scalpel 一样,使用bulk_extractor的语法非常简单,只需要指定一个输出文件夹(-o)和法证图像。在本练习中,如前所述,我们将从terry-work-usb-2009-12-11.E01图像中提取数据,并将输出保存到名为bulk-output的文件夹中。

使用的语法如下:

bulk_extractor -o bulk_output terry-work-usb-2009-12-11.E01

完成后,bulk_extractor指示所有线程已完成,并提供了过程的摘要,甚至还有一些发现。如下图所示,bulk_extractor显示了 MD5 哈希值,处理的总 MB 数,甚至报告找到了三个电子邮件特征:

查看 Bulk_extractor 的结果

要查看bulk_extractor的输出和发现,我们还可以在终端中显示目录列表,输入ls -l。我们可以看到bulk_extractor创建了bulk_output文件夹:

现在我们可以输入ls -l bulk_output来列出我们的输出文件夹(bulk_output)的内容:

列表已分成两部分,显示了bulk_extractor找到的一些工件:

需要注意的是,并非所有列出的文本文件都包含数据。只有左侧数字大于0的文本文件名才会实际包含数据。

文本文件ccn.txt信用卡号的缩写,其中包含可能被盗用、非法使用或存储以可能用于信用卡欺诈的信用卡信息。

如果我们浏览到输出文件夹位置,我们可以查看所有提取的数据,这些数据位于各个文本文件中。查看telephone_histogram.txt文件会显示电话号码:

url.txt文件显示了访问的许多网站和链接:

这是一个简单的练习,使用了一个小的证据文件,请务必查看digitalcorpora.org/上提供的许多其他文件,并查看bulk_extractor揭示了什么。如果您的带宽和存储允许,尽可能下载更多的图像,并使用其他章节中将使用的其他工具。

总结

在本章中,我们学习了使用 Kali Linux 中的三个现成可用的工具进行文件恢复和数据提取。我们首先使用了非常出色的 Foremost 进行文件刻录,它在文件头和尾部搜索支持的文件类型。然后我们使用了更新的 Scalpel 进行相同的操作,但需要稍作修改,选择我们希望刻录的文件类型。Foremost 和 Scalpel 都向我们呈现了一个audit.txt文件,总结了刻录列表及其详细信息,以及包含实际证据的子文件夹。

Bulk_extractor 是一个很棒的工具,它可以刻录数据,还可以找到诸如电子邮件地址、访问的 URL、Facebook 的 URL、信用卡号码以及各种其他信息。Bulk_extractor 非常适合需要文件恢复和刻录的调查,可以与 Foremost 或 Scalpel 一起使用,甚至两者都可以。

现在我们已经讨论了文件刻录和恢复,让我们转向更加分析性的内容。在下一章中,我们将探讨探索 RAM 和分页文件作为内存取证的一部分,使用非常强大的 volatility。到时见!

第七章:使用 Volatility 进行内存取证

在前几章中,我们看了各种类型的内存。这包括 RAM 和交换或分页文件,它是硬盘驱动器上的一个区域,虽然速度较慢,但作为 RAM。我们还讨论了 RAM 易失性的问题,这意味着当 RAM 芯片不再有电荷或电流时,RAM 中的数据很容易丢失。由于 RAM 上的数据最易失性,因此在易失性顺序中排名较高,并且必须作为高优先级的取证对象进行获取和保留。

许多类型的数据和取证物品驻留在 RAM 和分页文件中。正如前面讨论的,登录密码、用户信息、运行和隐藏进程,甚至加密密码只是在进行 RAM 分析时可以找到的许多有趣数据类型之一,进一步增加了对内存取证的需求。

在本章中,我们将看看功能强大的 Volatility 框架及其在内存取证中的许多用途。

关于 Volatility 框架

Volatility 框架是一个开源的、跨平台的、事件响应框架,提供了许多有用的插件,可以从内存快照(也称为内存转储)中为调查人员提供丰富的信息。Volatility 的概念已经存在了十年,除了分析运行和隐藏进程之外,还是恶意软件分析的一个非常受欢迎的选择。

要创建内存转储,可以使用 FTK imager、CAINE、Helix 和LiME(Linux Memory Extractor 的缩写)等多种工具来获取内存图像或内存转储,然后通过 Volatility 框架中的工具进行调查和分析。

Volatility 框架可以在支持 Python 的任何操作系统(32 位和 64 位)上运行,包括:

  • Windows XP,7,8,8.1 和 Windows 10

  • Windows Server 2003,2008,2012/R2 和 2016

  • Linux 2.6.11 - 4.2.3(包括 Kali、Debian、Ubuntu、CentOS 等)

  • macOS Leopard(10.5.x)和 Snow Leopard(10.12.x)

Volatility 支持多种内存转储格式(32 位和 64 位),包括:

  • Windows 崩溃和休眠转储(Windows 7 及更早版本)

  • VirtualBox

  • VMWare .vmem 转储

  • VMware 保存状态和挂起转储—.vmss/.vmsn

  • 原始物理内存—.dd

  • 通过 IEEE 1394 FireWire 直接物理内存转储

  • 专家证人格式(EWF)—.E01

  • QEMU(快速模拟器)

Volatility 甚至允许在这些格式之间进行转换,并自称能够完成类似工具的所有任务。

下载用于 Volatility 的测试图像

在本章中,我们将使用一个名为cridex.vmem的 Windows XP 图像,可以直接从github.com/volatilityfoundation/volatility/wiki/Memory-Samples下载。

选择带有描述列的链接,恶意软件 - Cridex,下载cridex.vmem图像:

此页面上还有许多其他图像可供分析。为了练习使用 Volatility 框架并进一步提高您的分析技能,您可能希望下载尽可能多的图像,并使用 Volatility 中提供的各种插件。

图像位置

正如我们将很快看到的,Volatility 框架中的所有插件都是通过终端使用的。为了使访问图像文件更加方便,不必指定图像的冗长路径,我们已将cridex.vmem图像移动到桌面

我们还可以将目录更改为桌面,然后从那里运行 Volatility 框架及其插件。为此,我们打开一个新的终端并输入以下命令:

cd Desktop

我们还可以查看桌面的内容,以确保cridex.vmem文件存在,方法是输入ls -l

在 Kali Linux 中使用 Volatility

要启动 Volatility Framework,请单击侧边栏底部的所有应用程序按钮,然后在搜索栏中键入volatility

单击 Volatility 图标会在终端中启动程序。当 Volatility 启动时,我们看到正在使用的版本是2.6,并为我们提供了使用选项:

要获得所有插件的完整列表,打开一个单独的终端并运行volatility -h命令,而不是不得不滚动到您用于运行 Volatility 插件命令的终端的顶部:

以下截图显示了 Volatility Framework 中许多插件的片段:

在执行分析时,此列表非常有用,因为每个插件都带有自己的简短描述。以下截图显示了help命令的片段,其中提供了imageinfo插件的描述:

在 Volatility 中使用插件的格式是:

volatility -f [filename] [plugin] [options]

如前一节所示,要使用imageinfo插件,我们将键入:

volatility -f cridex.vmem imageinfo

在 Volatility 中选择配置文件

所有操作系统都将信息存储在 RAM 中,但是根据所使用的操作系统,它们可能位于内存中的不同位置。在 Volatility 中,我们必须选择最能识别操作系统类型和服务包的配置文件,以帮助 Volatility 识别存储工件和有用信息的位置。

选择配置文件相对简单,因为 Volatility 会使用imageinfo插件为我们完成所有工作。

imageinfo插件

此插件提供有关所使用的图像的信息,包括建议的操作系统和Image Type (Service Pack),使用的Number of Processors,以及图像的日期和时间。

使用以下命令:

volatility -f cridex.vmem imageinfo

imageinfo输出显示Suggested Profile(s)WinXPSP2x86WinXPSP3x86

  • WinXP:Windows XP

  • SP2/SP3:Service Pack 2/Service Pack 3

  • x86:32 位架构

图像类型或服务包显示为3,表明这是一个将用作案例配置文件的 Windows XP,Service Pack 3,32 位(x86)操作系统:

选择了配置文件后,我们现在可以继续使用 Volatility 插件来分析cridex.vmem图像。

进程识别和分析

为了识别和链接连接的进程,它们的 ID,启动时间和内存映像中的偏移位置,我们将使用以下四个插件来开始:

  • pslist

  • pstree

  • psscan

  • psxview

pslist命令

此工具不仅显示所有运行中的进程列表,还提供有用的信息,如进程 IDPID)和父进程 IDPPID),还显示进程启动的时间。在本节显示的截图中,我们可以看到Systemwinlogon.exeservices.exesvchost.exeexplorer.exe服务都是首先启动的,然后是reader_sl.exealg.exe,最后是wuauclt.exe

PID 标识进程,PPID 标识进程的父进程。查看pslist输出,我们可以看到winlogon.exe进程的PID608PPID368services.exelsass.exe进程的 PPID(在winlogon.exe进程之后)都是608,表明winlogon.exe实际上是services.exelsass.exe的 PPID。

对于那些对进程 ID 和进程本身不熟悉的人,快速的谷歌搜索可以帮助识别和描述信息。熟悉许多启动进程也很有用,以便能够快速指出可能不寻常或可疑的进程。

还应该注意进程的时间和顺序,因为这些可能有助于调查。在下面的截图中,我们可以看到几个进程,包括explorer.exespoolsv.exereader_sl.exe,都是在02:42:36 UTC+0000同时启动的。我们还可以看到explorer.exereader_sl.exe的 PPID。

在这个分析中,我们可以看到有两个wuauclt.exe的实例,其父进程是svchost.exe

使用的pslist命令如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem pslist

pstree 命令

另一个可以用来列出进程的进程识别命令是pstree命令。该命令显示与pslist命令相同的进程列表,但缩进也用于标识子进程和父进程。

在下面的截图中,列出的最后两个进程是explorer.exereader_sl.exeexplorer.exe没有缩进,而reader_sl有缩进,表明sl_reader是子进程,explorer.exe是父进程:

psscan 命令

查看运行进程列表后,我们通过输入以下命令运行psscan命令:

volatility --profile=WinXPSP3x86 -f cridex.vmem psscan

psscan命令显示了可以被恶意软件使用的非活动甚至隐藏的进程,如 rootkits,这些进程以逃避用户和杀毒程序的发现而闻名。

pslistpsscan命令的输出应该进行比较,以观察任何异常情况:

psxview 插件

psscan一样,psxview插件用于查找和列出隐藏进程。然而,使用psxview,会运行各种扫描,包括pslistpsscan

运行psxview插件的命令如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem psxview

分析网络服务和连接

Volatility 可以用于识别和分析活动的、终止的和隐藏的连接,以及端口和进程。所有协议都受支持,Volatility 还显示了进程使用的端口的详细信息,包括它们启动的时间。

为此,我们使用以下三个命令:

  • connections

  • connscan

  • sockets

连接命令

connections命令列出了当时的活动连接,显示了本地和远程 IP 地址以及端口和 PID。connections命令仅用于 Windows XP 和 2003 服务器(32 位和 64 位)。connections命令的使用如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem connections

connscan 命令

connections命令在那个时候只显示了一个活动连接。要显示已终止的连接列表,使用connscan命令。connscan命令也仅适用于 Windows XP 和 2003 服务器(32 位和 64 位)系统:

volatility --profile=WinXPSP3x86 -f cridex.vmem connscan

使用connscan命令,我们可以看到相同的本地地址之前连接到另一个带有 IP125.19.103.198:8080远程地址1484Pid告诉我们,连接是由explorer.exe进程建立的(如之前使用pslist命令显示的)。

可以使用 IP 查找工具和网站(例如whatismyipaddress.com/ip-lookup)获取有关远程地址的更多信息:

通过点击“获取 IP 详细信息”按钮,我们得到以下结果,包括 ISP 名称、洲和国家详情,以及显示设备大致位置的地图:

sockets 插件

sockets插件可用于提供额外的连接信息监听套接字。尽管 UDP 和 TCP 是以下截图中输出的唯一协议,但sockets命令支持所有协议:

DLL 分析

DLL(动态链接库)是特定于 Microsoft 的,包含可以同时供多个程序使用的代码。检查进程的运行 DDL 和文件和产品的版本信息可能有助于相关进程。还应分析进程和 DLL 信息,因为它们与用户帐户相关。

对于这些任务,我们可以使用以下插件:

  • verinfo

  • dlllist

  • getsids

verinfo 命令

此命令列出了有关PE可移植可执行文件)文件的版本信息(verinfo)。此文件的输出通常非常冗长,因此可以在单独的终端中运行,如果调查人员不希望不断滚动当前终端以查看过去的插件命令列表和输出。

verinfo命令的使用如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem verinfo

dlllist插件

dlllist插件列出了内存中那个时间运行的所有 DLL。DLL 由可以同时供多个程序使用的代码组成。

dlllist命令的使用如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem dlllist

getsids命令

所有用户还可以通过安全标识符SID)得到唯一标识。getsids命令按照进程启动的顺序有四个非常有用的项目(参考pslistpstree命令的截图)。

getsids命令输出的格式为:

[Process] (PID) [SID] (User)

例如,列表中的第一个结果列出了:

System (4) : S – 1 – 5- 18 (User)
  • System:进程

  • (4):PID

  • S - 1 - 5- 18:SID

  • 用户:本地系统

如果 SID 中的最后一个数字在 500 范围内,这表示具有管理员特权的用户。例如,S – 1 – 5- 32-544(管理员)。

getsids命令的使用如下:

volatility --profile=WinXPSP3x86 -f cridex.vmem getsids

向下滚动getsids输出,我们可以看到一个名为Robert的用户,其 SID 为S-1-5-21-79336058(非管理员),已启动或访问explorer.exe,PID 为1484

注册表分析

在注册表中可以找到有关每个用户、设置、程序和 Windows 操作系统本身的信息。甚至可以在注册表中找到哈希密码。在 Windows 注册表分析中,我们将使用以下两个插件。

  • hivescan

  • hivelist

hivescan 插件

hivescan插件显示了可用注册表蜂巢的物理位置。

运行hivescan的命令如下:

**volatility --profile=WinXPSP3x86 -f cridex.vmem hivescan**![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9e017b45-e6d9-4e3b-8ac4-b2190123d6ea.png)

# hivelist 插件

对于有关注册表蜂巢和 RAM 内位置的更详细(和有用的)信息,可以使用`hivelist`插件。`hivelist`命令显示`虚拟`和`物理`地址的详细信息,以及更易读的纯文本名称和位置。

运行`hivelist`的命令如下:

```
volatility --profile=WinXPSP3x86 -f cridex.vmem hivelist
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/4c251e63-0a56-46f3-a693-94e406d56905.png)

# 密码转储

使用`hivelist`插件还列出了**安全帐户管理器**(**SAM**)文件的位置,如下截图所示。`SAM`文件包含 Windows 机器用户名的哈希密码。`SAM`文件的路径如下截图所示为`Windows\system32\config\SAM`。在 Windows 中,系统开启时用户无法访问此文件。这可以进一步用于使用`wordlist`和密码破解工具(如**John the Ripper**,也可在 Kali Linux 中使用)破解`SAM`文件中的哈希密码:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/3c5e078f-8459-4cff-8608-1bb7742f291f.png)

# 事件时间线

Volatility 可以生成一个带有时间戳的事件列表,这对于任何调查都是必不可少的。为了生成这个列表,我们将使用`timeliner`插件。

# 时间线插件

`timeliner`插件通过提供图像获取时发生的所有事件的时间线来帮助调查人员。尽管我们对这种情况发生了什么有所了解,但许多其他转储可能会非常庞大,更加详细和复杂。

`timeliner`插件按时间分组详细信息,并包括进程、PID、进程偏移、使用的 DDL、注册表详细信息和其他有用信息。

要运行`timeliner`命令,我们输入以下内容:

```
volatility --profile=WinXPSP3x86 -f cridex.vmem timeliner
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/ffd0f266-7b4b-419d-8524-ff4372d2bdb4.png)

以下是`timeliner`命令的片段,当进一步滚动其输出时:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c06da379-1a2c-4200-a7e0-28e1cf7258f2.png)

# 恶意软件分析

在 Volatility 令人印象深刻的插件阵容中,还有`malfind`插件。

正如其名称所示,`malfind`插件用于查找,或者至少指引调查人员找到可能已经注入到各种进程中的恶意软件的线索。`malfind`插件的输出可能特别冗长,因此应该在单独的终端中运行,以避免在审查其他插件命令的输出时不断滚动。

运行`malfind`的命令如下:

```
volatility --profile=WinXPSP3x86 -f cridex.vmem malfind
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/ae6b2287-56c6-4f2a-a987-9b3a5981ab4c.png)

`malfind`插件也可以直接在进程上使用`-p`开关运行。

正如我们发现的那样,`winlogon.exe`被分配了 PID`608`。要在 PID`608`上运行`malfind`,我们输入:

```
volatility --profile=WinXPSP3x86 -f cridex.vmem malfind -p 608
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6129e6d3-d3fd-44e8-bcd9-85cb2772a63b.png)

# 总结

在本章中,我们使用了 Volatility Framework 中的许多可用插件进行内存取证和分析。在使用 Volatility 的工作中,首先也是最重要的一步是选择 Volatility 在整个分析过程中将使用的配置文件。这个配置文件告诉 Volatility 正在使用的操作系统类型。一旦选择了配置文件,我们就能够成功地使用这个多功能工具进行进程、网络、注册表、DLL 甚至恶意软件分析。正如我们所看到的,Volatility 可以在数字取证中执行几个重要的功能,并且应该与我们之前使用的其他工具一起使用,以进行深入和详细的取证分析和调查。

一定要下载更多公开可用的内存映像和样本,以测试您在这个领域的技能。尽可能多地尝试各种插件,并当然,一定要记录您的发现并考虑在线分享。

在我们的下一章中,我们将转向另一个功能强大的工具,它可以从获取到报告的所有工作。让我们开始使用 Autopsy—The Sleuth Kit®。


# 第八章:Autopsy - The Sleuth Kit

Autopsy 和 The Sleuth Kit 是相辅相成的。两者都是由 Brian Carrier 创建的。The Sleuth Kit 是一套功能强大的 CLI 取证工具,而 Autopsy 是坐落在 The Sleuth Kit 之上的 GUI,并通过 Web 浏览器访问。The Sleuth Kit 支持磁盘映像文件类型,包括 RAW(DD),EnCase(.01)和**高级取证格式**(**AFF**)。

The Sleuth Kit 使用命令行界面工具执行以下任务:

+   查找和列出分配的和未分配的(已删除)文件,甚至是被 rootkits 隐藏的文件

+   显示 NTFS **备用数据流**(**ADS**),文件可以隐藏在其他文件中

+   按类型列出文件

+   显示元数据信息

+   时间线创建

Autopsy 可以在法庭模式下从 Live CD/USB 上运行,作为实时分析的一部分,也可以在专用机器上用于死亡模式后期分析。

本章将涵盖以下主题:

+   在 Autopsy 中使用的示例图像文件

+   使用 Autopsy 进行数字取证

+   在 Autopsy 中创建一个新案例

+   使用 Autopsy 进行分析

+   在 Autopsy 中重新打开案例

# 介绍 Autopsy - The Sleuth Kit

Autopsy 提供对来自 The Sleuth Kit 的各种调查命令行工具的 GUI 访问,包括文件分析,图像和文件哈希,已删除文件恢复和案例管理等功能。安装 Autopsy 可能会有问题,但幸运的是,它已内置在 Kali Linux 中,并且非常容易设置和使用。

尽管 Autopsy 浏览器基于 The Sleuth Kit,但在使用 Windows 版本与 Linux 版本时,Autopsy 的功能有所不同。Kali Linux 中 The Sleuth Kit 和 Autopsy 2.4 提供的一些官方功能包括:

+   **图像分析**:分析目录和文件,包括文件排序,恢复已删除的文件和预览文件

+   **文件活动时间线**:根据文件的时间戳创建时间线,包括写入、访问和创建时间

+   **图像完整性**:创建使用的图像文件的 MD5 哈希,以及单个文件

+   **哈希数据库**:将未知文件(如疑似恶意的`.exe`文件)的数字哈希或指纹与 NIST **国家软件参考库**(**NSRL**)中的文件进行匹配

+   **事件排序器**:按日期和时间排序显示事件

+   **文件分析**:分析整个图像文件以显示目录和文件信息和内容

+   **关键字搜索**:允许使用关键字列表和预定义表达式列表进行搜索

+   **元数据分析**:允许查看文件的元数据详细信息和结构,这对数据恢复至关重要

# Autopsy 中使用的示例图像文件

用于分析的图像文件可以在[`dftt.sourceforge.net/`](http://dftt.sourceforge.net/)上公开下载。

我们将使用的文件是 JPEG 搜索测试#1(Jun'04),如下面的屏幕截图所示:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/18688b0f-10a6-404e-9520-3a894110cba4.png)

该图像包含几个更改扩展名的文件以及其中的其他文件,如下面的下载描述所示:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/aca1871f-6eeb-4cd4-a909-c5b03e022808.png)

请务必注意下载示例文件的位置,因为稍后会需要它。

调查硬盘和设备时,务必遵循适当的获取程序,并使用经过预先测试的写阻塞器,以避免篡改原始证据。

# 使用 Autopsy 进行数字取证

现在我们已经下载了示例图像文件(或者甚至是我们自己的法庭获取的图像),让我们通过使用 Autopsy 浏览器进行分析,首先熟悉启动 Autopsy 的不同方法。

# 启动 Autopsy

Autopsy 可以通过两种方式启动。第一种方法是使用应用程序菜单,单击应用程序| 11-取证|尸检:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a58b4d4c-3be8-4f93-9b2e-a9cb1bd219fd.png)

或者,我们可以单击显示应用程序图标(侧边菜单中的最后一项)并在屏幕顶部中间的搜索栏中键入`autopsy`,然后单击尸检图标:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/bba401a3-9df2-416b-ab0c-1eed3351c382.png)

一旦点击了尸检图标,就会打开一个新的终端,显示程序信息以及打开尸检法医浏览器的连接详细信息。

在下面的屏幕截图中,我们可以看到版本号列为 2.24,`证据保险箱`文件夹的路径为`/var/lib/autopsy`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/bfdf460f-26ee-4e4c-9a05-52b1c2cd2648.png)

要打开 Autopsy 浏览器,请将鼠标放在终端中的链接上,然后右键单击并选择“打开链接”,如下面的屏幕截图所示:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/94e758cf-01c7-4f14-a7fb-cda5097792d7.png)

# 创建新案例

要创建新案例,请按照给定的步骤操作:

1.  打开尸检法医浏览器后,调查员将看到三个选项。

1.  单击“新案例”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c879fa65-f423-42af-9d98-c1ecf4d20058.png)

1.  输入案例名称、描述和调查员名称的详细信息。对于案例名称,我输入了`SP-8-dftt`,因为它与图像名称(`8-jpeg-search.dd`)非常匹配,我们将在此调查中使用。输入所有信息后,单击“新案例”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/ac2ba427-deef-4b7f-b0eb-a232ea3edabf.png)

有几个调查员名称字段可用,因为可能有几个调查员一起工作的情况。

案例目录和配置文件的位置将显示并显示为已创建。重要的是要注意案例目录的位置,如屏幕截图所示:案例目录(/var/lib/autopsy/SP-8-dftt/)已创建。单击“添加主机”继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/5f11fefb-62d2-4999-bb04-db47384526c2.png)

1.  输入主机名(正在调查的计算机的名称)和主机描述的详细信息。

1.  可选设置:

+   时区:如果未指定,默认为本地设置

+   时间偏移调整:添加一个以秒为单位的值来补偿时间差异

+   警报哈希数据库路径:指定已知恶意哈希的创建数据库的路径

+   忽略哈希数据库路径:指定已知良好哈希的创建数据库的路径,类似于 NIST NSRL:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/7161bbf4-2fe3-4dd6-a5ea-ea1e9d1dfbfd.png)

1.  单击“添加主机”按钮继续。

1.  添加主机并创建目录后,我们通过单击“添加图像”按钮添加要分析的法医图像:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c0b761b3-e294-4ba2-99b0-46fc7dfa9a36.png)

1.  单击“添加图像文件”按钮添加图像文件:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/72a4d58c-36d2-432a-b182-4fa8c1d3ec27.png)

1.  要导入图像进行分析,必须指定完整路径。在我的机器上,我将图像文件(`8-jpeg-search.dd`)保存到`桌面`文件夹中。因此,文件的位置将是`/root/Desktop/ 8-jpeg-search.dd`。

对于导入方法,我们选择符号链接。这样,可以将图像文件从当前位置(`桌面`)导入到证据保险箱,而不会出现与移动或复制图像文件相关的风险。

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/2fad7a73-e9a4-4ebc-9d18-c19e70fb77a9.png)

1.  如果出现以下错误消息,请确保指定的图像位置正确,并且使用正斜杠(`/`):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/672e0400-97af-487b-8b49-11f62d982d49.png)

1.  单击**下一步**后,将显示图像文件详细信息。要验证文件的完整性,请选择计算此图像的哈希值的单选按钮,并选择导入后验证哈希值的复选框。

1.  文件系统详细信息部分还显示图像是 ntfs 分区的。

1.  单击“添加”按钮继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/5a0ecc06-8ec7-4109-a6e4-0111b4ef7f4b.png)

1.  单击前面屏幕截图中的“添加”按钮后,尸检将计算 MD5 哈希并将图像链接到证据保险箱。按“确定”继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/546abcd8-5bba-4366-b8e5-04544b865ba3.png)

1.  此时,我们几乎准备好分析图像文件了。如果在画廊区域列出了任何之前调查中的多个案例,一定要选择`8-jpeg-search.dd`文件和案例:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/d0eaaebd-f0ea-42ed-a79d-8c6ffeed306a.png)

1.  在继续之前,我们可以点击“图像详情”选项。该屏幕提供了图像名称、卷 ID、文件格式、文件系统等详细信息,并允许提取 ASCII、Unicode 和未分配数据以增强和加快关键字搜索。点击浏览器中的返回按钮返回上一个菜单,并继续分析:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/cdbc3398-14ce-469e-a0dc-844d3d8a09e6.png)

1.  在点击“分析”按钮开始我们的调查和分析之前,我们还可以通过点击“图像完整性”按钮创建 MD5 哈希来验证图像的完整性:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/486d0439-2a34-40d0-9fee-3d3ff7049cce.png)

还有其他选项,如文件活动时间线、哈希数据库等。我们可以随时返回这些选项进行调查。

1.  点击“图像完整性”按钮后,将显示图像名称和哈希值。点击“验证”按钮验证 MD5 哈希:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/1cd4e3ea-05f4-439b-8ef7-22b24a5f12aa.png)

1.  验证结果显示在 Autopsy 浏览器窗口的左下角:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6847ed78-a6ed-42fa-91c8-e07b21ef34a6.png)

1.  我们可以看到我们的验证成功了,结果中显示了匹配的 MD5 哈希。点击“关闭”按钮继续。

1.  开始我们的分析,我们点击分析按钮:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/d0eaaebd-f0ea-42ed-a79d-8c6ffeed306a.png)

# 使用 Autopsy 进行分析

现在我们已经创建了我们的案例,添加了适当目录的主机信息,并添加了我们获取的图像,我们可以进行分析了。

点击“分析”按钮(参见上一个截图)后,我们将看到几个选项以开始我们的调查:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/83e57171-f7be-4118-bca5-4deebe9df2ac.png)

点击图像详情选项卡,查看图像的详细信息。在下面的片段中,我们可以看到卷序列号和操作系统(版本)列为 Windows XP:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/fc1b1b60-eb09-4e28-ac43-c744dd725cb2.png)

接下来,点击“文件分析”选项卡。这种模式打开为文件浏览模式,允许检查图像中的目录和文件。图像中的目录默认列在主视图区域中:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a33fa127-278e-45a3-83a8-24cf4b2ddad1.png)

在文件浏览模式中,目录列出为当前目录指定为`C:/`。

对于每个目录和文件,都有显示该项的写入、访问、更改和创建时间的字段,以及其大小和元数据:

+   写入:文件上次写入的日期和时间

+   访问:文件上次访问的日期和时间(只有日期是准确的)

+   更改:文件的描述数据修改的日期和时间

+   创建:文件创建的日期和时间

+   META:描述文件和文件信息的元数据:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/545cff1e-e161-498f-a494-23a31595bd6d.png)

为了完整性,可以通过点击“生成文件的 MD5 列表”按钮生成所有文件的 MD5 哈希。

调查人员还可以通过点击“添加注释”按钮对文件、时间、异常等进行注释:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/d798ab8e-2d38-41ea-8bae-951a317f3311.png)

左侧窗格包含我们将使用的四个主要功能:

+   **目录搜索**:允许搜索目录

+   **文件名搜索**:允许通过 Perl 表达式或文件名搜索文件

+   **所有已删除的文件**:搜索已删除的文件

+   **展开目录**:展开所有目录以便查看内容

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/793e54cb-d89a-4e98-a0f4-4e6d609e2e94.png)

通过点击 EXPAND DIRECTORIES,所有内容都可以在左窗格和主窗口内轻松查看和访问。目录旁边的+表示可以进一步展开以查看子目录(++)及其内容:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/01ede763-98a7-4e88-8e44-8326ca46617c.png)

要查看已删除的文件,我们点击左窗格中的 ALL DELETED FILES 按钮。已删除的文件标记为红色,并且遵循相同的格式:写入、访问、更改和创建时间。

从下面的截图中,我们可以看到图像包含两个已删除的文件:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/734696fd-cd2c-42d3-bb21-f23225b5a346.png)

我们还可以通过点击其 META 条目查看有关此文件的更多信息。通过查看文件的元数据条目(最右侧的最后一列),我们还可以查看文件的十六进制条目,即使扩展名已更改,也可以了解真实的文件扩展名。

在上述截图中,第二个已删除的文件(`file7.hmm`)具有一个奇特的文件扩展名`.hmm`。

点击 META 条目(31-128-3)以查看元数据:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/368cb10a-13d1-4b69-9691-70e858f6226b.png)

在属性部分,点击标有 1066 的第一个簇以查看文件的头部信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a372d776-fd18-4a04-a6c7-fd084d1fe70b.png)

我们可以看到第一个条目是**.JFIF**,这是**JPEG 文件交换格式**的缩写。这意味着`file7.hmm`文件是一个图像文件,但其扩展名已更改为`.hmm`。

# 文件排序

检查每个文件的元数据可能在大型证据文件中不太实际。对于这种情况,可以使用 FILE TYPE 功能。此功能允许检查现有(已分配)、已删除(未分配)和隐藏文件。点击 FILE TYPE 选项卡继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9f776bfd-b4b2-4a8a-bdda-b493bb0ed8da.png)

点击按类型对文件进行分类(将默认选项保持不变),然后点击 OK 开始排序过程:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/592a6b59-3ae2-46f6-b4d3-d09ec9783850.png)

排序完成后,将显示结果摘要。在下面的片段中,我们可以看到有五个 Extension Mismatches:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/59abe439-a1b9-4085-8365-6173a0587629.png)

要查看排序后的文件,我们必须手动浏览到`output`文件夹的位置,因为 Autopsy 2.4 不支持查看排序后的文件。要显示此位置,请点击左窗格中的 View Sorted Files:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9fa2d78d-e8ba-4503-bd60-546fca9aa302.png)

`output`文件夹的位置将根据用户在首次创建案例时指定的信息而有所不同,但通常可以在`/var/lib/autopsy///output/sorter-vol#/index.html`找到。

打开`index.html`文件后,点击 Extension Mismatch 链接:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6194da3f-1641-426a-b257-41912fec4ea4.png)

列出的五个扩展名不匹配的文件应该通过查看元数据内容进行进一步检查,并由调查人员添加注释。

# 在 Autopsy 中重新打开案例

案例通常是持续进行的,可以通过启动 Autopsy 并点击 OPEN CASE 来轻松重新开始:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c98f4eba-fbca-4113-949c-4940f4873642.png)

在 CASE GALLERY 中,请确保选择正确的案例名称,然后继续您的检查:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a6f838f3-6dfd-4dee-b8f3-f60452befc1e.png)

# 总结

在本章中,我们使用 Autopsy Forensic Browser 和 The Sleuth Kit 进行取证。与单个工具相比,Autopsy 具有案例管理功能,并支持各种类型的文件分析,搜索和对分配的、未分配的和隐藏文件进行排序。Autopsy 还可以对文件和目录级别进行哈希处理,以保持证据的完整性。

接下来,我们使用另一个非常强大的 GUI 工具**Xplico**对互联网和网络遗物进行分析。请参阅第九章,*使用 Xplico 进行网络和互联网捕获分析*。


# 第九章:使用 Xplico 进行网络和互联网捕获分析

Xplico 是一个开源的 GUI **网络取证分析工具**(**NFAT**),专注于从网络和互联网捕获中提取数据。

使用 Xplico 的实时获取功能直接获取网络和互联网流量捕获,也可以使用 Kali Linux 中的工具,如 Wireshark 和 Ettercap。这些网络获取文件保存为`.pcap`或**数据包捕获**文件,然后上传到 Xplico 并使用其 IP 解码器和解码器管理器组件进行自动解码。

我们可以使用 Xplico 调查的一些协议包括但不限于:

+   **传输控制协议**(**TCP**)

+   **用户数据报协议**(**UDP**)

+   **超文本传输协议**(**HTTP**)

+   **文件传输协议**(**FTP**)

+   **微型文件传输协议**(**TFTP**)

+   **会话初始协议**(**SIP**)

+   **邮局协议**(**POP**)

+   **互联网地图访问协议**(**IMAP**)

+   **简单邮件传输协议**(**SMTP**)

网络和互联网数据包捕获中包含的数据,甚至包括实时获取,可能包含以下内容:

+   诸如浏览的网站之类的**HTTP**流量

+   电子邮件

+   Facebook 聊天

+   RTP 和 VoIP

+   打印文件

使用**安全套接字层**(**SSL**)加密的流量目前无法在 Xplico 中查看。

# 所需软件

Xplico 配有许多 Linux 版本。根据使用的 Kali 版本,Xplico 通常需要一些更新才能运行。对于本章,我建议使用 Kali Linux 2016.1 或 2016.2。我还建议在使用 Xplico 时在虚拟环境中使用 Kali,因为错误地更新 Kali 可能会*破坏*它。用户还可以在更新 Kali Linux 之前使用快照功能,该功能保存了机器的当前工作状态,可以在发行版中断时轻松恢复到该状态。

可以从[`cdimage.kali.org/kali-2016.1/`](https://cdimage.kali.org/kali-2016.1/)下载 Kali Linux 2016.1。

可以从[`cdimage.kali.org/kali-2016.2/`](https://cdimage.kali.org/kali-2016.2/)下载 Kali Linux 2016.2。

如果在更新 Kali 或运行 Xplico 时遇到困难(有时会发生),可以考虑在虚拟环境中下载并运行 DEFT Linux 8.2。初学者可能会发现在 DEFT Linux 中使用 Xplico 可能更容易,因为有 GUI 菜单项来启动 Apache 和 Xplico 服务选项,而在 Kali Linux 中必须在终端中键入这些选项。

可以从[`na.mirror.garr.it/mirrors/deft/`](http://na.mirror.garr.it/mirrors/deft/)下载 DEFT Linux 8.2。

# 在 Kali Linux 中启动 Xplico

更新 Kali 很简单,因为在不同版本(2016.x 和 2017.x)中更新时,命令保持不变。

在新的终端中,我们输入`apt-get update`并按*Enter*。如果前者无法成功运行,则可能需要使用`sudo apt-get update`命令来提供管理员权限。

然后,我们尝试通过输入`apt-get install xplico`(或`sudo apt-get install xplico`)来安装 Xplico:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/95daa04d-b9dd-4320-a77a-13e394a4af4d.png)

如果遇到错误,如下图所示,我们必须首先更新 Kali Linux 存储库,然后再次运行`apt-get update`命令。要更新源列表,请键入`leafpad /etc/apt/sources.list`命令,这将打开文件供我们编辑:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/32b35bcc-79c4-40c2-907a-39bc8c15228b.png)

在文件顶部,输入以下存储库位置:

```
deb https://http.kali.org/kali kali-rolling main non-free contrib
```

输入存储库位置后,单击“文件”,然后单击“保存”,然后关闭列表。

确保删除文本前面的任何`#`符号,因为这会忽略后面的任何文本。

关闭列表文件后,返回到终端,再次运行`apt-get update`命令:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/36fcdc48-7e5f-4e86-b986-782d1d595a98.png)

Kali 更新后,运行`apt-get install xplico`命令。在提示时确保按*Y*继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/54a1e65a-a309-4584-b5de-164b7accd98f.png)

安装 Xplico 后,我们必须启动 Apache 2 和 Xplico 服务。在终端中,输入以下两个命令:

+   `service apache2 start`

+   `service xplico start`

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/4e96ad8d-d35b-4524-b41f-44b371b2a48d.png)

完成这些步骤后,现在可以通过单击应用程序| 11-取证| xplico 来访问 Xplico:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9c98618a-8df1-4e09-8940-db905bfe7631.png)

浏览器窗口立即打开,显示 URL`localhost:9876/users/login`。

# 在 DEFT Linux 8.2 中启动 Xplico

如前所述,DEFT Linux 8.2 应作为虚拟主机运行。这个过程不像安装 Kali Linux 那样复杂(如第二章中所述,*安装 Kali Linux*),因为 DEFT 可以用作实时取证获取分发。

一旦 DEFT Linux ISO 映像被下载(从[`na.mirror.garr.it/mirrors/deft/`](http://na.mirror.garr.it/mirrors/deft/)),打开 VirtualBox,单击“新建”,然后输入以下详细信息:

+   名称:`Deft 8.2`

+   类型:Linux

+   版本:Ubuntu(64 位)(验证输入的详细信息是否与屏幕截图中的相匹配)

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/dd5593a9-c678-4fce-927f-1cdc1a3576e5.png)

现在,在填写适当的信息之后,请按照以下步骤进行:

1.  分配 4GB 或更多的 RAM。

1.  保留“现在创建虚拟硬盘”的默认选项,然后单击“创建”。

1.  保留 VDI(VirtualBox 磁盘映像)的默认选项,然后单击“下一步”。

1.  保留动态分配的默认选项,单击下一步,然后单击创建。

1.  单击 VirtualBox Manager 屏幕上的绿色启动箭头以启动 VM。

在提示选择启动磁盘时,单击浏览文件夹图标,浏览到下载的 DEFT Linux 8.2 ISO 映像,然后单击“开始”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6e7a4bb9-0f1f-4b56-a932-0691d1f4b2d9.png)

这将带用户到 DEFT 启动画面。选择英语作为语言,然后选择 DEFT Linux 8 实时:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/109d8422-14e3-4c53-a079-c03a8a55fdb8.png)

DEFT Linux 引导并加载桌面后,单击左下角的 DEFT 菜单按钮,然后单击服务菜单,然后单击“启动 Apache”。重复此过程以到达服务菜单,然后单击“启动 Xplico”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0e3b18b5-ae1b-4a69-b94a-61878a5a112a.png)

最后,通过单击 DEFT 按钮,然后转到 DEFT 菜单,跨到网络取证,然后单击 Xplico 来启动 Xplico:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/5ae63c5f-1c43-4055-a0ba-b4d9c28b6116.png)

这将带我们到与 Kali Linux 中相同的 Xplico Web 界面 GUI:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/203a61c6-c5a1-4fe1-a37f-7a6426235a8e.png)

# 使用 Xplico 进行数据包捕获分析

无论是使用 Kali Linux 还是 DEFT Linux,在本章中,我们将使用可以在[`wiki.xplico.org/doku.php?id=pcap:pcap`](http://wiki.xplico.org/doku.php?id=pcap:pcap)下载的公开可用的样本数据包捕获(.pcap)文件。

所需的文件是:

+   DNS

+   MMS

+   Webmail:Hotmail/Live

+   HTTP(web)

+   SIP 示例 1

我们还需要从 Wireshark 样本捕获页面[`wiki.wireshark.org/SampleCaptures`](https://wiki.wireshark.org/SampleCaptures)获取一个 SMTP 样本文件。

# 使用 Xplico 进行 HTTP 和 web 分析

在这个练习中,我们上传了 HTTP(web)(`xplico.org_sample_capture_web_must_use_xplico_nc.cfg.pcap`)样本数据包捕获文件。

对于这个 HTTP 分析,我们使用 Xplico 搜索与 HTTP 协议相关的工件,如网站的 URL、图像和可能的与浏览器相关的活动。

一旦 Xplico 启动,使用以下凭据登录:

+   用户名:`xplico`

+   密码:`xplico`

然后我们从左侧菜单中选择新案例,并选择上传 PCAP 捕获文件按钮,因为我们将上传文件而不是执行实时捕获或获取。对于每个案例,我们还必须指定案例名称:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/04b86553-c139-4e6f-891e-05ef94807e9f.png)

在下面的截图中,我已经为案例名称输入了`HTTP-WEB`。点击“创建”继续。案例 HTTPWEB 现在已经创建。点击 HTTPWEB 继续到会话屏幕:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6a3d523a-7a8b-4313-b2a9-a7753643b773.png)

现在我们通过点击左侧菜单中的“新会话”选项为我们的案例创建一个新的会话:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/3f219cd2-8fe9-43a4-872e-45a7b64305b6.png)

我们为会话命名并点击“创建”继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/670b1932-4e7c-4245-9d2c-d9344bc0b5f1.png)

我们已经创建了名为 HTTPWEB 的新会话:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0de63e01-7954-4174-a10e-fe14336a042f.png)

一旦我们输入了案例和会话的详细信息,我们将看到 Xplico 界面主窗口,其中显示了在我们上传和解码`.pcap`文件后找到的各种可能的证据类别,包括 HTTP、DNS、Web Mail 和 Facebook 等:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/1fc45d73-d311-4841-bf02-a6cc5f6452c7.png)

要上传我们的`.pcap`文件,点击右上角的 Pcap 设置区域中的“浏览...”按钮,选择下载的(`xplico.org_sample_capture_web_must_use_xplico_nc.cfg.pcap`)`.pcap`文件,然后点击“上传”按钮开始 Xplico 中的解码过程:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0905ccff-6774-4775-b517-d34aba77a817.png)

解码过程可能需要一段时间,具体取决于`.pcap`文件的大小,因为这个过程将`.pcap`文件解码为 Xplico 内部易于搜索的类别。一旦完成,会话数据区域的“状态”字段将显示“解码完成”,还会显示案例和会话名称以及**捕获**(**Cap**)的开始和结束时间:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f01eb87a-84f2-4ee6-940e-d66c71e09503.png)

解码完成后,结果将显示在各个类别区域。在下面的截图中,我们可以看到“未解码”类别下有一个文本流的条目:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/54c75e4c-7182-4507-9669-0270126ef27e.png)

要分析解码后的结果,我们使用 Xplico 界面极左侧的菜单。由于我们在“未解码”类别中列出了结果,点击菜单中的“未解码”,它会展开为 TCP-UDP 和 Dig 子菜单。点击 TCP-UDP 子菜单以进一步探索:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c66ae6d4-b6d1-4fde-b9c6-77ec6b2854bc.png)

TCP-UDP 选项显示目标 IP、端口、日期和时间、连接持续时间,以及包含更多细节的信息文件。标记为红色的目标 IP 条目可以点击并进一步探索:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9fcfc359-7b0b-4efa-9106-5c2106a5065a.png)

如果我们点击第一个目标 IP 条目`74.125.77.100`,将提示我们将此条目的信息详细保存在一个文本文件中:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/ec9dbd23-a3b3-4710-8c40-b01dc9e76d24.png)

要查看文件的内容,我们可以直接从保存的位置打开它,或者使用`cat`命令通过终端显示内容,输入`cat /root/Downloads/undecoded_15.txt`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0ea813da-bbf8-4c4c-9f74-3f620bc0919e.png)

在前面的终端窗口中显示的结果表明,于 2009 年 12 月 9 日(星期三)查看或下载了一个`.gif`图像。

我们还可以点击“信息.xml”链接,以获取更多信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/b4aeca0d-7d0d-4149-a229-c1eb9f9bbddd.png)

信息.xml 显示了源 IP 地址和目标 IP 地址以及端口号。现在我们可以探索所有目标 IP 地址及其各自的“信息.xml”文件,以收集更多案例信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/24a32394-24b1-48a6-baa5-696f0541e482.png)

让我们回到左侧的“未解码”菜单,点击 Dig 子菜单进一步探索我们的捕获文件:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9b2f4663-0437-4c08-860e-f8907ccf7e4c.png)

在前面的截图中,Dig 子菜单显示了通过 HTTP 连接查看的几个图像证据,包括`.gif`、`.tif`和`.jpg`格式以及日期。

这些图像应该作为我们案例发现的一部分进行查看和记录:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/400a2af4-8a0f-461e-b72d-176213f12473.png)

# 使用 Xplico 进行 VoIP 分析

许多组织甚至普通终端用户主要为了减少语音和多媒体通信会话的成本而实施或使用**VoIP**(**IP 电话**)解决方案,否则需要使用付费电话线。要使用 VoIP 服务,我们必须使用**SIP**(**会话初始化协议**)。

在这个练习中,我们将使用 SIP 示例 1(`freeswitch4560_tosipphone_ok.pcap`)数据包捕获文件来分析 VoIP 服务,如果有的话。

与我们之前的 HTTP 网页分析一样,必须使用相关细节为新案例和会话创建新案例和会话:

+   案例名称:`SIP_Analysis`

+   会话名称:`Sip_File`

创建案例和会话后,浏览要上传的`.pcap`文件(`freeswitch4560_tosipphone_ok.pcap`),然后单击上传开始解码过程:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f2ebc82f-c832-4807-be36-dfb18064295a.png)

文件解码后,我们可以看到右下角 Calls 类别中列出了 2 个结果:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/4ba8c5f5-c015-4415-a2f7-e2389b70d480.png)

要开始探索和分析 VoIP 通话的详细信息,请单击左侧菜单上的 VoIP 选项:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/d491bd8e-35d1-4410-bacc-376d18a8418e.png)

单击 Sip 子菜单,我们将看到通话的详细信息。我们可以看到从`“Freeswitch”`拨打电话到`Freeswitch`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9a1b5c19-3783-470f-9178-7724209f694b.png)

单击持续时间详情(`0:0:19`)进行进一步分析和探索:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/2b68a87a-ef13-4d8a-b9e7-3e9b85d213bb.png)

让我们首先单击`cmd.txt`查看信息文件和日志:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/18cabebb-fc4f-483d-b230-f1fd6d4bc4a6.png)

在上一张截图中,我们可以看到对话中的号码、日期、时间和持续时间的详细信息。还有一个选项可以在任一端播放对话:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/2732140b-29de-438b-a4b5-f4d065decbf8.png)

# 使用 Xplico 进行电子邮件分析

电子邮件使用不同的协议发送和接收电子邮件,具体取决于发送、接收和存储/访问电子邮件的方法。使用的三种协议是:

+   **简单邮件传输协议**(**SMTP**)

+   **邮局协议**(**POP3**)

+   **Internet 消息访问协议**(**IMAP**)

SMTP 使用端口`25`,用于发送电子邮件。

POP3 使用端口`110`,用于通过从电子邮件服务器下载电子邮件到客户端来检索电子邮件。 Microsoft Outlook 是 POP3 客户端的一个例子。

IMAP4 使用端口`143`,类似于 POP3,它检索电子邮件但在服务器上保留电子邮件的副本,并可以通过 Web 浏览器随时访问,通常称为 Webmail。 Gmail 和 Yahoo 是 Webmail 的例子。

在这个练习中,我们将使用两个示例文件:

第一个文件是 Webmail:Hotmail/Live `.pcap`文件(`xplico.org_sample_capture_webmail_live.pcap`),可从[`wiki.xplico.org/doku.php?id=pcap:pcap`](http://wiki.xplico.org/doku.php?id=pcap:pcap)下载。

第二个是`smtp.pcap`文件,可从[`wiki.wireshark.org/SampleCaptures`](https://wiki.wireshark.org/SampleCaptures)下载。

对于第一个`.pcap`文件(Webmail:Hotmail/Live)的分析,我已创建了一个带有以下详细信息的案例:

+   案例名称:`Webmail_Analysis`

+   会话名称:`WebmailFile`

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8e5ea0d1-c085-4657-9257-ac89cacf48f0.png)

如果我们仔细查看解码结果,我们可以看到现在有几个填充的类别,包括 HTTP、DNS -ARP - ICMP v6 和 FTP - TFTP - HTTP 文件:

+   HTTP 类别:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/1eac96ad-509c-44df-a186-8bfd6854e4b7.png)

+   Dns -Arp - Icmpv6 类别:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8b4aee65-0eba-43f8-8bed-064d8956b02e.png)

+   FTP - TFTP - HTTP 文件:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/db255d69-f10c-4382-a532-777886b65a49.png)

现在我们已经知道存在哪些工件,让我们现在使用左侧菜单来进一步分析结果。

单击左侧的图表菜单会显示域信息,包括主机名,**CName**(**规范名称**)条目,主机的 IP 地址,以及每个条目的`info.xml`文件,以获取更详细的源和地址信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8f3057d8-c363-4f08-b134-b2fee10dd798.png)

第一个条目(`spe.atdmt.com`)的`info.xml`文件(如下截图所示)显示,本地 IP(`ip.src`)为`10.0.2.15`,连接到具有 IP(`ip.dst`)为`194.179.1.100`的主机(也在 IP 字段的上一个截图中显示):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6908c524-f21c-4941-a0c9-6afded3b6f11.png)

接下来,我们转到 Web 菜单,然后到站点子菜单。显示了访问的网页列表以及访问的日期和时间。我们可以看到前三个条目属于域`mail.live.com`,第四个和第五个属于`msn.com`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/7fcdc467-40d9-47d7-b31b-767e668e9c70.png)

通过单击`info.xml`,我们可以检查第一个站点条目。在 HTTP 部分下,我们可以看到使用了 Mozilla Firefox 浏览器,并访问了`sn118w.snt118.mail.live.com`主机:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c60dffcc-e414-44ff-9a4d-eace0b44ab9b.png)

关闭`info.xml`文件并选择图像按钮,然后单击“Go”以显示找到的任何图像:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c7bf864f-b18e-4445-adab-4e363e161471.png)

图像搜索结果显示了找到的几个图像和图标。单击列表以查看图像。

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/04b415ce-be15-499a-8513-5a966870988d.png)

我们还可以通过返回左侧的 Web 菜单,然后点击图像子菜单来查看找到的图像。这会呈现给我们一个图形化的图像组,其中包含到其各自页面的链接:

>![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/835060f0-1696-43a1-855e-5fa5a8b22c5e.png)

向下滚动到左侧的主菜单,单击共享菜单,然后单击 HTTP 文件子菜单。在这里,我们看到两个可以通过单击其`info.xml`文件进一步调查的项目:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/b4539261-eab3-4fd7-9e66-4b43817ed09c.png)

通过单击`abUserTile.gif`的`info.xml`文件,我们可以看到这是从主机`194.224.66.18`访问的:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/bb037101-26a3-4025-9fe2-034e7d965d18.png)

在未解码菜单和 HTTP 子菜单中,我们还有关于目标 IP`194.224.66.19`的 HTTP 信息。尝试通过单击`info.xml`文件进一步探索:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0f81f65f-213b-4524-ae9c-92e47b677f4a.png)

# 使用 Wireshark 示例文件进行 SMTP 练习

在此示例中,我们使用了从本节开始的 Wireshark 示例链接下载的 SMTP 示例捕获文件。

我已经创建了一个案例,其中包含以下细节,如下截图的会话数据部分所示:

+   案例名称:SMTP

+   会话名称:`SMTPfile`

屏幕右下角我们可以看到在邮件类别的未读字段中有一个项目:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/e16c3e06-7225-4fb2-a710-725c764d4497.png)

知道我们正在分析和调查电子邮件,我们可以直接转到界面左侧的邮件菜单和电子邮件子菜单。这显示我们发送了一个没有主题的电子邮件,发件人是`gurpartap@patriots.in`,收件人是`raj_deo2002in@yahoo.co.in`。单击-(无主题)-字段以进一步检查电子邮件:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9c56d86e-1994-43cb-8109-fe9740659493.png)

单击-(无主题)-字段后,我们现在可以看到电子邮件的内容:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6fdc4e7f-bbdf-4402-96a9-2341105ccaba.png)

# 总结

我希望你和我一样喜欢本章的练习。虽然我们中的一些人可能由于更新和存储库问题而在运行 Xplico 时遇到困难,但我鼓励你在 DEFT Linux 8.2 上尝试 Xplico,因为 Xplico 可以是一个非常有用的 GUI 工具,用于解码互联网和网络流量。正如我们在本章中所看到和做的,Xplico 可以用于 HTTP、VoIP 和电子邮件分析,还可以执行 MMS、DNS、Facebook 和 WhatsApp 聊天分析。我鼓励你尝试从 Xplico 和 Wireshark 样本捕获页面下载和分析更多样本文件,以便更熟悉使用 Xplico 进行分析和审查。

让我们现在转向另一个全能调查工具,数字取证框架,也被称为 DFF。见你在第十章,*使用 DFF 揭示证据*。


# 第十章:使用 DFF 揭示证据

欢迎来到最后一章;你成功了。我们将使用的最后一个工具是**数字取证框架**(**DFF**)。DFF 使用模块化模型在一个简单和用户友好的图形用户界面中执行图像的自动化分析。DFF 支持多种图像文件格式,包括`.dd`、`.raw`、`.img`、`.bin`、E01、EWF 和 AFF。模块可以应用于使用嵌入式查看器查看各种文件格式,包括视频、音频、PDF、文档、图像和注册表文件。

DFF 还支持以下内容:

+   浏览器历史分析

+   文件恢复

+   元数据和 EXIF 数据分析

+   内存/RAM 分析

将所有这些功能集成到一个 GUI 中,可以轻松调查和分析获取的图像。在本章的练习中,我们将使用已经获取并可供下载的图像。这并不意味着我们应该只使用一个工具(如 DFF)进行分析。我建议至少使用两种工具进行所有调查任务,以便可以比较结果,增加调查的准确性和完整性。

请记住,在获取自己的图像时,始终确保通过使用写入阻断器和哈希工具来维护设备和证据的完整性。同样重要的是,除非情况需要,否则我们只能使用取证副本来保留证据。

让我们看看本章将涵盖的主题:

+   安装 DFF

+   启动 DFF GUI

+   使用 DFF 恢复已删除的文件

+   使用 DFF 进行文件分析

# 安装 DFF

要使用 DFF 进行调查,我们首先需要 Kali Linux 2016.1 ISO 镜像。我选择使用 64 位版本,并在 VirtualBox 中作为虚拟主机运行。

可以从[`www.kali.org/downloads/`](https://www.kali.org/downloads/)下载 Kali Linux 2016.1 ISO 镜像:

1.  安装 Kali 2016.1 作为虚拟主机后,我们可以使用`uname -a`命令查看版本详细信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/61a6eca2-38f5-45d1-b8b5-765baae25a30.png)

1.  要开始安装 DFF,我们首先需要使用 Kali Sana 中使用的存储库更新`sources.list`。虽然在上一章中我们直接浏览到了`sources.list`文件,但是我们还可以使用终端以两种其他方式执行此任务。

在新的终端中,我们可以输入以下内容:

```
echo "deb http://old.kali.org/kali sana main non-free contrib" >
 /etc/apt/sources.list
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f53b6707-3dd3-416b-9f58-c5af515138ca.png)

或者,我们可以使用第二种方法,输入以下内容:

```
 nano /etc/apt/sources.list
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/5882fb51-c64a-4b53-a1f5-ab3e6e718c47.png)

然后是存储库的详细信息:

```
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb src http://http.kali.org/kali kali-rolling main contrib non-free
deb http://http.kali.org/kali sana main contrib 
```

1.  然后,按*Ctrl* + *X*退出,按*Y*保存更改到`sources.list`文件中:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/0708ade5-df84-4d15-8476-21b732bcc1af.png)

1.  接下来,我们通过输入`apt-get update`来更新 Kali:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/e6987292-6930-41a3-a7f0-cf7ba939151b.png)

1.  现在,我们通过输入以下内容来安装高级取证格式库:

```
apt-get install libafflib0
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f47ff4ae-abfc-4c3d-b1c5-f41810c9d2a1.png)

如前面的屏幕截图所示,按*Y*继续。这是一个相当冗长的过程,因为它安装了几个取证工具的组件,包括 Autopsy、Sleuthkit、Bulk_extractor 和 DFF,如下一张屏幕截图所示:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/91e792f0-8e05-42d4-867b-4b3a8725de94.png)

1.  安装库成功后,我们可以通过输入以下内容来安装 DFF:

```
apt-get install dff
```

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/90cc48fa-8298-4ed2-bd3c-b0d3d3bdfcc7.png)

1.  按*Y*继续,以允许安装 DFF 1.3.3 继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9f85671d-2935-44f7-b319-155d619aa87a.png)

1.  为了确保 DFF 已成功安装,我们可以在终端中输入`dff`,这将加载 DFF 中可用的模块:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/e42cd730-0475-4c05-b6f3-fe3849d4a0ba.png)

一旦显示`欢迎使用数字取证框架`横幅,这意味着我们的 DFF 安装成功。现在我们可以通过运行 DFF GUI 来开始我们的调查:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/b2f59e5e-d0e4-4e24-9ad5-83c24585833d.png)

# 启动 DFF GUI

现在我们已经安装了 DFF,我们可以首先验证 DFF 的版本,还可以使用 CLI 查看 DFF 中的一些命令:

1.  要查看已安装的 DFF 版本,在新的终端中,输入`dff -v`。在下面的屏幕截图中,我们可以看到版本是 1.3.0:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8a1ec99e-182f-4279-a542-2629957476fa.png)

1.  要查看可用选项,我们输入`dff -h`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/769c2d26-175b-44a6-aa29-1889e42d0cb9.png)

1.  要启动图形界面,我们输入`dff -g`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8623fdd5-61b0-4eb3-8243-98eaa5d0dfa5.png)

1.  也可以通过单击应用程序 | 取证 | dff gui 来启动图形界面:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6291339b-ea1a-4cf8-89d5-b11b45a0df3f.png)

1.  使用任一方法打开后,我们将看到 DFF GUI:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/4214917f-4175-4425-a254-6854c0ccaf3c.png)

# 使用 DFF 恢复已删除的文件

在本练习中,我们将使用使用 DD 创建的一个非常小的`.raw`图像。这个文件大约 6MB,可以在[`dftt.sourceforge.net/test7/index.html`](http://dftt.sourceforge.net/test7/index.html)上公开获取:

1.  单击 ZIP 文件进行下载并将其提取到默认位置。提取后,文件名显示为`7-ntfs-undel.dd`。在导入图像之前,花点时间观察主窗口区域条目旁的图标。逻辑文件字段的图标是一个带有一丝蓝色的白色文件夹:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/087fcb19-5eed-430b-a368-ffdb576a7e5b.png)

在接下来的步骤中,当我们添加图像时,文件夹图标上会出现蓝色加号。

1.  要在 DFF 中打开我们下载的 DD 图像,单击文件 | 打开证据或单击打开证据按钮,如下图所示:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/73ee2610-3cec-4fa3-901f-1897c6dd17f8.png)

1.  在选择证据类型框中,确保选中了 RAW 格式选项,并且在下拉框中选择了文件选项。单击绿色加号(+)以浏览`7-ntfs-undel.dd`文件。单击确定以继续:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/21ea2feb-12d8-4966-933d-efb44a97aaf6.png)

在 DFF 的左窗格和主窗口中,观察逻辑文件图标旁边的加号。这告诉我们,虽然大小、标签和路径没有条目,但图像已成功添加,我们可以浏览逻辑文件部分:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f8439d1a-7532-4952-8b1b-f05b00e00da0.png)

1.  在左窗格中,单击逻辑文件类别。在主窗口中,显示图像名称:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/7f6b684c-35d9-4086-bbce-aef08f25422d.png)

1.  在主窗口中双击图像名称。在应用模块框中,单击是:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/8fdbe6b2-1eec-4755-99f0-c56ce9a47fdc.png)

应用模块后,在左窗格的逻辑文件下显示图像名称(`7-ntfs-undel.dd`):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/65ce173e-dadd-4566-a0de-f0ad80859809.png)

1.  单击左窗格中图像名称左侧的加号,展开菜单并查看图像内容。展开后,我们可以看到有两个文件夹,即`NTFS`和`NTFS 未分配`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/bb9f6fb5-b2fe-4700-843f-bbc68ef6f77f.png)

红色标记的条目(`dir1`和`$Orphans`)是已删除的文件。

1.  要查看文件内容,双击主窗口中的`NTFS`条目:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/c480895b-ca22-4c6f-bb5d-45eee6dd5eae.png)

1.  单击`frag1.dat`已删除文件。右窗格显示有关文件的信息,包括以下内容:

+   名称:`frag1.dat`

+   节点类型:已删除文件

+   生成者:ntfs

+   创建时间:2004-02-29 20:00:17

+   文件访问时间:2004-02-29 20:00:17

+   文件修改时间:2004-02-29 20:00:17

+   MFT 修改时间:2004-02-29 20:00:17

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/50e58b32-45a4-4f85-a307-ed15b8e4a8d6.png)

1.  让我们检查另一个已删除的文件。单击`mult1.dat:ADS`流并查看其详细信息:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/faa253f8-5683-4ea5-8c9f-60505dbe3ae6.png)

根据[`dftt.sourceforge.net/test7/index.html`](http://dftt.sourceforge.net/test7/index.html)上的文件列表,该图像包含 11 个已删除的文件,包括`mult1.dat:ADS`,其中包含 NTFS 备用数据流中的隐藏内容。DFF 已找到所有 11 个文件。请访问前面的网站或查看下面的截图以查看已删除文件的名称进行比较:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/994cb6ef-3a48-469e-aea7-14bccb93e23a.png)

# 使用 DFF 进行文件分析

现在我们已经查看了文件恢复过程,让我们继续使用 DFF 来检查一个内容更多的图像文件。

在这个练习中,我们将使用另一个公开可用的图像,名为*JPEG 搜索测试#1(Jun'04)*。可以在[`dftt.sourceforge.net/test8/index.html`](http://dftt.sourceforge.net/test8/index.html)下载 ZIP 文件:

1.  下载 ZIP 文件后,将其解压到默认位置。解压后的文件名为`8-jpeg-search.dd`。

1.  通过重复上一个练习中的步骤,在 DFF 中打开证据文件:

1.  通过点击“应用程序”|“取证”|“ddf gui”来启动 DFF。

1.  点击“打开证据”按钮。

1.  浏览到`8-jpeg-search.dd`图像文件(如下截图所示)。

1.  点击“确定”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/22d3428b-6bd0-42a1-8f2d-6045b5932389.png)

1.  点击左窗格中的逻辑文件,然后在主窗口中双击文件名(`8-jpeg-search.dd`):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a1ccd804-9677-4365-8fc9-6365b8999c05.png)

1.  在应用模块框中,当提示应用 NTFS 模块到节点时选择“是”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/96bcc88d-8e93-4d17-856b-3f4429898cb3.png)

1.  点击左窗格中的加号(+),旁边是逻辑文件,展开菜单。

1.  点击`8-jpeg-search.dd`文件名旁边的加号(+)以展开菜单。

在这个练习中,我们还发现了两个名为`NTFS`和`NTFS 未分配`的 NTFS 文件夹:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/9158e9e5-b50b-437e-8146-342b2bbb8ec6.png)

1.  点击左窗格中的`NTFS`以查看子文件夹和文件(显示在主窗口中):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/14aba8ba-038b-4232-9e9e-aa2223c80f34.png)

1.  点击`alloc`文件夹查看其内容。在`alloc`文件夹中,主窗口中有两个带有彩色图标的文件:

+   `file1.jpg`

+   `file2.dat`

1.  如果尚未选择,请点击`file1.jpg`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/d31ef5fe-18bb-45f0-80a1-a6696a3f2e08.png)

1.  在右侧的属性列中,向下滚动到类型字段。请注意以下属性值,如下截图所示:

+   魔术:JPEG 图像数据,JFIF 标准 1.01

+   魔术 mime:image/jpeg

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/a768b7a0-cf18-4d3b-8f0c-bafedc993ae4.png)

1.  双击`file1.jpg`,在提示应用图片模块到节点时点击“是”,这将允许我们查看图片:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/f83e4190-a834-4b0f-8555-94de03760c4d.png)

预览窗口打开,显示图像,并在图像下方显示文件路径为`/逻辑文件/8-jpeg-search.dd/NTFS/alloc/file1.jpg`:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/3668cfde-b83a-41be-8279-f67c88c34415.png)

1.  通过点击“打开证据”按钮下的“浏览器”按钮返回到 DFF 浏览器界面:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/b43b3c76-2686-4a63-9832-870e07148eb3.png)

1.  点击`file2.dat`并向下滚动到类型属性,并注意魔术和魔术 mime 值:

+   魔术:JPEG 图像数据,JFIF 标准 1.01

+   魔术 mime:image/jpeg

请注意,即使`file2`的扩展名是`.dat`,DFF 也读取了头文件,并将文件的真实类型列为 JPEG/JFIF 文件:

>![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/6006eba0-094e-47db-bae4-24edc3c1fe57.png)

1.  双击`alloc`文件夹中的`file2.dat`(在`file1.jpg`文件下),在提示应用图片模块时点击“是”:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/fc468863-39af-4480-9b3a-2a5a36e932ba.png)

1.  单击“浏览”按钮返回 DFF 界面。在左侧窗格中单击`del1`文件夹以查看其内容。在`del1`文件夹中有一个名为`file6.jpg`的单个文件,在属性列中列为已删除,如下截图所示。属性列中值得注意的值包括:

+   名称:`file6.jpg`

+   节点类型:已删除

+   magic: JPEG 图像数据,JFIF 标准。

+   magic mime: image/jpeg;

1.  双击`file6.jpg`并应用模块以预览文件(确保单击“浏览”按钮返回 DFF 浏览器界面):

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/7f2b3dd3-d4f9-4910-9584-15bebbe45bb0.png)

1.  在左侧窗格中单击`del2`文件夹。主窗口显示一个带有奇怪扩展名`file7.hmm`的单个文件。属性列将文件列为已删除;但是,类型属性显示如下内容:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/47e35c98-2ead-4d86-8e54-c86b69ce3b1e.png)

1.  双击`file7.hmm`文件并应用图片模块以预览`.jpg`图像:

![](https://gitee.com/OpenDocCN/freelearn-kali-zh/raw/master/docs/dg-frns-kali/img/112ad120-33ca-4bb9-b595-2a74587eab3d.png)

# 总结

恭喜,您已经到达了结尾。在这最后一章中,我们看了非常多功能的 DFF。使用 DFF,我们进行了文件恢复,文件夹探索,文件分析,并且还能够使用各种模块预览文件。

重要的是要记住,尽管 DFF 可以执行多项任务,但应该使用在前几章中使用的其他工具来验证发现的准确性。在调查过程中,记录您的步骤也很重要,以防必须重新创建调查过程或重迹您的步骤。

我本人,审阅者,编辑以及整个 Packt 家族代表,感谢您购买本书。请务必查看[`www.packtpub.com/`](https://www.packtpub.com/)上提供的其他优秀书籍。
posted @ 2024-05-04 01:10  绝不原创的飞龙  阅读(253)  评论(0编辑  收藏  举报