1.工具介绍
1.1 Volatility 迭代
-
Volatility 2.0: 初始版本发布于 2011年。Volatility 2 是一款成熟的内存取证工具,支持多个操作系统(Windows、Linux、MacOS)并提供了丰富的插件和功能,成为内存取证领域的标准工具之一。 -
Volatility 2.6:这是 Volatility 2 的最后一个主要版本。发布于 2016年,Volatility 2.6 增强了对 Windows 10 和其他操作系统的支持,并进行了一些性能和稳定性改进。但由于 Python 2 的逐步淘汰,Volatility 2 的开发逐渐放缓,转而聚焦于 Volatility 3 的发展。 -
Volatility 3.0: 第一个 Volatility 3 的版本发布于 2019年10月。Volatility 3 的发布标志着 Volatility 框架的重大重构,采用了 Python 3,完全重写了其代码库,并进行了模块化设计。与 Volatility 2 不同,Volatility 3 引入了更现代化的开发方式,提供了更好的扩展性、更强大的性能和对新操作系统的支持。 -
Volatility 3.x: 随着 Volatility 3 的发展,开发者不断增加新功能,改进性能,并修复了初期版本中的一些问题。每个小版本都专注于增强框架的稳定性和对新平台的支持。例如,Volatility 3.1 及以后的版本增加了对更广泛的操作系统和内存映像格式的支持,并增强了插件系统。
1.1.1 Volatility 2
1.1.2 Volatility 3
1.1.3 Volatility 2.6 和 Volatility 3 区别
特性 | Volatility 2 | Volatility 3 |
---|---|---|
Python版本 | 基于 Python 2 | 完全基于 Python 3 |
架构 | 单体架构,功能整合在一个文件中 | 模块化架构,支持插件和更强的扩展性 |
操作系统支持 | 支持 Windows、Linux、Mac OS,较少支持其他系统 | 支持 Windows、Linux、macOS,进一步支持 Android、ELF 等 |
性能 | 在处理大规模内存映像时性能较低 | 优化了性能,特别是在处理大规模内存转储时表现更好 |
插件和命令 | 插件较少,命令行接口较为简单 | 插件系统增强,命令行接口更简洁和一致,插件更多 |
内存映像支持 | 支持传统的内存映像格式,如 Windows 的 .dmp 和 .raw | 增加了对更多内存映像格式的支持,包括 ELF 格式等 |
符号解析 | 符号解析较为简单,且处理复杂的内存结构时可能出现困难 | 改进了符号解析和内存结构解析的准确性和效率 |
开发和扩展 | 扩展性较差,功能相对固定 | 模块化设计,易于扩展和开发新插件 |
代码结构 | 较为复杂且过时,维护性差 | 代码库进行了重构,采用了更加现代的编程模式 |
社区支持 | 较为广泛,但已进入维护阶段 | 更积极的发展阶段,社区支持逐渐增长 |
2.下载与安装
2.1 Volatility 2
MD5:
c6ff76f3cc08a739302ee372d6a2a62d volatility_2.6_lin64_standalone.zip
1de73681ec0e883af852755141eab909 volatility_2.6_mac64_standalone.zip
07b3292dc814ded7c00322a7525d73db volatility_2.6_win64_standalone.zip
1249996d1887578365ee74ec3763cc13 volatility-2.6.zip
SHA256:
dc375a0f6909cb93ac17a10e28a0963fcd2decfc3c4291aadb7e5e0cbe28874a volatility_2.6_lin64_standalone.zip
23bab41b110a1470b9ca71e945450a0a8bcb2edfc8160643b38ab2a8c1d4bd8f volatility_2.6_mac64_standalone.zip
bb021f3b569bf8ee4a408b2e07b0662699894ff7eecd4473badf0ef0c58f2fce volatility_2.6_win64_standalone.zip
5b73050d72bf94870ffce22843f03d4b0b7764011dec29ef1a0a5b1b46cf9295 volatility-2.6.zip
2.2 Volatility 3
MD5:
f326e5a1352e4e63527212f9278b85d5 volatility3-2.11.0.zip
unzip volatility3-2.8.0.zip
pip install -r requirements.txt
python setup.py install
vol -h
3.命令说明
-h, --help 列出所有可用选项及其默认值
默认值可以在配置文件中设置
(/etc/volatilityrc)
--conf-file=/home/kali/.volatilityrc
基于用户的配置文件
-d, --debug 调试Volatility
--plugins=PLUGINS 要使用的其他插件目录(冒号分隔)
--info 打印所有注册对象的信息
--cache-directory=/home/kali/.cache/volatility
存放缓存文件的目录
--cache 使用缓存
--tz=TZ 设置 (Olson) 时区以使用 pytz(如果已安装)或 tzset 显示时间戳
-f FILENAME, --filename=FILENAME
打开图像时使用的文件名
--profile=WinXPSP2x86
要加载的配置文件的名称(使用 --info 查看支持的配置文件列表)
-l LOCATION, --location=LOCATION
从中加载地址空间的 URN 位置
-w, --write 启用写支持
--dtb=DTB DTB 地址
--shift=SHIFT Mac KASLR 移位地址
--output=text 以这种格式输出(支持特定于模块,请参阅下面的模块输出选项)
--output-file=OUTPUT_FILE
在此文件中写入输出
-v, --verbose 详细信息
-g KDBG, --kdbg=KDBG 指定一个 KDBG 虚拟地址(注意:对于 64 位 Windows 8 及更高版本,这是 KdCopyDataBlock 的地址)
--force 强制使用可疑配置文件
-k KPCR, --kpcr=KPCR 指定特定的 KPCR 地址
--cookie=COOKIE 指定 nt!ObHeaderCookie 的地址(仅适用于 Windows 10)
3.1 Volatility 2
amcache 查看AmCache应用程序痕迹信息
apihooks 检测内核及进程的内存空间中的API hook
atoms 列出会话及窗口站atom表
atomscan Atom表的池扫描(Pool scanner)
auditpol 列出注册表HKLMSECURITYPolicyPolAdtEv的审计策略信息
bigpools 使用BigPagePoolScanner转储大分页池(big page pools)
bioskbd 从实时模式内存中读取键盘缓冲数据(早期电脑可以读取出BIOS开机密码)
cachedump 获取内存中缓存的域帐号的密码哈希
callbacks 打印全系统通知例程
clipboard 提取Windows剪贴板中的内容
cmdline 显示进程命令行参数
cmdscan 提取执行的命令行历史记录(扫描_COMMAND_HISTORY信息)
connections 打印系统打开的网络连接(仅支持Windows XP 和2003)
connscan 打印TCP连接信息
consoles 提取执行的命令行历史记录(扫描_CONSOLE_INFORMATION信息)
crashinfo 提取崩溃转储信息
deskscan tagDESKTOP池扫描(Poolscaner)
devicetree 显示设备树信息
dlldump 从进程地址空间转储动态链接库
dlllist 打印每个进程加载的动态链接库列表
driverirp IRP hook驱动检测
drivermodule 关联驱动对象至内核模块
driverscan 驱动对象池扫描
dumpcerts 提取RAS私钥及SSL公钥
dumpfiles 提取内存中映射或缓存的文件
dumpregistry 转储内存中注册表信息至磁盘
editbox 查看Edit编辑控件信息 (Listbox正在实验中)
envars 显示进程的环境变量
eventhooks 打印Windows事件hook详细信息
evtlogs 提取Windows事件日志(仅支持XP/2003)
filescan 提取文件对象(file objects)池信息
gahti 转储用户句柄(handle)类型信息
gditimers 打印已安装的GDI计时器(timers)及回调(callbacks)
gdt 显示全局描述符表(Global Deor Table)
getservicesids 获取注册表中的服务名称并返回SID信息
getsids 打印每个进程的SID信息
handles 打印每个进程打开的句柄的列表
hashdump 转储内存中的Windows帐户密码哈希(LM/NTLM)
hibinfo 转储休眠文件信息
hivedump 打印注册表配置单元信息
hivelist 打印注册表配置单元列表
hivescan 注册表配置单元池扫描
hpakextract 从HPAK文件(Fast Dump格式)提取物理内存数据
hpakinfo 查看HPAK文件属性及相关信息
idt 显示中断描述符表(Interrupt Deor Table)
iehistory 重建IE缓存及访问历史记录
imagecopy 将物理地址空间导出原生DD镜像文件
imageinfo 查看/识别镜像信息
impscan 扫描对导入函数的调用
joblinks 打印进程任务链接信息
kdbgscan 搜索和转储潜在KDBG值
kpcrscan 搜索和转储潜在KPCR值
ldrmodules 检测未链接的动态链接DLL
lsadump 从注册表中提取LSA密钥信息(已解密)
machoinfo 转储Mach-O 文件格式信息
malfind 查找隐藏的和插入的代码
mbrparser 扫描并解析潜在的主引导记录(MBR)
memdump 转储进程的可寻址内存
memmap 打印内存映射
messagehooks 桌面和窗口消息钩子的线程列表
mftparser 扫描并解析潜在的MFT条目
moddump 转储内核驱动程序到可执行文件的示例
modscan 内核模块池扫描
modules 打印加载模块的列表
multiscan 批量扫描各种对象
mutantscan 对互斥对象池扫描
notepad 查看记事本当前显示的文本
objtypescan 扫描窗口对象类型对象
patcher 基于页面扫描的补丁程序内存
poolpeek 可配置的池扫描器插件
printkey 打印注册表项及其子项和值
privs 显示进程权限
procdump 进程转储到一个可执行文件示例
pslist 按照EPROCESS列表打印所有正在运行的进程
psscan 进程对象池扫描
pstree 以树型方式打印进程列表
psxview 查找带有隐藏进程的所有进程列表
qemuinfo 转储 Qemu 信息
raw2dmp 将物理内存原生数据转换为windbg崩溃转储格式
screenshot 基于GDI Windows的虚拟屏幕截图保存
servicediff Windows服务列表(ala Plugx)
sessions _MM_SESSION_SPACE的详细信息列表(用户登录会话)
shellbags 打印Shellbags信息
shimcache 解析应用程序兼容性Shim缓存注册表项
shutdowntime 从内存中的注册表信息获取机器关机时间
sockets 打印已打开套接字列表
sockscan TCP套接字对象池扫描
ssdt 显示SSDT条目
strings 物理到虚拟地址的偏移匹配(需要一些时间,带详细信息)
svcscan Windows服务列表扫描
symlinkscan 符号链接对象池扫描
thrdscan 线程对象池扫描
threads 调查_ETHREAD 和_KTHREADs
timeliner 创建内存中的各种痕迹信息的时间线
timers 打印内核计时器及关联模块的DPC
truecryptmaster Recover 恢复TrueCrypt 7.1a主密钥
truecryptpassphrase 查找并提取TrueCrypt密码
truecryptsummary TrueCrypt摘要信息
unloadedmodules 打印卸载的模块信息列表
userassist 打印注册表中UserAssist相关信息
userhandles 转储用户句柄表
vaddump 转储VAD数据为文件
vadinfo 转储VAD信息
vadtree 以树形方式显示VAD树信息
vadwalk 显示遍历VAD树
vboxinfo 转储Virtualbox信息(虚拟机)
verinfo 打印PE镜像中的版本信息
vmwareinfo 转储VMware VMSS/VMSN 信息
volshell 内存镜像中的shell
windows 打印桌面窗口(详细信息)
wintree Z顺序打印桌面窗口树
wndscan 池扫描窗口站
yarascan 以Yara签名扫描进程或内核内存
./volatility_2.6_lin64_standalone -f <memory dump file> --profile=<profile> <plugin>
-
-f <memory dump file>
: 指定要分析的内存转储文件。 -
--profile=<profile>
: 指定分析时使用的操作系统配置文件(例如 Windows 7 64 位等)。 -
<plugin>
: 指定使用的插件,插件用于提取特定类型的内存信息。
3.2 常用命令和插件解析
3.2.1. imageinfo
./volatility_2.6_lin64_standalone -f SERVER.raw imageinfo
3.2.2. pslist
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 pslist
3.2.3. pstree
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 pstree
3.2.4. dlllist
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 dlllist
3.2.5. netscan
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 netscan
3.2.6. mftparser
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 mftparser
3.2.7. malfind
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 malfind
3.2.8. cmdscan
和 consoles
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 cmdscan
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 consoles
3.2.9. filescan
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 filescan
3.2.10. dumpfiles
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 dumpfiles -Q 0x000000007e4cedd0 -D /tmp
3.2.11. screenshot
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 screenshot --dump-dir=/tmp
3.2.12. hashdump
./volatility_2.6_lin64_standalone -f SERVER.raw --profile=Win7SP1x64 hashdump
3.3 Volatility 3
layerwriter 列出内存镜像platform信息
linux.bash 从内存中恢复bash命令历史记录
linux.check_afinfo 验证网络协议的操作功能指针
linux.check_syscall 检查系统调用表中的挂钩
linux.elfs 列出所有进程的所有内存映射ELF文件
linux.lsmod 列出加载的内核模块
linux.lsof 列出所有进程的所有内存映射
linux.malfind 列出可能包含注入代码的进程内存范围
linux.proc 列出所有进程的所有内存映射
linux.pslist 列出linux内存映像中存在的进程
linux.pstree 列出进程树
mac.bash 从内存中恢复bash命令历史记录
mac.check_syscall 检查系统调用表中的挂钩
mac.check_sysctl 检查sysctl处理程序的挂钩
mac.check_trap_table 检查trap表中的挂钩
mac.ifconfig 列出网卡信息
mac.lsmod 列出加载的内核模块
mac.lsof 列出所有进程的所有内存映射
mac.malfind 列出可能包含注入代码的进程内存范围
mac.netstat 列出所有进程的所有网络连接
mac.psaux 恢复程序命令行参数
mac.pslist 列出linux内存映像中存在的进程
mac.pstree 列出进程树
mac.tasks 列出Mac内存映像中存在的进程
windows.info 显示正在分析的内存样本的OS和内核详细信息
windows.callbacks 列出内核回调和通知例程
windows.cmdline 列出进程命令行参数
windows.dlldump 将进程内存范围DLL转储
windows.dlllist 列出Windows内存映像中已加载的dll模块
windows.driverirp 在Windows内存映像中列出驱动程序的IRP
windows.driverscan 扫描Windows内存映像中存在的驱动程序
windows.filescan 扫描Windows内存映像中存在的文件对象
windows.handles 列出进程打开的句柄
windows.malfind 列出可能包含注入代码的进程内存范围
windows.moddump 转储内核模块
windows.modscan 扫描Windows内存映像中存在的模块
windows.mutantscan 扫描Windows内存映像中存在的互斥锁
windows.pslist 列出Windows内存映像中存在的进程
windows.psscan 扫描Windows内存映像中存在的进程
windows.pstree 列出进程树
windows.procdump 转储处理可执行映像
windows.registry.certificates 列出注册表中存储的证书
windows.registry.hivelist 列出内存映像中存在的注册表配置单元
windows.registry.hivescan 扫描Windows内存映像中存在的注册表配置单元
windows.registry.printkey 在配置单元或特定键值下列出注册表项
windows.registry.userassist 打印用户助手注册表项和信息
windows.ssdt 列出系统调用表
windows.strings 读取字符串命令的输出,并指示每个字符串属于哪个进程
windows.svcscan 扫描Windows服务
windows.symlinkscan 扫描Windows内存映像中存在的链接
vol -f <memory dump file> <plugin> [options]
-
-f <memory dump file>
:指定分析的内存转储文件。
注意:在 Volatility 3 中,Profile 的概念被改为适配特定操作系统的自动探测。
-
<plugin>
:选择要运行的插件,插件用于提取不同类型的信息。 -
[options]
:可选参数,针对插件的特定配置。
3.4 常用命令和插件解析
3.4.1. windows.info
vol -f SERVER.raw windows.info
3.4.2. windows.pslist
vol -f SERVER.raw windows.pslist
3.4.3. windows.pstree
vol -f SERVER.raw windows.pstree
3.4.4. windows.dlllist
vol -f SERVER.raw windows.dlllist
3.4.5. windows.netscan
vol -f SERVER.raw windows.netscan
3.4.6. windows.cmdline
vol -f SERVER.raw windows.cmdline
3.4.7. windows.filescan
vol -f SERVER.raw windows.filescan
3.4.8. windows.dumpfiles
vol -f SERVER.raw windows.dumpfiles --physaddr 0x7e4cedd0
3.4.9. hashdump
vol -f SERVER.raw windows.hashdump
原文始发于微信公众号(solar应急响应团队):【应急响应工具教程】取证工具-Volatility安装与使用
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论