数字取证
数字取证是确定谁、什么、何地、如何(who, what, where, how)以及何时在数字系统中发生了什么事情的一门学科。我们的生活中有那么多时间都是在网上度过的,那些信息其实都可以通过数字取证技术破译。
数字取证调查现在几乎是所有犯罪调查的一部分,因为几乎每个犯罪者都会留下他们活动和意图的“数字签名”。
数字取证是一个非常广泛的领域,涵盖了许多子学科,例如网络取证、移动取证、恶意软件取证等等。我们将尝试在这里涵盖所有内容。
数字取证这项技能应用非常广泛,适用于执法、企业调查、网络入侵、恶意软件分析和事件响应等等
思路
调查
取证分析的主要目标是完成描绘,证实假设,揭开整个事件的情况......。
当发生可疑事件时,通常会进行调查 - what, when, who, how,...?
为了找到正确的答案,提出正确的问题是至关重要的
调查是从问题到答案(通过假设)的过程。
典型问题
攻击者如何攻陷了机器?
他在机器上有什么活动?
取证分析原则
一致性
我们的主要目标是分析系统而不是改变被分析的系统。因为收集证据也会额外产生一些信息,所以这是一个相当困难的任务(至少内存会被改变)。
everything!何时、何人、何事。始终使用创建的映像的副本。
连续性
从证据到结果。
例如乃子的SD卡的映像包含图片(自拍照),EXIF 信息包含 GPS 数据,该数据指向物理位置。
由此我们可以说 - 乃子在那个时间在那个地点。
可再现性
为了保证数字化证据的真实性和完整性
中立性
不多解释
证据收集
我们需要哪些信息(日志、磁盘、内存)?
数据将存储在哪里?我们需要多少存储空间来存储这些数据?
这要花多长时间?
文档将如何存储
收集证据的顺序
数据的价值?
数据量?
易失性(内存早于磁盘)?
应用程序数据(Web 服务器、邮件服务器……)
网络数据(netflow、PCAP)
安全数据(firewall、IDS)
我们有日志管理策略吗?SIEM?
时区信息
UTC 还是本地?
所有主机已同步?
取证成像
取证成像是数字取证中的一项非常重要的任务。成像是在确保数据完整性且不遗漏文件的情况下仔细复制数据,因为这对保护证据和确保正确处理证据非常重要。这就是普通文件复制和映像之间存在差异的原因。成像是捕获整个驱动器。在对驱动器进行映像时,分析人员对包括 主引导记录在内的整个物理卷进行映像。有两种成像方法:
实时成像:受损系统未关机状态
死成像:受损系统关机状态
此外,拍摄的映像可以有多种格式,例如:
原始映像
EnCase 证据文件
AFF
SMART等等
获取存储设备的取证映像有多种方式。我们将在这里介绍一些最流行的方法.....
使用Linux/UNIX dd 命令
Linux dd命令几乎内置在Linux的所有发行版中。它将存储设备从输入或源文件(if)逐位复制到输出或目标文件(of)。我们可以在我们的Kali中使用它,也可以在任何Linux发行版中使用它。
首先,我们需要了解我们的驱动器在 Linux 操作系统中是如何表示的。我们可以通过键入以下命令来做到这一点;
kali > fdisk -l

然后,要捕获驱动器,我们只需调用 dd 命令,后面跟着输入文件if=/dev/sda,然后调用输出文件。然后是输出文件。这可以是我们想要命名输出文件的任何内容。这里我将它命名为image.dd
kali > dd if=/dev/sda of= image.dd
按回车后,dd 命令将开始将数据从 USB 驱动器逐位复制到我们指定的image.dd 文件中。
在按下回车键后,dd命令将开始从驱动器逐位复制数据到我们指定的文件image.dd。

正如我们在上面的屏幕截图中看到的,dd 已经成功创建好了取证映像。
dd 代表了所有图像捕获技术中最基本的技术,并为许多其他方法奠定了基础
使用 dcfldd
美国国防部计算机法证实验室 (dcfl) 开发了 dd 的增强版本,专门用于创建取证映像。此命令具有为创建取证映像而定制的选项。
dcfldd 具有以下能力:
(1) 实时哈希校验
(2) 显示进度条
(3) 磁盘数据抹除
(4) 对比校验
(5) 同时输出到多个文件或磁盘
(6) 日志管道功能,安全人员可以将日志通过管道传输到其他程序进行处理
与 dd 一样,dcfldd只能生成原始映像。
要创建我们驱动器的取证映像,我们可以使用 与 dd 类似的dcfldd,但我们有更多选择。例如,如果我们想创建映像文件的 MD5 ,我们可以输入:
kali > dcfldd if=/dev/sdb of= usbimage2.dd hash=md5 hashlog=usbimage.log

与 dd 不同,dcfldd 向我们显示了创建映像过程的状态

当dcfldd完成了它的成像后,它会告知写入了多少块、输入了多少块、输出了多少块。
成像完成后,我们可以通过输入 ls -l 检查映像和日志是否已完成。

正如我们所看到的,dcfldd创建了映像并创建了映像日志。在映像日志内部应该是映像的MD5哈希值。
kali > more usbimage.log

dcfldd 是一个用于创建取证映像的极好工具,尽管是基本的工具。但它很轻量级,没有多余的装饰,没有GUI,快速而直接。
FTK Imager
Access Data公司出售一套被称为取证工具箱(forensic Tool Kit,简称FTK)的取证套件。作为这套工具的一部分,他们开发了一个名为FTK Imager的工具。该工具专门设计用于创建具有易于使用的GUI的取证映像。他们长期免费提供该工具,因此它已成为许多取证环境中创建取证映像的首选工具。

与许多Windows应用程序一样,它有熟悉的以“File”开头的顶部下拉菜单
单击“File”并转到“创建磁盘映像”

它将打开一个如下所示的窗口。选择“物理驱动器”

这将打开另一个窗口,要求您选择源驱动器位置,这里我选择USB做演示,因为硬盘太大了

选择设备后单击“完成”。
接下来,你会被提示输入“Image Destination”。单击“add”。还要注意,已在左下角指出,希望在创建映像后对其进行验证。

然后系统会提示您选择要创建的映像类型。选择“Raw”或dd映像

在我们输入了关于我们的映像创建的所有信息之后,FTK Imager将提示我们创建一个案例。案例创建过程需要:
(1) 案件编号
(2) 证据编号
(3) 独特的描述
(4) 审查员姓名
(5)注意事项

正确填写此表格并点击“下一步”。接下来将提示我们输入映像目的地

现在,单击“完成”。将返回到“创建映像”窗口。单击“开始”。

FTK Imager 现在将开始耗时的过程,将设备逐位复制到您指定的文件中。

当它成功完成时,你会看到它停止了,并且在状态窗口中将看到“Image created successfully”。这可能需要一段时间,所以请耐心等待。

最后,当映像验证完成后,单击“image Summary”,它将打开一个映像摘要统计窗口,包括所有重要的哈希值,如下所示。

OK!我们已经为我们的设备创建了一个合法的取证映像,并验证了它与原始设备相同,并生成了一个MD5哈希和一个SHA1哈希。
内存取证分析
数字取证是网络安全中一个非常庞大且多样化的领域。核心和最重要的部分之一是数字取证是内存取证。内存取证处理系统易失性内存的采集和分析。因此它也被称为易失性内存取证。
为什么要进行内存取证?
易失性内存非常重要,因为它可以帮助我们了解受损系统的状态,并让我们深入了解对手可能如何攻击系统。
请记住内存是易失性的,一旦电脑关闭,RAM 中的任何信息都可能丢失。这些信息可能包括密码、正在运行的进程、打开的套接字、剪贴板内容等。所有这些信息都必须在关闭系统之前捕获。
此外,当涉及恶意软件攻击时,易失性内存有时是调查此类攻击的唯一来源。恶意软件的最新趋势是,它们中的大多数只是驻留在内存中的恶意软件。这意味着对非易失性证据的分析根本不会为我们提供关于恶意软件存在的令人信服的线索。
这种情况的最佳例子是震网病毒(Stuxnet)。Stuxnet 是此类恶意软件中的第一个,它只驻留在内存中,它们在受害者的系统中保持休眠状态,直到找到目标为止。
Step 1:使用FTK Imager捕获内存
单击“File”下拉菜单并转到“捕获内存”选项。

它将打开一个如下所示的窗口。您必须选择存储内存转储的位置、文件名称、是否要包含页面文件(虚拟内存)以及是否要创建 AD1 文件(AccessData 的专有数据类型)。

在此例子中,创建了一个名为“memory dumps”的目录,命名为 memdump.mem 文件,包含页面文件,但没有创建 AD1 文件。建议你也一样。
当你完成了这些,点击“Capture Memory”按钮。
这将启动一个跟踪捕获进度的窗口,这可能需要一段时间。
Step 2:Volatility内存分析工具
在内存分析中,使用最广泛的工具是名为Volatility的开源工具。可以从www.volatilityfoundation.org下载Volatility。它有Window、Linux 和 Mac OS X的版本,因此几乎可以在任何平台上运行。
在kali上安装:
git clone https://github.com/volatilityfoundation/volatility.git
chmod +x Volatility/vol.py
vol –info
kali > vol -h
这将显示一个长长的命令选项列表。

和插件

python3 vol.py [plugin] -f [image]
常用插件:
layerwriter:列出内存镜像platform信息
linux.bash:从内存中恢复bash命令历史记录
linux.check_afinfo:验证网络协议的操作功能指针
linux.check_syscall:检查系统调用表中的挂钩
linux.elfs:列出所有进程的所有内存映射ELF文件
linux.lsmod:列出加载的内核模块
linux.lsof:列出所有进程的所有内存映射
linux.malfind:列出可能包含注入代码的进程内存范围
linux.proc:列出所有进程的所有内存映射
linux.pslist:列出linux内存映像中存在的进程
linux.pstree:列出进程树
mac.bash:从内存中恢复bash命令历史记录
mac.check_syscall:检查系统调用表中的挂钩
mac.check_sysctl:检查sysctl处理程序的挂钩
mac.check_trap_table:检查trap表中的挂钩
mac.ifconfig:列出网卡信息
mac.lsmod:列出加载的内核模块
mac.lsof:列出所有进程的所有内存映射
mac.malfind:列出可能包含注入代码的进程内存范围
mac.netstat:列出所有进程的所有网络连接
mac.psaux:恢复程序命令行参数
mac.pslist:列出linux内存映像中存在的进程
mac.pstree:列出进程树
mac.tasks:列出Mac内存映像中存在的进程
windows.info:显示正在分析的内存样本的OS和内核详细信息
windows.callbacks:列出内核回调和通知例程
windows.cmdline:列出进程命令行参数
windows.dlldump:将进程内存范围DLL转储
windows.dlllist:列出Windows内存映像中已加载的dll模块
windows.driverirp:在Windows内存映像中列出驱动程序的IRP
windows.driverscan:扫描Windows内存映像中存在的驱动程序
windows.filescan:扫描Windows内存映像中存在的文件对象
windows.handles:列出进程打开的句柄
windows.malfind:列出可能包含注入代码的进程内存范围
windows.moddump:转储内核模块
windows.modscan:扫描Windows内存映像中存在的模块
windows.mutantscan:扫描Windows内存映像中存在的互斥锁
windows.pslist:列出Windows内存映像中存在的进程
windows.psscan:扫描Windows内存映像中存在的进程
windows.pstree:列出进程树
windows.procdump:转储处理可执行映像
windows.registry.certificates:列出注册表中存储的证书
windows.registry.hivelist:列出内存映像中存在的注册表配置单元
windows.registry.hivescan:扫描Windows内存映像中存在的注册表配置单元
windows.registry.printkey:在配置单元或特定键值下列出注册表项
windows.registry.userassist:打印用户助手注册表项和信息
windows.ssdt:列出系统调用表
windows.strings:读取字符串命令的输出,并指示每个字符串属于哪个进程
windows.svcscan:扫描Windows服务
windows.symlinkscan:扫描Windows内存映像中存在的链接
获取进程列表
让我们看看能不能找到在获取内存映像时运行的可疑进程。
kali > vol -f /mnt/hgfs/memdump.mem windows.pslist.PsList

如你所见,Volatility 已解析出所有正在运行的进程。要从 RAM 映像中收集更多信息,我们可以使用与上面完全相同的命令,只是更改插件的名称。
获取正在运行的 DLL
要查看系统上正在运行的 DLL,我们只需使用windows.dlllist 插件
kali > vol -f /mnt/hgfs/memdump.mem windows.dlllist

如你所见,Volatility 解析出所有正在运行的 DLL 的列表。
获取事件的时间轴
通常,为了证明嫌疑人确实实施了他们被指控的行为,我们可能需要在该系统上发生的事件的时间表。我们可以使用下面的时间线插件从内存映像中检索此时间线信息。
kali > vol -f /mnt/hgfs/memdump.mem timeliner.Timeliner

在内存中查找恶意软件
最后,让我们寻找在可疑系统内存中运行的任何恶意软件。Volatility 有一个专门为此目的设计的插件,它被恰当地命名为malfind。我们可以像使用任何其他 Volatility 插件一样使用它。只需键入与上面相同的命令,但将插件的名称替换为windows.malfind.Malfind。

Volatility 是一个强大的内存分析工具,带有非常多的插件,使我们能够找到计算机截止到某个点所发生的一切,或者从法律的角度来说,嫌疑人在计算机被扣押时所做的事情的证据。
恢复已删除的文件
在取证研究人员必备的基本技能中,恢复被删除的文件或许是最基本的了。如您所知,在大多数情况下,系统只是删除文件的位置信息或将文件标记为已删除,被“删除”的文件一直保留在存储介质上,直到覆盖为止。这意味着,如果嫌疑人删除了证据文件,直到它们被文件系统覆盖之前,我们仍然可以恢复它们。
在本实验中,我们将使用开源 The Sleuth Kit (TSK) 来识别和恢复被删除的文件。Sleuth Kit 最初是为 Linux 开发的,但现在已经移植到Windows,因此我们将在我们的 Windows 系统中使用它的 GUI 界面(Autopsy),你可以在这里下载Autopsy

安装 Autopsy 然后启动它后,您将看到与上面类似的屏幕。
点击“New Case”。
当您这样做时,您将看到一个新窗口,要求您为新案例命名以及要放置案例的目录。输入“New Case 101”并将其放在 C:\Cases 的基本目录中。

现在,点击Next。
这将打开另一个窗口,要求您提供案例编号和审查员姓名、电话、邮件、备注等。

点击“Finish”。
完成后,将打开“添加数据源”窗口。由于我们将使用在上一个模块中创建的映像文件,因此选择“Image File”然后浏览你在之前模块中创建的映像文件。我的保存在D:\forensic images 目录中。你的可能不同。

添加映像后单击下一步,Autopsy将开始对映像进行分析。最终,您会看到如下所示的屏幕。

点击 "Finish".
如果我们在对象资源管理器中展开“文件类型”,尸检将显示所有文件类型和每个类别中的文件数量。下面你可以看到,我点击“图像”文件类型,尸检将显示所有的图像文件。

再往下一点,在对象资源管理器中,我们可以看到一个名为“已删除文件”的文件类型。当我们点击它时,它会显示所有被删除的文件。

当我们点击一个已删除的文件时,我们可以在右下角的窗口中做一些分析。在那里,您将看到标签为 Hex、字符串、文件元数据、结果和索引文本的选项卡。在这种情况下,单击“文件元数据”选项卡,它将显示文件的元数据,包括名称、类型、大小、修改、访问和创建。

现在,要恢复已删除的文件,请右键单击已删除的文件并选择“extract file”。这将打开一个如下所示的窗口。

现在可以双击该文件,在适当的应用程序中打开它。

嫌疑犯经常试图通过删除关键证据文件来掩盖他们的踪迹。作为一名取证研究员,我们知道在这些文件被文件系统覆盖之前它们是可以恢复的。使用像Autopsy和几乎所有其他取证套件(case, ProDiscover, FTK, Oxygen等)这样的工具,恢复这些被删除的文件是非常简单的。
在取证映像中寻找关键证据
在本实验中,我们将使用 Autopsy 进行文件分析。
步骤1
打开Autopsy并导航到我们的 firstimage.dd.001 文件,autopsy将立即开始索引此映像像以进行分析。
当它完成分析后,它将按类型对每个文件进行分类。正如你在下面的截图中所看到的,Autopsy 已经对每种文件类型进行了分类,包括图像、视频、音频、文档、可执行文件和已删除文件。

步骤2 搜索关键字
假设我们正在寻找包含关键字“boot”的文件。我们可以在屏幕右上角的搜索窗口中输入这个词,然后单击搜索。
Autopsy 现在将开始在每个文件中搜索该关键字。正如您可以想象的那样,在实际调查中,这个关键词是特定于调查的,例如你想找到一些工具软件,如“cobalt strike”、“minikatz”、“dogcs”等等。

如果我们点击右下窗口的“Indexed Text”选项卡,它会显示该关键字的每个实例,并为我们突出显示它。

步骤3 专门的搜索类型
autopsy使我们能够进行非常专业的类型搜索,这可能是我们调查的关键。这些可能包括 URL、电子邮件地址、电话号码或 IP 地址。
单击此屏幕右上角附近的眼睛图标。它会打开一个下拉窗口,如下所示。在这里我们可以搜索;
1.电话号码
2.IP地址
3.电子邮件地址
4.URL's
让我们看看我们是否可以在这些文件中找到找到一些网址也许能帮我们确定嫌疑人在系统被查封之前在做什么。
在下拉窗口中单击url旁边的复选框。它将填充用于查找URL的正则表达式。

接下来,单击搜索,autopsy将开始在每个文件中查找该文本模式。它所寻找的正则表达式显示在右边的窗口中。
正则表达式搜索占用大量 CPU 资源且速度很慢,因此请耐心等待。
完成此搜索后,它将显示如下结果。

autopsy是取证映像分析的有力工具。它能够做的许多事情,包括删除文件分析、文件类型分析、关键字分析以及查找URL、电子邮件地址、IP地址和电话号码等关键信息。此外,我们可以创建自定义正则表达式来搜索任何可以想象到的文本模式。
分析Windows注册表的痕迹
尽管几乎所有 Microsoft Windows 用户都知道他们的系统有一个注册表,但很少有人知道它是做什么的,甚至更少人知道如何为自己的目的操作它。作为一名取证分析师,注册表可以是一个关于系统上发生的事情、地点、时间和方式的证据宝库。
什么是注册表?
注册表是存储Windows系统上关于用户、硬件和软件的配置信息的数据库。尽管注册表是为配置系统而设计的,但要这样做,它会跟踪大量的信息,包括用户的活动、连接到系统的设备、使用了什么软件以及何时使用等等。所有这些对于取证都很有用,关键是要知道去哪里找。
Hives
在注册表中,有根文件夹。这些根文件夹称为 hives。有5个注册表配置单元。
HKEY_USERS: 包含所有加载的用户配置文件
HKEYCURRENT_USER: 当前登录用户的个人资料
HKEYCLASSES_ROOT: 用于打开文件的应用程序的配置信息
HKEYCURRENT_CONFIG: 系统启动时的硬件配置文件
HKEYLOCAL_MACHINE: 配置信息,包括硬件和软件设置
具有取证价值的注册表信息
作为一名取证调查员,注册表可以被当作是一个信息宝库,它记录了系统上发生了什么人、什么事、在哪里以及什么时候发生的事情,可以直接将犯罪者与被受到质疑的行为联系起来。
可以在注册表中找到的信息包括:
用户和他们最后一次使用系统的时间
最近使用的软件
安装到系统的任何设备,包括闪存驱动器、硬盘驱动器、手机、平板电脑等的唯一标识符。
系统连接过的Wi-Fi
访问文件的内容和时间
列出在系统上进行的所有搜索
等等。。。
注册表中的无线证据
许多黑客会破解别人的WIFI,并利用它进行入侵。通过这种方式,如果IP地址被跟踪,它将追溯到邻居的或其他无线AP,而不是他们自己。
示例故事如下(如有雷同,纯属巧合):乃子大黑客入侵了美国白宫,FBI通过调查,他们追踪到黑客的IP地址是位于xxxx山上一所寺庙的Wi-Fi AP。这名黑客显然已经破解了寺庙无线AP的密码,并利用它在互联网上进行“匿名”攻击。同时乃子在QQ群和朋友圈各种炫耀,肆无忌惮,这成功引起网J的注意。



当FBI找到乃子并没收了他的电脑后,他们能够通过检查他的注册表证明他与寺庙的AP有联系。只需在此位置查看注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles

在那里,将找到计算机已连接过的无线接入点的 GUID 列表。当单击其中一个时,它会显示信息,包括 SSID 名称和最后一次连接的十六进制日期。因此,尽管乃子黑客一开始否认自己参与了这次黑客攻击,但在铁证面前,他最终认罪了。获得了三年免费的包吃包住


最近的文档键
Windows注册表跟踪了大量关于用户活动的信息。在大多数情况下,设计这些注册表键是为了使Windows运行得更高效、更平稳。但作为一名取证调查员,这些键对于我们来说就像是用户或攻击者活动的路线图。
其中一个键是“RecentDocs”键。它通过文件扩展名跟踪系统上使用或打开的最新文档。可以在以下位置找到:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs
因此,例如,最近使用的PDF文档可以在.pdf扩展名下找到。我们转到过去,会看到这个键下列出的最近打开的PDF。

当我们单击其中一个键时,它会显示关于文档的信息,如下所示。我们可以以十六进制(左)和ASCII(右)两种方式查看文档数据。在本例中,它表明该文档是hack-er-tools.pdf。

在某些情况下,攻击者会上传.zip文件,因此这是寻找漏洞证据的好地方。一般情况下,在Windows机器上不会看到.tar文件扩展名,因此此处出现的条目需要进一步调查。检查.tar键中的文件,看看它们能不能揭示有关攻击者的什么信息。

TypedURLs 键
当用户在 Internet Explorer 中输入URL时,该值将存储在注册表中:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs
当我们在注册表中打开该键时,它会列出用户使用IE访问的最后一个url,这可能会揭示恶意软件的来源。或从法律型的调查中来说,可能会揭示用户在寻找什么

IP 地址
注册表还跟踪用户接口的 IP 地址。请注意,可能有许多接口,此注册表项会跟踪每个接口的 IP 地址和相关信息。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
如下所示,我们可以找到分配给接口的IP地址、子网掩码以及DHCP服务器租用IP的时间。通过这种方式,我们可以知道嫌疑人在入侵或犯罪时是否使用了哪个特定的IP。

启动项
作为一名取证调查员,我们经常需要找到当系统启动时设置启动的应用程序或服务。恶意软件通常设置为每次系统重启时启动,以保持攻击者的连接。这些信息可以在注册表的数十个位置中找到。我们将只看一些最常用的设置键。
一般最常用的位置是:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

在这些子键中指定的任何软件将在每次系统启动时启动。rootkit和其他恶意软件经常可以在这里找到,它们会在每次系统启动时启动。
运行一次启动
如果黑客只是想让软件在启动时运行一次,则可以在此处设置子键。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
自启动服务
下面的键列出了设置为在系统启动时启动的所有服务。如果key设置为2,则服务自动启动;如果设置为3,则必须手动启动服务;如果该键设置为4,则该服务被禁用
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services
特定用户登录时启动
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
注册表中的存储信息
通常情况下,嫌犯会使用u盘或硬盘进行恶意活动,然后将其删除,以免留下任何证据。然而,熟练的取证调查人员仍然可以在注册表中找到这些存储设备的证据痕迹
USB
要查找 USB 存储设备的证据,我们要查看以下KeyHKEY_LOCAL_MACHINE\System\ControlSet001\Enum\USBSTOR
在这里,我们将找到任何曾经连接到这个系统的USB存储设备的证据。展开USBSTOR以查看曾经连接到此系统的每个USB存储设备的列表。

我们展开其中一个,可以找到有关该设备的更多信息

如在上面的屏幕截图中所见,它会在右侧窗口中显示全局唯一标识符 (GUID)、名称和硬件 ID 等。这可能正是我们需要的证据
Mounted Devices
如果嫌疑犯使用任何必须挂载的硬件设备来读取或写入数据(CD-ROM, DVD,硬盘驱动器,闪存驱动器等),注册表将记录挂载的设备。这些信息存储在:
HKEY_LOCAL_MACHINE\System\MountedDevices
正如你在下面看到的,当我们点击这个键时,它为我们提供了一个关于曾经安装在该机器上的每个设备的长列表

如果我们需要任何这些安装的设备的进一步信息,我们可以简单地点击它。

如果系统上没有这块设备,那么取证调查员现在知道他们需要找到这块硬件才能找到进一步的犯罪证据。
分析 Windows 预读取文件的痕迹
Windows Prefetch 系统介绍
显然,微软实施预读取系统并不是为了取证分析,而是为了提高 Windows 的性能。预读取系统正如其名称所暗示的那样——它预读取系统预期用户将需要的文件并将它们加载到内存中,从而使文件的“获取”更快、更有效。这是一种人工智能,它试图预测你接下来需要什么,并为你做好准备。
Windows预读取系统的美妙之处在于,即使用户足够聪明,想要掩盖自己的踪迹,它也能透露出大量用户正在做什么的信息。自Windows XP以来,预读就一直是Windows操作系统的一部分,在Windows 10中默认启用预读。
这些预取文件包含有关所用文件的元数据。此元数据包括应用程序的最后使用日期、应用程序文件的存储位置、应用程序的使用次数以及其他一些对取证调查有用的信息。这可能是试图证明嫌疑人确实使用了与犯罪有关的应用程序的关键信息,即使它已从系统中删除。
PreFetch 文件的位置
可以在C:\windows\prefetch下找到预取文件

如你所见,在这个c:\windows\prefetch目录中,我们可以看到所有预取文件。这些是以 .pf 结尾的文件,但我们也可以看到数据库文件 (.DB)。现在,让我们关注 .pf 。
分析 Windows 预取
我们需要解析文件来获得它包含的所有信息。有许多程序能够解析这些文件,而且它们都工作得很好,但Nirsoft的免费WinPrefetchView是最容易使用的,它具有漂亮、直观的GUI(大多数取证套件,如EnCase、FTK、PECmd和Oxygen等也能够进行预取解析)。
它将抓取所有预取文件并如下解析它们。

以360safe为例,我们可以看到.exe的路径在哪里,它运行的次数,以及最后一次运行的时间。这些都可能是取证调查的关键信息。还请注意,在下面的窗格中,它列出了程序使用的每个文件以及文件的路径。
浏览器取证
通常,嫌疑人使用的网络浏览器可以为我们提供大量关于嫌疑人在系统被捕获之前在线做什么的信息。由于使用浏览器在线进行了如此多的活动,我们应该能够在浏览器及其相关目录和数据库中找到几乎所有嫌疑人活动的证据。
在本实验中,我们将研究如何从浏览器中提取出可能对任何民事或刑事调查有用的内容。以火狐浏览器为例
对于 Mozilla Firefox 及其许多变体,大部分信息都存储在 SQLite 数据库中。我们可以根据操作系统在不同的位置找到这些数据库。
Windows中的 数据库路径:
C:\Users<user>\AppData\Roaming\Mozilla\Firefox\Profiles<profile folder>\places.sqlite
Step 1:在 Mozilla 中使用 SQLite 查找浏览器证据
SQLite 现在被许多需要小型、轻量级关系型数据库的浏览器、应用程序和移动设备使用。由于其轻量级的特性,它在移动设备和移动应用程序中越来越受欢迎。在这种情况下,任何有能力的取证调查员需要去熟悉它是至关重要的,因为它正变得非常流行。
要查看或查询这些SQLite数据库中的数据,我们需要一个数据库可视化工具,这里选择我们熟悉的Navicat。
Step 2:查询数据库
我们可以在在 moz_places表中查看用户在浏览器中输入的内容

查找特定的用户输入
SELECT * FROM moz_inputhistory WHERE input like '%keyword%'
使用 sysinternals 进行实时分析
很多时候,作为取证调查员,我们需要在企业调查或事件响应中检查实时系统,而不需要或没有时间制作取证映像。在某些情况下,例如违反公司政策或入侵尝试,我们不会那么严格的准备证据,而只是想立即知晓系统上发生的事情。
Sysinternals工具包可以很好地进行这样的分析。
当我们怀疑系统被黑客入侵并且我们试图了解恶意软件正在使用哪些进程以及它是如何运行时,Windows Sysinternals 特别有用。
工具列表(按字母顺序排列):
AccessChk - 让您查看用户和组对文件、目录、注册表项等的访问权限类型。
AccessEnum - 您的文件系统和注册表安全设置的完整视图。
AdExplorer - Active Directory 查看器和编辑器。
AdInsight - 用于对 Active Directory 应用程序进行故障排除的 LDAP 实时监控工具。
AdRestore - 能够恢复已删除的 Active Directory 对象。
自动登录 - 轻松配置自动登录机制。
Autoruns - 显示配置为在启动时运行的程序。
BgInfo - 在桌面上显示有关计算机的相关信息,例如计算机名称、IP 地址等。
CacheSet - 一个小程序,用于操作系统文件缓存的工作集参数。
ClockRes - 显示系统时钟的分辨率。
Contig - 对指定文件进行碎片整理。
Coreinfo - 显示逻辑处理器和物理处理器之间的映射。
Ctrl2Cap - 过滤系统键盘类驱动程序的内核模式设备驱动程序。
DebugView - 监控本地系统上的调试输出。
桌面 - 允许您组织多达四个虚拟桌面。
Disk2vhd - 创建物理磁盘的 VHD(虚拟硬盘)版本。
DiskExt - 返回有关卷分区所在磁盘的信息。
DiskMon - 记录并显示所有硬盘活动。
DiskView - 硬盘驱动器的图形地图。
DiskUsage (DU) - 报告指定目录的磁盘空间使用情况。
EFSDump - 允许您查看谁有权访问加密文件。
FindLinks - 报告指定文件存在的文件索引和硬链接。
句柄 - 显示有关任何进程的打开句柄的信息。
Hex2dec - 将十六进制转换为十进制,反之亦然。
连接点 - 创建连接点(组合来自多个位置的目录的符号链接)。
LDMDump - 让您准确检查存储在系统磁盘副本中的内容。
ListDLLs - 报告加载到进程中的 DLL。
LiveKd - 允许您运行 Kd 和 Windbg 内核调试器。
LoadOrder - 显示系统加载设备驱动程序的顺序。
LogonSessions - 列出当前活动的登录会话。
MoveFile - 转储挂起的重命名/删除值的内容。
NTFSInfo - 显示有关 NTFS 卷的信息。
PageDefrag - 显示您已将分页文件和注册表配置单元碎片化。
PendMoves - 转储挂起的重命名/删除值的内容。
PipeList - 列出管道。
PortMon - 监控并显示所有串行和并行端口活动。
ProcDump - 监控 CPU 峰值。
Process Explorer - 显示有关加载哪些句柄和 DLL 进程的信息。
Process Monitor - 显示实时文件系统、注册表和进程/线程活动。
PsExec - 允许您在远程系统上执行进程。
PsGetSid - 允许您将 SID 转换为其显示名称,反之亦然。
PsInfo - 收集有关本地或远程系统的关键信息,包括内核构建和内存量。
PsPing - 实现 ping 功能。
PsKill - 可以杀死本地和远程系统上的进程。
PsList - 显示有关进程、内存和线程的信息。
PsLoggedOn - 这显示谁在使用本地或远程机器上的哪些资源。
PsLogList - 允许您在安全凭证不允许的情况下登录远程系统。
PsPasswd - 允许您更改本地或远程系统上的帐户密码。
PsService - Windows 的服务查看器和控制器。
PsShutdown - 允许您注销控制台用户或锁定控制台等。
PsSuspend - 允许您暂停本地或远程系统上的进程。
RAMMap - 一种物理内存使用分析工具,用于查看 Windows 如何分配物理内存。
RegDelNull - 允许您搜索和删除注册表项。
注册表使用 (RU) - 报告注册表空间使用情况。
RegJump - 直接打开 Regedit 到指定的注册表路径。
RootkitRevealer - 检测 rootkit。
SDelete - 允许您删除一个或多个文件/目录或清理驱动器上的可用空间。
ShareEnum - 允许您锁定文件共享。
ShellRunas - 允许您在不同的帐户下启动程序。
SigCheck - 显示文件版本号、时间戳和数字签名详细信息。
流 - 允许您查看哪些 NTFS 文件具有与之关联的备用流。
字符串 - 在文件中搜索指定的字符串。
同步 - 允许您将所有文件系统数据刷新到磁盘。
TCPView - 显示系统上所有 TCP 和 UDP 端点的详细列表。
VMMap - 一个进程虚拟和物理内存分析工具。
VolumeID - 允许您更改 FAT 和 NTFS 磁盘的 ID。
WhoIs - 为指定的域名或 IP 地址执行注册记录。
WinObj - 显示 NT 对象管理器名称空间的信息。
ZoomIt - 用于技术演示的屏幕缩放和注释工具。
EXIF数据提取
网络取证Wireshark 基础
数据包捕获
启动Wireshark选择要从中捕获数据包的网络接口

分析窗口
现在,Wireshark 将开始从您的网络接口捕获数据包并将它们打包成 .pcap 格式。这是数据包捕获的标准文件格式
在 Wireshark 中看到三个单独的分析窗口。在下面的屏幕截图中标记为 #1 的顶部窗口称为数据包列表窗口。可以看到通过此窗口实时移动的彩色编码数据包。

中间的窗口,标记为 #2,被称为数据包详细信息窗口。此窗口为我们提供来自 #1窗口 中所选数据包的报头信息。
最后,#3窗口,数据包字节窗口,显示该数据包原始数据的十六进制,可与 ASCII 转储。
创建过滤器
一般来说,会有太多信息无法进行有用的分析。数据包以每分钟数百或数千的速度飞行。为了有效地使用 Wireshark,我们需要过滤流量以仅查看我们感兴趣的数据包。Wireshark有一种简单的过滤语言,您应该了解它以便在取证调查中有效和高效地使用它。
通过我们接口传输的数据包有许多不同的协议。我们要应用的第一个过滤器是协议过滤器。请记住,TCP/IP 是一套协议,我们希望将我们的分析集中在几个协议上。
在过滤器窗口中,输入“tcp”。你会注意到它变成绿色,表示你的语法是正确的(当你的语法不正确时,它保持粉红色)。现在,单击过滤器窗口最右侧的箭头按钮以应用过滤器。

当你这样做的时候,Wireshark会过滤掉所有的流量,但tcp流量除外。你可以对任何协议执行相同的操作,如“http”,“smtp”,“udp”,“dns”和许多其他协议。尝试一些,看看什么样的流量正在通过你的接口。
如果我们只想查看来自特定 IP 地址的流量,我们可以创建一个过滤器,仅显示来自该地址的流量。我们可以通过进入过滤窗口来做;
ip.addr==
注意Wireshark过滤器语法中的双等号(==)。单个=在此语法中不起作用。
在这里,如果我想查看传入或传出 IP 地址 192.168.1.107 的流量,那么如下所示:
ip.addr == 192.168.2.10

现在,您将只看到进出该 IP 地址的流量。
我们还可以按端口过滤流量。如果我只想查看发往端口 80 的 TCP 流量,我可以创建如下过滤器:
tcp.dstport==80

在创建过滤器时,我们最常使用==作为过滤器中的操作符。只要我们在协议中查找众多字段中的一个,这就可以正常工作。但如果要在数据包中查找字符串,就必须使用“contains”操作符。所以,如果我在寻找含有bilibili字样的数据包,我可以创建如下所示的过滤器。
tcp contains bilibili

我们可以在3号窗口的ASCII显示中看到单词bilibili。
最后,我们可以打开显示过滤器表达式窗口,如下所示。


这个窗口的左边是可以过滤的字段的长列表。这是数百个协议及其包含的字段。可以展开一个协议并找到它的所有字段并选择感兴趣的字段。
右上角窗口包括“关系”选项。这些包括:
== 等于
!= 不等于
> 大于
< 小于
>= 大于或等于
<= 小于或等于
contains 协议或字段包含值
matches 协议或文本字段匹配正则表达式
尝试使用这些其他操作符和字段创建过滤器,感受一下Wireshark可以为你做什么。
追踪流
在某些情况下,不是检查特定协议的所有包或传输到特定端口或IP的所有包,而是希望跟踪通信流。Wireshark可以让您轻松完成这一任务。例如,在一个企业里,你试图跟踪一个躺平的、心怀不满的员工的对话,那么这将非常有用
要跟踪流,只需单击一个数据包,然后右键单击它即可。


这将打开一个窗口,其中包含此流中的所有数据包及其内容。注意最左侧窗口底部的统计信息(261KB)和显示内容的方法(ASCII)。
统计
最后,我们可能想要收集关于我们的数据包捕获的统计信息。这在创建正常流量的基线时特别有用。只需单击 Wireshark 顶部的统计选项卡,就会出现一个下拉菜单。在我们的例子中,让我们向下导航到 IPv4 Statistics,然后是All Addresses。
当我们单击时,它将打开一个如下所示的窗口,其中将显示我们的数据包捕获中的每个IP地址的统计信息

对于网络工程师和数字取证调查者来说,Wireshark是分析网络流量的必备工具。每个数字取证调查员都应该熟悉这个强大的工具。
取证实战
磁盘分析
内存分析
PCAP分析
反取证
掩盖BASH Shell记录
经常使用Linux的人喜欢这样一个事实:只需使用上下箭头就可以恢复之前使用的命令。这为我们重新输入命令节省了大量时间。保存BASH shell的历史记录是一个名为bash_history的文件。但同时,如果对我们在系统上的活动进行调查,这个方便的BASH历史记录可能是致命的。由于几乎所有的黑客攻击都是从Linux命令行完成的,我们的活动可以很容易地通过检索这些命令来解密和恢复。
保存的历史命令
Linux 将您的命令历史记录存储在隐藏文件 ~/.bash_history 中。
more ~/.bash_history

这和熟练的取证调查员发现我们的历史是一样的。这或许不是一件好事。
禁用历史
如果不想让BASH shell保存命令的历史记录,可以将环境变量HISTSIZE设置为零。HISTSIZE决定存储多少命令。默认情况下,该值设置为500或1000。
我们可以通过键入来阻止 BASH shell 保存我们的命令;
export HISTSIZE=0

现在,shell将不再保存我们的命令历史记录,但是与此同时我们将失去在Linux系统上工作时检索命令的便利。一般沙雕才会这样做。
清除历史
我们可以通过简单地使用带有-c(clear)开关的history命令来清除当前 BASH shell 上的历史记录,而不是禁用命令历史记录。
history -c

然后,为了确保将更改写入磁盘,我们需要使用 -w 开关告诉历史命令这样做
history -w
这只清除当前shell的历史记录。在其他shell中运行的命令将保留,因此我们需要在每个shell中使用此命令来完全删除我们的命令历史。这可能不是清除历史的最方便的方法,它需要我们记住并返回去清除我们正在使用的每个 shell。
清除用户的完整历史记录
清除命令历史记录更有效、更方便的方法是将/dev/null写入bash_history文件,然后使用 history -c 清除当前 shell。我们可以构造一个命令来执行此操作,然后退出shell。
cat /dev/null > ~.bash_history && history -c && exit

现在,当我们查看 shell 历史记录或 bash_history 时,我们可以看到它们是空的。

粉碎历史
尽管删除这些文件很棒,但众所周知,一个知识渊博的取证调查员仍然可以恢复这些被删除的文件。BASH 有一个命令,shred,它执行它所暗示的,它粉碎目标文件。在这种情况下,即使取证人员能够找到bash_history文件,它也将是不可读的。
shred ~/.bash_history

我们可以在这里看到,当我们查看这个文件时,它只是一堆毫无意义的二进制数据。
但文件被粉碎的事实本身可能被认为是恶意活动的证据。我们可以进一步通过将shred命令和将/dev/null写入bash_history相结合来消除这种情况。这将首先粉碎bash_history文件,然后清空它,最后使用 history -c 命令清除命令本身的证据并退出。
shred ~/.bash_history && cat /dev/null > .bash_history && history -c && exit

现在,当有人去查看我们的命令历史时,它将是空的,当他们试图恢复被删除的文件时,他们只会找到被粉碎的文件。very nice!我们没有留下任何证据,成功地掩盖了我们的踪迹!
自动清除命令历史记录
最后,我们可能希望自动化这个过程,以便每天删除我们的命令历史记录。通过这种方式,如果我们忘记删除历史记录,系统将在一天结束时自动为我们做这件事。
输入 crontab -e打开crontab表
然后在文件末尾输入:
1 * * * shred ~/.bash_history && cat /dev/null > .bash_history
该命令将在每天凌晨 1 点执行,首先粉碎 bash_history,然后清除 bash_history。请注意,这里没有包含history -c命令,因为它是一个内部 BASH shell 命令,不能在 crontab 中使用。
让我们来看看在美剧MR robot第三季的第一集中,Elliot是如何清除他的踪迹的
BleachBit
BleachBit是一款免费的开源软件,它不仅可以删除文件,还可以将文件和任何闲置空间粉碎,使其几乎不可能恢复受影响的文件。不仅如此,BleachBit还足够聪明,可以删除取证调查人员可以找到的其他文件和应用程序痕迹,如最近使用(MRU)、PreFetech文件、剪贴板内容、cookie、历史文件、临时文件、内存转储、卸载程序等。

练习:
https://www.honeynet.org/challenges/challenge-1-of-the-forensic-challenge-2010-pcap-attack-trace/
https://github.com/stuxnet999/MemLabs
参考:
https://www.secrss.com/articles/7374
https://blue.y1ng.org/
https://github.com/Bypass007/Emergency-Response-Notes