流量包基础
流量包基础
本文适合
CTF Misc 入门学习者。学完你能:从 pcap/pcapng 中判断协议、还原会话、提取对象,并说明每一步证据来自哪个过滤器或 TCP 流
流量包记录的是网络通信过程。CTF 中的 pcap、pcapng 文件经常藏着登录凭据、上传文件、下载内容、命令交互或分片数据。
一句话判断
看到 pcap、pcapng、Wireshark 截图、HTTP 上传下载、DNS 查询、TCP 交互或“还原通信过程”提示时,先把流量按协议、主机、会话和对象分层,再从可读明文或可重组文件里找 flag。
题目中常见信号
说明:标准抓包文件
第一动作:跑协议统计和会话统计
说明:应用层可能明文
第一动作:提取请求、响应、对象和凭据
说明:可能是 DNS 外带
第一动作:导出 dns.qry.name 并按顺序拼接
说明:明文被加密
第一动作:查是否有 key log、私钥或可用 SNI/证书线索
说明:内容被拆在多个包里
第一动作:Follow TCP Stream 或按 stream 导出
说明:flag 可能在对象里
第一动作:--export-objects 后再做文件类型分析
核心概念
流量包不是“很多包的列表”,而是一组通信证据。一个包只能说明某个时刻发生了什么,一个 TCP 流才能还原完整对话,一个协议对象才能还原传输的文件。
做流量题时要分清四层证据:
- 协议统计:这包流量里主要有什么协议。
- 会话方向:谁连接谁、端口是什么、流量大小是否异常。
- 应用内容:HTTP 请求、DNS 查询、FTP 命令、邮件内容、TLS 证书等。
- 重组结果:导出的文件、拼接的数据、解密后的明文。
最小分析流程
- 用
tshark -z io,phs或 WiresharkProtocol Hierarchy看协议分布。 - 用
tshark -z conv,tcp/conv,udp找大流量会话。 - 先看明文协议:HTTP、DNS、FTP、SMTP、Telnet、ICMP。
- 对可疑 TCP 流做 Follow Stream,记录 stream 编号、方向和关键输出。
- 对 HTTP/SMB/FTP 等对象做导出,导出后回到 文件头、文件尾与真实类型 继续判断。
- 如果是 TLS,先查题目是否提供
SSLKEYLOGFILE、服务器私钥、浏览器 profile 或内存镜像。 - 把结论写成“过滤器 -> 输出 -> 判断 -> 下一步”,不要只写最终字符串。
最小验证示例
# 1. 看协议分布
tshark -r capture.pcapng -z io,phs -q
# 2. 看 TCP 会话大小和方向
tshark -r capture.pcapng -z conv,tcp -q
# 3. 导出 HTTP 请求基线
tshark -r capture.pcapng -Y "http.request" -T fields \
-e tcp.stream -e ip.src -e http.host -e http.request.uri
# 4. 跟踪第 0 条 TCP 流
tshark -r capture.pcapng -q -z "follow,tcp,ascii,0"
# 5. 导出 HTTP 对象
mkdir exported_http
tshark -r capture.pcapng --export-objects http,exported_http判断依据:
协议统计出现 HTTP -> 先看请求和对象
tcp.stream 能定位完整会话 -> 不是逐包猜内容
导出对象后用 file/binwalk 检查 -> 确认下载内容是否还有嵌套DNS 外带的最小验证:
tshark -r capture.pcapng -Y "dns.qry.name" -T fields -e frame.number -e dns.qry.name如果子域名呈现长 hex/base64 片段,就按时间顺序拼接,再用 编码、哈希与加密 的思路解码。
常见利用 / 解题路线
路线总览:
关键证据:URL、Cookie、POST、响应体
常用动作:过滤 http,Follow Stream,导出对象
关键证据:大流量 TCP 流、Content-Type、文件头
常用动作:导出对象,回到真实类型分析
关键证据:长子域、固定域名、高频查询
常用动作:导出 dns.qry.name,排序拼接解码
关键证据:Basic Auth、FTP/SMTP/Telnet 明文
常用动作:过滤协议字段,提取用户名密码
关键证据:ICMP payload、TCP flag、包间隔
常用动作:导出字段,按顺序转字节或二进制
常见失败原因
常见原因:flag 在导出文件、编码片段或加密流里
排查动作:先做协议和对象导出
常见原因:可能是压缩、二进制文件或 TLS
排查动作:保存 raw,再用 file / binwalk 判断
常见原因:过滤器选错、对象走了非 HTTP 或分片异常
排查动作:看 tcp.stream 和 Content-Type
常见原因:查询顺序、重复查询、大小写或点号处理错
排查动作:带 frame.number 导出并去重
常见原因:缺 key log 或使用 TLS 1.3/前向保密
排查动作:找题目附带 key、浏览器日志或转侧信道线索
常见原因:没有先做统计
排查动作:先看协议层级、会话大小、端点排名
迷你案例
题目给 capture.pcapng,页面里没有明文 flag。先跑:
tshark -r capture.pcapng -Y "http.request" -T fields -e tcp.stream -e http.request.uri输出发现:
3 /download?id=backup继续导出对象:
mkdir out
tshark -r capture.pcapng --export-objects http,out
file out/*file 显示导出物是 ZIP,解压后得到 flag.txt。WP 要写清:
HTTP 请求显示下载入口
tcp.stream=3 是完整下载会话
导出对象得到 ZIP
ZIP 内 flag.txt 给出结果