1-1. Volatility2.6简介
Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。
那么针对竞赛这块(CTF、技能大赛等)基本上都是用在Misc方向的取证题上面,很多没有听说过或者不会用这款工具的同学在打比赛的时候就很难受。
当然,这款工具在安装的时候也是非常难受,一大堆报错会让你很崩溃,但是你搞定这些事后对你的取证赛题将会突飞猛进!
后续我也会更新解决各种疑难杂症报错的解决方案给大家。
2-1 Volatility2.6在Linux与Windows下的安装方法
2-1-1. Volatility2.6 Kali Linux下安装教程
Volatility2.6是基于Python2来实现的,而Volatility3的基于Python3来实现的,所以我们需要Python2的环境,推荐在kali下配置,因为kali自带Python2和Python3的环境,这样我们2.6和3的版本可以共存。
后续我也会写文章出Volatility3的安装和使用教程
该项目目前在Github上的开源项目地址以及官网:
https://github.com/volatilityfoundation/volatility https://www.volatilityfoundation.org/releases
直接GitHub拉项目到Kali中或者通过官网下载对应版本并解压即可
到目录文件下 make install 或者 python2 setup.py install 进行安装
安装完成后执行 python2 volatility/vol.py -h 可以看到版本号即为安装成功
2-1-2. Volatility2.6 Windows下安装教程
在官网找到自己合适的版本下载即可,同时电脑要安装Python2的环境
cmd下运行volatility_2.6_win64_standalone.exe -h 即可
3-1. Volatility2.6的使用方法
3-1-1. 基础语法以及参数
-h:查看帮助
-f:指定镜像
imageinfo:获取当前内存镜像基本信息
–profile:指定镜像对应系统
相关命令后接参数:
-p:指定PID
-Q:指定内存地址
-D/–dump-dir:指定导出目录
-o:指定注册表的virtual地址
3-1-2. 常用命令以及语法
volatility -f 镜像 参数 命令 示例:volatility -f XXX.raw --profile=Win7SP1x64 pslist 常用命令 imageinfo #查看镜像系统信息 使用对应版本的镜像,后面的参数使用–profile(两根横杠) --profile=Win7SP1x64 pslist #看完镜像直接查看这个镜像上有那些进程正在运行 pslist应该比较好理解就是进程的列表的意思。 psxview #可查看一些隐藏进程 pstree #以树的形式来列出正在进行的进程,不会显示出隐藏或未链接的进程 cmdscan #查看镜像的历史命令,就是和linux中history差不多。 consoles #这个会比上面那个更好一些,能看到指令的输入和输出。 cmdline #此指令将会列出所有命令行下运行的程序 cmdscan #提取内存中保留的 cmd 命令使用情况 dlllist #显示每个进程的加载dll列表 netscan #获取到当时的网络连接情况 svcscan #查看服务 modules #查看内核驱动 modscan/driverscan #可查看一些隐藏的内核驱动 ShimCache #来识别应用程序兼容性问题。跟踪文件路径,大小,最后修改时间和最后“执行”时间. privs #显示进程权限 envars #显示环境变量 filescan #查找文件,可搭配 grep | "xxx" / filescan | grep -E “png” memdump -p [PID] -D 保存目录 #通过相应的进程能直接dump出相关的文件。 dumpfiles -Q [16进制位置] -D 保存目录 #通过16进制位置dump出相关的文件。 editbox #查看系统正在运行的编辑本 dumpregistry -D 保存目录 #导出系统的注册表 screenshot -D 保存目录 #查看并导出屏幕的截屏【需要安装PIL库】 clipboard #查看剪贴板数据,加一个-v可以导出相关的数据。 iehistory #查看浏览器的历史记录 printkey -K "SAM\Domains\Account\Users\Names" #查看用户名 printkey -K "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" #打印出最后登录的用户 hashdump #获取各个账号的MD5加密密码 hivelist #获取注册表单元配置列表 #找出获取system 的 virtual 地址,SAM 的 virtual 地址,然后在使用hashdump -y SYSTEM_virtual -x SAM_virtual. (通过hivelist找出用户)
4-2. 常用命令以及语法
4-2-1. 查询内存镜像操作系统
python2 volatility-master/vol.py -f 1.vmem imageinfo
拿到镜像后例行识别操作系统,这边可以看到操作系统的相似度依次排序,越靠前说明越有可能是这个系统,(参考nmap -o参数的操作系统识别),后续所有指令前面都需要跟上 --profile=XXXX 参数来指定操作系统
4-2-2. 列出内存镜像运行的进程
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 pslist
#查看一些隐藏进程
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 psxview
#以树的形式来列出正在进行的进程,不会显示出隐藏或未链接的进程
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 pstree
#显示进程权限
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 privs
4-2-3. 提取内存中 cmd 命令使用情况
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 cmdscan
我这个镜像貌似没有就不演示了
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 consoles
这个会比上面那个更好一些,能看到指令的输入和输出
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 cmdline
此指令将会列出所有命令行下运行的程序
4-2-4. 显示每个进程的加载dll列表
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 dlllist
4-2-5. 获取到当时的网络连接情况
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 netscan
可以看到这边有个1.exe的网络通信状态是ESTABLISHED且IP归属为海外,可以初步判定为恶意程序(木马、挖矿程序等)
补充:
1、LISTENING状态
服务启动后首先处于侦听(LISTENING)状态。
2、ESTABLISHED状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。
4-2-6. 查看服务
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 svcscan
4-2-7. 查看内核驱动
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 modules
python2 volatility-master/vol.py -f 1.vmem --profile=Win7SP1x64 modscan/driverscan #可查看一些隐藏的内核驱动
Volatility2.6内存取证工具安装及入门-2