CTF misc之数字取证
0x01 磁盘取证
文件系统粗略的可以分为以下几类:
Windows: FAT12 -> FAT16 -> FAT32 -> NTFS
Linux: EXT2 -> EXT3 -> EXT4
VMDK
- 磁盘镜像
工具也有很多,列举些常见的软件工具:
Elcomsoft Forensic Disk Decryptor
Veracryto
AutoPsy
DiskGenuis
Winhex
- 取证大师
下面用些例子来熟悉下软件
file
用这个题来举例,题目都提示了,先用file
命令看看
是个ext4
文件的格式,先用mount
挂载下,mount attachment.img /mnt
都是些图片,没看出啥内容出来
命令行看到了一个lost+found
,这里需要安装一个软件extundelete
,但是它在官方源中不存在,需要先更新了内网源以后再进行安装
cat /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
完了以后apt update
就可以使用apt install extundelete
装了。
提示先取消挂载,umount /mnt
,接着命令extundelete attachment.img --inode 2
去从根目录进行扫描,这里简单说明一下
在 extundelete 命令中使用 --inode 2 是为了指定要操作的文件系统对象的 inode 号。
在 Linux 文件系统中,inode 是一个重要的数据结构,它存储了文件或目录的元数据(如权限、时间戳、数据块位置等),但不包含文件名。每个文件或目录在文件系统中都有唯一的 inode 号。为什么是 inode 2?
inode 2 是根目录
在 ext2/ext3/ext4 文件系统中,inode 号为 2 的 inode 始终对应根目录(/)。当你想恢复整个文件系统或查看所有可恢复的文件时,需要从根目录开始扫描。
恢复目录结构
通过指定根目录的 inode(--inode 2),extundelete 会递归扫描根目录下的所有子目录和文件,列出所有可恢复的内容。如果不指定 inode,extundelete 默认只处理当前工作目录,可能会漏掉其他目录中的文件。
查看文件系统全貌
使用 --inode 2 可以查看整个文件系统中所有被删除但尚未被覆盖的文件,无论它们位于哪个目录。这对于误删除文件的恢复非常有用。其他常用 inode 号
inode 1:通常是坏块表(bad blocks list)
inode 2:根目录(/)
inode 3:通常是 /lost+found 目录
inode 4 及以上:普通文件和目录如果你只想恢复特定目录中的文件,可以指定该目录的 inode 号(例如,恢复 /tmp 目录中的文件,先找到 /tmp 的 inode 号,再使用 --inode <tmp_inode>)。但对于全面恢复,--inode 2 是最常用的选项。
使用指令进行恢复extundelete attachment.img --restore-file .cat.jpg
,这里应该还可以使用--restore-all
参数来恢复所有
恢复好了以后进入到目录并查看
用file .cat.jpg
查看文件内容
发现上是data
内容,直接读看看
成功获取flag
VOL
通过dump
出veracryto
进程
使用Elcomsoft Forensic Disk Decryptor
挂载,下称EFDD
,按下述流程来走
下一步
下一步
下一步
下一步
mount
就可以了
打开挂载好的盘,获得key
接着在用这个key
挂到veracryto
上
挂好了以后,可以得到一个装有flag
的压缩包
用题目压缩包注释里面的密码打开就可以了
【DASBOOK】[第十章][10.1.2 磁盘取证方法]磁盘取证
下载的文件没有后缀,直接用file
命令查看
显示是ext3
文件格式,执行extundelete atta.01- --inode 2
发现有非常多的deleted
文件,直接全restore
了,mkdir atta ; extundelete atta.01- --inode 2 --restore-all -o atta;cd atta
嗯,huas.txt
里面有个key
,可惜不是正确的flag
对比着可以看到少恢复了flag.txt
文件,这里就很奇怪,不过换了个工具就可以了,autopsy
,按步骤导入后就可以找到这个flag.txt
了
解码后,就可以拿到正确的flag
0x02 内存取证
【DASBOOK】[第十章][10.2.1 volatility介绍]内存取证
先分析这个Keyboard.raw
确定是win
的内存镜像,根据题意接着找一下关键字
./vol.py -f Keyboard.raw windows.filescan.FileScan | grep -iE "flag|keyboard"
这里发现了一个t.txt
,dump
一下
这个拼音加英文真是服了,这意思就是有个ABC
加密,解密下就行了,但是没有找到ABC
,只找了一个QWE
def search(x):return {'q': 'a', 'w': 'b', 'e': 'c', 'r': 'd', 't': 'e', 'y': 'f', 'u': 'g', 'i': 'h', 'o': 'i','p': 'j', 'a': 'k', 's': 'l', 'd': 'm', 'f': 'n', 'g': 'o', 'h': 'p', 'j': 'q', 'k': 'r','l': 's', 'z': 't', 'x': 'u', 'c': 'v', 'v': 'w', 'b': 'x', 'n': 'y', 'm': 'z',}.get(x, x)if __name__ == "__main__":crypto = 'CTKQEKNHZHQLLVGKROLATNWGQKRRKQGWNTA'crypto = crypto.lower()upper_i = ""for i in crypto:print(search(i), end='')upper_i += search(i)print()print(upper_i.upper())"C:\Program Files\Python39\python.exe" "D:\Programs\Pycharm for python\CTF\crypto_qwe.py"
veracryptpasswordiskeyboarddraobyek
VERACRYPTPASSWORDISKEYBOARDDRAOBYEK
提示运行结束的提示,需要使用veracrypt
软件了,记得用大写密码KEYBOARDDRAOBYEK
打开以后还有一个here.vhd
磁盘
直接在windows
中挂载,打开以后有个隐藏文件
这种时候就得上linux
了,大概还是ntfs data
文件流,用7z x here.vhd
解压
成功获取flag