Kali实战:Binwalk、Foremost与Zip2john的CTF取证三部曲

发布时间:2026/5/15 16:34:08

Kali实战:Binwalk、Foremost与Zip2john的CTF取证三部曲 1. 从一张图片开始的CTF取证之旅去年参加某次网络安全竞赛时我遇到一道看似简单的取证题主办方给了一张风景照要求找出隐藏的flag。当时我盯着这张2MB的JPG文件看了半天用常规的十六进制编辑器也没发现异常。直到使用了Binwalk这个神器才发现图片尾部竟然藏着一个完整的ZIP压缩包——这就是典型的文件隐写术Steganography。在CTF比赛中像这样把关键数据藏在普通文件里的情况太常见了。今天要介绍的三个工具就像侦探破案用的三件套Binwalk相当于文件结构的X光机能透视出隐藏的骨骼Foremost像精密的手术刀把隐藏的数据完整剥离出来Zip2john则是开锁专家专门对付加密的压缩包2. Binwalk文件结构的X光透视2.1 安装与基础扫描在Kali Linux中Binwalk已经预装。如果遇到缺失的情况一条命令就能搞定sudo apt update sudo apt install binwalk假设我们有个可疑文件suspicious.jpg最简单的扫描命令是binwalk suspicious.jpg我遇到过最有趣的一个案例表面是猫咪图片实际扫描结果却显示DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 JPEG image data, JFIF standard 1.01 138512 0x21D10 Zip archive data, encrypted at least v2.0 to extract这个输出告诉我们在文件偏移量138512字节0x21D10处藏着一个加密的ZIP文件。就像发现猫咪肚子里藏了保险箱2.2 高级参数技巧单纯扫描可能漏掉某些隐藏数据我习惯加上深度分析参数binwalk -e -M suspicious.jpg-e自动提取发现的文件-M递归扫描提取出的文件有一次比赛就用这个参数发现了三重嵌套JPG→ZIP→PNG→TXT像俄罗斯套娃一样。3. Foremost精准的数据雕刻师3.1 当Binwalk失效时的备选方案有次Binwalk没能识别出隐藏数据但十六进制编辑器明显看到文件尾部有PK头ZIP文件签名。这时候就该Foremost出场了foremost -i suspicious.jpg -o output_dirForemost的工作原理是文件雕刻File Carving不依赖元数据直接通过文件签名识别数据。它的配置文件中预定义了上百种文件类型签名位于/etc/foremost.conf。3.2 实战中的特殊处理遇到自定义文件类型时可以修改配置文件sudo nano /etc/foremost.conf添加如下内容来识别自定义文件头^MyFile y 1000000 \x4D\x79\x46\x69\x6C\x65这表示以MyFile开头十六进制\x4D\x79...最大100万字节的文件类型。4. Zip2john破解加密压缩包的钥匙4.1 从提取到破解的完整流程当提取出加密ZIP后典型的错误是直接用fcrackzip暴力破解。更专业的做法是zip2john extracted.zip zip.hash john --wordlist/usr/share/wordlists/rockyou.txt zip.hash我收集了几种常见密码模式比赛常用密码CTF{xxx}、flag{xxx}日期组合2023!#、19880101简单单词secret、password、admin4.2 提高破解效率的技巧在时间紧张的比赛中我会先用简单模式试探john --incrementalDigits zip.hash如果10分钟内没结果再换更大的字典john --wordlist/usr/share/wordlists/seclists/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt zip.hash5. 真实案例三工具协同作战去年某次比赛中有道题是这样的给了一个破损的PNG文件Binwalk显示尾部有异常数据但无法识别Foremost提取出一个没有扩展名的文件file命令识别出是ZIP格式Zip2john破解后得到flag.txt完整操作流binwalk damaged.png foremost -i damaged.png -o output file output/undiscovered.0000 mv output/undiscovered.0000 hidden.zip zip2john hidden.zip zip.hash john --wordlistrockyou.txt zip.hash # 获得密码St3g0#2023 unzip -P St3g0#2023 hidden.zip这种多工具配合的场景在CTF中非常典型。关键是要理解每个工具的优势Binwalk擅长快速识别Foremost擅长数据恢复Zip2john专注密码破解6. 避坑指南与性能优化新手常遇到的几个坑权限问题用sudo运行可能导致提取的文件权限错误磁盘空间递归提取大文件可能撑满磁盘字符编码遇到中文密码时需指定编码john --encodingutf-8 zip.hash我的性能优化方案使用SSD存储提取的文件对john使用GPU加速john --formatzip-opencl zip.hash提前准备常用字典文件7. 延伸学习自动化脚本编写为了提高效率我写了个自动化处理脚本#!/bin/bash echo [*] Starting analysis on $1 binwalk -e -M $1 for file in $(find _extracted -type f); do foremost -i $file -o foremost_out done find foremost_out -name *.zip -exec zip2john {} zip.hashes \; john --wordlistrockyou.txt zip.hashes echo [*] Process completed这个脚本实现了自动递归提取二次扫描提取结果批量破解压缩包建议保存在/usr/local/bin/ctf-analyze并添加执行权限。

相关新闻