内存取证

  • 取证文件后缀 .raw、.vmem、.img
  • 常用命令(imageinfo,pslist,dumpfiles,memdump)
  • 可疑的进程(notepad,cmd)
  • 和磁盘取证结合起来考察
  • 了解部分操作系统原理
  • 常见文件后缀dmg,img

volatility基础命令

可以使用 -h 参数获取使用方法和插件介绍,列举几个常用到的命令

imageinfo:显示目标镜像的摘要信息,这常常是第一步,获取内存的操作系统类型及版本,之后可以在 –profile 中带上对应的操作系统,后续操作都要带上这一参数

pslist:该插件列举出系统进程,但它不能检测到隐藏或者解链的进程,psscan可以

pstree:以树的形式查看进程列表,和pslist一样,也无法检测隐藏或解链的进程

psscan:可以找到先前已终止(不活动)的进程以及被rootkit隐藏或解链的进程

cmdscan:可用于查看终端记录

notepad:查看当前展示的 notepad 文本(–profile=winxp啥的低版本可以,win7的不行,可以尝试使用editbox)

filescan:扫描所有的文件列表

linux配合 grep 命令进行相关字符定向扫描,如:grep flag、grep -E ‘png|jpg|gif|zip|rar|7z|pdf|txt|doc’

dumpfiles:导出某一文件(指定虚拟地址)

需要指定偏移量 -Q 和输出目录 -D

memdump:提取出指定进程,常用foremost 来分离里面的文件

需要指定进程-p [pid] 和输出目录 -D

editbox:显示有关编辑控件(曾经编辑过的内容)的信息

screenshot:保存基于GDI窗口的伪截屏

clipboard:查看剪贴板信息

iehistory:检索IE浏览器历史记录

systeminfo:显示关于计算机及其操作系统的详细配置信息(插件)

hashdump:查看当前操作系统中的 password hash,例如 Windows 的 SAM 文件内容(mimikatz插件可以获取系统明文密码)

mftparser:恢复被删除的文件

svcscan:扫描 Windows 的服务

connscan:查看网络连接

envars:查看环境变量

dlllist: 列出某一进程加载的所有dll文件

hivelist: 列出所有的注册表项及其虚拟地址和物理地址

timeliner: 将所有操作系统事件以时间线的方式展开

python vol.py -f easy_dump.img imageinfo
NFO    : volatility.debug    : Determining profile based on KDBG search...
          Suggested Profile(s) : Win7SP1x64, Win7SP0x64, Win2008R2SP0x64, Win2008R2SP1x64_24000, Win2008R2SP1x64_23418, Win2008R2SP1x64, Win7SP1x64_24000, Win7SP1x64_23418
                     AS Layer1 : WindowsAMD64PagedMemory (Kernel AS)
                     AS Layer2 : FileAddressSpace (/home/volatility/easy_dump.img)
                      PAE type : No PAE
                           DTB : 0x187000L
                          KDBG : 0xf8000403f070L
          Number of Processors : 1
     Image Type (Service Pack) : 0
                KPCR for CPU 0 : 0xfffff80004040d00L
             KUSER_SHARED_DATA : 0xfffff78000000000L
           Image date and time : 2018-09-28 09:02:19 UTC+0000
     Image local date and time : 2018-09-28 17:02:19 +0800
python vol.py -f easy_dump.img --profile=Win7SP1x64 pslist

内存镜像封装工具_内存镜像封装工具

python vol.py -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./

内存镜像封装工具_内存镜像封装工具_02

但是提取出来的直接用strings是无法查看的需要通过一下命令

strings -e l 2616.dmp | grep flag

内存镜像封装工具_服务器_03

继续寻找图片文件

python vol.py -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg|gif|png'

内存镜像封装工具_python_04

提取图片文件

python vol.py -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./

内存镜像封装工具_linux_05

图片提权出来后,利用binwalk测试图片中是否携带zip文件等内容

binwalk file.None.0xfffffa8008355410.vacb

内存镜像封装工具_运维_06

利用binwalk分离文件,也可以用foremost分离,我们选择binwalk分离文件

binwalk -e file.None.0xfffffa8008355410.vacb

内存镜像封装工具_linux_07

明显有一个zip文件和一个img文件,img后缀有可能是一个镜像文件,可以先用file命令查看下,也可以unzip解压下压缩包

内存镜像封装工具_python_08

经过解压,我们发现,zip文件夹里面就是message.img文件,我们用file查看是linux文件,直接利用mount挂载

内存镜像封装工具_python_09

可以看到里面有两个文件夹和一个txt,我们先查看下txt文件

269 206
269 207
269 208
269 209
269 210
269 211
269 212
269 213
269 214
269 215
269 216
269 217
269 218
269 219
经过查看,有非常多的数字成对出现,与坐标还是比较类似
尝试将数字转为坐标,使用 gnuplot 画图,发现二维码

内存镜像封装工具_python_10

扫描后提示一串英文

Here is the vigenere key: aeolus, but i deleted the encrypted message。

这是一个维吉尼亚密码,秘钥是aeolus,有了加密方式,有了秘钥,需要密文。继续查看刚才两个文件夹,寻找密文

内存镜像封装工具_服务器_11

寻找到一个.swp文件,如果熟悉它,知道是中断文件,直接恢复

vim -r .message.swp

密文出现

内存镜像封装工具_运维_12

yise!dmsx_tthv_arr_didvi

直接在线解密得到答案

内存镜像封装工具_运维_13