CTF取证总结(内存取证,磁盘取证)以及例题复现
Posted Ocean:)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)和结束标志三部分组成
-
文件系统
-
Windows: FAT12 -> FAT16 -> FAT32 -> NTFS
-
Linux: EXT2 -> EXT3 -> EXT4
-
FAT 主磁盘结构
-
删除文件:目录表中文件名第一字节
e5
-
-
VMDK 文件本质上是物理硬盘的虚拟版,也会存在跟物理硬盘的分区和扇区中类似的填充区域,我们可以利用这些填充区域来把我们需要隐藏的数据隐藏到里面去,这样可以避免隐藏的文件增加了 VMDK 文件的大小(如直接附加到文件后端),也可以避免由于 VMDK 文件大小的改变所带来的可能导致的虚拟机错误。而且 VMDK 文件一般比较大,适合用于隐藏大文件
-
磁盘镜像
自己电脑留足镜像文件的存储空间
利用kali工具(AutoPsy)或者其他磁盘镜像分析工具
找到密钥挂在,查看文件(包括隐藏文件)
数据恢复
例题:Rctf磁盘取证
有一个vmdk文件,用010打开报错
判断是否套壳
将vmdk文件右击选择,用7z打开压缩包
如果套壳里边就是真实文件,发现0.fat文件
用010打开0.fat文件发现中间部分有很多重复内容
rctf{unseCure_quick_form4t_vo1ume
veracryto挂载磁盘文件
使用veracryto挂载fat文件
选择盘符,选择文件点击加载,在弹出的框中输入密码rctf
成功挂载,本地就多了一个a盘,发现password2,注意的是同一个加密磁盘文件可以使用不同的密码挂载,挂载后的文件不一样
passowrd.txt
Password 2: RCTF2019
You're late... So sad
使用这个密码再次挂载,发现挂载后的a盘提示错误,使用winhex工具打开
有的会提示选择磁盘格式,按照文件格式选择即可
在中间部分发先剩下的flag
综合题目
例题1:
easy_dump.img
查看镜像信息
volatility -f .\\easy_dump.img imageinfo
查看系统进程
volatility -f .\\easy_dump.img --profile=Win7SP1x64 pslist
发现notepad进程
因为系统版本是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,发现提示
使用命令找 jpg 文件
volatility -f easy_dump.img --profile=Win7SP1x64 filescan |grep -E 'jpg'
提取这张图片
volatility -f easy_dump.img --profile=Win7SP1x64 dumpfiles -Q 0x000000002408c460 -D ./
使用 foremost 分离图片在 zip 文件夹发现 message.img
使用 file 命令查看文件类型为 ext2 磁盘文件
在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坐标
使用 gnuplot 画图,发现二维码
使用QR Research工具得到一句话,维吉尼亚密码的key
Here is the vigenere key: aeolus, but i deleted the encrypted message。
查看那两个未查看的文件夹
发现 .swp 交换文件,web手都很熟悉这个文件,这个文件是因为使用vim编辑文件时意外中断产生的,可以恢复
vim -r ./message.swp
打开文件,文件内容
yise!dmsx_tthv_arr_didvi
解密得到flag
非预期解
例题2:层层取证
附件分为两部分
使用FTK挂载文件
选择路径(不要出现中文),将Mount Method 设置为Writable,点击Mount
在我的电脑中发现多了三个盘
仿真三法
-
花钱使用仿真工具,宏连
-
vmware仿真,看个人环境
-
转换法,曲线救国,vmware仿真
vmware 磁盘格式为 .VMDK 可以把题目给的磁盘文件转换成 vmdk 文件,然后导入 vmware
VMware方法
新建虚拟机->默认下一步->稍后安装操作系统->操作系统选择win7 x64->一直下一步->直到选择磁盘,使用物理磁盘
VMware中的设备
选择 FTK 挂载时的设备
之后的都是默认选择,开机时会经过自动设置,不用管就行
成功开机
转换法
格式转换方法
-
FTK 里面转成 img 格式
选择 create disk image
选择 image file ,下一步选择地址
点击 add,选择第一项 raw ,点击下一页,再次点击下一页
选择目的地址,image fragment size 改成 0,image filename随便填
会在指定目录生成 filename.img 文件
-
使用格式转换工具(StarWind V2V Converter)把 img 格式变成 vmdk
-
使用 VMware 新建虚拟机
一直默认选择即可,选择磁盘时选择 使用现有虚拟磁盘,接着默认选择即可
回到题目,开机之后两个用户,需要密码才能登陆
在 kali 中使用 volatility 分析题目给出的内存文件
volatility -f memdump.mem imageinfo
直接使用 mimikataz 插件 dump 密码
volatility -f memdump.mem --profile=Win7SP1x64 mimikatz
# xiaoming_handsome
使用密码登录用户,桌面上有便签提示,这张小的在大的后面挡着
发现 F 盘无法访问
在物理机使用 winhex 打开磁盘文件,可以看到有个分区被上锁了
注意:因为磁盘需要一直处于挂载状态,FTK 不能退出
破解BitLocker加密磁盘
EFDD(Elcomsoft Forensic Disk Decryptor)工具,可以使用内存文件,破解加密磁盘
在虚拟机里边安装 EFDD
选择解密磁盘,点击下一步
解密出 BitLocker 密钥
下一步,复制密钥
使用 DiskGenuis 解锁
右键选择解锁,输入密钥
解密文件中发现 流量包
使用 wireshark 分析流量,追踪 udp 流 33流发现 rar 文件,保存打开提示输入密码,输入 word 文档密码 xiaoming1314,打开文档找到 flag
好卷。。。
人菜就要多复现
以上是关于CTF取证总结(内存取证,磁盘取证)以及例题复现的主要内容,如果未能解决你的问题,请参考以下文章