【 摘 要 】 文章分析了Linux操作系统中文件时间戳的更新情况。通过对相关工具的研究,阐述了如何获取、分析时间戳,为取证工作提供了依据。

【 关键词 】 计算机取证;Linux操作系统;时间戳;Ext2/3/4 【 中图分类号 】 TP309

1 引言

计算机取证中关于时间的分析非常重要,在一些情况中可直接用来还原案件发生的过程,是取证分析的基础。文件的时间戳是文件系统对文件发生变化的记录,一般包括创建时间、最后修改时间和删除时间。由于每一个案件几乎都会涉及到对文件的分析,所以掌握文件时间戳的更新情况至关重要。目前,Windows系统中关于时间戳的分析较多,有大量工具和文献对其进行详细描述,但Linux中涉及较少。针对此情况,本文以Linux下常见的Ext2/3/4文件系统中时间戳的概念、类型及底层结构为基础,详细分析了其更新规律,并简单介绍了几款分析时间戳的工具,希望对计算机取证工作提供一些理论依据,有助于取证工作的进行。

2 文件的时间戳

在任何一个文件系统中,都有若干时间属性对文件进行记录,最为常见的MAC时间用来表示文件的Modification Time(文件内容的最后修改时间)、Access Time(文件的最后访问时间)、Change Time(文件属性的最后修改时间),此外还有一些系统对文件的创建时间(文件或目录首次被写到磁盘上的时间)和删除时间(文件被用户删除的时间)做了记录,给取证工作提供了大量信息。如图1所示为Windows系统中文件属性的简单查看结果,其中表示时间的属性有文件的创建时间、修改时间和访问时间。

Linux操作系统将所有内容表示为文件,这些文件按照树状结构组织在一个根目录下,每一个文件都由目录项、索引节点和数据块组成,其中目录项用来存放文件名和索引节点号,索引节点记录着文件的基本属性,包括文件的大小、时间戳等重要信息,数据块存放文件的内容。Linux操作系统中有许多命令都可以显示文件的属性,如图2为Linux系统中使用stat命令查看文件属性的结果,与Windows中的文件系统时间戳不同的是Linux系统将文件的创建时间改为文件属性的修改时间,即呈现的是MAC时间。

Linux操作系统支持多种文件系统,如Ext2、Ext3、Ext4、vFat、swap等,其中Ext2/3/4文件系统为许多Linux版本的默认文件系统,本文将做详细分析。

3 Ext2/3/4 文件系统的时间戳

Ext2/3/4文件系统的时间戳储存在索引节点中,放在文件大小属性之后。同时,由于Ext4文件系统的时间戳与Ext2/3 文件系统相比,时间属性增加为64位表示,首先我们将分别分析时间属性的底层数据结构。

3.1 Ext2/3文件系统中的时间戳

Ext2和Ext3文件系统底层结构完全相同,不同之处在于Ext3增加了日志功能,表1是Ext2/3文件系统索引节点的简单结构图。由图中可知,Ext2/3文件系统的索引节点为128字节,时间戳共四个,分别是文件的最后修改时间、最后访问时间、属性最后修改时间和删除时间,每个时间戳由8字节组成,存放在索引节点起始位偏移8-39字节处。

3.2 Ext4文件系统中的时间戳

Ext4文件系统的底层结构相对于Ext2/3有较大改变,如表2为Ext4文件系统的索引节点结构图,由图可知Ext4文件系统的索引节点扩大位256字节,时间戳有五个:文件的最后修改时间、最后访问时间、属性最后修改时间、删除时间和创建时间,每个时间戳增大为16字节表示,扩大的部分全部存储在索引节点的后部,如最后访问时间是由一个索引节点的第9到12字节和141到144字节构成。

4 时间戳变化规律

由于时间戳只记录了其最后一次更新的时间,所以其极易改变,如使用系统中的cat、grep、more、less、tail、file、cp等命令操作文件会改变文件的访问时间,create、write、utime等命令会对文件内容访问时间进行更新,create、mv、chmod等命令会对文件属性修改时间进行更新,rm命令对文件的删除时间进行更新。另外,在Ext4文件系统中增加了文件的创建时间,使用系统中的create命令可更新此时间戳。

从用户角度来讲,对文件的操作一般包括创建、修改、复制、删除等,考察这些操作对文件时间戳的变化情况,可以判断文件的来源和日期,在取证过程中起着重要作用。

我们以Ubuntu9.04操作系统为实验平台,在其上分别搭建了Ext2、Ext3、Ext4三个文件系统,之后分别在这些系统中对文件进行创建、修改、复制和删除操作,结果见表3。

通过实验结果,我们可总结出几点规律。

(1)若一个文件的修改时间早于访问时间和属性修改时间,此文件极有可能是从网上下载或是其它地方复制过来的。

(2)一个文件不可能出现修改时间或者创建时间晚于访问时间,若有则文件异常。

5 时间戳相关分析工具

取证工具中有许多工具可用来分析时间戳,如Linux操作系统中的find命令、TCT(The Coroner’s Toolkit)中的mactime命令等。

find命令的-mtime、-atime、ctime选项可用来查找指定目录下文件的修改时间、访问时间、属性修改时间的变化情况,如图3所示为使用find命令查找根目录下24小时内文件修改时间发生更新的文件,其中-n表示n天以内,+n你表示n以前。

TCT工具是由D. Farmer和W. Venema与2000年开发的一个开源取证工具,它基于Unix操作系统,可对Ext2/3、FFS等文件系统进行取证。TCT工具中的mactime用来分析指定目录或数据源中文件的MAC更新情况,并按照时间顺序显示,如图4为使用mactime命令的运行结果,其表示的意思是显示根目录“/”下文件的MAC时间戳在2012年3月2日之后变化的情况。