撥開電腦的記憶找出最黑暗的部分
🧂 前言
記憶體分析我認為是如果在一個 CTF 的 Forensic 分類上是比較有趣的題目,因為它不像硬碟鑑識隨隨便便就需要很大的空間,但是可以體驗到在一台被攻擊的電腦上尋找線索的感覺,因此今天要分享的是什麼是記憶體分析,以及最常使用的記憶體分析工具 Volatility。
🧠 什麼是記憶體鑑識?
記憶體鑑識是從電腦的隨機存取記憶體(RAM)中提取、分析和解釋數位證據的過程。其中會需要得知的是正在執行的程式、process、載入的 library、網路連線狀態、使用者輸入、甚至密碼或加密金鑰,有些是根本沒寫到硬碟的那種。
那為什麼需要記憶體鑑識?
- 易失性資料保存
- RAM 中的資料在斷電後會消失
- 許多重要證據只存在於記憶體中
- 需要及時捕獲這些易失性資訊
- 惡意軟體分析
- 現代惡意軟體常駐記憶體,不留檔案痕跡
- Rootkit、無檔案攻擊
- 記憶體注入技術
- 攻擊行為追蹤
- 網路連線狀態
- 執行中的程序
- 系統呼叫和API使用
所以如果拿到一台受攻擊的電腦,第一步會先對記憶體進行 dump,因為有可能攻擊者會對 disk 做清除或者湮滅證據,但記憶體通常還是會記錄這些攻擊證據,這就是為什麼記憶體分析這麼重要。
而記憶體鑑識工具大家最常用的就是 Volatility
📈 Volatility
Volatility 是一個 memory forensics 框架,用來從 memory dump 中提取系統運作時的各種資訊,包含正在跑的 process、網路連線、註冊表資料、開啟的 file handles 等等
最初的版本是 Volatility 2 ,因為寫在 Python 2 上,之後推出了 Volatility 3,並使用 Python3 編寫
下載連結:
- Volatility 2 : https://github.com/volatilityfoundation/volatility
- Volatility 3 : https://github.com/volatilityfoundation/volatility3
Github 中安裝步驟都有寫在 README.md 上,而 Volatility 2 的安裝方式會比 3 的安裝會多一步是需要先安裝 Python2
以下介紹一些 Volatility 2 跟 3 的基本操作
Volatility 2 基本操作
當你有一個記憶體 dump 的檔案,例如 memdump.img
- 取得作業系統與版本
python2 vol.py -f memdump.img imageinfo
- 列出進程列表
python2 vol.py -f memdump.img --profile=Win7SP1x64 pslist python2 vol.py -f memdump.img --profile=Win7SP1x64 pstree
- 查看網路連線
python2 vol.py -f memdump.img --profile=Win7SP1x64 netscan
- 列出檔案
python2 vol.py -f memdump.img --profile=Win7SP1x64 filescan
- dump files
python2 vol.py -f memdump.img --profile=Win7SP1x64 dumpfiles dumpfiles -Q 0x000000003fc61be0 -D c:\files -u
- 查看使用者活動或命令列歷史
python2 vol.py -f memdump.img --profile=Win7SP1x64 cmdline
其他對應指令可以下 -h
查看或者看官方的 doc
Volatility 3 基本操作
Volatility 3 就不用再下 profile,先假設 memdump.img 是 Windows
- 取得作業系統與版本
python2 vol.py -f memdump.img imageinfo
- 列出進程列表
python3 vol.py -f memdump.img windows.pslist python3 vol.py -f memdump.img windows.pstree
- 查看網路連線
python3 vol.py -f memdump.img windows.netscan python3 vol.py -f memdump.img windows.netstat
- 列出檔案
python3 vol.py -f memdump.img windows.filescan
- dump files
python3 vol.py -f memdump.img -o ./files_out windows.dumpfiles --pid 1234
- 查看使用者活動或命令列歷史
python3 vol.py -f memdump.img windows.cmdline
其他指令可以下 -h
查看或者看官方的 doc
要選 Volatility2 還是 Volatility3?
我個人會建議兩個都裝,因為有時候會出現 Volatility2 跑不出來的,Volatility3 就可以,不然就是 Volatility2 有的插件 Volatility3 沒有等等,另外現在 Volatility2 已經沒有再維護了,現在主要都是 Volatility3 還在持續的更新,但是 Volatility2 以目前來說 Plugin 的完整度還是大於 Volatility3,因此常常會看到有些人到現在還是會使用 Volatility2 進行記憶體分析
結論
今天介紹了什麼是記憶體鑑識以及 Volatility 工具使用,接下來幾天會分享我在學習記憶體分析時學到的有趣技術或者