这学期初,给学生们出了一道课后练习题,让同学们巩固课堂上学习的进制转换、字节序、数字时间、WinHex & X-Ways Forensics相关的知识。以管理员权限打开WinHex,加载C盘,找到$MFT文件,该文件的0x50至0x6F之间有4个filetime时间戳,他们是小端字节序存储的。请尝试解析第一个时间戳到类似“2023-03-14 09:00:00”的格式,请写出详细的操作步骤并附上各环节必要的截图。
步骤1:右击“WinHex”图标,选择“以管理员身份运行”。如下图所示。
步骤2:点击WinHex菜单栏“工具”→“打开磁盘”,然后选择逻辑驱动器中的C盘[ 如果多个同学使用同一台电脑做实验,第一个同学选择C盘,第二个同学则可选择D盘,以此类推。],并点击“确认”按钮。如下图所示。
步骤3:找到文件中0x50-0x57范围的数据,对于当前WinHex界面,此数据位于第五行前八个字节,即“A7 1E C7 89 E4 B8 D6 01”。如下图所示。
步骤4:将数据转换为十六进制数字。由于此处的filetime时间戳是小端字节序(Little-endian)存储,“A7 1E C7 89 E4 B8 D6 01”表示的实际数字为“01D6B8E489C7AEA7”。步骤5:将十六进制数字转换为十进制数字。打开Windows内置的计算器工具,点击菜单栏“查看”,选择“程序员”。在十六进制模式下输入“1D6B8E489C7AEA7””,然后点击“十进制”转换为十进制数字,即为“132496530757627559”。如图 5所示。
根据filetime时间戳的定义,“时间起点”为1601-01-01 00:00:00,记录的时间精度为100纳秒(即10-7秒),所以数字“132496530757627559”意味着时间戳“A7 1E C7 89 E4 B8 D6 01”所表示的是从1601-01-01 00:00:00经过132496530757627559个100纳秒后的时间,即从1601-01-01 00:00:00经过13249653075秒的时间。步骤6:日期时间计算。一天等于86400秒(60×60×24=86400)。13249653075/86400 = 153352.466145833;13249653075%86400 = 40275。所以步骤5中计算的时间为1601年1月1日后又经过了153352天加40275秒。步骤7:日期计算。打开Windows内置的计算器工具,点击菜单栏“查看”,勾选“日期计算”。计算得知1601年1月日至2020年11月12日经过了153352天。如图 6所示。
所以,“A7 1E C7 89 E4 B8 D6 01”代表的是2020年11月12日经过40275秒后的时间。步骤8:时间计算。一小时等于3600秒。40275/3600 = 11.1875;40275%3600 = 675。进一步换算可知675秒等于11分15秒。综上,filetime时间戳“A7 1E C7 89 E4 B8 D6 01”表示的时间是UTC时间2020-11-12 11:11:15,换算成北京时间则是2020-11-12 19:11:15。
实际上,题目中的$MFT文件0x50至0x6F之间有4个filetime时间戳的第一个,正好是$MFT的创建时间,也是该分区的格式化时间。Filetime时间戳在Windows中被广泛使用,NTFS文件系统中文件的时间全部是以这种格式保存。回收站痕迹、快捷方式文件、跳转列表中的时间也以filetime时间戳保存。
文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246924&idx=1&sn=fd617675023bd538c7404972ff8a50d2&chksm=82ea54a5b59dddb3e77da80153e0e9f7b779813f9d41b7ce61db56c34bcd8a4f1eadf365f29b&scene=0&xtrack=1#rd
如有侵权请联系:admin#unsafe.sh