文件系统取证基础——NTFS、FAT32、Ext4
学取证之前,我一直觉得文件系统就是个“存东西的地方”,跟平时用电脑没啥关系。直到有一次在CTF比赛里拿到一个磁盘镜像,打开啥也看不出来,才知道这事没那么简单。
文件系统到底是什么? 说白了就是操作系统给硬盘定的规矩——文件怎么存、怎么找、怎么管。没有这套规矩,硬盘里就是一锅粥的01数据,操作系统根本不知道从哪儿开始读。
常见的文件系统就三种:Windows的NTFS和FAT32、Linux的Ext4。在取证场景里,这三样我基本都碰过,一个一个来说。
NTFS——Windows默认的“大户人家”
NTFS全称是“新技术文件系统”,从Windows NT开始一直用到现在。NTFS最核心的东西叫MFT(主文件表) ,这个太关键了。
MFT就是个“户口登记处”。硬盘上每一个文件、每一个文件夹,在MFT里都有一条对应的记录。默认情况下每条记录1024字节(格式化时也可以设成4096字节)。这条记录里啥都存:文件名、文件大小、创建时间、修改时间、访问时间、文件内容存在硬盘的哪个位置……基本上你想知道的关于这个文件的所有信息,MFT里都有。
那MFT对我们搞取证的人来说意味着什么?意味着即使文件被人删了、改了名、挪了地方,只要MFT里的那条记录还没被覆盖,你就能知道这个文件叫什么名字、什么时候创建的、什么时候被修改过。
NTFS里还有个挺有意思的东西叫ADS(备用数据流) 。这个功能设计出来本来是为了让文件和它的元数据能“共存”——比如你从网上下载了一个文件,系统可以在一个隐藏的“流”里记录“这个文件来自互联网”,而不会影响你正常打开文件。但攻击者也发现了这个功能——他们可以把恶意代码藏在这个隐藏的流里,常规的文件查看方式根本看不到。
NTFS里每个文件有两套时间戳:
SI(STANDARD_INFORMATION)和FN(FILE_NAME)。
FN由文件系统内核维护,普通用户态工具改不了;
SI用户态工具可以随意修改。攻击者篡改文件时间戳时,改的是SI。
所以如果发现SI的创建时间晚于FN的创建时间——
比如FN的创建时间——比如FN显示文件是2020年创建的,但$SI显示是2022年——就说明时间戳被人动过手脚。
FAT32——老当益壮的“老干部”
FAT32比NTFS老得多,现在新电脑很少用了,但U盘、SD卡、老款设备上还是很常见。FAT32的结构比NTFS简单得多,主要就三块:最开头的保留扇区(相当于“封面”,记录了文件系统的基本信息),中间的FAT表(一张索引地图,记录了每个文件占用了硬盘上的哪些位置),剩下的数据区(文件内容真正存放的地方)。
FAT32删除文件的逻辑特别有意思。你点“删除”之后,操作系统根本不会去动数据区里文件的实际内容,它只做两件事:一是在FAT表里把该文件占用的簇标记为“空闲,可以用了”,二是把目录项的第一个字节改成E5h(十六进制值E5),标记这个目录项已被删除。所以只要你删了文件之后没有往U盘里写新东西,文件内容就还完好无损地躺在数据区里,用恢复工具很快就能找回来。
但FAT32的缺点也很明显——它没有NTFS那套精细的元数据管理。NTFS能记录文件的创建、修改、访问三个时间,FAT32能记录的东西少得多。所以你用FAT32做时间线分析的时候,能拿到的线索是有限的。
Ext4——Linux的“主力选手”
Ext4是Linux系统上最主流的文件系统,我学的服务器运维课和网络安全课里,凡是涉及Linux的,基本都是Ext4。Ext4跟NTFS最大的不同在于它的日志(Journaling)机制。
简单说,Ext4在真正执行一个文件操作之前,会先把“我要干什么”写到一个专门的“日志”区域里,然后再去执行。万一在操作过程中系统突然断电或者崩溃了,重启之后系统可以去看日志,知道“哦,刚才那个操作没做完”,然后继续完成。这个设计大大提高了系统的可靠性。
但对取证来说,日志本身就是证据。如果攻击者入侵了一台Linux服务器,他做的每一个文件操作——创建文件、修改文件、删除文件——都会先记录在日志里,再真正执行。所以只要你能拿到Ext4的日志,就能还原出攻击者的完整操作轨迹。
另外,Ext4里有一个叫超级块的重要结构,记录了整个文件系统的元信息——总共多大、文件系统什么时候创建的、最后一次挂载是什么时候、总共被挂载过多少次。这些信息可以用来判断一个系统是否被篡改过。举个例子,如果某个硬盘声称“从买来就没怎么用过”,但超级块里显示的挂载次数高达几千次,那显然有问题。
我自己学文件系统的一点体会
说实话,纯看理论真的记不住。我的经验是多看磁盘镜像、多动手恢复文件。平时多逛逛CTF的练习平台,找那些带磁盘镜像的题目,拿来自己分析。工具先用FTK Imager和Autopsy,基本能覆盖大部分需求。
另外几个实操细节:拿到镜像第一件事就是看分区表,确认里面有几个分区、每个分区的文件系统是什么;镜像里标注的“未分配空间”一定要仔细看,所有已删除文件的残骸都在这里;MFT记录是金矿,用工具把MFT导出成表格慢慢翻;时间戳要对照着看,SI和SI和FN对不上的就有被篡改的嫌疑。
浙公网安备 33010602011771号