18 KiB
分区/文件系统/Carving
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的公司在HackTricks中做广告或下载PDF格式的HackTricks,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS家族,我们的独家NFT收藏品
- 加入 💬 Discord群 或 电报群 或 关注我们的Twitter 🐦 @hacktricks_live。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。
分区
硬盘或SSD磁盘可以包含不同的分区,目的是在物理上分隔数据。
磁盘的最小单元是扇区(通常由512B组成)。因此,每个分区的大小都需要是该大小的倍数。
MBR(主引导记录)
它分配在磁盘的第一个扇区中,位于引导代码的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
命令)
然后使用以下代码
#Mount MBR in Linux
mount -o ro,loop,offset=<Bytes>
#63x512 = 32256Bytes
mount -o ro,loop,offset=32256,noatime /path/to/image.dd /media/part/
LBA(逻辑块寻址)
逻辑块寻址(LBA)是一种常用的方案,用于指定存储在计算机存储设备上的数据块的位置,通常是硬盘驱动器等二级存储系统。LBA是一种特别简单的线性寻址方案;通过整数索引来定位块,第一个块为LBA 0,第二个为LBA 1,依此类推。
GPT(GUID分区表)
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)。
分区条目(LBA 2–33)
GUID分区条目格式 | ||
---|---|---|
偏移量 | 长度 | 内容 |
0 (0x00) | 16字节 | 分区类型GUID(混合端序) |
16 (0x10) | 16字节 | 唯一分区GUID(混合端序) |
32 (0x20) | 8字节 | 第一个LBA(小端序) |
40 (0x28) | 8字节 | 最后一个LBA(包括,通常为奇数) |
48 (0x30) | 8字节 | 属性标志(例如,位60表示只读) |
56 (0x38) | 72字节 | 分区名称(36个UTF-16LE代码单元) |
分区类型
更多分区类型请参阅https://en.wikipedia.org/wiki/GUID_Partition_Table
检查
在使用ArsenalImageMounter挂载取证镜像后,您可以使用Windows工具Active Disk Editor检查第一个扇区。在下图中检测到了一个MBR在扇区0并进行了解释:
如果是GPT表而不是MBR,则应在扇区1中出现签名_EFI PART_(在上图中为空)。
文件系统
Windows 文件系统列表
- 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
FAT (文件分配表) 文件系统围绕其核心组件设计,即位于卷开头的文件分配表。该系统通过维护两份副本的表来保护数据,即使其中一份损坏,也能确保数据完整性。表和根文件夹必须位于固定位置,对系统的启动过程至关重要。
文件系统的基本存储单元是一个簇,通常为512B,包含多个扇区。FAT已经通过多个版本的演变:
- FAT12,支持12位簇地址,处理多达4078个簇(UNIX为4084个)。
- FAT16,升级到16位地址,从而容纳多达65,517个簇。
- FAT32,进一步使用32位地址,允许每个卷有惊人的268,435,456个簇。
FAT版本之间的一个重要限制是4GB的最大文件大小,由用于文件大小存储的32位字段所施加。
根目录的关键组件,特别是对于FAT12和FAT16,包括:
- 文件/文件夹名称(最多8个字符)
- 属性
- 创建、修改和最后访问日期
- FAT表地址(指示文件的起始簇)
- 文件大小
EXT
Ext2是不记录日志分区的最常见文件系统(不经常更改的分区,如引导分区)。Ext3/4是记录日志的,通常用于其余分区。
元数据
一些文件包含元数据。这些信息是关于文件内容的,有时可能会对分析人员感兴趣,因为根据文件类型的不同,它可能包含信息如下:
- 标题
- 使用的MS Office版本
- 作者
- 创建和最后修改日期
- 相机型号
- GPS坐标
- 图像信息
您可以使用像exiftool和Metadiver这样的工具来获取文件的元数据。
已删除文件恢复
记录的已删除文件
正如之前所见,文件“删除”后仍然保存在几个地方。这是因为通常从文件系统中删除文件只是将其标记为已删除,但数据并未被触及。然后,可以检查文件的注册表(如MFT)并找到已删除的文件。
此外,操作系统通常保存有关文件系统更改和备份的大量信息,因此可以尝试使用它们来恢复文件或尽可能多地获取信息。
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
文件切割
文件切割是一种尝试在大量数据中查找文件的技术。此类工具的工作方式有3种主要方式:基于文件类型的头部和尾部,基于文件类型的结构,以及基于内容本身。
请注意,此技术无法用于检索分段的文件。如果文件未存储在连续的扇区中,则此技术将无法找到它,或者至少无法找到部分文件。
有几种工具可用于文件切割,指示您要搜索的文件类型
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
数据流切割
数据流切割类似于文件切割,但不是寻找完整文件,而是寻找有趣的信息片段。
例如,与寻找包含记录的URL的完整文件不同,此技术将搜索URL。
{% content-ref url="file-data-carving-recovery-tools.md" %} file-data-carving-recovery-tools.md {% endcontent-ref %}
安全删除
显然,有方法可以**“安全地”删除文件和有关它们的部分日志**。例如,可以多次覆盖文件内容以垃圾数据,然后删除有关文件的**$MFT和$LOGFILE的日志,并删除卷影复制**。
您可能会注意到,即使执行了该操作,仍可能记录文件存在的其他部分,这是取证专业人员工作的一部分,是要找到它们。
参考资料
- https://en.wikipedia.org/wiki/GUID_Partition_Table
- http://ntfs.com/ntfs-permissions.htm
- https://www.osforensics.com/faqs-and-tutorials/how-to-scan-ntfs-i30-entries-deleted-files.html
- https://docs.microsoft.com/en-us/windows-server/storage/file-server/volume-shadow-copy-service
- iHackLabs Certified Digital Forensics Windows
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
- 如果您想在HackTricks中看到您的公司广告或下载PDF版本,请查看订阅计划!
- 获取官方PEASS & HackTricks周边产品
- 探索PEASS Family,我们的独家NFTs收藏品
- 加入 💬 Discord群 或 电报群 或在Twitter 🐦 @hacktricks_live上关注我们。
- 通过向HackTricks和HackTricks Cloud github仓库提交PR来分享您的黑客技巧。