Show / Hide Table of Contents ]

撥開電腦的記憶找出最黑暗的部分

Last updated: 2025-10-05 14:59:10

🧂 前言

記憶體分析我認為是如果在一個 CTF 的 Forensic 分類上是比較有趣的題目,因為它不像硬碟鑑識隨隨便便就需要很大的空間,但是可以體驗到在一台被攻擊的電腦上尋找線索的感覺,因此今天要分享的是什麼是記憶體分析,以及最常使用的記憶體分析工具 Volatility。


🧠 什麼是記憶體鑑識?

記憶體鑑識是從電腦的隨機存取記憶體(RAM)中提取、分析和解釋數位證據的過程。其中會需要得知的是正在執行的程式、process、載入的 library、網路連線狀態、使用者輸入、甚至密碼或加密金鑰,有些是根本沒寫到硬碟的那種。

那為什麼需要記憶體鑑識?

  1. 易失性資料保存
    1. RAM 中的資料在斷電後會消失
    2. 許多重要證據只存在於記憶體中
    3. 需要及時捕獲這些易失性資訊
  2. 惡意軟體分析
    1. 現代惡意軟體常駐記憶體,不留檔案痕跡
    2. Rootkit、無檔案攻擊
    3. 記憶體注入技術
  3. 攻擊行為追蹤
    1. 網路連線狀態
    2. 執行中的程序
    3. 系統呼叫和API使用

所以如果拿到一台受攻擊的電腦,第一步會先對記憶體進行 dump,因為有可能攻擊者會對 disk 做清除或者湮滅證據,但記憶體通常還是會記錄這些攻擊證據,這就是為什麼記憶體分析這麼重要。

而記憶體鑑識工具大家最常用的就是 Volatility


📈 Volatility

Volatility 是一個 memory forensics 框架,用來從 memory dump 中提取系統運作時的各種資訊,包含正在跑的 process、網路連線、註冊表資料、開啟的 file handles 等等

最初的版本是 Volatility 2 ,因為寫在 Python 2 上,之後推出了 Volatility 3,並使用 Python3 編寫

下載連結:

Github 中安裝步驟都有寫在 README.md 上,而 Volatility 2 的安裝方式會比 3 的安裝會多一步是需要先安裝 Python2

以下介紹一些 Volatility 2 跟 3 的基本操作

Volatility 2 基本操作

當你有一個記憶體 dump 的檔案,例如 memdump.img

  1. 取得作業系統與版本
    python2 vol.py -f memdump.img imageinfo
  2. 列出進程列表
    python2 vol.py -f memdump.img --profile=Win7SP1x64 pslist
    python2 vol.py -f memdump.img --profile=Win7SP1x64 pstree
  3. 查看網路連線
    python2 vol.py -f memdump.img --profile=Win7SP1x64 netscan
  4. 列出檔案
    python2 vol.py -f memdump.img --profile=Win7SP1x64 filescan
  5. dump files
    python2 vol.py -f memdump.img --profile=Win7SP1x64 dumpfiles dumpfiles -Q 0x000000003fc61be0 -D c:\files -u
  6. 查看使用者活動或命令列歷史
    python2 vol.py -f memdump.img --profile=Win7SP1x64 cmdline

其他對應指令可以下 -h 查看或者看官方的 doc


Volatility 3 基本操作

Volatility 3 就不用再下 profile,先假設 memdump.img 是 Windows

  1. 取得作業系統與版本
    python2 vol.py -f memdump.img imageinfo
  2. 列出進程列表
    python3 vol.py -f memdump.img windows.pslist
    python3 vol.py -f memdump.img windows.pstree
  3. 查看網路連線
    python3 vol.py -f memdump.img windows.netscan
    python3 vol.py -f memdump.img windows.netstat
  4. 列出檔案
    python3 vol.py -f memdump.img windows.filescan
  5. dump files
    python3 vol.py -f memdump.img -o ./files_out windows.dumpfiles --pid 1234
  6. 查看使用者活動或命令列歷史
    python3 vol.py -f memdump.img windows.cmdline

其他指令可以下 -h 查看或者看官方的 doc


要選 Volatility2 還是 Volatility3?

我個人會建議兩個都裝,因為有時候會出現 Volatility2 跑不出來的,Volatility3 就可以,不然就是 Volatility2 有的插件 Volatility3 沒有等等,另外現在 Volatility2 已經沒有再維護了,現在主要都是 Volatility3 還在持續的更新,但是 Volatility2 以目前來說 Plugin 的完整度還是大於 Volatility3,因此常常會看到有些人到現在還是會使用 Volatility2 進行記憶體分析


結論

今天介紹了什麼是記憶體鑑識以及 Volatility 工具使用,接下來幾天會分享我在學習記憶體分析時學到的有趣技術或者