-
Volatility命令語法
1.判斷鏡像信息,獲取操作系統類型
??Volatility -f xxx.vmem?imageinfo
在查到操作系統后如果不確定可以使用以下命令查看
volatility - f xxx.vmem --profile= [操作系統]?volshell
2.知道操作系統類型后,用–profile指定
????? volatility -f ?.img --profile=...
3.查看當前顯示的notepad文本
? ? ? volatility? -f file.raw --profile=WinXPSP2x86 notepad
4.查看當前運行的進程
?? ? volatility? -f file.raw --profile=WinXPSP2x86 psscan/pslist
5.掃描所有的文件列表(常常結合grep)
??? volatility? -f file.raw --profile=WinXPSP2x86 filescan
6.根據offset提取出文件
?? volatility? -f file.raw --profile=WinXPSP2x86 dumpfiles -D . -Q 0x.....
7.掃描 Windows 的服務
volatility -f file.raw --profile=WinXPSP2x86 svcscan
8.查看網絡連接
volatility -f file.raw --profile=WinXPSP2x86 connscan
9.查看cmd命令歷史
volatility -f memory --profile=Win7SP1x64 cmdscan
volatility 使用:
??????? volatility -f <文件名> -–profile=<配置文件> <插件> [插件參數]
通過volatility --info獲取工具所支持的profile,Address Spaces,Scanner Checks,Plugins
?
常用插件:
imageinfo:顯示目標鏡像的摘要信息,知道鏡像的操作系統后,就可以在 –profile 中帶上對應的操作系統
pslist:該插件列舉出系統進程,但它不能檢測到隱藏或者解鏈的進程,psscan可以
psscan:可以找到先前已終止(不活動)的進程以及被rootkit隱藏或解鏈的進程
pstree:以樹的形式查看進程列表,和pslist一樣,也無法檢測隱藏或解鏈的進程
mendump:提取出指定進程,常用foremost 來分離里面的文件
filescan:掃描所有的文件列表
hashdump:查看當前操作系統中的 password hash,例如 Windows 的 SAM 文件內容
svcscan:掃描 Windows 的服務
connscan:查看網絡連接
-
內存取證的大概思路
首先確定鏡像是何種操作系統的,命令imageinfo即可獲取鏡像信息。
需要獲取的是計算機在這一時刻運行了哪些進程
Volatility的分析進程的命令,如pstree、pesscan、pslist……
filescan命令可以對打開的文件進行掃描。
命令dumpfile和memdump命令將相關數據導出,然后對導出的數據進行二進制分析。
熟悉Volatility工具的常用命令,結合其他類型的知識(圖片隱寫、壓縮包分析等)對提取出的文件進行分析問題
例題:護網杯2018-MISC-easydump
來源:原題資源:https://pan.baidu.com/s/1z73M2MRr6W6AfM57lomF-w
提取碼:1tf5
.img
文件,也是一種內存鏡像,我們用volatility
然后就是列出進程pslist
最顯眼的還是這個notepad.exe了?
?然后dump下來2580.dmp,binwalk查看,信息太多,直接foremost分離文件,里面發現有用的就是兩個壓縮包,解壓是img文件。
但是這個文件同樣使用volatility去跑,確沒有信息,所以判斷這個不是內存鏡像文件。
先strings看一下
將img文件掛載在linux系統中
mount -o loop message.img /root/Desktop/m0re
掛載后,可以切換到該目錄進行查看信息
cd m0re/
ls -all
在.Trash-0/file
下看到一個.message.swp
轉存一下
cat .message.swp > m0re.txt
strings m0re.txt
?hint.txt文件里面都是坐標,猜測是要畫圖
百度到的畫圖的python腳本
from PIL import Image
with open('hint.txt','r') as f:
?? ?points = f.readlines()pic=Image.new('RGB',(600,600),'black')
pix=pic.load()for i in points:
?? ?i=i.strip().split(' ')
?? ?pix[int(i[0]),int(i[1])]=(255,255,255)pic.save('out.png','png')
得到二維碼
?識別后得到
Here is the vigenere key: aeolus, but i deleted the encrypted message
百度發現是維吉尼亞密碼,密鑰是aeolus
但是我們從前面得到了字符串,拿來試試
?維吉尼亞密碼在線解密
維吉尼亞密碼在線加密解密 - 千千秀字
維吉尼亞密碼有點類似凱撒密碼,都是通過位移量來確定。