iT邦幫忙

2026 iThome 鐵人賽

DAY 20
0
Security

新手的30天數位鑑識之旅系列 第 20 篇

20|Memory Forensics:Volatility 3 入門

  • 分享至 

  • xImage
  •  

Volatility 3 是一個開源的 Memory Forensics Framework,主要用來從 RAM 的 Memory Image 中提取與分析數位鑑識資訊。

Memory Image
      ↓
 Volatility 3
      ↓
┌─────┼─────┬─────┐
↓     ↓     ↓     ↓
Process Network  DLL  Registry

它提供很多不同的 Plugin,讓我們可以從不同角度分析 Memory。


安裝 Volatility 3

官方 README 目前要求:

Python 3.8+

可以先確認自己的 Python 版本:

python3 --version

如果看到:

Python 3.x.x

而且版本是 3.8 以上,就可以繼續。


方法一:直接用 pip 安裝

如果只是想開始使用 Volatility 3,最簡單的方法就是:

pip install volatility3

安裝完成後,可以輸入:

vol -h

這種方式比較適合:

只是想使用 Volatility 3,不需要自己修改原始程式碼。


方法二:從 GitHub 安裝

如果想使用 GitHub Repository 中的版本,可以 Clone Repository。

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3/

接著建立 Virtual Environment,避免 Volatility 的套件和系統上的其他 Python 套件互相影響。:

python3 -m venv venv

啟動 Virtual Environment:

. venv/bin/activate

最後安裝:

pip install -e ".[dev]"

這種方式比較適合:

想直接使用 GitHub 上的程式碼,或之後想研究、修改 Volatility 3。


stable & develop

如果是從 GitHub Clone 下來,有一個小地方要注意。

Branch:

stable
  ↓
最新穩定版本

develop
  ↓
預設開發分支

GitHub Repository 預設使用的是 develop branch。

如果想使用穩定版本,可以切換到:

git checkout stable

安裝完成後先做什麼?

vol -h

這個指令可以查看 Volatility 3 的使用方式以及目前可以使用的功能。

如果想查看某個 Plugin 怎麼使用,可以:

vol [plugin name] -h

不同 Plugin 會有自己的參數與使用方式。

如果你是從 GitHub Repository Clone,也可以使用:

python3 vol.py -h

看到類似:

Volatility 3 Framework
usage: vol.py [-h] ...

就代表可以開始使用了。


常見的 Windows Plugin

Plugin 用途
windows.info 查看 Memory Image 的 Windows 資訊
windows.pslist 列出 Process
windows.pstree 以父子關係查看 Process
windows.cmdline 查看 Process 的 Command Line
windows.netscan 查看 Network Connections
windows.dlllist 查看 Process 載入的 DLL
windows.malfind 協助尋找可疑的 Memory 區域
windows.filescan 掃描 Memory 中的 File Object
windows.handles 查看 Process 使用的 Handles
windows.registry.hivelist 列出找到的 Registry Hives

windows.info

拿到一個 Memory Image 時,可以先執行:

vol -f memory.raw windows.info

windows.info 可以協助查看 Memory Image 中的 Windows 資訊,也可以用來確認 Volatility 是否能處理這份 Memory Sample。

因此在拿到一份陌生的 Memory Image 時,可以先從這個 Plugin 開始。


windows.pslist

如果想知道 Memory Image 裡有哪些 Process:

vol -f memory.raw windows.pslist

可能會看到:

PID     PPID    ImageFileName
4       0       System
624     4       smss.exe
812     624     csrss.exe
1024    900     explorer.exe
2456    1024    suspicious.exe

windows.pstree

如果想看 Process 的父子關係:

vol -f memory.raw windows.pstree

windows.netscan

這就是前面第 15 篇介紹過的 Network Connections。

現在我們可以用 Volatility 3 從 Memory Image 裡把它找出來:

vol -f memory.raw windows.netscan

例如:

PID     LocalAddr        ForeignAddr          State
2456    192.168.1.10     203.0.113.50:443     ESTABLISHED

windows.cmdline

如果想知道 Process 啟動時使用了什麼 Command Line:

vol -f memory.raw windows.cmdline

例如:

PID     Process          CommandLine

2456    powershell.exe   powershell.exe -enc XXXXX

可以進一步調查:

這個 Process 是怎麼被啟動的?


windows.malfind

如果懷疑某個 Process 可能存在 Code Injection 等情況,可以使用:

vol -f memory.raw windows.malfind

它可以協助找出具有可疑特徵的 Memory 區域。

但 malfind 找到結果 ≠ 一定是 Malware。

仍然需要搭配 Process、DLL、Network 等其他資訊一起判斷。


Symbol Tables

Symbol 可以讓 Volatility 知道 Memory 裡面的資料結構要怎麼解讀。

不同版本的 Windows,Memory 裡面的結構可能不一樣。


哪裡可以練習?

TryHackMe

TryHackMe 有 Volatility、Volatility Essentials 以及 Memory Forensics 等相關練習。

可以從基本 Plugin 開始,逐漸練習 Process、Network、Memory 等分析。


CyberDefenders

CyberDefenders 有不少 Blue Team / DFIR Lab。

例如 Volatility Traces 就是以 Endpoint Forensics 為主題,使用 Volatility 3 分析 Memory Dump,包含 Process、Persistence、Defense Evasion 等內容。


Volatility 3 官方文件

如果遇到問題不知道怎麼用,可以去看看官方文件。

Volatility 3 GitHub

Volatility 3 Documentation


小結

Memory Image
      ↓
Volatility 3
      ↓
    Plugins
      ↓
┌─────┼─────┬─────┬─────┐
↓     ↓     ↓     ↓     ↓
Process Network Command DLL  Malware
Plugin 用途
windows.info Memory / Windows 資訊
windows.pslist Process
windows.pstree Process 關係
windows.cmdline Command Line
windows.netscan Network Connections
windows.dlllist DLL
windows.malfind 可疑 Memory / Injection 線索

上一篇
19|刪除之後還是留下痕跡:Recycle Bin、$I、$R
下一篇
21|NTFS 的核心:$MFT、$Boot、$Bitmap、$LogFile
系列文
新手的30天數位鑑識之旅 共 21 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言