工具介绍:Volatility是开源的Windows,Linux,MaC,Android的内存取证分析工具,由python编写成,命令行操作,支持各种操作系统。(主要分析的是内存dump文件)
安装:apt-get install volatility

用法:这里以BUUCTF上的一个典型例题为例子。

[HDCTF2019]你能发现什么蛛丝马迹吗

下载附件得到一个memory.img的镜像文件
1.先是察看一下镜像文件的信息:
命令: volatility -f memory.img imageinfo
图片.png
这里对于镜像文件(内存文件)所属的操作系统工具给出三个建议性profile(一般会出现多个结果,一般也都是选第一个)
2.进一步对选择的系统进行查看进程。
命令:volatility -f memory.img —profile=Win2003SP0x86 pslist
这里选择第一个发现报错了:
图片.png改为第二个:
图片.png3.发现进程中出现敏感词:DumpIt.exe
(1)查看下cmd的使用记录:
命令:volatility -f memory.img —profile=Win2003SP1x86 cmdscan
图片.png(2)查看下截图:
命令:volatility -f memory.img —profile=Win2003SP1x86 screenshot —dump-dir=./
图片.png同目录下:图片.png其中的一个图片有有用信息:
图片.png可以看出打开过一个flag.png
4.对图片进行全盘搜索:
命令:volatility -f memory.img —profile=Win2003SP1x86 filescan | grep flag
图片.png根据内存地址进行提取:
命令: volatility -f memory.img —profile=Win2003SP1x86 dumpfiles -Q 0x000000000484f900 -D ./
图片.png
二维码扫描后得到:jfXvUoypb8p3zvmPks8kJ5Kt0vmEw0xUZyRGOicraY4=
拿去解发现不是base一类的,猜测可能是加密了,接着看。
5.回去查看一下进程:
volatility -f memory.img —profile=Win2003SP1x86 windows
发现进程有点多,不是太好处理。
换个方法:第在3步时DumpIt.exe进行处理。
dump下来:
命令:volatility -f memory.img —profile=Win2003SP1x86 memdump -p 1992 -D ./
图片.png这里可能会报错,换成root权限就好了。
对分离出来的文件进行foremost分离:
在得到的文件png中发现;
图片.png图片.png
这边的两个二维码和图片都是相同的,这边得到的二维码和上面的得到的flag.png扫描得到的一样。
根据图片提示的信息可知这个是AES加密。
key和iv(偏移都给出了)。
这个带偏移的AES加密进行解密时挺费劲的,Cyberchef不会设置,去找在线网站,试了很多个才找到一个可以解出来的。
图片.png附网站:https://oktools.net/aes
最后的AES解密这里再附上Cyberchef的做法,因为给出的key和偏移都很巧,都是16位的,不用再凑成16位的了。因为input的处的选项有Raw和Hex,这里选的Hex,所以前面解完Base64后再转成Hex.
图片.png