深入了解NTFS: USN日志、dfir_NTFS和基于文物的调查
一名熟练的攻击者如果花时间研究取证,就会知道如何修改文件时间戳。有些人会进一步删除他们的工具、清除事件日志并在外泄或引爆之前重命名文物。但大多数人没有考虑到,因为大多数培训没有仔细涵盖这方面,NTFS保持着分散在至少三个独立结构上的分层审计轨迹,清理其中一个通常不会触及其他的。主文件表(Master File Table),USN日志和$LogFile分别捕获文件系统活动的不同维度,以不同的粒度和不同的保留特性。当分析师知道如何关联这三者时,他们讲述的故事被完全压制的难度远远超过任何单一日志或时间戳所暗示的。本文将以实际的术语走访该结构:每个文物包含什么,如何提取,以及它们之间的交集在调查中最有用的地方。简而言之,NTFS在每个文件中至少在两个独立的位置存储文件元数据:$STANDARD_INFORMATION和$FILE_NAME,在MFT内部。攻击者可以通过标准API修改一个但不能同时修改两个。USN日志按顺序记录每个文件系统的更改事件,能够存活于文件删除,并且通常在活跃卷上保留大约20天的活动。$LogFile是一个低级事务日志,记录NTFS元数据上的重做/撤消操作,为属性最后被写入的时间提供独立的证据。dfir_ntfs和MFTECmd是互补工具:一个提供对原始NTFS结构的编程访问;另一个提供用于时间线关联的分析师准备好的CSV输出。文件雕刻在MFT元数据损坏或丢失时仍然很有用,但最好视为最后的手段。关联所有三个文物层次可以生成比任何单一来源更有力的时间线。文件系统下的结构在深入工具之前,清楚地了解NTFS实际存储的关于文件的信息是有帮助的,因为这些文物的取证价值只有在理解所涉及的冗余之后才会显得明显。每个NTFS卷上的文件至少在主文件表($MFT)中有一个条目(早期概述)。每个MFT条目为1024字节,其中包含的内容包括两组不同的时间戳。第一组位于$STANDARD_INFORMATION属性中:四个MACB时间戳(修改、访问、创建、$MFT条目修改),大多数工具和Windows资源管理器界面会暴露这些。第二组位于$FILE_NAME属性中,NTFS内核驱动程序在创建文件时记录,并在更狭窄的情况下进行更新。关键的取证含义是,$FILE_NAME时间戳由内核写入,不能通过标准的Win32API(如SetFileTime)进行修改。大多数时间戳篡改工具只能达到$STANDARD_INFORMATION。这个不对称性是NTFS取证中最可靠的时间戳操纵的单一指标。一个文件的$STANDARD_INFORMATION创建时间早于$FILE_NAME创建时间在正常文件系统操作中是不可能的。内核在创建时从$FN复制$SI值;任何后来的$SI追溯时间将与内核写入的$FN值相偏离。当您看到这种偏差时,您正在读取元数据记录中的矛盾,而不是进行推理。MFT还存储文件的逻辑大小、物理分配、属性列表,以及对于小文件(通常少于700字节)来说,文件内容本身作为MFT条目中的本地属性。这对于雕刻很重要:删除一个本地文件不会释放任何集群,它只是将MFT条目标记为可重用。内容会在条目被覆盖之前存活。USN日志:文件系统的事件流USN日志($Extend$UsnJrnl)是自Windows 2000以来可用的NTFS功能(专门帖子),并在现代Windows系统上默认启用。其主要流$J记录卷上每个文件系统更改的顺序日志:文件创建、重命名、删除、属性更改、安全描述符更新等。每个记录包含一个64位USN标识符、文件名、父MFT引用、原因代码位掩码(例如,USN_REASON_FILE_CREATE、USN_REASON_RENAME_OLD_NAME、USN_REASON_BASIC_INFO_CHANGE)和一个时间戳。$MAX替代数据流存储有关日志本身的元数据,包括配置的最大大小,这控制日志的回溯长度。在一个活跃的卷上,这通常覆盖大约20天的活动,尽管活动频繁的系统可能保留的时间明显更短。您可以在一个实时系统上检查这个:fsutil usn queryjournal C:。对于DFIR目的,USN日志很有价值,因为它跟踪变化而不是静态文件状态。一个被删除、时间戳篡改或重命名的文件仍然会留下记录。考虑到这个...
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡