0x01 题目要求题目提供了一个大小为256MB的内存镜像,显然我们需要从当中找到一些有趣的东西。0x02 分析过程既然是内存取证,首先就想到一个强大的取证工具——volatility该工具在kali当中已集成,位于应用程序->数字取证->volatility。下面就针对该镜像,记录一下使用该工具进行内存取证的过程。1. volatilityvolatility命令手册:https://github.com/volatility…我这里只列举一些常用的命令1. 镜像基本信息volatility -f mem.data imageinfo关键看Suggested Profile(s)项,这里是工具判断该镜像的架构,同时也会提供相应架构的命令用于分析该镜像,本题中可能性最大的架构是Win7SP1x64,然后在调用命令时加上–profile=Win7SP1x64就可以了,继续往下看。2. 列举可使用的命令volatility -f mem.data –profile=Win7SP1x64 –help常用的命令如下:命令功能cmdline/cmdscan列出历史cmd命令filescan扫描文件,可配合grep使用netscan扫描建立的连接和套接字,类似于netstatpslist/psscan列出进程列表svcscan扫描windows服务列表screenshot显示GDI样式的截屏memdump从内存dump进程的内存dumpfiles从内存dump文件3. 搜索进程首先我们要看一下出题人在镜像里干了什么。volatility -f mem.data –profile=Win7SP1x64 pslist可以看到这里有3个应用程序进程,分别是:wordpad写字板 MineSweeper扫雷 mspaint画图,而且再看看启动时间,mspaint相隔之后的进程有长达10分钟时间,emmm,出题人应该是就在这段时间写的flag。接下来我们就看一下有没有什么可疑的文件留存。4. 查看可疑文件查看文档volatility -f mem.data –profile=Win7SP1x64 filescan | grep “doc|docx|rtf"没有。。。查看图片volatility -f mem.data –profile=Win7SP1x64 filescan | grep “jpg|jpeg|png|tif|gif|bmp"也没有。。。查看桌面volatility -f mem.data –profile=Win7SP1x64 filescan | grep “Desktop"难道出题人还用扫雷来做个图???(开个玩笑)看来flag并没有保存为文件,看看有没有其他突破口。5. 查看截图volatility -f mem.data –profile=Win7SP1x64 screenshot –dump-dir=./导出的图片如下说实话我根本看不出来这是个什么界面。。。6. 其他调查查看命令行输入volatility -f mem.data –profile=Win7SP1x64 cmdline查看系统用户名volatility -f mem.data –profile=Win7SP1x64 printkey -K “SAM\Domains\Account\Users\Names"查看网络连接volatility -f mem.data –profile=Win7SP1x64 netscan在做了很多无用功之后,只能去求助Google了,结果搜出来2篇文章,比较有参考价值:google-ctf-2016-forensic1:https://www.rootusers.com/goo…从内存导出raw图片:https://w00tsec.blogspot.com/…上述文章介绍了一种方法,通过利用volatility将进程内存dump下来,然后利用Gimp打开内存数据,查看镜像中的系统界面,于是我们开始实施。2.Gimp使用volatility dump内存:(2768是mspaint的pid)volatility -f mem.data –profile=Win7SP1x64 memdump -p 2768 –dump-dir=./将2768.dmp重命名为2768.data,使用Gimp打开,打开方式选择"原始图像数据"出现这样一个界面,做如下操作:图像类型:RGB Alpha调整三个属性:高度调整到合适值就不用变了,我的最大是733。确定一个宽度,通常是常见的显示器分辨率,然后不断调整位移,使之出现可见的图像,也就是镜像中的系统界面。(接下来就是我不断测试的过程,测试了2小时。。。)分辨率是1920时:可以看见3个程序,之前的GDI纯白色框线界面就是扫雷的结算界面,写字板里写的也不是flag,看来就只有画图里有flag了。分辨率是1024时:扫雷界面。证明在不同分辨率下,会显示不同的界面。分辨率是1568时:部分画图界面,可能离成功不远了。分辨率是1457时:getFlag!事后发现,微调位移为图像的左右方向平移,大幅调节位移则是图像的上下方向平移。而宽度不变时,始终显示的都是同一幅图像。0x03 小结一下为了凑够3点,就写一下小结吧谷哥大法好,樯外确实有很多好的题解熟悉使用各类取证分析工具,是快速解出此题的关键可以参透出题人心理,猜测可能的flag位置