谁在引导?解析主引导记录
Hal Denton //
你是否曾经拿到过一个加密硬盘来进行取证分析?可能会出什么问题?你脑海中闪过的第一个念头可能是怀疑解密密钥是否随硬盘一起提供。如果是这样,你的疑问完全正确,因为没有解密密钥,分析几乎无法进行。但如果你有解密密钥,而你的取证软件却没有提示你输入挑战/响应来解密硬盘,接下来你该怎么办?
在这篇博客中,我将讨论一个场景:原本应该获取加密的全盘镜像,但事情出了差错……我收到了一个加密卷。在本文结束时,你应该能理解主引导记录(MBR)及其操作方法。
作为取证实践者,有时我们需要深入挖掘,弄清楚事物的工作原理。
基础知识
在开始之前,你需要了解一个核心术语:硬盘上的扇区是什么?扇区是磁盘上最小的存储单元,通常大小为512字节(根据硬盘容量,它也可能更大)。此外,你还需要了解常见的扇区地址类型,如柱面磁头扇区(CHS)和逻辑块地址(LBA)。CHS使用磁盘几何结构将扇区映射到每个盘片的磁头和柱面号,这需要从操作系统到BIOS的转换来查找磁盘上的数据。CHS不适用于大于8.1GB的磁盘。CHS的前身是LBA,它为每个扇区分配顺序地址,从而无需进行转换。操作系统告诉BIOS在磁盘上查找数据的地址。由于MBR 32位寻址的限制,LBA适用于最大2TB的磁盘。
主引导记录(MBR)概述
MBR是一段汇编代码,长度为512字节,位于硬盘的扇区0。以下是在十六进制编辑器中查看的MBR示例,我将用它来分解组成MBR的3个数据结构。
为了帮助理解十六进制编辑器视图,我使用的编辑器将数据显示为3列,如下所示。第1列告诉你行中第一个字节的字节偏移量。例如,如果我想手动检查字节偏移量450处的值,我可以使用第1列找到最接近450的偏移量,即下面的448(值21),然后向右计数两个字节(值07)。第2列显示加载到十六进制编辑器中的数据十六进制值,第3列显示十六进制值的ASCII字符转换。
MBR – 数据结构概述
组成MBR的3个数据结构是引导代码、分区数据和MBR结束签名。我将按字节范围和字节长度分解每个结构,以便你对每个结构有一个基本的了解。
通过数学验证我们的MBR,总字节大小应为512字节(446+16+16+16+16+2=512字节)。
MBR – 引导代码概述
引导代码包含指令,告诉计算机如何处理分区表并定位操作系统。
MBR – 分区信息概述
分区长度为16字节,对于具有512字节扇区的驱动器,最多可容纳四个标准分区。通过使用扩展分区,可以有超过4个分区。类型字段标识应存在的数据类型,如FAT、NTFS等。下面显示了所有4个分区在MBR中的位置,并标识了每个分区。
- MBR – 第1分区
- MBR – 第2分区
- MBR – 第3分区
- MBR – 第4分区
MBR – MBR结束签名
在MBR的末尾是55 AA。你可以将其视为MBR的页脚。页脚通常表示结构的结束。一些文件结构有页眉和页脚来标识结构的开始和结束。例如,你可以参考JPEG的文件结构来查看页眉(SOI)和页脚(EOI)。
深入解析分区信息
现在你对MBR数据结构有了基本的了解,让我们进一步分解分区信息,以便知道如何操作它。我将在下面分解第1和第2分区,通过包含组成其分区信息的字节表来帮助你理解字节的含义。第3和第4分区为空(00)或空白,这意味着MBR只有两个分区(第1和第2分区)。
MBR – 第1分区详解
读取MBR时,请记住这是汇编代码,需要从右向左读取。为了帮助转换,我从字节461到字节446从右向左读取,并从左向右写下。此外,如果你决定使用下表,请从下到上填写分区数据,从扇区大小开始。
将地址从十六进制转换为十进制,以识别分区的起始扇区和大小。是的,就像在学校一样——拿出你的TI计算器、操作系统计算器或在线转换器(咳嗽 CyberChef 咳嗽)来进行转换。以下是Windows计算器的截图(切换到程序员模式)。当你输入十六进制值时,它将为你转换为十进制。
MBR – 第2分区详解
重复与分解第1分区相同的过程,但从字节477到字节462从右向左读取,但从左向右写下。
综合应用
现在我已经理解了MBR的工作原理,我创建了一个512字节的MBR文件,并修改了“第1分区”信息,使LBA起始地址位于扇区1。为了实现这一点,我必须将1(十进制)转换为十六进制(0001),但还要按相反顺序放置(1000),以便正确读取LBA地址。然后,我将获取的镜像附加到我的合成MBR文件中。我继续将新镜像添加到取证工具中——砰——收到了我的挑战和响应提示来解密硬盘。
工具
分区识别/验证:
The Sleuth Kit (TSK) 实用程序称为 mmls,可以识别分区信息,包括起始和结束位置以及每个分区的长度。
分区数据操作:
十六进制编辑器可用于查看驱动器的原始内容或进行修改。有几个开源或免费试用的版本可用——
- Linux: Bless, hexyl
- Windows: 010 Editor, Notepad++
参考文献
- File System Forensic Analysis by Brian Carrier: https://www.amazon.com/System-Forensic-Analysis-Brian-Carrier/dp/0321268172
- Master Boot Record: https://www.researchgate.net/publication/300373786_Analyzing_Master_Boot_Record_for_Forensic_Investigations
- JPEG file structure: https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure
- The Sleuth Kit: https://sleuthkit.org/
- Bless Hex Editor: https://github.com/afrantzis/bless
- Hexyl Hex Editor: https://github.com/sharkdp/hexyl
- 010 Editor: https://www.sweetscape.com/010editor/
- Notepad++ Hex Editor: https://notepad-plus-plus.org/