Partitions/File Systems/Carving
最后更新于
最后更新于
硬盘或SSD磁盘可以包含不同的分区,目的是在物理上分隔数据。 磁盘的最小单元是扇区(通常由512B组成)。因此,每个分区的大小都需要是该大小的倍数。
它分配在磁盘的第一个扇区中,位于引导代码的446B之后。这个扇区对于指示PC应该从哪里挂载分区很重要。 它允许最多4个分区(最多只能有1个是活动的/可引导的)。但是,如果您需要更多分区,可以使用扩展分区。这个第一个扇区的最后一个字节是引导记录签名0x55AA。只能标记一个分区为活动的。 MBR允许最大2.2TB。
从MBR的字节440到443,您可以找到Windows磁盘签名(如果使用Windows)。硬盘的逻辑驱动器字母取决于Windows磁盘签名。更改此签名可能会阻止Windows引导(工具:Active Disk Editor)。
格式
0 (0x00)
446(0x1BE)
引导代码
446 (0x1BE)
16 (0x10)
第一个分区
462 (0x1CE)
16 (0x10)
第二个分区
478 (0x1DE)
16 (0x10)
第三个分区
494 (0x1EE)
16 (0x10)
第四个分区
510 (0x1FE)
2 (0x2)
签名 0x55 0xAA
分区记录格式
0 (0x00)
1 (0x01)
活动标志(0x80 = 可引导)
1 (0x01)
1 (0x01)
起始磁头
2 (0x02)
1 (0x01)
起始扇区(位0-5);柱面的高位(6-7)
3 (0x03)
1 (0x01)
起始柱面的最低8位
4 (0x04)
1 (0x01)
分区类型代码(0x83 = Linux)
5 (0x05)
1 (0x01)
结束磁头
6 (0x06)
1 (0x01)
结束扇区(位0-5);柱面的高位(6-7)
7 (0x07)
1 (0x01)
结束柱面的最低8位
8 (0x08)
4 (0x04)
分区前的扇区数(小端)
12 (0x0C)
4 (0x04)
分区中的扇区数
要在Linux中挂载MBR,首先需要获取起始偏移量(您可以使用fdisk
和p
命令)
然后使用以下代码
LBA(逻辑块寻址)
逻辑块寻址(LBA)是一种常用的方案,用于指定存储在计算机存储设备上的数据块的位置,通常是硬盘驱动器等二级存储系统。LBA是一种特别简单的线性寻址方案;通过整数索引来定位块,第一个块为LBA 0,第二个为LBA 1,依此类推。
GUID分区表,简称GPT,因其与MBR(主引导记录)相比增强的功能而备受青睐。GPT以其全局唯一标识符为分区而脱颖而出,具有以下几个显著特点:
位置和大小:GPT和MBR都从扇区0开始。但是,GPT使用64位,与MBR的32位形成对比。
分区限制:GPT在Windows系统上支持最多128个分区,并可容纳高达9.4ZB的数据。
分区名称:提供了使用最多36个Unicode字符命名分区的功能。
数据弹性和恢复:
冗余:与MBR不同,GPT不将分区和引导数据限制在单一位置。它在整个磁盘上复制这些数据,增强数据完整性和弹性。
循环冗余校验(CRC):GPT采用CRC来确保数据完整性。它积极监视数据损坏,一旦检测到,GPT会尝试从另一个磁盘位置恢复损坏的数据。
保护性MBR(LBA0):
GPT通过保护性MBR实现向后兼容性。此功能位于传统MBR空间中,但旨在防止旧的基于MBR的实用程序错误地覆盖GPT磁盘,从而保护GPT格式化磁盘上的数据完整性。
混合MBR(LBA 0 + GPT)
在支持通过BIOS进行基于GPT的引导的操作系统中,第一个扇区也可能仍然用于存储引导加载程序代码的第一阶段,但修改以识别GPT分区。 MBR中的引导加载程序不得假定扇区大小为512字节。
分区表头(LBA 1)
分区表头定义了磁盘上可用的块。它还定义了组成分区表的分区条目的数量和大小(表中的偏移量80和84)。
8 (0x08)
4字节
UEFI 2.8的版本1.0(00h 00h 01h 00h)
12 (0x0C)
4字节
以小端序表示的头部大小(以字节为单位,通常为5Ch 00h 00h 00h或92字节)
16 (0x10)
4字节
头部的CRC32(从偏移量+0到头部大小的小端序),在计算过程中将此字段清零
20 (0x14)
4字节
保留;必须为零
24 (0x18)
8字节
当前LBA(此头部副本的位置)
32 (0x20)
8字节
备份LBA(另一个头部副本的位置)
40 (0x28)
8字节
用于分区的第一个可用LBA(主分区表的最后一个LBA + 1)
48 (0x30)
8字节
最后一个可用LBA(次要分区表的第一个LBA - 1)
56 (0x38)
16字节
混合端序的磁盘GUID
72 (0x48)
8字节
分区条目数组的起始LBA(主副本中始终为2)
80 (0x50)
4字节
数组中的分区条目数量
84 (0x54)
4字节
单个分区条目的大小(通常为80h或128)
88 (0x58)
4字节
分区条目数组的CRC32(小端序)
92 (0x5C)
*
保留;对于块的其余部分必须为零(对于512字节的扇区大小为420字节;但对于更大的扇区大小可能会更多)
分区条目(LBA 2–33)
分区类型
更多分区类型请参阅https://en.wikipedia.org/wiki/GUID_Partition_Table
在使用ArsenalImageMounter挂载取证镜像后,您可以使用Windows工具Active Disk Editor检查第一个扇区。在下图中检测到了一个MBR在扇区0并进行了解释:
如果是GPT表而不是MBR,则应在扇区1中出现签名_EFI PART_(在上图中为空)。
FAT12/16: MSDOS, WIN95/98/NT/200
FAT32: 95/2000/XP/2003/VISTA/7/8/10
ExFAT: 2008/2012/2016/VISTA/7/8/10
NTFS: XP/2003/2008/2012/VISTA/7/8/10
ReFS: 2012/2016
FAT (文件分配表) 文件系统围绕其核心组件设计,即位于卷开头的文件分配表。该系统通过维护两份副本的表来保护数据,即使其中一份损坏,也能确保数据完整性。表和根文件夹必须位于固定位置,对系统的启动过程至关重要。
文件系统的基本存储单元是一个簇,通常为512B,包含多个扇区。FAT已经通过多个版本的演变:
FAT12,支持12位簇地址,处理多达4078个簇(UNIX为4084个)。
FAT16,升级到16位地址,从而容纳多达65,517个簇。
FAT32,进一步使用32位地址,允许每个卷有惊人的268,435,456个簇。
FAT版本之间的一个重要限制是4GB的最大文件大小,由用于文件大小存储的32位字段所施加。
根目录的关键组件,特别是对于FAT12和FAT16,包括:
文件/文件夹名称(最多8个字符)
属性
创建、修改和最后访问日期
FAT表地址(指示文件的起始簇)
文件大小
Ext2是不记录日志分区的最常见文件系统(不经常更改的分区,如引导分区)。Ext3/4是记录日志的,通常用于其余分区。
一些文件包含元数据。这些信息是关于文件内容的,有时可能会对分析人员感兴趣,因为根据文件类型的不同,它可能包含信息如下:
标题
使用的MS Office版本
作者
创建和最后修改日期
相机型号
GPS坐标
图像信息
您可以使用像exiftool和Metadiver这样的工具来获取文件的元数据。
正如之前所见,文件“删除”后仍然保存在几个地方。这是因为通常从文件系统中删除文件只是将其标记为已删除,但数据并未被触及。然后,可以检查文件的注册表(如MFT)并找到已删除的文件。
此外,操作系统通常保存有关文件系统更改和备份的大量信息,因此可以尝试使用它们来恢复文件或尽可能多地获取信息。
File/Data Carving & Recovery Tools文件切割是一种尝试在大量数据中查找文件的技术。此类工具的工作方式有3种主要方式:基于文件类型的头部和尾部,基于文件类型的结构,以及基于内容本身。
请注意,此技术无法用于检索分段的文件。如果文件未存储在连续的扇区中,则此技术将无法找到它,或者至少无法找到部分文件。
有几种工具可用于文件切割,指示您要搜索的文件类型
File/Data Carving & Recovery Tools数据流切割类似于文件切割,但不是寻找完整文件,而是寻找有趣的信息片段。 例如,与寻找包含记录的URL的完整文件不同,此技术将搜索URL。
File/Data Carving & Recovery Tools显然,有方法可以**“安全地”删除文件和有关它们的部分日志**。例如,可以多次覆盖文件内容以垃圾数据,然后删除有关文件的**$MFT和$LOGFILE的日志,并删除卷影复制**。 您可能会注意到,即使执行了该操作,仍可能记录文件存在的其他部分,这是取证专业人员工作的一部分,是要找到它们。
iHackLabs Certified Digital Forensics Windows