#prefetch #forensics #command-line #command-line-tool

app prefetchkit

分析 Microsoft Prefetch 文件的高级取证命令行工具

3 个稳定版本

使用旧 Rust 2015

1.0.2 2018年3月25日

#1869 in 命令行工具

WTFPL 许可证

110KB
324

prefetchkit

Crates.io Crates.io license

分析并从 Microsoft Prefetch 文件中提取信息的高级取证命令行工具。

完全支持以下 Prefetch 版本

  • Windows XP/2003
  • Windows Vista/7
  • Windows 8/8.1

部分支持以下 Prefetch 版本

  • Windows 10

描述

prefetchkit 是一个命令行工具,用于解析和读取 Microsoft Prefetch 文件。

Prefetch 文件(扩展名为 .pf.PF)是位于 C:\WINDOWS\Prefetch\ 的 Windows 系统文件。它们帮助 Windows 加载可执行文件更快。

prefetchkit 是一个 取证工具:它提取诸如最后运行的可执行文件、该可执行文件运行了多少次等信息。

使用 metrics 选项,您可以查看在加载或可执行文件过程中加载的文件。例如,如果用户在特定图片上启动了 Paint,该图片的路径将被存储在 Prefetch 文件中。

prefetchkit 使用 libprefetch 库解析和读取 Prefetch 文件。

安装

使用 cargo

cargo intall prefetchkit

功能

--帮助:

Prefetchkit 1.0.0
A powerful command-line tool for analysing Microsoft Prefetch Files

USAGE:
    prefetchkit [FLAGS] [OPTIONS] <TARGET>

FLAGS:
        --color      Put some colors, it never hurts
    -h, --help       Prints help information
    -m, --metrics    Print metrics (loaded DLL etc)
    -r, --reverse    Reverse order
        --version    Prints version information
    -v, --verbose    Display more information
    -V, --volumes    Print volumes

OPTIONS:
        --sort <sort>    Specify sort (if TARGET is a directory)
                               EXEC: by execution counter
                               TIME: by last execution time
                               NAME: by name [possible values: EXEC, TIME, NAME]

ARGS:
    <TARGET>    Target to analyze (pf files or directory containing pf files)

prefetchkit 接受一个位置参数,可以是特定的 Prefetch 文件或包含 Prefetch 文件的目录。

示例

$ prefetchkit MSPAINT.EXE-11CBB631.pf    # a specific file
$ prefetchkit xpmount/WINDOWS/Prefetch/  # The Windows Prefetch directory

基础

如果您在没有标志和选项的情况下运行 prefetchkit,您将得到一个包含可执行文件名称、最后执行时间和执行计数器的表格。

$ prefetchkit MSPAINT.EXE-11CBB631.pf
Executable name             Last execution time   Execution counter
MSPAINT.EXE                 2011-03-22 21:44:39                   2

在目录上,您可以使用 --sort=<VALUE> 选项进行排序:

  • EXEC - 执行计数器
  • TIME - 最后执行时间
  • NAME - 名称

此外,还有 -r 用于反转排序。

指标

指标是 Prefetch 文件的一个特殊部分,它指示与可执行文件一起加载的每个 DLL、DAT(和其他)文件。根据 Windows 版本的不同,您还可以获得诸如平均加载时间等额外信息。

要显示指标,请使用标志 -m

$ prefetchkit UPDATE.EXE-0CB058D8.pf -m
Executable name             Last execution time   Execution counter
UPDATE.EXE                  2011-03-13 11:09:24                   2
└─Metrics:
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\NTDLL.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNEL32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\UNICODE.NLS
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\LOCALE.NLS
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\SORTTBLS.NLS
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\DOWNLOAD\38F47E51C38A7A0EBC9C39DCA1EDD5A6\UPDATE\UPDATE.EXE
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\ADVAPI32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\RPCRT4.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\COMCTL32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\GDI32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\USER32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CRYPT32.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\MSVCRT.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\MSASN1.DLL
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\IMAGEHLP.DLL
....

使用详细模式标志(-),您将获得额外的信息

$ prefetechkit UPDATE.EXE-0CB058D8.pf -mv
Executable name             Last execution time   Execution counter
UPDATE.EXE                  2011-03-13 11:09:24                   2
└─Metrics:
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\NTDLL.DLL
   └─ start time: 0s duration: 50s average duration: ✘ MFT entry index: ✘
  
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\KERNEL32.DLL
   └─ start time: 50s duration: 52s average duration: ✘ MFT entry index: ✘
  
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\UNICODE.NLS
   └─ start time: 102s duration: 5s average duration: ✘ MFT entry index: ✘
  
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\LOCALE.NLS
   └─ start time: 107s duration: 3s average duration: ✘ MFT entry index: ✘
  
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\SORTTBLS.NLS
   └─ start time: 110s duration: 4s average duration: ✘ MFT entry index: ✘
  
  ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\DOWNLOAD\38F47E51C38A7A0EBC9C39DCA1EDD5A6\UPDATE\UPDATE.EXE
   └─ start time: 114s duration: 57s average duration: ✘ MFT entry index: ✘
....

当您启动一个可执行文件时,它会使用一个或多个卷上的文件。这类信息存储在预取文件中。即使可执行文件存储在外部卷上,也会创建一个预取文件。

从取证的角度来看,这可能非常有用:您可以确定USB闪存盘是否被用于Paint、Chrome或其他软件,或者特殊软件位于外部硬盘上。

对于卷,使用卷标志:-

$ prefetchkit UPDATE.EXE-0CB058D8.pf -V
Executable name             Last execution time   Execution counter
UPDATE.EXE                  2011-03-13 11:09:24                   2
└─Volumes:
  └─\DEVICE\HARDDISKVOLUME1

再次使用详细模式标志-,您将获得额外的信息,例如可执行文件使用的每个目录

$ prefetchkit UPDATE.EXE-0CB058D8.pf -Vv
Executable name             Last execution time   Execution counter
UPDATE.EXE                  2011-03-13 11:09:24                   2
└─Volumes:
  └─\DEVICE\HARDDISKVOLUME1
    ├─Creation time: 2009-03-04 10:23:57 Serial: 0x1054BA98
    └─Directories:
       ├─\DEVICE\HARDDISKVOLUME1\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\INF\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\DOWNLOAD\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\DOWNLOAD\38F47E51C38A7A0EBC9C39DCA1EDD5A6\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SOFTWAREDISTRIBUTION\DOWNLOAD\38F47E51C38A7A0EBC9C39DCA1EDD5A6\UPDATE\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CATROOT\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\SYSTEM32\CATROOT\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
       ├─\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\
       └─\DEVICE\HARDDISKVOLUME1\WINDOWS\WINSXS\X86_MICROSOFT.WINDOWS.COMMON-CONTROLS_6595B64144CCF1DF_6.0.2600.2180_X-WW_A84F1FF9\

版本

版本说明在RELEASES.md中提供。

兼容性

ole似乎对Rust 1.9及更高版本有效。

许可证

http://www.wtfpl.net/about/

依赖项

~2.5MB
~26K SLoC