最近简单的了解了一下Volatility这个开源的取证框架,这个框架可以对导出的内存镜像镜像分析,能过经过获取内核的数据结构,使用插件获取内存的详细状况和运行状态,同时能够直接dump系统文件,屏幕截图,查看进程等等等等~~~python
0x01 安装
安装分为三步走:linux
-
下载git
-
安装必要的python依赖文件github
-
安装本体json
下载
你能够在Release中找到对应你系统(Mac,Win,Linux)的源代码,固然也能够经过github去获取源码:windows
git clone https://github.com/volatilityfoundation/volatility.git缓存
依赖
若是只是用Volatility本体,就不要安装这些依赖,可是若是想使用某些插件,就须要对这些以依赖进行安装·网络
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
安装
若是你用的是独立的win、linux、mac执行文件,那就没必要安装了。只要用python去执行就好。
如果下载了压缩文件,那你能够选择直接运行python主程序,也能够选择使用python setup.py install的方式将Volatility以一个库的形式安装在系统的特定位置上,从而之后咱们能够将Volatility做为一个库在其余脚本中去引用namespace。
0x02 使用
kali自带有volatility,因而我直接在kali山进行操做
我这里也直接用我这两天看的一道CTF的题目做为实例来操做吧
Imageinfo
这个命令能够用来获取内存镜像的摘要信息,好比系统版本,硬件构架等
volatility -f wuliao.data imageinfo
经过Suggested Profile(s) 咱们能够知道这个镜像文件的版本最有可能事Win7SP1x64
可使用--info参数来查看Volatility已经添加的profile和插件信息
Kdbgscan
这个插件能够扫描文件的profile的值,一般扫描结果有多个,只有一个结果是彻底正确的,kdbgscan和imageinfo都只适用于windows的镜像
Pslist
volatility -f wuliao.data --profile=Win7SPx64 pslist
pslist能够直接列出运行的进程,若是进程已经结束,会在Exit列显示日期和时间,代表进程已经结束
Hivelist
列举缓存在内存中的注册表
volatility -f wuliao.data --profile=Win7SP1x64 hivelist
filescan
扫描内存中的文件
volatility -f wuliao.data --profile=Win7SP1x64 filescan
filescan 也能够结合grep命令来进行筛选,好比
volatility -f wuliao.data --profile=Win7SP1x64 filescan |grep "doc\|docx\|rtf"
也能够
volatility -f wuliao.data --profile=Win7SP1x64 filescan |grep "flag"
Dumpfiles
导出内存中缓存的文件
我直接导出上面搜索flag获得的flag.jpeg文件
volatility -f wuliao.data --profile=Win7SP1x64 dumpfiles -Q 0x000000007f142f20 -D ./ -u
Cmdscan/cmdline
提取内存中保留的cmd命令使用状况
volatility -f wuliao.data --profile=Win7SP1x64 cmdline
查看截图
volatility -f wuliao.data --profile=Win7SP1x64 screenshot --dump-dir=./
查看系统用户名
volatility -f wuliao.data --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
查看网络链接
volatility -f wuliao.data --profile=Win7SP1x64 netscan
我真是个啥都不会,啥都要学的five啊