0x00 volatility介绍
Volatility
是一款非常强大的内存取证工具,它是由来自全世界的数百位知名安全专家合作开发的一套工具, 可以用于windows
,linux
,mac osx
,android
等系统内存取证。Volatility
是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。
在不同系统下都有不同的软件版本,官网地址:https://www.volatilityfoundation.org/26
。
目前已经有一段时间没有更新了,最新一次更新也是在2016
年。
支持的内存格式还是很丰富的。
另外不同的版本下,也存在着一定命令上的差异,使用时需注意。
生成内存dump
文件的方式
这里只介绍方式,具体的dump抓取操作方式自行研究。
1.VMware虚拟机软件
VM暂停虚拟后就可以看到vmem
文件,是可以直接被volatility分析的。
2.使用第三方软件
针对于物理机,可以使用如下工具来抓取内存dump
KnTTools
F-Response
Mandiant Memoryze
HBGary FastDump
MoonSols Windows Memory Toolkit
AccessData FTK Imager
EnCase/WinEn
Belkasoft Live RAM Capturer
ATC-NY Windows Memory Reader
Winpmem
Win32dd/Win64dd
DumpIt
windows
下可以使用AccessData FTK Imager
来完成。
3.CuckooSandbox
Cuckoo
沙箱在分析恶意样本后生成dump
文件。
官方地址:https://cuckoo.sh/docs/introduction/index.html
0x01 volatility工具的基本使用
命令格式
volatility -f [image] --profile=[profile] [plugin]
在分析之前,需要先判断当前的镜像信息,分析出是哪个操作系统
volatility -f xxx.vmem imageinfo
如果操作系统错误,是无法正确读取内存信息的,知道镜像后,就可以在--profile=
中带上对应的操作系统
常用插件
下列命令以windows
内存文件举例
查看用户名密码信息
volatility -f 1.vmem --profile=Win7SP1x64 hashdump
查看进程
volatility -f 1.vmem --profile=Win7SP1x64 pslist
查看服务
volatility -f 1.vmem --profile=Win7SP1x64 svcscan
查看浏览器历史记录
volatility -f 1.vmem --profile=Win7SP1x64 iehistory
查看网络连接
volatility -f 1.vmem --profile=Win7SP1x64 netscan
查看命令行操作
volatility -f 1.vmem --profile=Win7SP1x64 cmdscan
查看文件
volatility -f 1.vmem --profile=Win7SP1x64 filescan
查看文件内容
volatility -f 1.vmem --profile=Win7SP1x64 dumpfiles -Q 0xxxxxxxx -D ./
查看当前展示的notepad内容
volatility -f 1.vmem --profile=Win7SP1x64 notepad
提取进程
volatility -f 1.vmem --profile=Win7SP1x64 memdump -p xxx --dump-dir=./
屏幕截图
volatility -f 1.vmem --profile=Win7SP1x64 screenshot --dump-dir=./
查看注册表配置单元
volatility -f 1.vmem --profile=Win7SP1x64 hivelist
查看注册表键名
volatility -f 1.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410
查看注册表键值
volatility -f 1.vmem --profile=Win7SP1x64 printkey -K "xxxxxxx"
查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。
volatility -f 1.vmem --profile=Win7SP1x64 userassist
最大程序提取信息
volatility -f 1.vmem --profile=Win7SP1x64 timeliner
0x02 volatility实例
46届世界技能大赛湖北省选拔赛-数字取证
- 提供文件如下:worldskills3.vmem,提取码: czjb
- 任务描述:某日你获取了一个内存文件,请分析文件完成以下任务。
任务(一) 获取admin用户密码是多少 ?
先通过imageinfo
获取系统信息
使用hashdump
获取sam
可以通过john
工具来进行爆破,但是好像跑不出来结果。应该是设定了强密码。于是只能使用了lasdump
命令来查看
任务(二) 获ip和主机名是什么?
通过netscan
可以查询到地址
主机名需要通过查询注册表,先用hivelist
通过hivedump
查询对应键名volatility -f worldskills3.vmem --profile=Win7SP1x64 hivedump -o 0xfffff8a000024010 > system.txt;cat system.txt|grep name
,这个速度比较慢。
如果知道键名的话,可以直接查询键值
任务(三) 获取桌面上的 flag.txt中的文件内容是什么
先用filescan
扫描文件
接着使用dumpfiles
爆破文件内容
然后文件内容即可看到结果
任务(四) 服务器中存在一个挖矿病毒 矿池地址是?
查看netscan的内容,惟一一个建立了连接的就是矿池地址
任务(五)恶意代码在系统中注册了服务 服务名是什么?
上一题中已经知道了进程号为2588
查询进程的父进程为3036,通过svcscan
可以查询服务名称,找到对应服务名
任务(六) 获取恶意代码的进程名pid。
由上两题可知,2588和3036都是恶意进程的ID,即为svcst.exe和load.exe
任务(七) 病毒在自我删除时执行的命令是什么?(病毒进入系统后会删除原始文件,请获取文件删除时执行的命令)
通过memdump
爆出loader.exe的进程对应的内存信息
在内存文件中查寻del
关键字
但是感觉差了一点什么,/c
前面应该是少了一个cmd.exe
,而且del
后面应该也少点什么,先这样了,回头有空再弄。