CTF 流量分析:Wireshark 的常用姿势
拿到一个 pcap 包怎么下手?从过滤器到导出对象,梳理 Wireshark 在 CTF 里的常见套路。
网络方向的 CTF 里,最常遇到的题型就是「给一个流量包,找 flag」。这类题基本都在 Wireshark 里完成。它上手不难,但要快速定位到关键数据,还是得熟悉几个功能。
本文只讨论 CTF 靶场和授权环境下的用法。
打开包先干什么
拿到 .pcap / .pcapng,别急着一个个点。先看整体:
- Statistics → Protocol Hierarchy:看都有哪些协议、各占多少,能快速判断是 HTTP、DNS、TCP 还是别的;
- Statistics → Conversations:看通信双方和流量大小,异常的大流量往往就是目标;
- 用过滤器缩小范围。
过滤器是核心
Wireshark 的显示过滤器(display filter)比抓包过滤器好用得多,常用写法:
http # 只看 HTTP
http.request.method == "POST"
ip.addr == 192.168.1.10 # 只看某个 IP
tcp.port == 8080
tcp.stream eq 3 # 只看某一条 TCP 流
dns # 只看 DNS
tcp.stream eq N 特别有用:右键某个包 → Follow → TCP Stream,就能看到完整的会话内容,很多明文 flag 直接就在这里。
几个高频技巧
导出 HTTP 对象。 File → Export Objects → HTTP,能把传输的文件(图片、压缩包、脚本)一次性导出来。很多题 flag 就藏在下载的文件里。
Follow TCP/UDP Stream。 比逐包看高效得多,尤其是自定义协议,把它当文本流看往往一目了然。
搜索关键字。 Ctrl+F 搜 flag、ctf、{ 之类的字符串。如果是明文传输,一搜就中。
看 TLS 握手。 如果流量是加密的,先确认有没有 key 文件或者能降级成明文;没有的话,这题大概率不是让你解密内容,而是看握手、证书或者流量特征。
USB / 蓝牙流量。 有些题会把 USB HID 数据抓下来,需要手动还原按键。Wireshark 能解析 USB,但要自己写点脚本处理。
tshark 补一刀
服务器上没有图形界面时,tshark 是 Wireshark 的命令行版本,过滤语法一致:
tshark -r capture.pcap -Y "http.request" -T fields -e http.host -e http.request.uri
做批量提取、写脚本时,比手动点界面效率高很多。
常见的坑
包太大卡死。 几百 MB 的包直接开会很慢,可以先用 editcap 切分,或者用 tshark 过滤后再看。
时间戳顺序乱。 可以通过 View → Time Display Format 调整。
抓包位置不对。 如果是在本机抓,可能抓不到目标网段;CTF 里通常给的是已经抓好的包,注意确认网卡和方向。
别只看 HTTP。 有些题走的是 DNS 隧道、ICMP 或自定义 TCP,协议层级看不出来就多翻几个。
小结
Wireshark 的用法可以总结成一句话:先用统计定范围,再用过滤器缩到具体流,最后 Follow Stream 或导出对象看内容。
真正拉开差距的不是记了多少过滤器,而是对协议的理解——知道 HTTP 长什么样、TLS 握手有哪些包、DNS 查询怎么走,看包的时候才会有方向。
留言