内存取证
所需软件:
Linux平台下的Volatility,Windows平台下的010 Editor和Stegsolve
安装方法:
Volatility在Ubuntu下安装命令:sudo apt install volatility
Stegsolve在Github地址:https://github.com/Giotino/stegsolve
题目:
https://share.weiyun.com/Y3B9kf0W
解题过程:
0x01 查看内存镜像信息:
volatility -f zy.raw imageinfo
可知其系统版本为WinXPSP2x86
0x02 获取进程信息:
volatility -f zy.raw --profile=WinXPSP2x86 pslist
发现可疑记得程序smss.exe,故尝试提取进程。
0x03 提取进程:
volatility -f zy.raw --profile=WinXPSP2x86 memdump -p 536 -D ./
命令用于提取smss.exe进程的dump,
-
--profile
的参数为系统版本 -
-p
的参数为进程ID -
-D
的参数为保存文件的路径
0x04 查看dump:
strings -e l 536.dmp | grep flag
命令使用strings
读取dump二进制文件,并通过管道符传给grep
提取二进制文件中包含flag
关键词的部分
-e
的参数为编码方式,其中l
为16-bit编码
发现可疑记得文件flag.jpg
和flag.png
。
0x05 获取浏览器浏览历史:
volatility -f zy.raw --profile=WinXPSP2x86 iehistory
发现关键词hint.txt,尝试提取文件。
0x06 扫描并提取文件
volatility -f zy.raw --profile=WinXPSP2x86 filescan | grep hint
命令使用filescan
扫描内存中所有文件,通过管道符连接grep
只显示包含 hint 的结果。
发现文件地址为:0x0000000002456028
volatility -f zy.raw --profile=WinXPSP2x86 dumpfiles -Q 0x2456028 --dump-dir=./
使用dumpfiles
提取文件
-Q
的参数为 内存地址--dump-dir
的参数为导出文件的目录
使用010Editor
打开文件(或者notepad++也可查看相应信息):
提示文件名为fl4g
,故技重施。
volatility -f zy.raw --profile=WinXPSP2x86 filescan | grep fl4g
volatility -f zy.raw --profile=WinXPSP2x86 dumpfiles -Q 0x2052028 --dump-dir=./
文件重命名为zip
,unzip
解压,得到两张图片。
猜测为图片写隐,flag信息隐藏在图片中。
0x07 图片分析:
使用Stegsolve进行图片分析,程序运行需要Java环境。
先后打开其中一个文件,然后点击Analyse
->Image Combiner
打开另一张图片,通过点击>
切换模式,当a点击到sub模式后可以得到二维码。
如果无法查看到有效信息,尝试交换两个文件打开比较。
二维码解码后为一个百度翻译的网址,点击发音按钮即可得到flag。
Volatility常用命令:
- 获取内存镜像的摘要信息
volatility -f 镜像名 imageinfo
- 获取运行的进程
volatility -f 镜像名 --profile=系统版本 pslist
- 获取缓存在内存中的注册表
volatility -f 镜像名 --profile=系统版本 hivelist
- 扫描文件 结合 grep 进行筛选
volatility -f 镜像名 --profile=系统版本 filescan
volatility -f 镜像名 --profile=系统版本 filescan | grep -E 'jpg|png|jpeg|bmp|gif'
- 提取内存中缓存的文件
volatility -f 镜像名 --profile=系统版本 dumpfiles -Q [文件地址] --dump-dir=./
- 获取cmd输入的内容
volatility -f 镜像名 --profile=系统版本 cmdline
- 查看截图
volatility -f 镜像名 --profile=系统版本 screenshot --dump-dir=./
- 查看系统用户名
volatility -f 镜像名 --profile=系统版本 printkey -K "SAM\Domains\Account\Users\Names"
- 查看网络连接情况
volatility -f 镜像名 --profile=系统版本 netscan