Windows系统下Prefetch文件取证方法初探

2019-07-25 01:42陈俊珊黄君灿苏再添吴少华
网络空间安全 2019年3期
关键词:缓冲区痕迹应用程序

陈俊珊 黄君灿 苏再添 吴少华

摘   要:在电子数据取证中对痕迹的提取和分析是非常重要的一项工作,通过对应用程序运行痕迹的提取,可以分析出用户的行为特征,对计算机取证具有重要的意义。Prefetch(简称PF)是微软Windows操作系统用来存放系统预读信息的一种文件,该文件中包含可执行文件的名称、所调用DLL文件列表(Unicode)、路径、运行次数和最后一次运行时间等信息。由于PF文件格式没有官方的文档描述,在不同Windows系统下结构也有区别,而且国内目前对Windows 10下压缩型PF文件的研究较少。文章主要研究了Windows操作系统下的几种PF文件格式,提出了一种针对Prefetch文件取证的方法,通过提取并分析应用程序的运行痕迹,为案件的侦破提供重要的线索。

关键词:Prefetch;Windows 10;运行痕迹;取证

中图分类号:TP311.1          文献标识码:B

Abstract: In electronic data forensics, the extraction and analysis of traces is a very important work. By extracting the traces of the application program, we can analyze the user's behavior characteristics, which is of great significance to computer forensics. Prefetch (PF) is a file used by Microsoft Windows operating system to store system pre-reading information. The file contains the name of the executable file, the list of DLL files invoked (Unicode), the path, the number of runs and the last run time. Because PF file format has no official document description, the structure of PF file under different Windows systems is also different, and there is less research on compressed PF file under Windows 10 in China at present. This paper mainly studies several PF file formats under Windows operating system, and puts forward a method for forensics of Prefetch file. This method can extract and analyze the running trace of application program, and provide important clues for case detection.

Key words: Prefetch; Windows 10; running trace; forensics

1 引言

隨着计算机和网络技术的不断发展,计算机给人们生活带来极大便利的同时,针对计算机犯罪的不法行为也不断涌现,呈现的形式也越来越多样化。计算机犯罪不仅对个人和企业的利益造成影响,甚至严重危害到社会的发展和国家的稳定。在利用计算机进行犯罪的过程中,计算机的软硬件在使用过程都会产生各种痕迹,所有用户的正常和恶意行为都会被如实记录,通过对这些记录的提取和分析,可以得到敏感的信息以及用户的行为特征,对案件的侦查和取证具有重要作用[1]。PF文件是微软Windows操作系统用于存放系统已访问过文件的预读信息,里面记录了用户运行程序时的信息,其中包括可执行文件的名称、运行次数、最后运行时间等重要记录,这些记录都是由操作系统内部自动生成的痕迹[2],不掺杂人的主观意志,所以它对用户行为特征的分析具有重要意义。

PF文件格式没有官方的文档描述,而且在不同Windows系统中的结构也不完全一致,如果要对PF文件中的信息进行提取,需要理解它的文件结构以及不同版本系统的差别。Windows 10版本的系统对PF文件进行了压缩处理,需要先对压缩文件进行解压之后才能提取到数据。本文详细分析PF文件的结构和数据提取方法,同时针对Windows 10系统中经过压缩的PF文件进行重点说明。

2  技术综述

PF是从Windows XP系统开始,微软引入的一种预读取技术。当Windows系统启动时,会读取大量文件到内存进行处理,不同时间会加载相同文件的不同片段。因为多次打开和访问文件时会浪费大量的时间,为了加快程序的启动速度,操作系统在程序启动时会自动记录下启动过程都访问了哪些代码和数据,在下次启动时根据PF中记录的这些信息,可以更快地加载代码和数据到内存中[3]。操作系统通过Windows Cache Manager程序来跟踪程序启动过程中用到的代码和数据,再由系统的一个核心进程“NTKRNLPA.exe”把记录组织成PF格式的文件并写入到Prefetch文件夹,在下次启动相同的程序时,先从Prefetch文件夹中读取PF文件,根据PF文件的记录预先加载代码和数据到内存中[4]。

预读取文件存储在“%SystemRoot%\Prefetch”文件夹下,每个程序对应PF文件的名字是由应用程序可执行文件名称、英文半角破折号和8位十六进制哈希值组成的文件名,其扩展名为“.pf”,除扩展名外文件名全部大写,如360杀毒软件PF文件名称为“360SD.EXE-3F47D00F.pf”。文件名中的8位哈希值与应用程序运行位置相关,如果同一个应用程序是从磁盘不同位置中启动运行的话,在Prefetch目录下会产生两个不同的PF文件。在不同的Windows系统中,用于计算PF文件名哈希的函数不尽相同[5]。

3 实验分析方法

3.1 普通PF文件分析

(1) PF文件的头部结构如表1所示。

(2)PF文件的第一个DWORD字节的值表示PF文件的版本,在不同操作系统下的值不一样,主要包含几种[6],如表2所示。

(3)不同版本PF文件应用程序運行次数存放位置不同,如表3所示。

(4)不同版本PF文件应用程序最后一次运行时间存放位置不同,如表4所示。

通过对PF文件结构的分析可以从不同Windows操作系统的PF文件中提取出重要的信息,其主要流程如图1所示。

图2以Windows 7下的PF文件作为实例来分析说明如何从PF文件中提取应用程序名、运行次数和运行时间等信息。

各个片段从低地址到高地址说明如下:

(1)00H:0x00000017表示Windows 7下的PF文件;

(2)04H:0x41434353 表示“SCCA”签名;

(3)0CH:0x00029B5C 表示整个PF文件的长度;

(4)10H:表示应用程序的名称(360AI.EXE);

(5)4CH:0x7A8347C4 表示PF文件的哈希值(360AI.EXE-7A8347C4.pf);

(6)80H:0x01D246C9~0x7527432B 表示最后一次运行的时间(FILETIME);

(7)98H:0x0000002A 表示运行的次数。

从对Windows 7下的PF文件分析可以看出,在每个PF文件中都会记录用户实际运行的程序名称(Actual File Name)、运行的次数(Number Times Run)以及最后一次运行的时间(UTC Time),其中实际运行的程序名称和最后一次的运行时间对取证具有重要的意义,可以通过时间排序的方式得到案发时间附近用户运行的应用程序,通过查询应用程序的实际用途进一步分析出用户的行为特征,为后续的案件侦查提供重要的线索[7]。

3.2 Windows 10 PF文件分析

在Windows 10系统下,PF文件是经过压缩处理的,其文件结构如表5所示。

压缩型PF文件采用Micorosoft XPPESS Huffman(LZXPRESS)的压缩方法[8]。微软提供RtlDecompressBufferEx方法,可以对RtlCompressBuffer函数压缩的数据进行解压。

RtlDecompressBufferEx各项参数说明如下[9]。

(1)CompressionFormat:压缩格式,目前该函数支持的压缩方法有以下两种:COMPRESSION_FORMAT_LZNT1和COMPRESSION_FORMAT_XPRESS,PF使用COMPRESSION_FORMAT_XPRESS。

(2)UnCompressedBuffer:指向存放解压后数据的缓冲区,该参数是必需的且不能为NULL。

(3)UnCompressedBufferSize:存放解压后数据的缓冲区大小。

(4)CompressedBuffer:指向解压前数据块,该参数是必需的且不能为NULL。

(5)CompressedBufferSize:解压前数据块长度。

(6)FinalUncompressedSize:指向解压后的数据块长度。

(7)WorkSpace:指向解压过程的工作缓冲区,该缓冲区是在解压过程中用到的临时缓冲区,需要使用RtlGetCompressionWorkSpaceSize函数来计算正确的工作缓冲区大小。

RtlGetCompressionWorkSpaceSize各项参数说明如下。

(1)CompressionFormatAndEngine:压缩格式和引擎,PF文件在解压时使用COMPRESSION_FORMAT_XPRESS |COMPRESSION_ENGINE_STANDARD。

(2)CompressBufferWorkSpaceSize:计算RtlCompressBuffer的工作空间大小。

(3)CompressFragmentWorkSpaceSize:计算RtlDecompressFragment的工作空间大小,在PF解压中没有用到。

Windows 10 PF文件解压前和解压后的数据对比如图3和图4所示。

4 实验结果分析

为验证本文分析结果的正确性,针对Windows不同版本的操作系统下的PF文件进行了测试实验,实验结果如图5所示。

5 结束语

在电子取证过程中,侦查人员会通过提取用户在机算机使用过程中留下的各种痕迹,分析出用户的行为特征,再根据这些行为特征对犯罪动机和犯罪手法进行预判和推测。通过对操作系统自动产生的PF文件分析和提取可以精确地得到用户运行程序的痕迹,包括运行程序的名称、次数和最后一次的运行时间等信息,对这此信息进行挖掘可以进一步分析出更多有用的线索,对案件的侦破起到重要的作用[10]。

本文主要分析PF文件的结构并说明如何提取当中有用的信息,针对不同Windows操作系统中的PF文件进行全面的分析和对比,特别是对Windows 10下有压缩的PF文件做了详细的介绍,对计算机取证具有重要的意义。

参考文献

[1] 李可可.Windows环境下痕迹的提取与行为分析[J].电子技术与软件工程, 2013(22):239-240.

[2] 罗文华.Windows环境下可执行文件操作痕迹分析方法[J].刑事技术,2013(4):61-63.

[3] 李艳.Windows系统中Prefetch信息的提取与分析[J].信息安全与技术,2012,3(5):46-48.

[4] NK Shashidhar,D Novak.Digital Forensic Analysis on Prefetch Files[J].European Physical Journal Special Topics,2015,174(1):65-79.

[5] 李艳.Windows系统中特殊文件的提取与分析[J].信息技术,2012,36(7):194-196+198.

[6] WiKi.Windows Prefetch File Format[EB/OL].http://forensicswiki.org/wiki/Windows_Prefetch_File_Format,2016.

[7] HarlanCarvey,Carvey,王智慧,等.Windows取证分析[M].北京:科学出版社,2009.

[8] WiKi.Windows 10[EB/OL].http://www.forensicswiki.org/wiki/Windows_10,2016.

[9] Microsoft.RtlDecompressBufferEx function[EB/OL].https://msdn.microsoft.com/en-us/library/windows/hardware/hh439511(v=vs.85).aspx,2018.

[10] 张佑乐,王宏韬,李康,等.Windows使用记录软件的设计与实现[J].软件,2014,35(1):4-7.+

猜你喜欢
缓冲区痕迹应用程序
痕迹(外一幅)
删除Win10中自带的应用程序
小偷留下来的痕迹
谷歌禁止加密货币应用程序
缓冲区溢出漏洞攻击及其对策探析
初涉缓冲区
触摸岁月的痕迹(2005)
本期导读
Linux系统下缓冲区溢出漏洞攻击的防范
三星电子将开设应用程序下载商店