题目附件: mem.dump
取证工具:volatility
0x01 镜像信息分析
我这里的volatility名为vol.py。kali的叫做volatility。他们都是一个工具
// 命令格式:
volatility -f [image] --profile=[profile] [plugin]
在分析之前,我们需要判断镜像的操作系统类型,使用插件imageinfo即可判断。
我这里的volatility工具名为vol.py
vol.py -f mem.dump imageinfo

这里有好多结果,我们一般都选择第一个。也就是Win7SP1x64
如果操作系统判断错误,是无法正确读取内存信息的,知道镜像后,就可以在--profile=
中带上对应的操作系统
在分析之前我们先介绍volatility中比较常用的插件:
- pslist 列出系统进程
- hashdump 查看用户和密码信息
- svcscan 查看服务
- iehistory 查看浏览器历史记录
- netscan 查看网络连接
- cmdscan 查看命令行操作
- filescan 查看文件
- dumpfiles 查看文件内容
- notepad 查看当前展示的notepad内容
- memdump 提取进程
- screenshot 屏幕截图
- hivelist 查看注册表注册单元
- hivedump 查看注册表键名
- printkey 查看注册表键值
- userassist 查看运行程序相关记录
- timeliner 最大程序提取信息
0x02 pslit 列出进程
vol.py -f mem.dump --profile=Win7SP1x64 pslist

我们通过运行的进程发现,目标打开了CMD命令行。而其对应对应的PID为2260。也使用了CnCrypt程序,Cncrypt是一款磁盘加密软件。

0x03 memdump 提取进程
volatility -f 文件 --profile=系统版本 memdump -p [PID] -D [dump 出的文件保存的目录]

我们将PID为2260的进程提取了出来,并使用-D参数将其保存在/Uses/sunny/Downloads目录下。文件名称为2260.dmp。
使用file命令查看文件类型 发现是一个data文件
使用mv命令将其重命名为2260.data

之后我们使用010 Editor或其他16进制编辑器。我们这里使用Hex Fiend
我们输入flag 尝试搜索关于flag的数据

我们发现文件中含有多个flag字段。由于它是cmd的命令进程,我们使用cmdscan插件获取命令行的操作
0x04 cmdscan获取命令行的操作
volatility -f mem.dump --profile=Win7SP1x64 cmdscan

我们发现存在一个tips,可以发现有一个flag.ccx。并且它告诉我们flag.ccx文件的密码和管理的密码一致。
0x05 filescan 查看文件
我们使用filescan插件 并且使用grep查找flag.ccx文件
volatility -f mem.dump --profile=Win7SP1x64 filescan | grpe flag.ccx

果不其然 我们的确发现了falg.ccx文件的路径,于是我们尝试dump这个文件
文件地址: 0x000000003e435890
0x06 dumpfiles 将文件保存到本地
volatility -f mem.dump --profile=Win7SP1x64 dumpfiles -Q 0x000000003e435890 --dump-dir=./

接下来我们就开始寻找Administrator的密码了
0x07 printKey 查看注册表值
0x07.1 获取计算机用户
volatility -f mem.dump --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"

0x07.2 获取SYSTEM SAM的虚拟地址
volatility -f mem.dump --profile=Win7SP1x64 hivelist

SYSTEM和SAM的虚拟地址分别为0xfffff8a000024010和0xfffff8a001590010
0x08 hashdump 获取用户的密码hash值
vol.py -f mem.dump --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a001590010

这两个结果是一致的。
Administrator:500:6377a2fdb0151e35b75e0c8d76954a50:0d546438b1f4c396753b4fc8c8565d5b:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
我们复制500:后面的字符串到:::截止
6377a2fdb0151e35b75e0c8d76954a50:0d546438b1f4c396753b4fc8c8565d5b
于是我们打开CMD5尝试解密
发现解密成功但是提示我们购买,于是我们果断放弃。寻找另一条出路

茫茫然想到有一个基于彩虹表破解hash加密的工具,它就是Ophcrack
打开Ophcrack点击Load选择Single hash 之后输入被加密的密文点击OK


之后点击Crack然后等待半分钟。就破解成功啦,此时我们得到密码ABCabc123

0x09 破解CncRypt加密
刚刚我们分析进程的时候发现,目标运行了Cncrypt,flag.ccx可能经过Cncrypt的加密。因为前面提示到flag.ccx的密码和Administrator的密码一致。也就是ABCabc123。
由于网上软件的安全性 这里不提供下载链接,CnCrypt软件自行在网上下载。下载的同时请注意其安全性。尽量在虚拟机中实验。
我们随便选择一个盘符。我们这里选择Q盘。之后点击选择文件

选择我们在0x06 dumpfiles 将文件保存到本地 中保存的文件

输入我们Administrator的密码ABCabc123 之后点击确定

之后在我们的Q盘看到了flag.txt。之后查看flag.txt的文件内容。也就是本道题的flag

致此 本道题就已经解出来啦。
本人觉得这道题主要考你对安全账号管理器(Security Account Manager 简称SAM) 的认识。以及对CnCrypt磁盘加密的了解情况。
0x10 总结
- 查看用户名密码信息
volatility -f mem.dump --profile=Win7SP1x64 hashdump
- 查看进程
volatility -f mem.dump --profile=Win7SP1x64 pslist
- 查看服务
volatility -f mem.dump --profile=Win7SP1x64 svcscan
- 查看浏览器历史记录
volatility -f mem.dump --profile=Win7SP1x64 iehistory
- 查看网络连接
volatility -f mem.dump --profile=Win7SP1x64 netscan
- 查看命令行操作
volatility -f mem.dump --profile=Win7SP1x64 cmdscan
- 查看文件
volatility -f mem.dump --profile=Win7SP1x64 filescan
- 查看文件内容
volatility -f mem.dump --profile=Win7SP1x64 dumpfiles -Q 0x000000 -D ./
- 查看当前展示的notepad内容
volatility -f mem.dump --profile=Win7SP1x64 notepad
- 提取进程
volatility -f mem.dump --profile=Win7SP1x64 memdump -p PID号 --dump-dir=./
- 屏幕截图
volatility -f mem.dump --profile=Win7SP1x64 screenshot --dump-dir=./
- 查看注册表配置单元
volatility -f mem.dump --profile=Win7SP1x64 hivelist
- 查看注册表键名
volatility -f mem.dump --profile=Win7SP1x64 hivedump -o 0xfffff8a001032410
- 查看运行程序相关的记录,比如最后一次更新时间,运行过的次数等。
volatility -f mem.dump --profile=Win7SP1x64 userassist
- 最大程序提取信息
volatility -f mem.dump --profile=Win7SP1x64 timeliner
- 获取SAM表的用户
volatility -f mem.dump --profile=WinXPSP2x86 printkey -K "SAM\Domains\Account\Users\Names"
- 使用grep正则表达式查找图片
volatility -f mem.dump --profile=Win7SP1x64 filescan | grep -E 'jpg|png|jpeg|bmp|gif
- 获取主机名
volatility -f mem.dump --profile=Win7SP1x64 -o 0xfffff8a0013fb010 printkey -K "ControlSet001\Control\ComputerName\ComputerName"
- 获取剪贴板的内容
vol.py -f ADMIN-PC-20201213-080024.raw --profile=Win7SP1x64 clipboard
本文作者为blog,转载请注明。