本篇文章主要解决volatility工具的安装出现的一系列问题,以及volatility工具命令使用
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
sudo python2 setup.py install
sudo apt-get install pcregrep libpcre++-dev python2-dev -y
python2 -m pip install pycryptodome
python2 -m pip install distorm3
# 在 https://github.com/virustotal/yara/releases 下载 YARA 压缩包
tar -zxf yara-4.1.3.tar.gz
cd yara-4.1.3
sudo apt-get install automake libtool make gcc pkg-config
sudo apt-get install flex bison libssl-dev
./bootstrap.sh
./configure
make
sudo make install
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
sudo ldconfig
# 测试 YARA
echo "rule dummy { condition: true }" > my_first_rule
yara my_first_rule my_first_rule
# 输出 dummy my_first_rule 代表安装成功
python2 -m pip install Pillow
python2 -m pip install openpyxl
python2 -m pip install ujson
# 测试安装是否成功
cd /mnt/d/Cyber_security/ctf/misc/tool/volatility
python2 vol.py --info
# 要是显示如下信息说明安装成功
# Volatility Foundation Volatility Framework 2.6
#
# Address Spaces
# --------------
# VistaSP0x64 - A Profile for Windows Vista SP0 x64
# ......
源码地址:https://github.com/volatilityfoundation/volatility
下载后解压
unzip volatility-master.zip
pip2 install pycryptodome
源码地址:https://github.com/vext01/distorm3
下载后解压
unzip distorm3-master.zip
在distorms-master
目录下进行编译
python2 setup.py install
可选插件 Distorm3(反编译库):pip install distorm3 Yara(恶意软件分类工具):pip install yara PyCrypto(加密工具集):pip install pycrypto PIL(图片处理库):pip install pil OpenPyxl(读写excel文件):pip install openpyxl ujson(JSON解析):pip install ujson
在解压后的Volatility目录下进行编译
python2 setup.py install
下载地址:
https://github.com/ruokeqx/tool-for-CTF/tree/master/volatility_pluginshttps://github.com/superponible/volatility-plugins
下载之后,将 .py 插件放进volatility 的 plugins 文件夹目录下
python2 -m pip install construct
参考文章:https://blog.csdn.net/m0_68012373/article/details/127419463
imageinfo
即可获取镜像信息。需要使用 mimikat 插件
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 mimikatz
需要使用 usbstor 插件
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 usbstor
4、查找用户XXX的LMHASH值
LMHASH值
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 hashdump
5、查找“XXX(以VeraCrypt为例)”最后一次更新的北京时间
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 userassist
6、找出用户最后一次访问“XXX(以chrome浏览器为例)”的进程PID
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 cmdline
取最下面的
volatility -f 文件路径 imageinfo
imageinfo 用于识别操作系统、service park 和硬件体系结构(32位或64位);可能有多个建议的配置文件,我们必须选择正确的配置文件。
或者使用命令:kdbgscan
,获取内存操作系统。
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 pslist/pstree/psscan
pslist 无法显示隐藏/终止进程,psscan可以、
pstree同样是扫描进程的,但是是以进程树的形式出现的
当数据量比较多时,可以把数据导出再分析。
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 pslist/pstree/psscan >1.txt
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 cmdscan
cmdscan: 用来查看受害者系统上攻操作系统的最强大的命令之一,无论是否打开cmd.exe。
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 filescan
配合正则表达式一起使用
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 filescan | grep Downloads
#即可找下载的文件夹,一般windows下载的内都放在 Download 文件夹中
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 dlllist
当数据量比较多时,可以把数据导出再分析。
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile= Win7SP1x64 hivelist
hivelist:既包括虚拟地址,也包括物理地址
常见注册表的值:SOFTWARE、SYSTEM、ntuser.date,SAM(账户密码表)可以导出注册表,放到注册表解析工具(WRR),进行查看分析
usb连接信息:在注册表enum项下,system:controlSet001\enum\usbstor\disk$ven_segeate&prod_expansive----\NAA6D---
注意:在取证大师中,如果出现usbstor
则可以证明连接过U盘,而如何只有usb huB
只能说明连接过USB设备。
打印机在注册表的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Print\Components
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 hashdump
对于hash结果,Win7之后的,主要看:
后面的值
利用”www.cmd5.com“在线解密,或者使用”mimikatz“等工具解密
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 userassist
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 getsids
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 malfind
使用malfind时也可以使用 -p 直接指定进程
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 malfind -p 608
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
导出可以利用hashdump命令。
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 hashdump -y 0xe1035b60(注册表system的virtual地址) -s 0x16aan60 (SAM的virtual地址)
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 mftparser
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 timeliner
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 svcscan
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 psxview
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 mem -p 1180 -D E:\111
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 dumpregistry --dump-dir=D:\text\
dumpregistry --dump-dir = 提取内存注册表的目录路径(text先创建)
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 mftparser
导出命令:
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 mftparser --output-file=mftverbose.txt -D mftoutput
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 truecryptmaster
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 truecryptpassphrase
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 netscan
┌──(root㉿attacker)-[~/Desktop/volatility-master]
└─# python2 vol.py -f '/home/attacker/Desktop/memdump.mem' --profile=Win7SP1x64 --kdbg=0x82947c28 --dump-dir="文件保存路径" --pid=3048(进程号)