CTF misc之数字取证
0x01 磁盘取证
文件系统粗略的可以分为以下几类:
Windows: FAT12 -> FAT16 -> FAT32 -> NTFSLinux: EXT2 -> EXT3 -> EXT4VMDK- 磁盘镜像
工具也有很多,列举些常见的软件工具:
Elcomsoft Forensic Disk DecryptorVeracrytoAutoPsyDiskGenuisWinhex- 取证大师
下面用些例子来熟悉下软件
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
