数据恢复(五)-USB磁盘镜像恢复
本文以USB设备为例,对磁盘镜像进行数据恢复。
创建磁盘镜像副本
在数字取证和数据恢复中,创建镜像永远是第一步。
数据恢复首先需要一个额外的存储设备。虽然可以直接从原始磁盘恢复数据,但不建议这样做。最好的做法是制作存储设备的副本,然后在设备副本上进行数据恢复操作。直接在原始存储设备上操作可能会导致数据损坏或因过程中出现的失误而造成不可逆转的数据丢失。
fdisk -l

在输出中可以看到USB设备的文件系统是FAT32系统。要创建USB的原始镜像,使用以下“ DD” 命令:
dd if=/dev/sdc1 of=/tmp/usb_image.dd bs=512 conv=noerror,sync status=progress
其中if是usb设备的位置,of是镜像输出的位置和文件名。
为什么要创建原始镜像?

文件系统使用类似列表的数据结构来存储文件。每个数据群集都包含一个指向下一个群集的地址。
- 未使用(0x0000)
- 不良群集(0xfff7)
- 文件中的最后一个群集(0xfff8-0xffff)
上述图示代表FAT文件系统中包含三个文件的文件夹。由于每个簇的大小相同,因此可以计算文件的大小以及它包含的簇的数量。这使得更容易检查在数据雕刻过程中是否已恢复整个文件或其部分内容。
例如,如果 FILE2.TXT 文件被删除,包含该文件的簇 ([4,5,6…10]) 将被标记为可用。在物理上,删除期间零位将被写入这些区域。
如果选择压缩镜像,压缩将在创建镜像过程中处理重复的值(例如零位)。但是,镜像检查工具必须支持此压缩格式,否则数据地址可能会损坏。并非所有数据恢复程序都支持这些压缩格式。因此,通常首选RAW镜像。
检测镜像文件
apt install sleuthkit -y
安装sleuthkit取证分析套件。
---(root@kali)-[/var/tmp] --# fls -h 缺少镜像名称 用法: fls [-adDFlhpruvV] [-f fstype] [-i imgtype] [-b dev_sector_size] [-m dir/] [-o imgoffset] [-z ZONE] [-s seconds] image [images] [inode] 如果未提供 [inode],则使用根目录 -a: 显示 "." 和 ".." 条目 -d: 仅显示已删除的条目 -D: 仅显示目录 -F: 仅显示文件 -l: 显示长版本 (类似 ls -l) -i imgtype: 图像文件格式 (使用 '-i list' 获取支持的类型) -b dev_sector_size: 设备扇区的大小 (以字节为单位) -f fstype: 文件系统类型 (使用 '-f list' 获取支持的类型) -m: 以 mactime 输入格式显示输出,其中 dir/ 作为图像的实际挂载点 -h: 在 mactime 输出中包含 MD5 校验和哈希 -o imgoffset: 图像文件中的偏移量 (以扇区为单位) -P pooltype: 池容器类型 (使用 '-P list' 获取支持的类型) -B pool_volume_block: 起始块 (仅用于池卷) -S snap_id: 快照 ID (仅用于 APFS) -p: 显示每个文件的完整路径 -r: 递归处理目录条目 -u: 仅显示未删除的条目 -v: 将详细输出发送到 stderr -V: 打印版本 -z: 原始机器的时区 (例如 EST5EDT 或 GMT) (仅在使用 -l 时有用) -s seconds: 原始机器的时间偏差 (以秒为单位) (仅在使用 -l 和 -m 时有用) -k password: 加密卷的解密密码
安装完成后
fls -d usb_image.dd fls -a usb_image.dd

如图所示,即使已删除,也保留了写入USB的所有文件和目录名称。但是我们只能尝试哪些文件可恢复。并非列出的每个文件或目录都能成功恢复。
Data Carving和Data Recovery的区别?
中文翻译过来是数据雕刻,感觉听起来有些奇怪。
数据雕刻是一种用于从存储设备中恢复数据的技术。如果主文件表 (MFT) 完整且可访问,则可以使用它来定位和恢复数据。但如果逻辑分区损坏且无法检索信息,恢复软件将无法访问所需的信息。在这种情况下,必须执行数据雕刻。
主文件表 (MFT) 是 NTFS 文件系统中使用的数据表。它保存有关文件的元数据,并用于管理文件系统和提供对文件的快速访问。
关键区别:
- 范围:Data Recovery 是更广泛的概念,而 Data Carving 是 Data Recovery 中的一种特定技术。
- 依赖性:Data Recovery 可能依赖于现有的文件系统结构,而 Data Carving 则直接处理原始数据,不依赖文件系统元数据。
- 应用场景:当文件系统仍然可用时,通常会首先尝试常规的 Data Recovery 方法;当文件系统严重损坏或无法访问时,才会使用 Data Carving 技术。
Data Carving 可以看作是 Data Recovery 工具箱中的一个专门工具,适用于特定的、更具挑战性的数据恢复场景。
PhotoRec 如何工作?
文件系统将数据存储在块(也称为簇)中。PhotoRec 首先尝试确定块(或簇)的大小以恢复文件。如果文件系统完好无损,PhotoRec 可以从引导记录(FAT、NTFS)中读取此值。否则,PhotoRec 会逐节读取介质,寻找文件签名并根据其位置计算块/簇大小。一旦计算出块大小,PhotoRec 就会逐块(或逐簇)读取介质,并根据其签名数据库(魔术字节)检查每个块。
如果数据未损坏,则恢复的文件应与原始文件大小相同或更大。在某些情况下,PhotoRec 可以从文件头确定原始文件大小,因此恢复的文件可能会被裁剪到获得的大小。但是,如果恢复的文件小于标头指示的大小或发现不完整,则会被丢弃。
成功恢复文件后,PhotoRec 将检查先前发现文件签名但文件未成功恢复的数据簇,并将重新尝试恢复这些数据簇。通过这种方式,它可以通过识别丢失的部分来成功恢复碎片文件。
数据雕刻:使用PhotoRec从USB镜像中恢复已删除的文件
photorec

photorec usb_image.dd


选择镜像文件。如果磁盘有分区,请选择要从中恢复数据的分区。如果存在多个分区,想在整个磁盘上操作,PhotoRec 始终提供“整个磁盘”选项,也就是图中的Unknown。

PhotoRec 是一款强大的数据恢复工具,它不考虑文件系统。所以需要指定磁盘上使用的文件系统类型。这种方法确保即使文件系统受到严重损坏,恢复操作也不会受到阻碍。
这里我们知道USB磁盘镜像使用的是FAT32的文件系统,就选择下面的Other。

最后,选择仅扫描未使用的空间还是扫描NTFS格式分区上的整个区域。 进程开始后,需要等待扫描一段时间。 PhotoRec会将恢复的文件保存在名为“recup_dir”的目录中。

无法恢复原本的文件名,但是内容是正确的。
注意:恢复的文件不得保存到正在工作的同一磁盘上。强烈不建议这样做,因为它有可能覆盖和损坏恢复结果的风险。这也是为什么恢复之前必须要先创建磁盘镜像的原因。
数据恢复: 使用Sleuth套件从USB镜像中恢复已删除的文件
The Sleuth Kit 是一套用于数据分析和恢复的综合工具和资源。它与 Autopsy 集成,Autopsy 是一个自动化这些过程的图形用户界面。 Autopsy 通过直观和可扩展的界面简化了数据分析。
fls usb_image.dd

“istat”命令可以查看基于文件inode号的文件详细信息。例如,可以查看inode号为48180的文件的详细信息。
istat usb_image.dd 48180

在FAT文件系统中,文件信息和名称位于根目录和文件条目区域。相比之下,在NTFS文件系统中,此信息包含在“$STANDARD_INFORMATION”和“$FILE_NAME”属性中。

dd if=usb_image.dd bs=512 skip=36128 count=2

icat –r usb_image.dd 48180
“icat”命令从指定的磁盘扇区提取数据并写入文件。 这里我们从文件名中了解恢复数据的格式,我们指定将其另存为名为.conf的文件。
魔术字节/文件签名
如果不知道要恢复的文件的扩展名或格式怎么办?
“魔术字节”或文件签名是理解和解决这种情况的重要概念。魔术字节或文件签名是用于识别文件或协议的特殊值。这些值通常位于文件的前几个字节中,但在某些格式中,它们可能位于最后几个字节中。
例如,在下面的图片中,我们看到了计算器应用程序(calc.exe)的十六进制代码。 当我们在这些十六进制代码的开头看到十六进制值“4D 5A”时,我们可以判断该文件是 Windows 操作系统的可执行文件(PE 格式)。

同样地,当检查下图中的十六进制代码时,我们看到前几个字节是“89 50 4E 47 0D 0A 1A 0A”。这表明该文件是一个PNG文件。

魔术字节值不仅用于确定文件格式,还用于验证目的。数据恢复软件使用其魔术字节(签名)列表来识别文件格式,并以适当的方式将其呈现给最终用户,从而提高数据恢复操作的可靠性。
魔术字节值用于识别和验证文件类型,并在数据恢复和文件雕刻过程中起着重要作用。
PhotoRec 在成功恢复文件后,会检查先前的数据块,这些数据块中发现了文件签名,但文件无法完全恢复。然后它会重试恢复过程。这种方法有助于 PhotoRec 识别和恢复先前被忽略的碎片文件中丢失的部分。
让我们用一个例子来说明:
假设正在尝试恢复一个文件。知道该文件分布在10个簇上,并格式化为JPEG。在恢复过程开始时,仔细检查从第一个簇到第十个簇的数据。如果在第五个簇中找到不同的文件签名,这表明文件的完整性不再被保证,并且另一个文件已被覆盖。
在另一种情况下,此值可能会得出结论,文件可能已被写入剩余的五个簇中的其他位置,可能与其他文件交错。因此,遇到的任何无意义或部分数据都会被评估,并考虑它可能属于该文件。在恢复过程中或之后进行的检查可以确定恢复是否成功。
可以通过访问以下网址来查看不同文件格式的魔术字节/文件签名列表:https://en.wikipedia.org/wiki/List_of_file_signatures
赞赏微信赞赏
支付宝赞赏
发表评论