記憶體分析我認為是如果在一個 CTF 的 Forensic 分類上是比較有趣的題目,因為他不像硬碟鑑事隨隨便便就需要很大的空間,但是可以體驗到在一台被攻擊的電腦上尋找線索的感覺,因此今天要分享的是什麼是記憶體分析,以及最常使用的記憶體分析工具 Volatility。
記憶體鑑識是從電腦的隨機存取記憶體(RAM)中提取、分析和解釋數位證據的過程。其中會需要得知的是正在執行的程式、process、載入的library、網路連線狀態、使用者輸入、甚至密碼或加密金鑰,有些是根本沒寫到硬碟
那為什麼需要記憶體鑑識?
所以如果拿到一台受攻擊的電腦,第一部會先對記憶體進行 dump ,因為有可能攻擊者會對 disk 做清除或者煙滅證據,但記憶體通常還是會紀錄這些攻擊證據,這就是為什麼記憶體分析這麼重要。
而記憶體鑑識工具大家最常用的就是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 的基本操作
當你有一個記憶體 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
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 就不用再下 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
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 以目前來說 Plugin 的完整度還是大於Volatility3,因此常常會看到有些人到現在還是會使用 Volatility2 進行記憶體分析
今天介紹了什麼是記憶體鑑識以及Volatilty 工具使用,接下來幾天會分享我在學習記憶體分析時學到的有趣技術或者