HTB - Introduction to Digital Forensics - Part 1
進行鑑識調查的基本步驟
執行一次鑑識調查時,基本流程如下:
- 建立鑑識映像(Create a Forensic Image)
- 記錄系統目前狀態(Document the System’s State)
- 識別並保存證據(Identify and Preserve Evidence)
- 分析證據(Analyze the Evidence)
- 進行時間線分析(Timeline Analysis)
- 識別入侵指標(Identify Indicators of Compromise, IOCs)
- 撰寫報告與文件紀錄(Report and Documentation)
Windows 鑑識總覽
NTFS
在使用 NTFS 檔案系統進行調查時,數位鑑識人員通常會分析以下幾種重要痕跡:
1. 檔案中繼資料(File Metadata)
NTFS 會為每個檔案保存大量中繼資料,例如:
- 建立時間
- 修改時間
- 存取時間
- 屬性資訊(例如唯讀、隱藏、系統檔屬性)
分析這些時間戳記,有助於建立時間線並還原使用者行為。
2. MFT 項目(MFT Entries)
MFT(Master File Table,主檔案表) 是 NTFS 的核心組成之一,會保存磁碟區內所有檔案與資料夾的中繼資料。
檢查 MFT 項目可以得知:
- 檔名
- 檔案大小
- 時間戳記
- 資料儲存位置
當檔案被刪除時,它的 MFT 項目通常只會被標記為可用,但實際資料仍可能留在磁碟上,直到被覆寫。
3. 檔案 Slack 與未配置空間(File Slack and Unallocated Space)
未配置空間(Unallocated Space) 可能殘留已刪除檔案的內容或資料碎片。
File Slack 則是指檔案所佔叢集內未使用的那一段空間,裡面可能殘留前一個檔案的資料。
鑑識工具常可從這些區域嘗試還原與分析資料。
4. 檔案簽章(File Signatures)
檔案標頭與簽章可用來辨識檔案類型,即使副檔名被改掉或刻意隱藏,也還是有機會判斷原本的檔案種類。
這對於還原系統上曾出現過哪些檔案類型很重要。
5. USN Journal
USN Journal(Update Sequence Number Journal) 是 NTFS 維護的一種變更紀錄日誌,用來追蹤檔案與目錄的變動。
透過分析 USN Journal,調查人員可以得知:
- 檔案何時被修改
- 何時被刪除
- 是否曾被重新命名
6. LNK 捷徑檔
Windows 的捷徑檔(.lnk)會保存目標檔案或程式的相關資訊,以及一些時間戳記與中繼資料。
這些檔案可以幫助我們了解:
- 最近曾開啟哪些檔案
- 曾執行過哪些程式
7. Prefetch 檔案
Prefetch 是 Windows 為了加快應用程式啟動速度而產生的檔案。
它可以顯示:
- 哪些程式曾被執行
- 最後一次執行的大致時間
8. Registry Hives
雖然 Registry 不直接屬於檔案系統本體,但 Windows Registry Hive 內保存了重要的系統與設定資訊。
惡意行為或未授權修改,常常會在 Registry 中留下痕跡,因此這也是鑑識分析的重要部分。
9. Shellbags
Shellbags 是 Registry 中記錄資料夾檢視設定的項目,例如:
- 視窗位置
- 排序方式
- 顯示模式
分析 Shellbags 可以協助推測使用者曾瀏覽過哪些資料夾。
10. Thumbnail Cache
縮圖快取會保存圖片與文件的縮圖預覽。
即使原始檔已被刪除,縮圖快取仍可能透露:
- 曾看過哪些圖片或文件
- 某些檔案曾存在過
11. 資源回收筒(Recycle Bin)
回收筒中保存的是被刪除但尚未永久清除的檔案。
分析回收筒有助於:
- 還原刪除檔案
- 知道使用者刪除了哪些東西
12. ADS(Alternate Data Streams)
替代資料流(ADS) 是附加在檔案上的額外資料流。
攻擊者有時會利用 ADS 隱藏資料,所以鑑識分析時也要特別檢查。
13. Volume Shadow Copies
NTFS 支援 Volume Shadow Copies(磁碟區陰影複製),也就是系統在不同時間點建立的快照。
它對於:
- 資料還原
- 比對前後變化
- 調查歷史狀態
都很有幫助。
14. Security Descriptors 與 ACLs
ACL(Access Control Lists,存取控制清單) 與安全描述元,決定了檔案或資料夾的權限設定。
分析這些資訊可以幫助我們了解:
- 哪些使用者有權限存取哪些檔案
- 是否存在權限濫用或安全性問題
Windows Event Logs
Windows 事件日誌(Windows Event Logs) 是 Windows 作業系統的重要組成之一,會記錄來自不同系統元件的日誌,例如:
- 作業系統本身
- 應用程式
- ETW 提供者
- 服務
- 其他系統元件
Windows 事件記錄提供了相當完整的資訊,可用於:
- 應用程式錯誤追蹤
- 安全事件分析
- 系統診斷
從惡意程式造成的初始入侵,到帳密存取、權限提升、橫向移動,甚至利用 Windows 內建工具進行攻擊,很多痕跡都可能出現在 Windows 事件日誌裡。
若要直接離線分析這些日誌,預設儲存路徑是:
1 | |
執行痕跡(Execution Artifacts)
常見的 Windows 執行痕跡如下:
1. Prefetch Files
記錄應用程式執行資訊,例如:
- 檔案路徑
- 執行次數
- 執行時間戳記
可用來看系統上執行過哪些程式,以及大致執行順序。
2. Shimcache
Shimcache 是 Windows 為了相容性與效能最佳化所維護的執行資訊紀錄。
它可能記錄:
- 檔案路徑
- 執行時間
- 程式是否曾執行的標記
有助於找出最近執行過的程式。
3. Amcache
Amcache 是 Windows 8 開始出現的資料庫,用來記錄安裝過的應用程式與可執行檔資訊,例如:
- 檔案路徑
- 檔案大小
- 數位簽章
- 最後執行時間
能協助判斷是否存在可疑或未授權軟體。
4. UserAssist
UserAssist 是 Registry 中的一個鍵值,會保存使用者執行過程式的資訊,例如:
- 應用程式名稱
- 執行次數
- 執行時間
可用來還原使用者操作行為。
5. RunMRU Lists
RunMRU 是 Registry 中記錄最近執行過程式的清單,通常來自 Run 或 RunOnce 等位置。
它可以顯示:
- 執行過哪些程式
- 何時執行
- 可能的使用者行為
6. Jump Lists
Jump Lists 會保存最近開啟的:
- 檔案
- 資料夾
- 與特定應用程式有關的任務
可幫助理解使用者近期操作內容。
7. Shortcut(LNK)Files
捷徑檔可能包含:
- 目標程式資訊
- 路徑
- 時間戳記
- 使用者互動資訊
能用來分析程式執行背景與脈絡。
8. Recent Items
Recent Items 資料夾會保存最近開啟過的檔案紀錄,可反映近期文件存取情況。
9. Windows Event Logs
像是 Security、Application、System 等事件日誌,也會記錄與程式執行相關的事件,例如:
- 行程建立
- 行程結束
- 程式崩潰
常見執行痕跡位置
Prefetch Files
1 | |
Shimcache
1 | |
Amcache
1 | |
UserAssist
1 | |
RunMRU Lists
1 | |
Jump Lists
1 | |
Shortcut (LNK) Files
1 | |
Recent Items
1 | |
Windows Event Logs
1 | |
Windows 持久化痕跡(Persistence Artifacts)
在 Windows 中,持久化(Persistence) 指的是攻擊者用來在受害主機上持續保有存取權限與控制權的方法。
即使系統重開機或有些安全措施生效,攻擊者仍能重新取得控制。
常見持久化方式通常會濫用:
- Registry 鍵值
- 開機啟動流程
- 排程工作
- Windows 服務
Registry
Windows Registry 是 Windows 作業系統的重要資料庫,保存許多系統設定,例如:
- 裝置設定
- 安全性設定
- 服務設定
- 使用者帳號安全設定(SAM)
因為 Registry 很重要,所以攻擊者也常拿它來做持久化。
因此,平常要特別注意 autorun keys(自動執行鍵)。
常見用於持久化的 Autorun Keys
Run / RunOnce
1 | |
Winlogon 相關鍵值
1 | |
Startup Keys
1 | |
Schtasks(排程工作)
Windows 提供了可以排定工作的功能。
這些排程工作存放在:
1 | |
每個工作都會以 XML 檔 的形式保存,內容通常會描述:
- 是誰建立的
- 何時觸發
- 要執行哪個程式或命令
分析排程工作時,可以直接進這個路徑檢查 XML 內容。
Services(服務)
Windows 服務讓程式可以在背景持續運作,而不需要使用者手動啟動。
攻擊者常會:
- 修改既有服務
- 新建惡意服務
來達成持久化與維持控制權。
需要特別留意的 Registry 位置是:
1 | |
瀏覽器鑑識(Web Browser Forensics)
瀏覽器鑑識主要是在分析瀏覽器留下的各種痕跡,這些資料能透露:
- 使用者做過哪些操作
- 曾瀏覽哪些網站
- 是否有可疑或惡意行為
常見瀏覽器鑑識痕跡包括:
- Browsing History:瀏覽紀錄,包含網址、標題、時間、造訪次數
- Cookies:網站存放的小型資料檔,可能包含 session、偏好設定、驗證資訊
- Cache:快取內容,可能在瀏覽紀錄被清除後仍保留部分網站痕跡
- Bookmarks / Favorites:書籤
- Download History:下載紀錄,包含來源網址、檔名、時間
- Autofill Data:自動填入資料,例如姓名、地址、密碼
- Search History:搜尋紀錄
- Session Data:分頁與瀏覽工作階段資訊
- Typed URLs:直接輸入網址列的網址
- Form Data:表單輸入資料
- Passwords:儲存的網站密碼
- Web Storage:網站本地儲存資料
- Favicons:網站小圖示
- Tab Recovery Data:崩潰後可還原的分頁資訊
- Extensions and Add-ons:安裝的擴充套件及其設定
SRUM
SRUM(System Resource Usage Monitor,系統資源使用監視器) 是 Windows 8 之後引入的一項功能。
它會詳細記錄系統資源使用情況與應用程式的使用模式。
其資料存放在以下資料庫檔案中:
1 | |
這是一個 SQLite 格式資料庫,可讓資料有結構地儲存與查詢。
SRUM 的紀錄通常依照時間區間整理,因此可用來重建特定時段內的應用程式與資源使用情況。
SRUM 在鑑識上的重要面向包括:
1. Application Profiling
SRUM 能記錄系統中執行過的應用程式與行程資訊,例如:
- 執行檔名稱
- 檔案路徑
- 時間戳記
- 資源使用量
這有助於:
- 了解系統上的軟體環境
- 找出未授權或可疑程式
- 還原使用者活動
2. Resource Consumption
SRUM 會記錄每個應用程式或行程的:
- CPU 使用時間
- 網路使用量
- 記憶體消耗
這有助於找出:
- 異常耗資源行為
- 可疑的資源使用模式
- 造成效能問題的程式
3. Timeline Reconstruction
透過分析 SRUM,可以建立應用程式執行與系統活動的時間線,進而了解事件順序與可疑行為。
4. User and System Context
SRUM 資料中包含使用者識別資訊,因此可以幫助判斷:
- 這些操作是誰做的
- 是正常使用者還是可疑行為者所為
5. Malware Analysis and Detection
SRUM 可用來偵測不尋常或未授權的程式,例如:
- 突然異常的資源使用暴增
- 不正常的應用程式模式
- 未授權軟體安裝
這些都可能是惡意程式活動的線索。
6. Incident Response
在事件應變時,SRUM 可快速提供近期應用程式與行程活動資訊,幫助分析人員更快找出可疑威脅並進行處理。
證據取得技術與工具(Evidence Acquisition Techniques & Tools)
Forensic Imaging(鑑識映像)
鑑識映像是數位鑑識中最基礎也最重要的流程之一。
它是指對數位儲存媒體建立一份逐位元、完全一致(bit-by-bit)的拷貝,例如:
- 傳統硬碟(HDD)
- 固態硬碟(SSD)
- USB 隨身碟
- 記憶卡
鑑識映像讓分析人員可以在不改動原始媒體的前提下檢查證據,避免污染原始資料。
常見鑑識映像工具
FTK Imager
由 AccessData 開發(後由 Exterro 收購),是資安與鑑識領域最常見的磁碟映像工具之一。
它可以:
- 建立完整的磁碟映像
- 在不改動原始資料的情況下檢視儲存裝置內容
- 協助後續證據分析
AFF4 Imager
這是一套免費、開源的鑑識映像工具,可用來建立與複製鑑識磁碟映像。
特色包括:
- 操作相對友善
- 支援多種檔案系統
- 可依建立時間擷取檔案
- 支援分段儲存
- 可透過壓縮減少成像時間
DD 與 DCFLDD
這兩個都是 Unix-like 系統(例如 Linux、macOS)上的命令列工具。
dd:多數 Unix 系統預設就有,功能通用dcfldd:dd的加強版,加入了較適合鑑識用途的功能,例如雜湊計算
Virtualization Tools(虛擬化工具)
由於現代環境大量使用虛擬化技術,事件應變人員常常也需要從虛擬環境中蒐集證據。
依據不同虛擬化平台,可透過以下方式取得:
- 暫停虛擬機後複製其資料目錄
- 使用虛擬化平台的快照(snapshot)功能
範例 1:使用 FTK Imager 建立磁碟映像
以下是使用 FTK Imager 建立磁碟映像的基本流程。
要注意的是,你需要準備一個額外的儲存媒體,例如:
- 外接硬碟
- USB 隨身碟
來存放最後產生的映像檔。
操作步驟
- 點選 File -> Create Disk Image
- 選擇媒體來源,通常會是:
Physical DriveLogical Drive
- 選擇要建立映像的磁碟
- 指定映像檔的儲存位置
- 選擇映像格式
- 輸入證據相關資訊
- 指定輸出資料夾與檔名
- 視需要調整:
- 映像分段(fragmentation)
- 壓縮(compression)
- 確認設定後按下 Start
建立過程中會看到的內容
- 映像建立進度
- 若有勾選驗證,還會看到驗證進度
- 驗證完成後,會顯示成像摘要(imaging summary)
完成後,就可以針對這份映像檔進行分析。
範例 2:使用 Arsenal Image Mounter 掛載磁碟映像
這個範例示範如何使用 Arsenal Image Mounter 掛載先前已建立好的磁碟映像。
範例中的來源是一台在 VMWare 上執行、已遭入侵的虛擬機,其虛擬硬碟檔名為:
1 | |
操作流程
- 安裝 Arsenal Image Mounter
- 以系統管理員權限執行
- 在主畫面點選 Mount disk image
- 瀏覽並選擇
.VMDK檔案
接著 Arsenal Image Mounter 會開始分析這個 VMDK 檔。
掛載模式
你可以決定要將磁碟映像掛載成:
read-only(唯讀)read-write(可讀寫)
為什麼鑑識上建議用唯讀掛載?
在數位鑑識與事件應變中,將映像以唯讀模式掛載是非常基本而重要的步驟。
因為這樣可以:
- 保留原始證據狀態
- 維持證據真實性
- 確保證據完整性不被破壞
掛載成功後,映像會以一個磁碟機代號出現在系統中,例如:
1 | |
擷取主機端證據與快速分流(Extracting Host-based Evidence & Rapid Triage)
Host-based Evidence(主機端證據)
現代作業系統,尤其是 Windows,會產生大量可供鑑識的痕跡。
這些痕跡可能來自:
- 應用程式執行
- 檔案修改
- 使用者帳號建立
- 系統設定變更
這些行為都會留下線索,對事件應變分析師來說非常重要。
Volatility(揮發性)
主機上的證據有一個重要概念叫做 volatility(揮發性),也就是資料在系統上的持續性。
- Volatile data(揮發性資料):在登出、關機等事件後會消失
- Non-volatile data(非揮發性資料):通常會保留在硬碟中,即使關機仍存在
活動記憶體為什麼重要?
最重要的揮發性證據之一,就是系統當下的記憶體內容。
在惡意程式調查中尤其關鍵,因為:
- 許多惡意程式會在記憶體中留下痕跡
- 一旦關機,這些證據可能就消失
- 如果沒有先擷取記憶體,會影響後續分析
常見記憶體擷取工具之一是 FTK Imager。
其他常見記憶體擷取工具
WinPmem
長期以來都是 Windows 上常見的開源記憶體擷取驅動程式。
過去屬於 Rekall 專案,後來拆分成獨立倉庫。
DumpIt
一個非常簡單的工具,可以對 Windows 與 Linux 建立實體記憶體傾印。
在 Windows 上,它會把 32-bit 與 64-bit 實體記憶體整合成單一輸出檔。
MemDump
免費、簡單、命令列式工具,可用來擷取系統 RAM 內容。
因為操作容易,所以常被用在鑑識調查與惡意行為分析中。
Belkasoft RAM Capturer
Belkasoft 提供的免費工具,可擷取執行中 Windows 主機的 RAM。
即使存在 anti-debugging 或 anti-dumping 保護,也仍然有機會成功擷取。
Magnet RAM Capture
由 Magnet Forensics 開發,提供簡單且免費的記憶體擷取方式。
LiME(Linux Memory Extractor)
LiME 是一個可載入式核心模組(LKM),用來擷取揮發性記憶體。
它的特色是設計上盡量降低對目標系統的干擾,並避開常見反鑑識措施。
範例 1:使用 WinPmem 擷取記憶體
以下是使用 WinPmem 建立記憶體傾印的示範。
請使用系統管理員權限執行以下指令:
1 | |
這樣就會產生一份記憶體傾印檔。
範例 2:擷取虛擬機記憶體
若要從虛擬機(VM)取得記憶體,可以依照以下步驟進行:
- 開啟執行中虛擬機的選項
- 暫停(Suspend)該虛擬機
- 到虛擬機目錄中找到
.vmem檔案
非揮發性資料(Non-volatile Data)
與揮發性資料相對的是非揮發性資料。
這類資料通常會保存在硬碟上,即使系統關機後仍存在。
常見範例包括:
- Registry
- Windows Event Log
- 系統相關痕跡(例如 Prefetch、Amcache)
- 應用程式相關痕跡(例如 IIS 日誌、瀏覽器歷程)
Rapid Triage(快速分流 / 快速初步蒐證)
Rapid Triage 的重點是:
先從可能遭入侵的系統快速收集高價值資料,集中整理,再決定哪些主機值得深入鑑識。
這種做法的目標包括:
- 集中高價值資料
- 簡化索引與分析流程
- 協助分析師快速聚焦最有證據價值的主機
- 讓後續的深入鑑識更有效率
KAPE:快速蒐證與 artifact 解析工具
在 Rapid Triage 領域中,非常常見的一套工具是:
KAPE(Kroll Artifact Parser and Extractor)
它是一套功能強大的 Windows 數位鑑識與事件應變工具,主要用來:
- 蒐集數位證據
- 解析常見 Windows artifact
- 加速 triage 與初步調查流程
KAPE 由 Kroll 開發與維護,以:
- 蒐集能力完整
- 高度可調整
- 介面直觀
而受到廣泛使用。
KAPE 的核心概念:Targets 與 Modules
KAPE 的運作核心建立在兩個概念上:
- Targets
- Modules
它們負責指引工具如何處理資料與萃取 artifact。
當把來源提供給 KAPE 後,它會把與鑑識相關的特定檔案複製到指定輸出資料夾,並保留每個檔案的 metadata。
KAPE 執行檔模式
解壓縮 KAPE 後,通常會看到兩個執行檔:
gkape.exe:GUI 版kape.exe:CLI 版
KAPE 同時提供圖形介面與命令列模式。
若要更直觀看到選項,通常會先使用 GUI 版。
Compound Targets
KAPE 也提供 Compound Targets。
它其實就是把多個 target 打包成一組,讓你一次收集多種類型的 artifact。
這樣的好處是:
- 一次執行就能蒐集多個 target 定義的檔案
- 加快資料收集流程
- 很適合快速 triage
教材中提到,Compound 目錄下的 KapeTriage 檔案可以用來查看這個 compound target 會包含哪些內容。
使用 KAPE 進行蒐集的流程
以教材情境來說,來源磁碟為:
1 | |
接著需要設定:
- 資料來源(source)
- 蒐集後的儲存位置
- 處理後資料的輸出資料夾
全部設定完成後,按下:
1 | |
KAPE 就會開始蒐集資料,並把結果存放到指定位置。
範例命令列
教材中的 KAPE 執行參數如下:
1 | |
這代表:
D:為來源tdest為蒐集輸出位置- 使用
!SANS_Triage作為 target configuration - 透過 GUI 執行
執行結果中可能看到的現象
KAPE 會:
- 展開 target 清單
- 找出符合條件的檔案
- 複製檔案
- 對來源檔案進行 hash
- 對部分受限或鎖定檔案採延後處理(deferred copy)
大量遠端蒐證:EDR 與 Velociraptor
如果想要遠端且大規模地蒐集 artifact,就不只靠單機工具了。
這時候常見的做法是使用:
- EDR(Endpoint Detection and Response)
- Velociraptor
Velociraptor 與 KapeFiles
Velociraptor 是一套很強的主機端資訊蒐集工具,支援使用 VQL(Velociraptor Query Language) 查詢資料。
除此之外,它也能透過 Hunts 來大規模蒐集 artifact。
常見的 artifact:
1 | |
雖然 KAPE 本身不是開源軟體,但它的檔案蒐集邏輯是用 YAML 描述的,並可透過 KapeFiles 專案取得。
這種做法在 Rapid Triage 裡非常常見。
擷取網路證據(Extracting Network Evidence)
在 SOC 分析師的工作中,網路證據是非常核心的一部分。
教材指出,在整個 SOC Analyst 路線中,網路證據其實一直都是重點。
1. Traffic Capture(封包擷取 / 流量擷取)
像是 Wireshark、tcpdump 這類工具,可以用來擷取並分析網路流量。
2. IDS / IPS 衍生資料
- IDS(Intrusion Detection System):持續監控網路流量,偵測可疑活動並發出警示
- IPS(Intrusion Prevention System):除了偵測,還能根據預設規則進一步阻擋惡意行為
3. Traffic Flow Data(流量流向資料)
NetFlowsFlow
這類資料能提供較高層次的網路行為概觀。
雖然不會像 PCAP 一樣細到每個封包內容,但能協助我們快速掌握:
- 流量模式
- 連線趨勢
- 異常通信輪廓
4. Firewall Logs(防火牆日誌)
現代防火牆不只是單純依規則放行或阻擋流量。
它們通常還能辨識:
- 應用程式
- 使用者
- 威脅類型
透過分析防火牆日誌,我們可以發現:
- 嘗試利用漏洞的行為
- 未授權存取嘗試
- 其他惡意活動