分析预读取文件以获取执行历史
何时使用
- 当需要确定 Windows 系统上执行了哪些程序以及何时执行时
- 在恶意软件调查期间,用于确认可疑二进制文件的执行情况
- 在事件响应期间,用于建立应用程序使用的时间线
- 当需要将程序执行与其他取证关联项进行关联时
- 用于识别曾经运行过的反取证工具或未授权软件
先决条件
- 可访问取证镜像中的 Windows 预读取目录(C:\Windows\Prefetch\)
- PECmd(Eric Zimmerman)、WinPrefetchView 或 python-prefetch 解析器
- 了解预读取文件格式(版本 17、23、26、30)
- 已启用预读取功能的 Windows 系统(客户端操作系统默认启用,服务器默认禁用)
- 掌握预读取命名约定(APPNAME-HASH.pf)
工作流程
步骤 1:从取证镜像中提取预读取文件
# 挂载取证镜像
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
# 复制所有预读取文件
mkdir -p /cases/case-2024-001/prefetch/
cp /mnt/evidence/Windows/Prefetch/*.pf /cases/case-2024-001/prefetch/
# 统计并列出预读取文件
ls -la /cases/case-2024-001/prefetch/ | wc -l
ls -la /cases/case-2024-001/prefetch/ | head -30
# 对所有预读取文件计算哈希值以保证完整性
sha256sum /cases/case-2024-001/prefetch/*.pf > /cases/case-2024-001/prefetch/pf_hashes.txt
# 注意:预读取文件命名格式为 EXECUTABLE_NAME-XXXXXXXX.pf
# 哈希值(XXXXXXXX)基于可执行文件的路径计算得出
# 同一可执行文件来自不同路径会生成不同的预读取文件
步骤 2:使用 PECmd 解析预读取文件
# 使用 Eric Zimmerman 的 PECmd(在 Windows 上或通过 Linux 上的 Mono/Wine 运行)
# 下载地址:https://ericzimmerman.github.io/
# 解析单个预读取文件
PECmd.exe -f "C:\cases\prefetch\POWERSHELL.EXE-A]B2C3D4.pf"
# 解析所有预…