iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
Security

那些留在電腦裡的證據:從零開始認識數位鑑識系列 第 19 篇

[DAY 19] 程式跑過幾次、什麼時候跑?Prefetch 都記得

  • 分享至 

  • xImage
  •  

上一篇從 Jump List 看到了使用者透過某個 Application 開過哪些檔案。

但如果今天換一個問題:

這個程式到底有沒有真的執行過?

這時可以看另一個 Windows Artifact:Prefetch。

Prefetch 原本是 Windows 為了加快程式啟動速度所留下的資料。當程式執行時,系統會記錄程式啟動過程中使用到的檔案與目錄,並建立 .pf 檔。

而這些原本為了效能留下來的資料,在數位鑑識中剛好可以拿來找程式的執行痕跡。

Prefetch 的位置與檔名

Windows 的 Prefetch 主要存放在:

C:\Windows\Prefetch\

https://ithelp.ithome.com.tw/upload/images/20261003/20146591Lzy7CNNRAd.png

進到資料夾後,可以看到大量 .pf 檔案,檔名通常會帶有 Executable Name。

這次繼續沿用上一篇的 Word 當作範例,可以找到:

WINWORD.EXE-AB6EC2FA.pf

前面的:WINWORD.EX

可以直接看出這份 Prefetch 和 Microsoft Word 的執行檔有關。

後面的 AB6EC2FA 則是 Windows 用來產生 Prefetch 檔名的 Hash 值。

這裡要注意,它不是平常鑑識時拿來驗證檔案完整性的 MD5、SHA-1 或 SHA-256,因此不能把 AB6EC2FA 當成 WINWORD.EXE 本身的檔案 Hash。

用 PECmd 查看程式執行紀錄

.pf 並不是直接打開就很好閱讀的格式,所以這次使用 Eric Zimmerman 的 PECmd 解析。

先把要分析的 .pf 複製出來,在 PECmd 資料夾中開啟 CMD 並執行:

``
PECmd.exe -f "[.pf 檔案路徑]"


這次分析的是:

```text
WINWORD.EXE-AB6EC2FA.pf

https://ithelp.ithome.com.tw/upload/images/20261003/20146591Pr8GwWczZd.png

解析後,可以先看到這份 Prefetch 的基本資訊:

Executable name: WINWORD.EXE
Hash: AB6EC2FA
Version: Windows 11

其中 Executable name 可以確認這份 Prefetch 對應的執行檔就是 WINWORD.EXE。

接著往下可以看到和程式執行比較有關的資訊:

Run count: 401
Last run: 2026-10-01 14:12:04
Other run times: ...

這份 Prefetch 顯示 Run count: 401,也就是這份 Prefetch 目前記錄的執行計數為 401。

另外:

Last run: 2026-10-01 14:12:04

則可以看到最近一次被記錄下來的執行時間。

下面的 Other run times 還保留了其他幾筆較近期的執行時間,因此 Prefetch 不僅能回答程式有沒有跑過,還能提供建立程式執行時間線時可以使用的線索。

.pf 檔案時間和程式執行時間有什麼不同?

PECmd 畫面最上方會看到 .pf 檔案本身的檔案系統 Timestamp。

Created on:       2025-02-25 05:11:36
Modified on:      2026-10-01 14:12:05
Last accessed on: 2026-10-01 15:12:24

它們和下面的 Last run 和 Other run times 是不同的。

例如不能因為看到 Created on: 2025-02-25 05:11:36,就直接判斷 Word 第一次是在 2025-02-25 執行。

Created on 描述的是這個 Prefetch 檔案本身的建立時間,而不是程式「第一次執行」的直接證明。

真正要分析程式的執行紀錄,會比較關注 Prefetch 內解析出的:

Last run
Other run times
Run count

再把這些資訊和其他 Artifact 的時間一起比對。

程式執行時引用了哪些檔案與目錄?

再繼續往下看,PECmd 還解析出了:

Directories referenced: 57
File references: 142

下面可以看到不少 Word 啟動時涉及的目錄,例如:

\PROGRAM FILES\MICROSOFT OFFICE
\PROGRAM FILES\MICROSOFT OFFICE\ROOT
\PROGRAM FILES\MICROSOFT OFFICE\ROOT\OFFICE16

代表 Prefetch 留下的不只有 WINWORD.EXE 曾經被執行過,還包含程式啟動過程中引用過的 File 和 Directory。

如果今天分析的是一個可疑的 Executable,就可以繼續往這些 Reference 裡找,看它執行時曾經涉及哪些檔案或目錄。

假設某個程式執行完成後,本體被刪除了:

tool.exe
    ↓
執行
    ↓
留下 Prefetch
    ↓
tool.exe 被刪除

即使原本的 tool.exe 已經不存在,只要:

TOOL.EXE-XXXXXXXX.pf

還留在系統裡,就可能從 Prefetch 找到這個程式曾經執行過的線索。

因此在調查惡意程式、清除工具,或其他事後被移除的 Executable 時,Prefetch 是很值得檢查的 Artifact。


上一篇
[DAY 18] Jump List:記錄應用程式最近使用過的檔案
下一篇
[DAY 20] 線索這麼多,到底該看哪個 Windows Artifact?
系列文
那些留在電腦裡的證據:從零開始認識數位鑑識 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言