應用程式歷程¶
工具會留下什麼¶
許多第三方工具會將設定與歷程保存在使用者的 NTUSER.DAT 中。其中有幾種正是攻擊者
會使用的工具,或是用來在帶走資料之前先行整備資料的工具:Sysinternals 工具、壓縮程式、
雲端同步用戶端與遠端存取工具。Juntei 會讀取以下項目:
| 應用程式 | HKCU\Software 之下的機碼 |
顯示的內容 |
|---|---|---|
| Sysinternals | Sysinternals\<tool> |
使用者已接受授權(EulaAccepted)的每個工具:PsExec、ProcDump、Sysmon…… |
| WinRAR | WinRAR\ArcHistory、DialogEditHistory\ArcName、DialogEditHistory\ExtrPath |
開啟過的壓縮檔;在其對話方塊中輸入的壓縮檔名稱與解壓縮資料夾 |
| 7-Zip | 7-Zip\Compression\ArcHistory、Extraction\PathHistory、FM\FolderHistory、FM\CopyHistory、FM\PanelPath0/1 |
建立的壓縮檔;解壓縮資料夾;在其檔案管理員中瀏覽過及複製目的地的資料夾 |
| WinZip | Nico Mak Computing\WinZip\filemenu、extract、mru\archives |
其「檔案」功能表上的壓縮檔、解壓縮資料夾、最近使用的壓縮檔 |
| OneDrive | Microsoft\OneDrive\Accounts\<account> |
每個帳戶的電子郵件地址、本機資料夾與名稱;同步的媒體櫃(ScopeIdToMountPointPathCache)與資料夾(Tenants\<tenant>) |
| Adobe Acrobat 與 Reader | Adobe\{Acrobat Reader,Adobe Acrobat}\<version>\AVGeneral\cRecentFiles、cRecentFolders |
最近開啟的 PDF 檔案與資料夾,包含檔案名稱、大小與日期 |
| TeamViewer | TeamViewer(以及舊版的 Version<N>) |
所有值:帳戶與使用者名稱、檔案傳輸的起始資料夾(<partner ID>?<local>|<remote>)…… |
| CCleaner | Piriform\CCleaner |
所有值:設定要清除的項目、UpdateKey…… |
最佳結論:此使用者曾執行該工具(或接受其授權), 或該工具曾開啟、建立或解壓縮這些壓縮檔與資料夾,或此雲端帳戶曾為該使用者設定。 大多數歷程的項目都沒有各自的時間:只有最新的項目能取得其清單機碼的最後寫入時間。
位置¶
C:\Users\<user>\NTUSER.DAT
Software\Sysinternals\<tool> EulaAccepted
Software\WinRAR\ArcHistory 0, 1, … (0 the most recent)
Software\7-Zip\Compression ArcHistory (REG_BINARY UTF-16 list)
Software\Microsoft\OneDrive\Accounts\<account> UserEmail, UserFolder, …
Software\Adobe\Acrobat Reader\<version>\AVGeneral\cRecentFiles\c1, c2, …
請收集每位使用者的 NTUSER.DAT 及其交易記錄檔,以及系統的 SOFTWARE(用於取得使用者的 SID)。
分析注意事項¶
- Sysinternals EULA 接受紀錄。 當機碼唯一的值是可讀取且設為
1的EulaAccepted時,FirstUsedUTC是依據該機碼最後寫入時間所推估的首次使用時間。被拒絕或已損毀的 EULA 不會得到此推估值。登錄設定也可能被預先設定、複製或編輯:請以其他跡證佐證執行行為及其時間。 會在該處保存設定的工具(Process Explorer、Autoruns……)之後會重新寫入該機碼: 此時FirstUsedUTC為空,而KeyLastWrittenUTC只代表最後一次設定變更。以-accepteula執行的工具,或以其他使用者身分執行的工具(PsExec 的遠端端以 SYSTEM 執行),會寫入該使用者的機碼。 - 是順序,不是時間。 清單項目具有順序(
MruPosition0 為最新),但只有清單機碼的 最後寫入時間能標示最新項目的日期。較舊的項目是在更早、時間未知的時點使用的。 - 手動輸入的名稱。 WinRAR 的
ArcName是建立壓縮檔時所輸入的名稱:通常是不含資料夾的檔案名稱。 - Adobe 路徑會依 Adobe 寫入的形式保留(
/C/Users/alice/a.pdf即C:\Users\alice\a.pdf)。其sDate(位於Details中)是 PDF 日期字串,依原樣保留。 - CCleaner 的
UpdateKey是不含時區的當地時間;依原樣保留。 - TeamViewer。 連線記錄是檔案(
Connections_incoming.txt、TeamViewer*_Logfile.log), 而非登錄值:請一併收集。 - 不存在。 使用者與工具都可以清除這些歷程(CCleaner 本身就能做到)。
使用 Juntei 剖析¶
Usage: juntei parse-registry app-history <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find NTUSER.DAT hives
-f, --file <FILE> Parse one NTUSER.DAT hive
--log1/--log2 Supply transaction logs explicitly
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry app-history -d evidence/ -o app-history.csv
juntei parse-registry app-history -f NTUSER.DAT -t jsonl \
| jq 'select(.App == "Sysinternals" and .FirstUsed != null)'
摘要會列出最新的 Sysinternals 首次使用推估時間、各清單最後使用的壓縮檔與資料夾, 以及 OneDrive 帳戶。
輸出欄位¶
| 欄位 | 判讀 |
|---|---|
Host、SourcePath |
主機與 NTUSER.DAT。 |
User、UserSID |
設定檔資料夾的名稱,以及取自系統 ProfileList 的 SID。 |
App |
Sysinternals、WinRAR、7-Zip、WinZip、OneDrive、Adobe Acrobat Reader、Adobe Acrobat、TeamViewer、CCleaner。 |
Item |
Sysinternals 工具、清單(ArcHistory、ExtrPath、FolderHistory、filemenu、cRecentFiles……)、OneDrive 帳戶或其同步資料夾的機碼,或值的名稱。 |
MRU-Position |
該項目在清單中的位置,0 為最新。 |
Path |
壓縮檔、資料夾或文件。 |
Value |
EulaAccepted、OneDrive 帳戶的電子郵件地址或同步媒體櫃的 ID、TeamViewer 或 CCleaner 的值。 |
FirstUsedUTC |
依據 EULA 接受紀錄推估的首次使用時間(請參閱上方注意事項)。 |
Details |
OneDrive 帳戶的 DisplayName、UserCID、ConfiguredTenantId……;Adobe 文件的 Version、tFileName、uFileSize、uPageCount、sDate。 |
KeyPath、KeyLastWrittenUTC、ValueName |
記錄的來源,以及該機碼最後變更的時間。 |
DataRaw |
無法解碼時,該值的位元組(十六進位)。 |
TransactionLogStatus、LogsApplied |
登錄復原脈絡。 |
Problems |
無法解碼或讀取的資料。 |
調查策略¶
- 尋找一般使用者不會執行的 Sysinternals 工具(PsExec、ProcDump、PsLoggedOn、 SDelete)及其 EULA 時間戳記。
- 檢視事件前後的壓縮檔名稱與解壓縮資料夾:在資料離開系統之前,於
ProgramData、Temp或使用者資料夾中建立的壓縮檔。 - 檢查不屬於組織的 OneDrive 帳戶,以及 TeamViewer 帳戶名稱與檔案傳輸資料夾。
- 與 Prefetch、Amcache、BAM 與 UserAssist(工具的執行)、
$MFT與 USN Journal(壓縮檔本身)、LNK 檔案與 Jump Lists(開啟過的文件),以及事件記錄進行關聯分析。