- 简介
- 安装与基础命令
- 一个例题
一.简介
Volatility是一个用于事件响应和恶意软件分析的开源内存取证框架。它是用Python编写的,支持Microsoft Windows,macOS和Linux,volatility框架是一个完全开放的工具集合,在GNU通用许可证下用Python实现,用于从易失性存储器(RAM)样本总提取数字镜像。提取技术完全独立于被取证的系统而执行,但可以查看到系统运行时的状态信息。该框架旨在向人们介绍从内存样本中提取的数字镜像相关的技术,并为进一步研究该领域提供一个平台,它可以分析 .raw、.vmem、.img后缀的文件。
二.安装与基础命令
1.安装
1 | git clone https://github.com/volatilityfoundation/volatility.git |
Volatility使用python2运行,需要的python模块如下
Distorm3:反编译库
Yara:恶意软件分类工具
PyCrypto:加密工具集
PIL:图片处理库
OpenPyxl:读写excel文件
ujson:JSON解析
2.基础命令
1 | python vol.py -f [image] ‐-profile=[profile][plugin] |
其中 -f
后面加的是要取证的文件, --profile
后加的是工具识别出的系统版本, [plugin]
是指使用的插件,其中默认存在一些插件,另外还可以自己下载一些插件扩充。
可以使用 -h
参数获取使用方法和插件介绍,这里只列举几个常用到的
imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
notepad:查看当前展示的 notepad 文本
editbox:显示有关编辑控件的信息
screenshot:保存基于GDI窗口的伪截屏
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
mendump:提取出指定进程,常用foremost 来分离里面的文件
filescan:扫描所有的文件列表
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(实际中没有mimikatz效果好)
svcscan:扫描 Windows 的服务
connscan:查看网络连接
cmdscan:可用于查看终端记录
dlllist: 列出某一进程加载的所有dll文件
dumpfiles:导出某一文件(指定虚拟地址)
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
timeliner: 将所有操作系统事件以时间线的方式展开
三.一个例题
内存取证三项
描述:一天下午小白出去吃饭,临走之前还不忘锁了电脑,这时同寝室的小黑想搞点事情,懂点黑客和社工知识的小黑经过多次尝试获得了密码成功进入电脑,于是便悄悄在电脑上动起手脚了,便在桌面上写着什么,想给小白一个惊喜,同时还传送着小白的机密文件,正巧这时小白刚好回来,两人都吓了一跳,小黑也不管自己在电脑上留下的操作急忙离开电脑,故作淡定的说:“我就是随便看看”。
1.小黑写的啥,据说是flag?
2.那么问题来了,小白的密码是啥?
3.小黑发送的机密文件里面到底是什么?
查看镜像信息python27 vol.py -f ..\内存取证三项\1.raw imageinfo
可以看到系统是WinXPSP2x86,使用--profile
命令指定系统版本
查看进程
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 pslist |
可以看到系统进程中有一个notepad.exe,根据题目,猜测里面包含第一个flag
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 notepad |
获取到密文666C61677B57336C6563306D655F376F5F466F72336E356963737D
试了几次,用的base16编码,第一个flag
第二个flag,去查找电脑的密码
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 hashdump |
Administrator:500:1e27e87bd14ec8af43714428b303e3e4:1e581aafa474dfadfdf83fc31e4fd4ea:::
密文可以使用ophcrack或者其他软件爆破,这里彩虹表比较少,没有完全爆破出来,后面有提示能猜出来是19950101
查看网络连接状况
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 connscan |
发现一个2333端口的访问请求,看一下pid对应的进程
此外还有cmd.exe,猜测是使用cmd命令连接nc,可以通过cmd命令行来查看执行了什么命令
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 cmdscan |
可以看到获取了一个 P@ssW0rd_is_y0ur_bir7hd4y.zip的压缩文件,将文件导出
1 | python27 vol.py -f ..\内存取证三项\1.raw --profile=WinXPSP2x86 memdump -p 120 --dump-dir=dump |
使用binwalk对提取出来的dmp文件进行分析,发现存在P@ssW0rd_is_y0ur_bir7hd4y.txt,现在只需要提取出这个txt文件,使用foremost提取出文件,得到6个zip
解压生成的压缩包,发现需要密码,密码根据提示可以猜出是19950101,解压获得flag
参考