基于Windows 系统的文件时间线索分析研究
2022-10-18秦志红
秦志红
(河南警察学院网络安全系, 河南郑州 450005)
0 引言
近年来,电子数据在案件处理中被广泛使用,其证据价值也越来越高。 除了证明涉案线索事实依据等关键要素,操作系统附加在电子数据中的时间戳也非常重要。 时间信息可以将虚拟空间中的操作与现实世界的行为进行关联,在公安机关案件调查中作为关键线索,对形成完整的证据链具有非常重要的作用。 目前,各类案件涉及的电子数据来源仍然以Windows 操作系统为主,电子数据的主要表现形式为各类文件,Windows 通过文件时间戳、安全事件日志、NTFS 分区日志等方式对用户操作文件的行为进行记录[1]。 不同的Windows 版本,时间线索存储方式稍有区别,文中的实验操作均在Win10 环境下实现。
1 Windows 系统下常见的时间线索
Windows 系统具有较高的安全性,对文件操作的过程往往采取多种方式进行记录,这样就会在多个位置遗留时间痕迹,除了最常见的安全事件日志以外,NTFS 文件系统的元数据文件中也保留着多个时间线索。
1.1 文件时间戳
每个文件的属性中都包括创建时间、修改时间和访问时间,被称为文件时间戳。 Win10 系统下,文件的时间戳保存在文件的$MFT 中[2]。 用户对文件进行复制、剪切等操作时,操作系统会自动根据系统时间对$MFT 中的时间戳进行更新,有些特殊类型的文件还会有额外的时间属性,如,照片文件的exif 信息中会包括拍摄时间、曝光时间等,由此可以判断用户行为的先后顺序[3]。 文件时间戳最直接的查看方法是用Windows 资源管理器列出所需要的详细信息,然后以排序、筛选、搜索等方式锁定线索,但要确定时间戳的真实性、关联性,则需要深入分析文件的$MFT[4]。
1.2 NTFS 日志文件
Win10 的文件系统默认为NTFS,NTFS 属于日志型文件系统,对磁盘、文件等的修改会写入日志中,可以保证数据的安全性和可恢复性。 NTFS 的日志文件以元数据的形式进行保存,其中$Logfile 和$UsnJrnl 中包含了对分区和文件进行操作的大部分日志记录[5]。 $Logfile 类似数据库的事务管理,以页为单位进行存储,每页大小为2 048 KB,包括重启区域、重启区域备份和循环日志区域; $UsnJrnl位于$Extend 文件夹下,是变更日志文件,其包括两个流数据属性,分别是$J 和$MAX, $MAX 用来记录设置日志的大小、时间等信息,$J 中记录了对文件的创建、删除等操作[6]。
1.3 安全事件日志文件
Windows 操作系统对软硬件进行管理,过程中所发生的安全事件会以evtx 类型文件进行记录,这些日志文件具有特定的数据结构,包含事件级别、日期时间、事件类型、事件ID、来源等[7]。 事件级别按照所发生事件的严重程度或审核策略,分为信息、警告、错误、审核成功、审核失败[8]。 通过分析这些日志数据,可以获得用户在某个时间点所尝试进行的操作,以及操作系统认定的操作级别或者操作的结果为成功或失败。 Win10 系统自带的事件查看器可以打开evtx 文件,并能够按照日志的数据结构提取存储的记录,根据不同字段查找筛选特定时间的用户行为[9]。
2 文件时间线索分析
作为证据使用的电子数据,要符合合法性、客观性和关联性,其中文件时间信息的真实性尤其重要[10]。 下面针对Win10 下的文件$MFT 时间戳、NTFS 的$Logfile 和$UsnJrnl $J 元数据,以及evtx事件日志文件进行分析,研究如何正确分析时间线索、判断用户操作行为发生的顺序。
2.1 文件时间戳分析
通过文件属性可以获得时间戳,这个时间有没有可能被篡改,如果被篡改,是否能够检测到并且得到真实的时间戳呢? 要想解决这个问题,需要了解文件时间戳在系统中的存储方式。 Win10 操作系统以$MFT 属性来存储时间信息,分别保存在10 和30 属性中。 其中10 属性为基本属性,时间戳同文件属性的时间相同,30 属性为文件名属性,当文件名发生变化时,修改时间戳与10 属性一致[11]。 如图1 左所示为文件“1.jpg”文件记录表MFT 中的10属性,图1 右所示为文件“1. jpg”的属性。 由于WinHex 提取的$MFT 中的时间为UTC 时间,转换时区加8 小时后得到的结果,与文件属性中的创建时间、修改时间和访问时间比对,二者是一样的。
图1 文件属性中的时间戳
需要注意的是,图1 中所示文件的创建时间晚于修改时间这一现象,可以判断该文件是从其他位置复制过来的。
对文件重命名以后,系统首先把30 属性的时间修改为10 属性的时间,然后按照重命名的时间更新10 属性。 如图2 所示,“1.jpg”重命名为“2.jpg”后,10 属性和30 属性发生了变化。
图2 文件重命名以后的时间变化
文件的时间属性被人为篡改后,10 属性就会发生改变。 要判断这个时间是否真实,可以分析30 属性的时间,如果二者存在巨大差异,就存在文件时间被篡改的可能性。 此外,照片、Office 文档等类型的文件属性中还会有拍摄时间、创建内容时间等,可以和$MFT 中的时间相互印证,进一步确定时间是否真实。 如,照片文件的拍摄时间如果晚于文件的原始创建时间,则可以判断文件的创建时间是存在问题的。
除了判断文件时间属性的真实性,还可以通过时间序列分析用户行为。 以照片文件为例,一般拍摄时间最早,其次分别是30 属性的最近访问时间、修改时间、创建时间,最近的行为时间在10 属性中存储。
2.2 NTFS 日志文件中的元数据时间分析
NTFS 中的元数据大多留存用户各种行为的发生时间,其中对文件操作的痕迹会在$UsnJrnl 和$Logfile 中找到[12]。 $UsnJrnl 的$J 文件和$Logfile 的循环日志区域保存NTFS 分区中对文件的操作以及操作的具体时间,这两个元数据文件详细记录了用户对分区中各类文件所做的新建、改名等动作,按照时间序列分析操作过程,能够推断用户行为[13-14]。
以Win10 操作系统为例,提取NTFS 分区根目录下的$Logfile 元文件和$Extend 下的$UsnJrnl$J 文件,使用LogFileParser 和UsnJrnl2Csv 工具分别解析,把得到的UsnJrnl. csv 和LogFile. csv 导入Excel,结合Reason 字段含义,可以得到文件在具体时间所进行的操作。 一般来说,对文件的一项操作会同时产生多条日志,如,文件重命名以后,生成3条USN 记录, Reason 分别是RENAME _ OLD _NAME、RENAME_NEW_NAME 和CLOSE + RENAME_NEW_NAME;Logfile 日志则更复杂,重命名后添加6 条记录,除了对$UsnJrnl 的日志重新记录,还根据$STANDARD_INFORMATION 和$INDEX_ROOT 元文件,更新了文件时间戳。
如图3 所示,把文件“3. jpg”重命名为“4. jpg”后,“2022/4/13 9:36:24”在$UsnJrnl $J 中添加了3 条记录,同时$Logfile 按照$UsnJrnl $J 的更新时间添加3 行日志。 系统进一步对“4. jpg”的时间戳进行了修订,第一条$STANDARD_INFORMATION记录中的MFT 更新时间为“2022-04-13 09:36:23”,文件访问时间为“2022-04-13 09:36:17”,文件创建时间和修改时间没有变化。 重命名完成后,第二条$STANDARD_INFORMATION 记录显示,其没有改变文件的时间戳,但增加的$INDEX_ROOT 记录对文件时间戳进行了确认,创建时间、修改时间延续“3. jpg” 的 时 间 戳,MFT 时 间 和 访 问 时 间 按 照$STANDARD_INFORMATION 记录进行更新。 这样,整个操作完成后$Logfile 中添加了6 条日志,与$UsnJrnl$J 相关的3 条日志记录了重命名的操作过程,另外3 条日志记录用于更新时间戳。 通过分析可以得到,对文件进行重命名时,首先改变的是文件的访问时间,然后会进行改名操作,完成后更新MFT 时间,最后把原文件的创建时间和修改时间赋予新文件。
图3 文件重命名以后的NTFS 分区日志
此外,文件删除操作会在$UsnJrnl $J 中添加Reason 为CLOSE+FILE_DELETE 的记录, $Logfile随之更新,如果删除的为U 盘等无法恢复的存储介质文件,则只有1 条记录,否则会把删除文件重命名为$R 文件,时间戳的更新类似上面重命名操作过程。 重命名属于比较简单的文件操作,按照文件时间戳的变化过程很容易就能够推断用户行为。 较为复杂的是编辑文件操作的日志更新,在对文件进行编辑的过程中会生成多个~tmp 文件,时间也会随之不断变化,这样便可以大致推断用户编辑文件的时间序列。
2.3 安全事件日志文件中的时间序列分析
如果对文件系统或文件系统对象,如文件、文件夹等设置了安全审核权限,Windows 操作系统安全日志中就会留存针对这些对象操作的记录,Win10中这些记录保存在%SystemRoot% System32WinevtLogsSecurity. evtx 中,可以使用事件查看器或者EventLogView 之类的工具解析查看。 其中审核文件系统的事件ID 主要有4656、4658、4660、4663、4664、4985、5051 和4670 等,日志内容包括使用者、对象、进程信息、访问请求信息[15]。
使用者为访问对象的系统账户SID、账户名、帐户域、登录ID 等,需要注意的是,对象登录ID 与帐户的成功登录日志4624 中是一致的,在时间序列上应该是在4624 之后才能够生成文件访问日志,如图4 所示,“2022/4/25 16:34:27. 192”帐户“DESKTOP-RO8KL9M$ ”成功登录,“2022/4/25 16:34:35.995”该帐户请求对文件操作,安全ID、登录ID等保持一致。
图4 对文件操作的登录帐户信息
对象和进程信息部分指明操作的对象、对象句柄ID、执行操作的进程ID、进程名称等,这里操作的对象一般指文件或文件夹,进程ID 和内存中一样。相同的对象句柄ID 会出现在多条日志记录中,可以根据事件时间和句柄ID 推断操作对象。 如图5 所示为删除文件“3. jpg”的连续两条日志记录。 首先在“2022/4/25 16:35:04. 620”时间,内存进程explorer.exe 执行了删除操作,被删除对象的句柄ID为0x3c90;接下来在“2022/4/25 16:35:04.622”时间,事件记录ID4656 的日志中操作对象句柄ID 也为0x3c90,对象名为“DeviceHarddiskVolume8 est3.jpg”,说明前一条日志中记录的删除对象为“3.jpg”,Windows 操作系统的文件资源管理器进程是“C:Windowsexplorer.exe”,这里进程ID 0x207c 为十进制8316,与任务管理器中的explorer. exe 进程相对应,如果提取了内存镜像,可以两者结合并使涉案线索形成证据链。
图5 删除文件操作的日志
此外,4656、4663 等日志中还留存对文件等对象的访问请求信息,用于记录针对对象做不同操作时赋予进程的各种权限。 如读取文件数据权限ReadData、将数据写入文件权限WriteData、读取文件属性权限ReadAttributes、删除文件权限DELETE、对文件进行同步的权限SYNCHRONIZE 等,这些日志一般在时间序列上位于4660 之后。
3 文件时间线索分析在案件取证中的应用
尽管Windows 操作系统中留存了大量的时间线索,但是如果不能有效的把这些线索组织起来,各个时间不能形成完整的时间序列,也无法为案件溯源提供可靠帮助。 如上文以Win10 为例研究所述,针对文件操作的时间痕迹可以在文件时间戳、NTFS 日志文件、Windows 安全事件日志等处得到,把这些线索分类汇总、综合分析,相同的操作在时间上相互印证,可以加强案件证据的真实性、关联性,无论是审查单个证据,还是形成完整证据链都具有重要作用。下面笔者以某案件磁盘镜像中提取的线索为例,分析涉案文件操作时间的溯源过程。
3.1 检案摘要
本案中的涉案电子数据为Win10 操作系统下的文件“产权证明.pdf”,民警怀疑该文件是伪造的,嫌疑人可能进行了一些操作。 提取嫌疑人所使用电脑的硬盘镜像,对镜像进行检索,结果只发现了2 个最近访问快捷方式文件“产权证明.docx.lnk”和“产权证明.pdf. lnk”,判断嫌疑人曾经使用过docx 和pdf 格式的“产权证明”文件,并且原始文件已经被彻底销毁。 接下来希望通过进一步分析,确定嫌疑人伪造“产权证明.pdf”的行为。
3.2 案情分析过程
为了证明嫌疑人伪造了“产权证明. pdf”,采取本文的研究思路,结合相关文件留存在$MFT 时间戳、NTFS 文件系统元数据和系统安全事件日志等位置的线索进行时间序列梳理,进而推断嫌疑人对文件操作的行为过程。
首先,分析文件“产权证明. docx. lnk”的MFT属性,提取文件的创建时间为UTC +8“2022/04/07 15:58:06”,推断在这个时间WinWord 打开了文件“产权证明.docx”。 进一步分析操作系统的安全事件日志Security.evtx,以关键字“产权证明.docx”过滤日志记录,发现在“2022/4/7 15:58:06.602”内存进程WINWORD. EXE 请求访问对象“ Device HarddiskVolume8 est产权证明.docx”,访问请求信息为READ_CONTROL。 如图6 所示,二者在时间上可以相互印证,证明存在文件“产权证明. docx”,并且嫌疑人访问了该文件。
图6 “产权证明.docx.lnk”的时间戳和对应系统日志
接下来,如图7 所示,提取“产权证明.pdf.lnk”文件的$MFT,得到创建时间为UTC +8“2022/04/07 16:01:19”,与事件日志记录结合分析发现在这个时间WINWORD. EXE 访问了文件对象“产权证明.pdf”,并且请求得到写入数据权限,这表明在“2022/04/07 16:01:19”时间点WINWORD.EXE 创建了文件“产权证明.pdf”。
图7 “产权证明.pdf.lnk”的时间戳和对应系统日志
那么,在打开“产权证明.docx”到生成“产权证明.pdf”这段时间,嫌疑人是否对文件进行了编辑呢? 下面结合$LogFile 和$UsnJrnl $J,按照时间序列分析用户的操作行为。
(1) 2022/4/7 9:55:20 根据$UsnJrnl $J 中的Reason 为“FILE_CREATE ”,推断新建文件“产权证明. docx”;根据文件修改时间为“2022-04-03 07:47:50”,推断文件是复制或剪切过来的,如图8所示。
图8 新增文件“产权证明.docx”
(2) 如图9 所示2022/04/7 15:58:06,打开文件“产权证明.docx”,结合图6 中显示在事件日志中提取的线索,即同一时间创建的“产权证明. docx.lnk”文件,推断“产权证明. docx”位于“DeviceHarddiskVolume8 est”文件夹下,并且WINWORD打开文件“产权证明. docx”的同时,新建临时文件“ ~产权证明. docx”,创建时间和修改时间均为“2022/04/7 15:58:06”。
图9 打开文件“产权证明.docx”
(3) 2022/4/7 15:58:46 保存“产权证明.docx”,根据文件创建时间“2022/4/7 9:55:20”、修改时间“2022/4/7 15:58:46”,推断文件被修改后保存,如图10 所示。
(4) 2022/4/7 15:59:01 保存“产权证明.docx”,根据文件创建时间“2022/4/7 9:55:20”、修改时间“2022/4/7 15:59:01”,推断文件再次修改后保存,如图10 所示。
图10 修改文件“产权证明.docx”
(5) 2022/4/7 16:01:19 新建文件“产权证明.pdf”,如图11 所示。 结合图7 中显示的文件“产权证明.pdf.lnk”时间戳和系统事件时间,推断涉案的“产权证明. pdf”是由WINWORD 在修改“产权证明.docx”的基础上另存的文件。
图11 创建文件“产权证明.pdf”并删除原始文件
(6) 2022/4/7 16:01:49 删除“ ~产权证明.docx”,根据文件创建时间“2022/4/7 9:55:20”、修改时间“2022/4/7 15:59:01”,推断关闭“产权证明.docx”后没有保存,如图11 所示。
(7) 2022/4/7 16:05:38 根据$Logfile 和$UsnJrnl$J 中只存在“RENAME_OLD_NAME”而不存在“RENAME_NEW_NAME”的Reason 记录,推断彻底删除或者剪切了“产权证明.docx”和“产权证明.pdf”,如图11 所示。
3.3 案情梳理
通过分析涉案镜像中的相关文件,提取留存在文件$MFT 时间戳、NTFS 文件系统元数据、系统安全事件日志中的线索,能够推断出用户对文件操作的行为和时间,图12 展示了以时间轴的方式对案情进行梳理,呈现嫌疑人伪造“产权证明. pdf”的行为过程。
图12 嫌疑人伪造过程的时间轴
综上,结合$MFT 时间戳、安全事件日志和$LogFile、$UsnJrnl$J 中留存的时间线索,详细分析涉案相关文件的各类痕迹,能够合理推断嫌疑人执行了一系列操作,最终伪造了涉案文件“产权证明.pdf”,并销毁证据。
4 结语
文件操作过程中所留存的时间痕迹记录了用户行为的先后顺序,所形成的时间线索在电子数据取证中具有重要作用。 本文基于Windows 操作系统的文件管理模式,以Win10 为例综合文件MFT 属性、NTFS 文件系统日志元数据、系统安全事件等留存的时间线索,根据时间序列分析文件的操作过程,并推断用户行为,为还原案件真实场景提供参考。 此外,在研究过程中发现,对文件进行操作时系统会在同一时刻生成多条日志记录,这些记录表示用户的同一行为能够触发Windows 系统在多个位置遗留痕迹,如果其中某些日志被人为破坏,可以在其他位置找到蛛丝马迹。