内存取证

经常利用volatility分析

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

volatility基础命令

python vol.py -f [image] ‐-profile=[profile][plugin] 命令

其中 -f 后面加的是要取证的文件, --profile 后加的是工具识别出的系统版本, [plugin] 是指使用的插件,其中默认存在一些插件,另外还可以自己下载一些插件扩充

可以使用 -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

  • mendump:提取出指定进程,常用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: 将所有操作系统事件以时间线的方式展开

磁盘取证

  • 磁盘取证软件

    十六机制编辑软件,常用的十六进制编辑软件有winhex,010editor,x-way

  • 硬盘结构

    主引导扇区由主引导程序(Master Boot Record,MBR)、硬盘分区表(Disk Partition Table,DPT)和结束标志三部分组成

  • 文件系统

    1. Windows: FAT12 -> FAT16 -> FAT32 -> NTFS

    2. Linux: EXT2 -> EXT3 -> EXT4

    3. FAT 主磁盘结构

      img

    4. 删除文件:目录表中文件名第一字节 e5

  • VMDK 文件本质上是物理硬盘的虚拟版,也会存在跟物理硬盘的分区和扇区中类似的填充区域,我们可以利用这些填充区域来把我们需要隐藏的数据隐藏到里面去,这样可以避免隐藏的文件增加了 VMDK 文件的大小(如直接附加到文件后端),也可以避免由于 VMDK 文件大小的改变所带来的可能导致的虚拟机错误。而且 VMDK 文件一般比较大,适合用于隐藏大文件

  • 磁盘镜像

    自己电脑留足镜像文件的存储空间

    利用kali工具(AutoPsy)或者其他磁盘镜像分析工具

    找到密钥挂在,查看文件(包括隐藏文件)

    数据恢复

例题:Rctf磁盘取证

有一个vmdk文件,用010打开报错

判断是否套壳

将vmdk文件右击选择,用7z打开压缩包

image-20210916093135843

如果套壳里边就是真实文件,发现0.fat文件

用010打开0.fat文件发现中间部分有很多重复内容

image-20210916133145986

rctf{unseCure_quick_form4t_vo1ume

veracryto挂载磁盘文件

使用veracryto挂载fat文件

选择盘符,选择文件点击加载,在弹出的框中输入密码rctf

image-20210916133437292

成功挂载,本地就多了一个a盘,发现password2,注意的是同一个加密磁盘文件可以使用不同的密码挂载,挂载后的文件不一样

image-20210916133638892

passowrd.txt

Password 2: RCTF2019

You're late... So sad

使用这个密码再次挂载,发现挂载后的a盘提示错误,使用winhex工具打开

image-20210916134555315

有的会提示选择磁盘格式,按照文件格式选择即可

image-20210916134944347

在中间部分发先剩下的flag

image-20210916135025812

综合题目

例题1:

easy_dump.img

查看镜像信息

volatility -f .\easy_dump.img imageinfo

image-20210916143222533

查看系统进程

volatility -f .\easy_dump.img --profile=Win7SP1x64 pslist

发现notepad进程

image-20210916144441951

因为系统版本是win7所以看不了notepad的信息,但是可以将notepad进程提取出来

volatility -f easy_dump.img --profile=Win7SP1x64 memdump -p 2616 -D ./

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

strings -e l 2626.dmp | grep flag
# 选择字符大小和排列顺序:s=7-bit, S=8-bit, {b,l}=16-bit, {B,L}=32-bit

可以用这种方法也可以用之前说的 editbox 命令代替 notepad,发现提示

image-20210916145541573

使用命令找 jpg 文件

volatility -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg'

image-20210916145758615

提取这张图片

volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./

使用 foremost 分离图片在 zip 文件夹发现 message.img

image-20210916151335326

使用 file 命令查看文件类型为 ext2 磁盘文件

image-20210916151421126

在linux系统中使用 mount 命令挂载此文件

root@kali:~/桌面/output/zip# file message.img 
message.img: Linux rev 1.0 ext2 filesystem data, UUID=c12b8ec9-5ef5-4b91-8b4d-f827e81f83cf (large files)
root@kali:~/桌面/output/zip# mkdir test
root@kali:~/桌面/output/zip# sudo mount message.img ./test
root@kali:~/桌面/output/zip# cd test
root@kali:~/桌面/output/zip/test# ls -al
总用量 271
drwxr-xr-x 4 root root   1024 927  2018 .
drwxr-xr-- 3 root root   4096 916 03:16 ..
-rw-r--r-- 1 root root 257163 927  2018 hint.txt
drwx------ 2 root root  12288 927  2018 lost+found
drwx------ 4 root root   1024 927  2018 .Trash-0

cat hint.txt 文件,文件内容是两列数字,很像x,y坐标

image-20210916151927658

使用 gnuplot 画图,发现二维码

image-20210916151956509

使用QR Research工具得到一句话,维吉尼亚密码的key

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

查看那两个未查看的文件夹

image-20210916152528998

发现 .swp 交换文件,web手都很熟悉这个文件,这个文件是因为使用vim编辑文件时意外中断产生的,可以恢复

vim -r ./message.swp

打开文件,文件内容

yise!dmsx_tthv_arr_didvi

解密得到flag

image-20210916153045794

非预期解

image-20210916153341419

例题2:层层取证

附件分为两部分

image-20210916163602975

使用FTK挂载文件

image-20210916163949735

选择路径(不要出现中文),将Mount Method 设置为Writable,点击Mount

image-20210916164425067

在我的电脑中发现多了三个盘

image-20210916164601367

image-20210916164626175

仿真三法
  • 花钱使用仿真工具,宏连

  • vmware仿真,看个人环境

  • 转换法,曲线救国,vmware仿真

    vmware 磁盘格式为 .VMDK 可以把题目给的磁盘文件转换成 vmdk 文件,然后导入 vmware

VMware方法

新建虚拟机->默认下一步->稍后安装操作系统->操作系统选择win7 x64->一直下一步->直到选择磁盘,使用物理磁盘

image-20210920110645557

VMware中的设备

image-20210920110737203

选择 FTK 挂载时的设备

image-20210920110759832

之后的都是默认选择,开机时会经过自动设置,不用管就行

image-20210920111011435

成功开机

转换法

格式转换方法

  1. FTK 里面转成 img 格式

    选择 create disk image

    image-20210920111410042

    选择 image file ,下一步选择地址

    image-20210920111610884

    点击 add,选择第一项 raw ,点击下一页,再次点击下一页

    image-20210920111728847

    选择目的地址,image fragment size 改成 0,image filename随便填

    image-20210920111957655

    会在指定目录生成 filename.img 文件

  2. 使用格式转换工具(StarWind V2V Converter)把 img 格式变成 vmdk

  3. 使用 VMware 新建虚拟机

    一直默认选择即可,选择磁盘时选择 使用现有虚拟磁盘,接着默认选择即可

    image-20210920112547654

回到题目,开机之后两个用户,需要密码才能登陆

在 kali 中使用 volatility 分析题目给出的内存文件

volatility -f memdump.mem imageinfo

直接使用 mimikataz 插件 dump 密码

volatility -f memdump.mem --profile=Win7SP1x64 mimikatz

# xiaoming_handsome

image-20210920125030903

使用密码登录用户,桌面上有便签提示,这张小的在大的后面挡着

image-20210920125446636

发现 F 盘无法访问

image-20210920125651376

在物理机使用 winhex 打开磁盘文件,可以看到有个分区被上锁了

image-20210920131228749

注意:因为磁盘需要一直处于挂载状态,FTK 不能退出

破解BitLocker加密磁盘

EFDD(Elcomsoft Forensic Disk Decryptor)工具,可以使用内存文件,破解加密磁盘

在虚拟机里边安装 EFDD

image-20210920132551703

选择解密磁盘,点击下一步

image-20210920132629897

解密出 BitLocker 密钥

image-20210920132734082

下一步,复制密钥

image-20210920132942352

使用 DiskGenuis 解锁

右键选择解锁,输入密钥

image-20210920132826506

解密文件中发现 流量包

image-20210920133031688

使用 wireshark 分析流量,追踪 udp 流 33流发现 rar 文件,保存打开提示输入密码,输入 word 文档密码 xiaoming1314,打开文档找到 flag

image-20210920133612671
好卷。。。
人菜就要多复现

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐