經過前面多個實戰 Lab 的洗禮,我們已經掌握了豐富的記憶體鑑識技術。今天讓我們系統性地整理這些 Volatility 工具和插件,建立完整的記憶體分析技術地圖。
Volatility 3 命令簡單、不需要 Profile,操作很方便,對其他系統也有良好支援,但較著重於 Windows 10/11,插件相對較少,但正在快速增加。
提供 Windows 記憶體映像檔的基本資訊,輸出包含:核心基址、擷取系統、符號表等等,可以幫助我們得到目標系統資訊。
列出所有運行的進程,輸出包含:名稱、pid、ppid、啟動時間等,可以幫助我們建立進程清單。
--dump 參數可以導出 記憶體中正在執行的進程映像
列出進程執行時的完整命令列參數,輸出包含:完整命令列參數、執行路徑、啟動參數等,可以幫助我們追蹤惡意軟體啟動方式。
以樹狀結構列出所有正在執行的進程,輸出包含:進程父子關係、啟動時間、完整路徑等,可以幫助我們分析進程衍生關係。
提取網路連線資訊,輸出包含:本地和遠端的 IP 和 port、連線狀態、關聯進程等,可以幫助我們識別可疑網路連線和 C2 server。
掃描記憶體中的所有網路連線,包括關閉和隱藏的連線,輸出包含:本地和遠端的 IP 和 port、連線狀態、關聯進程等,可以幫助我們追蹤隱藏的惡意連線。
尋找異常的記憶體區域,輸出包含:異常進程的記憶體保護屬性、可疑 assembly 片段等,可以幫我們快速定位惡意進程或程式碼注入攻擊。
提取進程相關的 SID,輸出包含:使用者的 SID、群組的 SID 等等,可以幫助我們識別被感染的帳號,評估影響範圍。
從記憶體中提取檔案和其載入的 DLL,輸出包含:可執行檔、其載入的DLL等等,可以幫助我們提取惡意軟體樣本以做後續分析。
解析 UserAssist(用於記錄透過 Windows 圖形介面執行的程式資訊的 Registry Key),輸出包含:程式名稱、執行次數、最後執行時間等等,能幫助我們重建使用者的行為。
Volatility 2 的插件更完整、功能更強大,對 windows 舊版本和 Linux 的支援也更完善,但需要指定 profile,且已停止更新。
識別記憶體轉儲的系統資訊和建議的 profile,輸出包含:作業系統版本、建議的 profile 列表等,是所有分析的第一步,幫助我們確定後續分析要使用的 profile。
列出所有運行的進程,輸出包含:名稱、pid、ppid、啟動時間等,可以幫助我們建立進程清單。
以樹狀結構列出所有正在執行的進程,輸出包含:進程父子關係、啟動時間、完整路徑等,可以幫助我們分析進程衍生關係。
掃描記憶體中的所有網路連線,包括關閉和隱藏的連線,輸出包含:本地和遠端的 IP 和 port、連線狀態、關聯進程等,可以幫助我們追蹤隱藏的惡意連線。
列出進程執行時的完整命令列參數,輸出包含:完整命令列參數、執行路徑、啟動參數等,可以幫助我們追蹤惡意軟體啟動方式。
尋找異常的記憶體區域,輸出包含:異常進程的記憶體保護屬性、可疑 assembly 片段等,可以幫我們快速定位惡意進程或程式碼注入攻擊。
列印每個進程已載入的 DLL 列表,輸出包含:DLL名稱、載入位置、DLL檔案路徑等,可以幫助我們檢測惡意 DLL。
提取特定進程的完整可執行檔案,輸出為完整可執行檔,可以幫助我們提取惡意軟體樣本以便後續分析。
提取特定進程的完整記憶體內容,輸出為記憶體轉儲,可以幫助我們提取進程在處理的資料以利後續分析
從記憶體中提取 Windows 密碼雜湊值,輸出包含:LM/NTLM 雜湊、使用者 ID 等等,可以幫助我們分析使用者帳號。
列出進程開啟的句柄,輸出包含:位址、完整路徑等等,可以幫助我們分析檔案參考。
列出進程載入的所有 DLL,輸出包含:完整路徑、基址、是否在載入列表中等等,可以幫助我們分析程式碼注入。
分析進程的虛擬位址空間 (VAD) 資訊,輸出包含:記憶體區域詳情、記憶體保護屬性、位址範圍等,幫助我們檢測異常記憶體區域。
分析 Windows 應用程式執行歷史記錄,輸出包含:檔案路徑、執行時間等,可以幫助我們調查已刪除的惡意軟體。
解析 NTFS 主檔案表 (MFT) 記錄,輸出包含:檔案紀錄、檔案屬性、時間戳記等等,可以幫助我們分析已刪除檔案、建立時間軸。
提取網路連線資訊,輸出包含:本地和遠端的 IP 和 port、連線狀態、關聯進程等,可以幫助我們識別可疑網路連線和 C2 server。
提取bash history,輸出包含:PID、命令執行時間、執行的命令等,可以幫助我們還原攻擊者的行為。
他和我們之前用的 windows.cmdline 的作用很像,輸出包含 PID、完整命令列參數、執行時間等,可以幫我們檢測進程的啟動方式。
在記憶體中搜尋特定檔案,輸出包含:inode 號碼、檔案位置等,可以幫助我們快速定位檔案位置。
提取進程的虛擬記憶體區域,輸出包含:分割的記憶體區段,可以幫助我們提取進程在處理的資料以利後續分析。
標記系統呼叫表中不屬於合法核心模組的地址,輸出包含:異常位址、可疑模組名等,幫助我們檢測系統呼叫表是否被 Rootkit 劫持。
列出所有已載入的核心模組,輸出包含:模組名稱、位址等,可以幫助我們分析核心模組。
今天我們總結了這個系列所有用到的 Volatility 2 和 Volatility 3 的插件,算是完美完結了我們 Memory Forensics 系列,回顧這個系列,我們從零,到現在能熟練使用工具分析記憶體並快速定位威脅,為我們的記憶體鑑識打下堅實的基礎。
明天將總結 Disk Forensics 的技術。