CTF内存取证-2019安洵杯

blog 574

题目附件: mem.dump

取证工具:volatility

0x01 镜像信息分析

我这里的volatility名为vol.pykali的叫做volatility。他们都是一个工具

// 命令格式:
volatility -f [image] --profile=[profile] [plugin]

在分析之前,我们需要判断镜像的操作系统类型,使用插件imageinfo即可判断。

我这里的volatility工具名为vol.py

vol.py -f mem.dump imageinfo
CTF内存取证-2019安洵杯

这里有好多结果,我们一般都选择第一个。也就是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
CTF内存取证-2019安洵杯

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

CTF内存取证-2019安洵杯

0x03 memdump 提取进程

volatility -f 文件 --profile=系统版本 memdump -p [PID] -D [dump 出的文件保存的目录]
CTF内存取证-2019安洵杯

我们将PID为2260的进程提取了出来,并使用-D参数将其保存在/Uses/sunny/Downloads目录下。文件名称为2260.dmp

使用file命令查看文件类型 发现是一个data文件

使用mv命令将其重命名为2260.data

CTF内存取证-2019安洵杯

之后我们使用010 Editor或其他16进制编辑器。我们这里使用Hex Fiend

我们输入flag 尝试搜索关于flag的数据

CTF内存取证-2019安洵杯

我们发现文件中含有多个flag字段。由于它是cmd的命令进程,我们使用cmdscan插件获取命令行的操作

0x04 cmdscan获取命令行的操作

volatility -f mem.dump --profile=Win7SP1x64 cmdscan
CTF内存取证-2019安洵杯

我们发现存在一个tips,可以发现有一个flag.ccx。并且它告诉我们flag.ccx文件的密码和管理的密码一致

0x05 filescan 查看文件

我们使用filescan插件 并且使用grep查找flag.ccx文件

volatility -f mem.dump --profile=Win7SP1x64 filescan | grpe flag.ccx
CTF内存取证-2019安洵杯

果不其然 我们的确发现了falg.ccx文件的路径,于是我们尝试dump这个文件

文件地址: 0x000000003e435890

0x06 dumpfiles 将文件保存到本地

volatility -f mem.dump --profile=Win7SP1x64 dumpfiles -Q  0x000000003e435890 --dump-dir=./
CTF内存取证-2019安洵杯

接下来我们就开始寻找Administrator的密码了

0x07 printKey 查看注册表值

0x07.1 获取计算机用户

volatility -f mem.dump --profile=Win7SP1x64 printkey -K "SAM\Domains\Account\Users\Names"
CTF内存取证-2019安洵杯

0x07.2 获取SYSTEM SAM的虚拟地址

volatility -f mem.dump --profile=Win7SP1x64 hivelist
CTF内存取证-2019安洵杯

SYSTEMSAM的虚拟地址分别为0xfffff8a0000240100xfffff8a001590010

0x08 hashdump 获取用户的密码hash值

vol.py -f mem.dump --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a001590010
CTF内存取证-2019安洵杯

这两个结果是一致的。

Administrator:500:6377a2fdb0151e35b75e0c8d76954a50:0d546438b1f4c396753b4fc8c8565d5b:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

我们复制500:后面的字符串到:::截止

6377a2fdb0151e35b75e0c8d76954a50:0d546438b1f4c396753b4fc8c8565d5b

于是我们打开CMD5尝试解密

发现解密成功但是提示我们购买,于是我们果断放弃。寻找另一条出路

CTF内存取证-2019安洵杯

茫茫然想到有一个基于彩虹表破解hash加密的工具,它就是Ophcrack

打开Ophcrack点击Load选择Single hash 之后输入被加密的密文点击OK

CTF内存取证-2019安洵杯
CTF内存取证-2019安洵杯

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

CTF内存取证-2019安洵杯

0x09 破解CncRypt加密

刚刚我们分析进程的时候发现,目标运行了Cncrypt,flag.ccx可能经过Cncrypt的加密。因为前面提示到flag.ccx的密码和Administrator的密码一致。也就是ABCabc123。

由于网上软件的安全性 这里不提供下载链接,CnCrypt软件自行在网上下载。下载的同时请注意其安全性。尽量在虚拟机中实验。

我们随便选择一个盘符。我们这里选择Q盘。之后点击选择文件

CTF内存取证-2019安洵杯

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

CTF内存取证-2019安洵杯

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

CTF内存取证-2019安洵杯

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

CTF内存取证-2019安洵杯

致此 本道题就已经解出来啦。

本人觉得这道题主要考你对安全账号管理器(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

分享