CTF Misc 流量分析实战:3类协议(HTTP/FTP/TCP)中提取隐藏文件的完整流程

📅 2026/7/12 4:02:25
CTF Misc 流量分析实战:3类协议(HTTP/FTP/TCP)中提取隐藏文件的完整流程
CTF Misc 流量分析实战HTTP/FTP/TCP协议中隐藏文件的深度挖掘指南1. 流量分析基础与工具准备在CTF竞赛的Misc领域中流量分析始终占据着重要地位。不同于常规的取证分析CTF中的流量分析往往需要选手从海量数据包中快速定位关键信息这要求我们掌握高效的过滤技巧和协议特征识别能力。Wireshark作为核心工具其强大之处在于支持超过2000种协议解析实时流量捕获与分析能力丰富的过滤语法系统可视化数据流重组功能基础环境配置建议# Ubuntu环境下安装最新版Wireshark sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark关键过滤表达式速查表协议类型基础过滤语法高级过滤示例HTTPhttphttp.request.methodPOST http contains flagFTPftpftp-data.command RETR ftp-data contains .zipTCPtcptcp.stream eq 7 tcp.payload ~ PK..提示在实际比赛中建议将常用过滤语句保存为Wireshark过滤器配置文件可通过Analyze - Display Filters管理2. HTTP协议中的文件隐藏与提取技术HTTP协议作为最常用的应用层协议其流量中往往隐藏着关键信息。我们需要特别关注POST请求和文件上传流量。典型HTTP文件隐藏特征Content-Type为multipart/form-data的表单提交Base64编码的二进制数据段非常规端口非80/443的HTTP通信响应头中的Content-Disposition字段实战案例从HTTP POST提取图片马使用过滤条件http.request.method POST http contains image/jpeg定位到具体数据包后右键选择Follow - HTTP Stream在流窗口中识别文件起始标记如\xFF\xD8\xFF\xE0复制hex数据到WinHex保存为.jpg文件# HTTP流量中提取文件的Python示例 from scapy.all import * import re def extract_http_files(pcap): sessions pcap.sessions() for session in sessions: for packet in sessions[session]: if packet.haslayer(Raw): load packet[Raw].load if bContent-Type: image/jpeg in load: # 提取JPEG文件 jpeg_start load.find(b\xFF\xD8) jpeg_end load.find(b\xFF\xD9) if jpeg_start ! -1 and jpeg_end ! -1: with open(extracted.jpg, wb) as f: f.write(load[jpeg_start:jpeg_end2])3. FTP协议文件传输的追踪与还原FTP协议在CTF中常被用于模拟文件窃取场景其明文传输特性使得分析相对直接但需要注意被动模式与主动模式的区别。FTP关键操作码解析命令含义关联操作RETR下载文件通常跟随DATA连接STOR上传文件检查文件内容是否包含flagLIST目录列表可能泄露关键文件名USER/PASS认证信息可能是flag组成部分FTP-DATA流重组步骤过滤FTP控制流ftp (ftp.request.command RETR || ftp.request.command STOR)记录传输的文件名和端口号定位对应的DATA连接tcp.port [记录端口]右键选择Follow - TCP Stream设置显示格式为Raw保存原始数据并根据文件头修复文件常见文件头尾标识文件类型文件头文件尾ZIPPK\x03\x04PK\x05\x06RARRar!\x1A\x07\xC4\x3D\x7B\x00PNG\x89PNG\r\n\x1A\nIEND\xAE\x42\x60\x824. TCP流中的隐蔽数据传输分析当协议不明确时TCP流分析成为最后的手段。这种方法特别适用于自定义协议或加密通信的场景。TCP流分析四步法统计会话时长和流量大小筛选异常会话按数据包大小排序定位包含大负载的报文检查各TCP流的首末字节寻找文件特征尝试常见编码转换Hex/Base64/URL编码高级技巧使用tshark命令行工具批量处理# 提取所有TCP流中包含PK头的流编号 tshark -r capture.pcap -Y tcp contains PK -T fields -e tcp.stream | sort -u # 将特定流导出为原始数据 tshark -r capture.pcap -Y tcp.stream eq 7 --export-objects tcp,stream7.binPython实现TCP流重组from scapy.all import * def reconstruct_tcp_stream(pcap, stream_id): packets pcap.filter(lambda p: p.haslayer(TCP) and p[TCP].stream stream_id) data b for p in packets: if p.haslayer(Raw): data p[Raw].load return data pcap rdpcap(capture.pcap) stream_data reconstruct_tcp_stream(pcap, 3) with open(stream3.bin, wb) as f: f.write(stream_data)5. 综合实战BUUCTF经典题目解析案例1[被偷走的文件] FTP文件恢复过滤FTP协议ftp发现RETR flag.rar命令追踪后续TCP流识别RAR文件头提取hex数据修复文件使用ARCHPR爆破密码通常为4位数字案例2[菜刀666] HTTP流量分析过滤Webshell特征http contains z1 || http contains z2解码z1参数Base64编码的指令提取z2参数FFD8开头的图片数据从图片中获取压缩包密码重组上传的ZIP文件获取flag案例3[秘密文件] 混合协议分析先过滤HTTP未发现明显线索尝试FTP过滤发现异常大文件传输检查TCP流统计定位大流量会话识别传输的加密压缩包特征使用已知密码字典尝试解压6. 高阶技巧与自动化分析对于重复性操作建议编写自动化脚本提高效率。以下是常见任务的自动化方案自动化流量分析脚本框架import pyshark from binascii import unhexlify class TrafficAnalyzer: def __init__(self, pcap_file): self.cap pyshark.FileCapture(pcap_file) def find_http_files(self): for pkt in self.cap: if http in pkt: if hasattr(pkt.http, file_data): data unhexlify(pkt.http.file_data.replace(:, )) if data.startswith(bPK): with open(http_file.zip, wb) as f: f.write(data) def extract_ftp_transfers(self): ftp_commands [] for pkt in self.cap: if ftp in pkt and hasattr(pkt.ftp, request_command): if pkt.ftp.request_command in [RETR, STOR]: ftp_commands.append(pkt) return ftp_commandsCTF流量分析检查清单检查常见协议端口21/FTP, 80/HTTP, 443/HTTPS搜索常见文件头PK/Rar!/PNG等尝试字符串搜索flag/ctf/pass等关键词分析DNS查询记录可能包含exfil数据检查SSL/TLS证书有时藏有提示7. 防御性流量分析与反取证作为进阶内容了解攻击方的隐蔽技术有助于更好地进行防御分析常见隐蔽通信技术基于时间的隐写Packet timing协议隧道DNS/ICMP隧道载荷分割IP分片/TCP分段头部字段滥用TTL/ID字段隐写检测工具推荐# 检测异常DNS查询 tshark -r traffic.pcap -Y dns dns.qry.name.length 50 # 识别可能的隧道流量 sudo apt install ndpi nDPI/example/ndpiReader -i eth0 -v 2在真实比赛环境中建议建立标准化分析流程协议统计 - 2. 会话分析 - 3. 载荷检查 - 4. 流重组 - 5. 文件修复 这种系统化方法能有效避免遗漏关键线索