由一道ctf题谈内存取证的流程

2019-11-28 23:11:00
ctf - lsb加密 - 取证分析

0x00前言

题目名为Advertising for Marriage,取自最近参加的红帽杯比赛,鉴于网上关于内存取证的相关资料还较少,本人写了本文来以题目的视角介绍取证流程。

0x01 Raw后缀

题目下来时给了一个文件是raw后缀的,这时候玩过相机的朋友立马说了,这个是图片文件,你拿ps试试看,比赛时我们确实把它当成图片来看待了。(滑稽 ~。~)

事实上,windows可以通过使用DumpIt这个软件来将一个系统的内存镜像为一个raw后缀的文件,因此当看到raw后缀的文件时,虽然你可以把它当成相机原图像,当也别忘记把它当成一个Windows镜像来对待

0x02 Volatility

讲到内存取证就不得不说神器Volatility,该神器由python编写,在Windows和linux下都可以安装,而我们的kali自带了,所以这里就不谈怎么安装了,谈谈怎么用。

通用格式如下:

volatility -f <filename> --profile=<配置名> <cmd> <option>

0x03 从题目来看流程

什么命令什么的,大家应该都知道可以通过volatility -h来查看,但就是道理都懂,就是因为是英文,大家都懒得慢慢理解,所以我这里从题目来入手。

查看镜像信息

拿到题目,我们首先要对镜像使用volatility -f 1.raw imageinfo来查看镜像的信息,可以看见输出如下:

imageinfo的输出只会告诉我们一个建议的配置文件,因此我们按先后顺序采用第一个作为配置文件,也就是WinXPSP2x86。

查看进程

接下来我们需要查看进程,使用pslist来查看。

volatility -f 1.raw profile=WinXPSP2x86 pslist

输出尾部如下:

0x818f7980 notepad.exe 1056 1596 1 50 0 0 2019-10-31 07:13:35 UTC+0000
0x81f22da0 wuauclt.exe 1332 1024 8 173 0 0 2019-10-31 07:14:09 UTC+0000
0x820af020 mspaint.exe 332 1596 6 114 0 0 2019-10-31 07:14:27 UTC+0000
0x818e51c0 svchost.exe 1128 668 9 134 0 0 2019-10-31 07:14:27 UTC+0000
0x81f14020 wpabaln.exe 248 552 1 66 0 0 2019-10-31 07:14:59 UTC+0000
0x8192d020 DumpIt.exe 180 1596 1 28 0 0 2019-10-31 07:15:33 UTC+0000
0x81e7e8d8 conime.exe 168 180 1 36 0 0 2019-10-31 07:15:33 UTC+0000

我们来分析一下这些进程:

  • conime是即Console IME的缩写,该进程只有在打开命令行时才会启动。
  • DumpIt前面也简单介绍了,这里就不说了。
  • wpabaln是系统的一个进程。
  • svchost也是系统进程。
  • mspaint是window下一个画图软件。
  • wuauclt系统进程。
  • notepad是一个编辑器,大家应该都知道了吧。

具体进程具体分析

为什么出题人会在使用dumpit之前开了一个画图软件?我们可以尝试将该进程的数据dump下来,使用如下命令: volatility -f 1.raw --profile=WinXPSP2x86 memdump -D ./ctf -p 332

下来后的文件后缀改为data后使用gimp来打开,具体gimp安装自己去网上搜了,当然了,你也可以将文件拖到ps上面也是可以的。

接下来将图像类型改为rgb alpha后修改其宽度和高度直到出现一个肉眼可以识别的图像。

宽度调整到960左右,高度随意,然后打开可以看见如下:

看得出来那个应该是一个菠萝,我们将图片镜像旋转后可以得到b1cx这四个字。

接下来看看notepad,对待它,我们可以直接使用如下命令: volatility notepad -f 1.raw --profile=WinXPSP2x86

与上面的四个字符连起来就可以得到hint了:

b1cxneedmoneyandgirlfirend

扫文件

得到hint之后我们也就不需要再分析进程了,我们可以扫扫文件看看有没有图片之类的东西。

使用如下命令: volatility -f 1.raw --profile=WinXPSP2x86 filescan可以扫出文件,我们可以后面加上管道符之后用grep的正则模式匹配文件后缀,如:

volatility -f 1.raw --profile=WinXPSP2x86 filescan|grep -E 'jpg|png|jpeg|bmp|gif'

这个文件名看起来很不一样,我们可以dump下来看看。

volatility -f 1.raw --profile=WinXPSP2x86 dumpfiles -Q 0x000000000249ae78 --dump-dir=./ctf

-Q选项后接受一个内存地址。

发现图片长宽有问题,爆破一下后取得一个图片,判断为lsb加密,脚本https://github.com/livz/cloacked-pixel

接下来题目也差不多完了,不是内存取证的内容我也就不继续讲了。

0x04 其他参考命令

对不同题目有不同需求,如对桌面截图啊,比如你看见了浏览器啊,那就有可能下载了什么东西,可以扫扫download目录之类的。

https://github.com/volatilityfoundation/volatility/wiki/Command-Reference



本文原创于HhhM的博客,转载请标明出处。



CopyRight © 2019-2020 HhhM
Power By Django & Bootstrap
已运行
粤ICP备19064649号