)
Wireshark实战从CTF流量包中手动提取隐藏图片与加密压缩包附010 Editor操作在网络安全竞赛中流量分析往往是揭开谜题的第一步。当面对一个混杂了各种网络请求的pcapng文件时如何像侦探一样抽丝剥茧从海量数据中找出隐藏的线索本文将带你体验一次完整的手动取证过程不使用任何自动化工具仅凭Wireshark和010 Editor一步步还原出隐藏在流量中的图片和加密压缩包。1. 准备工作与环境搭建1.1 工具准备清单Wireshark网络协议分析工具最新稳定版即可010 Editor十六进制编辑器支持多种文件格式解析文本编辑器Notepad或VS Code等支持纯文本编辑的工具Python环境可选用于编写简单的数据处理脚本提示所有工具均可从官网下载建议使用默认配置安装避免兼容性问题。1.2 基础网络知识储备在开始分析前需要了解几个关键概念HTTP POST请求常用于上传数据到服务器在CTF中常被用来隐藏文件文件签名Magic Number每种文件类型都有独特的头部标识JPEGFF D8 FFZIP50 4B 03 04Base64编码常用于数据传输中的二进制内容编码# 简单的Base64解码示例 import base64 encoded VGhpcyBpcyBhIHRlc3Q decoded base64.b64decode(encoded).decode(utf-8) print(decoded) # 输出: This is a test2. 初步流量分析与可疑数据定位2.1 过滤HTTP POST请求打开Wireshark加载pcapng文件后首先应用显示过滤器http.request.method POST这一过滤条件能快速定位到可能包含上传数据的请求。在真实CTF场景中攻击者常使用中国菜刀等工具通过POST请求上传文件这些请求往往是我们需要重点关注的对象。2.2 追踪TCP流分析内容右键点击可疑数据包选择Follow → TCP Stream这里可以发现几个关键特征请求内容通常包含明显的参数名如z1、z2等数据部分可能呈现为Base64编码的字符串连续的十六进制字符明显的文件头标识如PK表示ZIP异常流量识别要点相比普通POST请求文件上传的流通常更长观察Content-Type是否为application/octet-stream检查是否有分段传输编码chunked transfer encoding3. 图片文件提取与处理3.1 识别JPEG文件特征在追踪流中发现以下关键特征即可能指向隐藏的图片文件头标识FF D8 FFJPEG起始标记文件尾标识FF D9JPEG结束标记数据格式连续的十六进制字符对可能由空格或换行分隔3.2 使用010 Editor重建图片手动提取步骤将十六进制数据复制到纯文本文件如hexdata.txt在010 Editor中选择File → Import → Hex Text导入时注意选择正确的格式分隔符空格或换行字节序Little Endian保存为.jpg文件后验证图片完整性常见问题处理如果图片无法打开检查是否有多余的非十六进制字符混入使用010 Editor的Tools → Hex Operations → Remove Non-Hex清理数据确认文件头尾完整必要时手动补全缺失部分4. 加密压缩包提取与破解4.1 定位ZIP压缩包在Wireshark中继续分析寻找以下特征PK签名ZIP文件以50 4B 03 04开头文件结构中央目录记录以50 4B 01 02开头数据分布ZIP包可能分散在多个TCP分段中4.2 手动提取二进制数据不同于使用foremost等自动化工具手动提取需要在Wireshark中选中包含ZIP头的数据包展开Data部分右键选择Export Packet Bytes使用文本编辑器打开删除多余的协议头部数据在010 Editor中修复文件结构# 使用zip命令测试文件完整性 zip -T extracted.zip4.3 密码破解与文件解压从之前提取的图片中获得的密码提示如Th1s_1s_p4sswd_!!!尝试解压unzip -P Th1s_1s_p4sswd_!!! extracted.zip如果密码不正确可以考虑检查密码是否有大小写错误尝试常见的密码变形如替换数字和特殊字符使用图片中的字符串作为字典进行暴力破解5. 高级技巧与异常处理5.1 处理分段传输的文件当文件被分成多个TCP分段传输时需要在Wireshark中识别所有相关分段tcp.stream eq X按顺序导出每个分段的数据使用010 Editor合并文件File → New → Binary File使用Paste Insert按顺序插入各分段5.2 修复损坏的文件结构常见修复场景及方法问题类型修复方法工具推荐头部损坏手动添加正确的文件头010 Editor尾部截断补充文件结束标记HxD中间缺失尝试跳过损坏部分bbe编码错误转换字符编码iconv5.3 自动化脚本辅助对于重复性操作可以编写Python脚本处理import re import binascii def extract_hex(raw_data): # 提取连续的十六进制字符 hex_str re.sub(r[^0-9a-fA-F], , raw_data) return binascii.unhexlify(hex_str) with open(hexdata.txt, r) as f: jpeg_data extract_hex(f.read()) with open(output.jpg, wb) as out: out.write(jpeg_data)6. 实战案例演练让我们模拟一个完整的CTF题目解析过程题目背景BUUCTF中的菜刀666题目提供一个pcapng文件初步分析过滤POST请求发现异常流量追踪流发现z1/z2参数其中z2包含大量十六进制数据图片提取确认z2数据以FF D8 FF开头FF D9结尾使用010 Editor导入十六进制文本并保存为jpg打开图片获得密码提示Secr3t_C0de_2023压缩包提取在后续数据包中发现PK签名手动导出二进制数据并修复为有效ZIP使用获得的密码成功解压得到flag.txt关键学习点始终保持对数据格式的敏感性养成记录中间结果的习惯理解网络协议与文件格式的底层表示在多次CTF比赛中我发现最耗时的往往不是技术本身而是对数据细节的疏忽。比如有一次因为忽略了ZIP文件中的伪加密标志导致花费两小时尝试各种密码组合。后来在010 Editor中检查文件属性才发现问题所在这个教训让我从此养成了先验证文件完整性的习惯。