内存取证

本文最后更新于:3 年前


所需软件:

Linux平台下的Volatility,Windows平台下的010 Editor和Stegsolve ### 安装方法:

Volatility在Ubuntu下安装命令:sudo apt install volatility

Stegsolve在Github地址:https://github.com/Giotino/stegsolve

题目:

https://share.weiyun.com/Y3B9kf0W

解题过程:

查看内存镜像信息:

1
volatility -f zy.raw imageinfo
https://s1.ax1x.com/2020/08/06/aRKRBQ.png
https://s1.ax1x.com/2020/08/06/aRKRBQ.png

可知其系统版本为WinXPSP2x86

获取进程信息:

1
volatility -f zy.raw --profile=WinXPSP2x86  pslist

命令用于进程信息,--profile的参数为系统版本

aRMGUs.png
aRMGUs.png

发现可疑记得程序smss.exe,故尝试提取进程。

提取进程:

1
volatility -f zy.raw --profile=WinXPSP2x86  memdump -p 536 -D ./

命令用于提取smss.exe进程的dump,

  • --profile的参数为系统版本

  • -p的参数为进程ID

  • -D的参数为保存文件的路径

    aRQfWq.png
    aRQfWq.png

查看dump:

1
strings -e l 536.dmp | grep flag

命令使用strings读取dump二进制文件,并通过管道符传给grep提取二进制文件中包含flag关键词的部分

  • -e的参数为编码方式,其中l为16-bit编码
aR1VUJ.png
aR1VUJ.png

发现可疑记得文件flag.jpgflag.png

获取浏览器浏览历史:

1
volatility -f zy.raw --profile=WinXPSP2x86 iehistory
aR3Esf.png
aR3Esf.png

发现关键词hint.txt,尝试提取文件。

扫描并提取文件

1
volatility -f zy.raw --profile=WinXPSP2x86  filescan | grep hint

命令使用filescan扫描内存中所有文件,通过管道符连接grep只显示包含 hint 的结果。

aR8qu6.png
aR8qu6.png

发现文件地址为:0x0000000002456028

1
volatility -f zy.raw --profile=WinXPSP2x86 dumpfiles -Q 0x2456028 --dump-dir=./

使用dumpfiles提取文件

  • -Q的参数为 内存地址
  • --dump-dir的参数为导出文件的目录
aRJeeK.png
aRJeeK.png

使用010Editor打开文件(或者notepad++也可查看相应信息):

aRGzZT.png
aRGzZT.png

提示文件名为fl4g,故技重施。

1
2
volatility -f zy.raw --profile=WinXPSP2x86  filescan | grep fl4g
volatility -f zy.raw --profile=WinXPSP2x86 dumpfiles -Q 0x2052028 --dump-dir=./
aRJXfH.png
aRJXfH.png

文件重命名为zipunzip解压,得到两张图片。

aRYD4e.png
aRYD4e.png

猜测为图片写隐,flag信息隐藏在图片中。

图片分析:

使用Stegsolve进行图片分析,程序运行需要Java环境。

先后打开其中一个文件,然后点击Analyse->Image Combiner打开另一张图片,通过点击>切换模式,当a点击到sub模式后可以得到二维码。

a
a

如果无法查看到有效信息,尝试交换两个文件打开比较。

二维码解码后为一个百度翻译的网址,点击发音按钮即可得到flag。

aRUqKA.png
aRUqKA.png

Volatility常用命令:

  • 获取内存镜像的摘要信息
1
volatility -f 镜像名 imageinfo
  • 获取运行的进程
1
volatility -f 镜像名 --profile=系统版本 pslist
  • 获取缓存在内存中的注册表
1
volatility -f 镜像名 --profile=系统版本 hivelist
  • 扫描文件 结合 grep 进行筛选
1
2
volatility -f 镜像名 --profile=系统版本 filescan
volatility -f 镜像名 --profile=系统版本 filescan | grep -E 'jpg|png|jpeg|bmp|gif'
  • 提取内存中缓存的文件
1
volatility -f 镜像名 --profile=系统版本 dumpfiles -Q [文件地址] --dump-dir=./
  • 获取cmd输入的内容
1
volatility -f 镜像名 --profile=系统版本 cmdline
  • 查看截图
1
volatility -f 镜像名 --profile=系统版本 screenshot --dump-dir=./
  • 查看系统用户名
1
volatility -f 镜像名 --profile=系统版本 printkey -K "SAM\Domains\Account\Users\Names"
  • 查看网络连接情况
1
volatility -f 镜像名 --profile=系统版本 netscan

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!