Volatility是一款开源内存取证框架,能够对导出的内存镜像进行分析,通过获取内核数据结构,使用插件获取内存的详细情况以及系统的运行状态。
若没有不会安装可以查看这篇文章
内存取证-Volatility安装使用以及一些CTF比赛题目
输入vol.py --help
可查看帮助。可以使用 -h 参数获取使用方法和插件介绍,列举几个常用到的命令
imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数
pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以
pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程
psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程
cmdscan:可用于查看终端记录
notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)
filescan:扫描所有的文件列表
linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’
dumpfiles:导出某一文件(指定虚拟地址)
需要指定偏移量 -Q 和输出目录 -D
memdump:提取出指定进程,常用foremost 来分离里面的文件
需要指定进程-p [pid] 和输出目录 -D
editbox:显示有关编辑控件(曾经编辑过的内容)的信息
screenshot:保存基于GDI窗口的伪截屏
clipboard:查看剪贴板信息
iehistory:检索IE浏览器历史记录
systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)
hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)
mftparser:恢复被删除的文件
svcscan:扫描 Windows 的服务
connscan:查看网络连接
envars:查看环境变量
dlllist: 列出某一进程加载的所有dll文件
hivelist: 列出所有的注册表项及其虚拟地址和物理地址
timeliner: 将所有操作系统事件以时间线的方式展开
1.先查看基本信息。
vol.py -f easy_dump.img imageinfo
2.再查看进程信息,发现有一个 **notepad.exe(记事本)**进程 。说明肯定是写文件了,提取出来。
vol.py -f easy_dump.img --profile=Win7SP1x64 pslist
vol.py -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./
但是提取出来的直接用strings是无法查看的需要通过一下命令
strings -e l 2626.dmp | grep flag
vol.py -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg|gif|png'
vol.py -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./
6.图片提取出来后,利用binwalk测试图片中是否携带zip文件等内容
7.发现zip文件。使用foremost进行分离。
得到一个压缩包,解压后得到一个img文件
8.binwalk继续分析,分离出hint.txt文件。
binwalk -e message.img
9.经过查看,有非常多的数字成对出现,与坐标还是比较类似
尝试将数字转为坐标,使用 gnuplot 画图,发现二维码
10.扫描得到提示Here is the vigenere key: aeolus, but i deleted the encrypted message。
11.上面英文翻译结果如下,这是一个维吉尼亚密码,秘钥是aeolus,有了加密方式,有了秘钥,需要密文。继续查看刚才两个文件夹,寻找密文
寻找到一个.swp文件,如果熟悉它,知道是中断文件,直接恢复
vim -r .message.swp
密文出现
13.yise!dmsx_tthv_arr_didvi
应该就是密文了,使用之前拿到的密钥aeolus进行解密。
1.先查看下基本信息。
vol.py -f mem.dump imageinfo
2.pslist看一下有什么进程,这里发现有个 CnCrypt.exe
, CnCrypt
是一款磁盘加密软件 。
vol.py -f mem.dump --profile=Win7SP1x64 pslist
3.上面进程中还看到有 cmd.exe ,那就看下cmd命令,发现有个 flag.ccx 文件,并且提示 flag.ccx 的密码就是 Administrator 的密码。
vol.py -f mem.dump --profile=Win7SP1x64 cmdscan
4.该文件的密码和administrator的密码相同,接下来我们寻找flag.ccx文件
vol.py -f mem.dump --profile Win7SP1x64 filescan | grep flag.ccx
接下来我们将该文件dump出来,可以看到上面说它的密码和administrator相同
vol.py -f mem.dump --profile Win7SP1x64 dumpfiles -Q 0x3e435890 --dump-dir=./
列出SAM表的用户
vol.py -f mem.dump --profile Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
获取SYSTEM SAM的虚拟地址 分别为0xfffff8a000024010 0xfffff8a001590010,可以理解成在内存中的地址
vol.py -f mem.dump --profile Win7SP1x64 hivelist
6.hashdump获取用户密码的hash值
vol.py -f mem.dump --profile Win7SP1x64 hashdump
CMD5查询hash值得到Administrator账户的密码
至此完成加密文件提取和用户密码提取
之前查看进程时发现cncrypt
猜测文件使用cncrypt加密的