Volatility
是一款python开发的内存取证分析工具,支持Windows
,Linux
,MaC
,Android
等多类型操作系统系统的内存取证方式。该工具是由python
开发的,目前支持python2
、python3
环境。内存取证通常是指对计算机等智能设备运行时内存中存储的临时数据进行获取与分析,提取有价值的数据。
官网下载地址:https://www.volatilityfoundation.org/26
# 常见参数:
可以使用 -h 参数获取使用方法和插件介绍,列举几个常用到的命令
imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
# pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
# pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
# psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
cmdscan:可用于查看终端记录
notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
filescan:扫描所有的文件列表
linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’
dumpfiles:导出某一文件(指定虚拟地址)
需要指定偏移量 -Q 和输出目录 -D
memdump:提取出指定进程,常用foremost 来分离里面的文件
需要指定进程-p [pid] 和输出目录 -D
editbox:显示有关编辑控件(曾经编辑过的内容)的信息
screenshot:保存基于GDI窗口的伪截屏
clipboard:查看剪贴板信息
iehistory:检索IE浏览器历史记录
systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
mftparser:恢复被删除的文件
svcscan:扫描 Windows 的服务
connscan:查看网络连接
envars:查看环境变量
dlllist: 列出某一进程加载的所有dll文件
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
timeliner: 将所有操作系统事件以时间线的方式展开
获取内存镜像的版本信息
volatility -f 文件名 imageinfo
推荐使用镜像,一般第一个最为准确。这里为Win7SP1x64
列出内存中的进程
# 列出内存中进程信息
volatility -f 文件名 --profile=Win7SP1X64 pslist
# 列出进程的位置
volatility -f 文件名 --profile=Win7SP1x64 dlllist
查看网络连接情况
volatility -f 文件名 --profile=Win7SP1x64 netscan
列出缓存在内存中的注册表
volatility -f 文件名 --profile=Win7SP1x64 hivelist
扫描内存中的文件
volatility -f 文件名 --profile=Win7SP1x64 filescan
由于类出的文件较多,使用grep过滤
# linux使用
volatility -f 文件名 --profile=Win7SP1x64 filescan | grep -E "txt\|jpg\|png"
# windows使用
volatility -f 文件名 --profile=Win7SP1x64 filescan | findstr "txt jpg png"
# 在ctf经常搜索flag
volatility -f easy_dump.img --profile=Win7SP1x64 filescan | grep flag
导出内存中的文件
# 导出内存中文件
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./ -u
-Q:指定文件在内存中的地址
-D:指定文件导出的地址
-u:指定原文件名导出(不咋好用)
导出指定进程
volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
导出的文件名进程的`PID`,后缀名为`dmp`
可以使用`strings -e l 2616.dmp | grep flag`,筛选其中的flag
`-e`为选择字符的大小,`l`为`32bit`为一个字符
cmdscan历史命令
类似的也有cmdline
,相对于cmdscan像是的较多一点
获取截图screenshot
printkey列出SAM用户名
# 获取用户名
volatility -f 文件名 --profile=win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
# 获取主机名
volatility -f easy_dump.img --profile=Win7SP1x64 printkey -k "ControlSet001\Control\ComputerName\ComputerName"
# 使用hashdump也可以获取用户名,唯一的区别就是它可以获取用户hash
volatility -f 文件名 --profile=win7SP1x64 hashdump
获取浏览器历史记录
volatility -f 文件名 --profile=Win7SP1x64 iehistory
列举时间线
# 可以获取在某个时间线做了什么
volatility -f 文件名 --profile=Win7SP1x64 timeliner
列出pe文件版本信息
volatility -f 文件名 --profile=Win7SP1x64 verinfo
查看内存中记事本的内容
volatility -f 文件名 --profile=Win7SP1x64 editbox
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022