CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf

内存取证

经常利用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 主磁盘结构
  4. 删除文件:目录表中文件名第一字节 ​​e5​
  • VMDK 文件本质上是物理硬盘的虚拟版,也会存在跟物理硬盘的分区和扇区中类似的填充区域,我们可以利用这些填充区域来把我们需要隐藏的数据隐藏到里面去,这样可以避免隐藏的文件增加了 VMDK 文件的大小(如直接附加到文件后端),也可以避免由于 VMDK 文件大小的改变所带来的可能导致的虚拟机错误。而且 VMDK 文件一般比较大,适合用于隐藏大文件
  • 磁盘镜像
    自己电脑留足镜像文件的存储空间
    利用kali工具(AutoPsy)或者其他磁盘镜像分析工具
    找到密钥挂在,查看文件(包括隐藏文件)
    数据恢复

例题:Rctf磁盘取证

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

判断是否套壳

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_02

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

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_03

rctf{unseCure_quick_form4t_vo1ume

veracryto挂载磁盘文件

使用veracryto挂载fat文件

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_04

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_取证_05

passowrd.txt

Password 2: RCTF2019

You're late... So sad

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_06

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_07

在中间部分发先剩下的flag

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_08

综合题目

例题1:

easy_dump.img

查看镜像信息

volatility -f .\easy_dump.img imageinfo

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_09

查看系统进程

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

发现notepad进程

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_10

因为系统版本是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,发现提示

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_11

使用命令找 jpg 文件

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_12

提取这张图片

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

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_13

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_14

在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 9月 27 2018 .
drwxr-xr-- 3 root root 4096 9月 16 03:16 ..
-rw-r--r-- 1 root root 257163 9月 27 2018 hint.txt
drwx------ 2 root root 12288 9月 27 2018 lost+found
drwx------ 4 root root 1024 9月 27 2018 .Trash-0

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_15

使用 gnuplot 画图,发现二维码

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_16

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

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

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_取证_17

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

vim -r ./message.swp

打开文件,文件内容

yise!dmsx_tthv_arr_didvi

解密得到flag

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_18

非预期解

CTF取证总结(内存取证,磁盘取证)以及例题复现_取证_19

例题2:层层取证

附件分为两部分

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_20

使用FTK挂载文件

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_21

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_22

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_23

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_24

仿真三法

  • 花钱使用仿真工具,宏连
  • vmware仿真,看个人环境
  • 转换法,曲线救国,vmware仿真
    vmware 磁盘格式为 .VMDK 可以把题目给的磁盘文件转换成 vmdk 文件,然后导入 vmware

VMware方法

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_25

VMware中的设备

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_26

选择 FTK 挂载时的设备

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_27

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_28

成功开机

转换法

格式转换方法

  1. FTK 里面转成 img 格式
    选择 create disk image

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_29

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_misc_30

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_31

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

  1. 使用格式转换工具(StarWind V2V Converter)把 img 格式变成 vmdk
  2. 使用 VMware 新建虚拟机
    一直默认选择即可,选择磁盘时选择 使用现有虚拟磁盘,接着默认选择即可

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

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

volatility -f memdump.mem imageinfo

直接使用 mimikataz 插件 dump 密码

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

# xiaoming_handsome

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_32

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_33

发现 F 盘无法访问

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_34

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_取证_35

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

BitLocker加密磁盘

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

在虚拟机里边安装 EFDD

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_36

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_37

解密出 BitLocker 密钥

CTF取证总结(内存取证,磁盘取证)以及例题复现_磁盘取证_38

下一步,复制密钥

CTF取证总结(内存取证,磁盘取证)以及例题复现_ctf_39

使用 DiskGenuis 解锁

右键选择解锁,输入密钥

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_40

解密文件中发现 流量包

CTF取证总结(内存取证,磁盘取证)以及例题复现_取证_41

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

CTF取证总结(内存取证,磁盘取证)以及例题复现_内存取证_42


好卷。。。

人菜就要多复现