CyberSpace2024 内存取证 CTF 挑战:AES 加密图像恢复实战
CyberSpace2024 Memory CTF : 有趣的内存取证挑战
作者:$ubh@nk@r
4 分钟阅读 · 2024 年 9 月 2 日
各位黑客好!本文将带您逐步解决 Cyberspace CTF 2024 的"Memory"挑战。该挑战围绕 Windows 内存取证展开,我们需要从内存转储中提取被删除的 flag.jpg 文件。让我们直接深入探索解决这个挑战的步骤!
开始挑战
在这个取证挑战中,我们获得了一个 Windows 内存转储文件,题目描述说明 Flag 图像文件已被删除,我们需要恢复它。
mem.dmp 文件是一个 MS Windows 64 位崩溃转储文件。作为基础步骤,我首先尝试从 dmp 文件中提取所有可读字符串并存储到文本文件中进行分析:
分析文本文件时,我注意到以下字符串非常有趣:
关键点在于 flag.jpg 和 flag.enc。flag.jpg 已被删除,而 flag.enc 是加密文件。以下是代码解析:
$ifPath
: 将桌面文件夹路径与 flag.jpg 组合,指向原始文件$efPath
: 将桌面文件夹路径与 flag.enc 组合,用于保存加密版本AES 加密设置:密钥大小(256)、块大小(128)、生成密钥和初始化向量(IV)
$cee
: 将 AES 密钥转换为 Base64 字符串$vee
: 将 AES IV 转换为 Base64 字符串将 Base64 编码的加密数据写入 flag.enc 文件
将加密数据(ENCD)、AES 密钥(ENCK)和 IV(ENCV)存储为环境变量
最后删除原始 flag.jpg 文件
ENCD 保存了 flag.jpg 的 Base64 编码加密内容,要解密需要使用 AES 密钥(ENCK)和 IV(ENCV)。我注意到内存转储中也没有 flag.enc 文件,但这些环境变量可能已被设置到 Windows 环境变量中,我们只需提取它们。
这里我们使用 Volatility 框架:
(windows.envars.Envars 插件可扫描提取 Windows 环境变量)
经过一番搜索,我成功获取了 ENCD、ENCK 和 ENCV 变量值。
解密过程
我使用 Python3 进行解密(也可用 PowerShell 脚本)。首先对 ENCD 值进行 Base64 解码并存储到 flag.enc 文件:
运行后得到了 flag.enc 文件。接下来使用 ENCK 和 ENCV 进行解密,我编写了另一个 Python 脚本(借助了 ChatGPT😅)来逆向加密过程:
运行脚本后成功获得了真实的 flag.jpg 文件。打开图像文件后——Boom!Flag 成功显现。
感谢阅读!如果喜欢本文别忘了点赞关注,更多精彩内容等你发现~
Happy Hacking~更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

评论