内存取证-volatility工具的使用
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后面应该也少点什么,先这样了,回头有空再弄。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)