Wireshark 基础操作与流量筛选指南
本文梳理了Wireshark的核心操作流程,从网卡选择、数据保存到多场景流量筛选,结合实操步骤与示例,帮助快速定位目标网络数据包。
一、基础操作流程
CTF流量题
1. 选择网卡并开始抓包
打开Wireshark后,界面会列出所有可用网卡,包括VM虚拟网卡、LAN、WLAN等。
找到需要监控的网卡(如本次选择“WLAN”),双击即可进入该网卡的实时流量抓包页面。
点击界面顶部红色按钮可随时停止抓包(红框标注为停止按钮)。
2. 保存抓包数据
抓包完成后,点击界面右上角的「文件」菜单。
在下拉菜单中选择「保存」,自定义文件名和保存路径,即可存储完整的抓包数据(默认格式为.pcapng)。
二、核心流量筛选方法
Wireshark筛选分为捕获过滤(抓包前限制范围,语法严格)和显示过滤(抓包后筛选数据,灵活度高),以下按场景分类说明。
1. 按协议筛选
直接输入协议名称,快速定位特定协议流量,适用于HTTP、TCP、DNS等常见协议。
筛选类型
语法示例
说明
显示过滤
http/tcp/dns
单独显示HTTP、TCP或DNS协议的数据包
捕获过滤
tcp/not arp
仅捕获TCP包,或排除ARP协议的数据包
2. 按IP地址筛选
按源IP、目的IP或网段筛选,精准定位特定设备的流量。
筛选类型
语法示例
说明
显示过滤
ip.src == 192.168.1.1
仅显示“源IP为192.168.1.1”的数据包
显示过滤
ip.addr == 10.0.0.0/24
显示“源或目的IP在10.0.0.0/24网段”的数据包
捕获过滤
src host 192.168.1.1
仅捕获“源IP为192.168.1.1”的数据包
3. 按端口筛选
针对数据库、Web服务等固定端口的应用,快速定位其流量(如MySQL 3306、MongoDB 27017)。
筛选类型
语法示例
说明
显示过滤
tcp.port == 3306
显示MySQL(默认3306端口)的TCP流量
显示过滤
udp.portrange 50000-50010
显示UDP协议50000-50010端口范围的流量
捕获过滤
tcp portrange 9501-9505
仅捕获TCP协议9501-9505端口范围的数据包
实操示例:数据库流量筛选
MySQL筛选:在过滤栏输入 tcp.port == 3306,选中任意请求后右键选择“追踪流”,可查看完整通信过程。
MongoDB筛选:输入 tcp.port == 27017,直接定位MongoDB默认端口的流量。
4. 进阶筛选(协议字段/内容/时间)
(1)协议字段筛选
深入协议内部字段,定位特定请求或状态(如HTTP POST、TCP重传)。
HTTP:http.request.method == "POST"(筛选POST请求)、http.response.code == 404(定位404错误)
TCP:tcp.flags.syn == 1(检测TCP三次握手的SYN包)、tcp.analysis.retransmission(查看重传报文)
DNS:dns.qry.name contains "baidu.com"(查找查询“baidu.com”的DNS包)
(2)数据内容筛选
搜索数据包中的特定字符串或十六进制内容。
tcp contains "flag"(TCP包中包含“flag”字符串)
data.data contains 0A:0B:0C:0D(数据域包含十六进制字节“0A 0B 0C 0D”)
正则匹配:http.request.uri matches "login\?user=.*"(匹配“login?user=”开头的URL)
(3)时间筛选
按时间范围或间隔筛选数据包。
frame.time >= "2025-10-01 00:00:00"(2025年10月1日后的数据包)
tcp.time_delta > 0.5(相邻TCP包时间间隔超过0.5秒,排查慢请求)
5. 逻辑组合筛选
使用逻辑运算符组合多个条件,缩小筛选范围(括号可调整优先级)。
逻辑与(&&):(tcp.port == 80 || tcp.port == 443) && ip.src == 183.225.235.138(源IP为183.225.235.138的HTTP/HTTPS流量)
逻辑或(||):http || dns(显示HTTP或DNS流量)
逻辑非(!):!arp(排除ARP协议流量)
三、捕获过滤与显示过滤的区别
特性
捕获过滤
显示过滤
作用时机
抓包前(限制捕获范围)
抓包后(筛选已捕获数据)
语法规则
BPF语法(严格,不支持复杂字段)
Wireshark自定义语法(灵活)
性能影响
减少数据量,提升抓包性能
不影响原始数据,仅控制显示
典型示例
tcp port 80 and not src host 192.168.1.1
http.request.method == "POST" && tcp.srcport > 10000
四、工具辅助与快捷键
表达式生成器:点击过滤栏右侧的「Expression」按钮,通过可视化界面选择协议、字段和运算符,自动生成筛选语法(适合新手)。
常用快捷键:
Ctrl+F:快速搜索数据包内容(支持字符串/十六进制)
Shift+F:打开高级过滤界面,分步构建复杂表达式
停止/开始抓包:Ctrl+E
五、典型场景实操示例
排查HTTP慢请求:http.request && tcp.time_delta > 2(筛选响应时间超过2秒的HTTP请求)
检测恶意DNS请求:dns.qry.name matches "malware|phish"(查找包含“malware”或“phish”的DNS查询)
提取敏感SQL语句:mysql contains "SELECT * FROM users"(定位MySQL中查询用户表的数据包)
分析TCP连接异常:tcp.flags.reset == 1 || tcp.analysis.ack_lost_segment(检测TCP RST包或ACK丢失的分段)
补充说明
大多数流量分析操作难度较低,通过筛选关键字符串(如“flag”)即可快速定位目标数据包。
5.1 CTF比赛日志分析示例
(1)CTFhub-MySQL流量分析
(2)CTFhub-MongoDB流量分析
(3)2025网信办CTF流量分析
要不要我帮你整理一份Wireshark筛选语法速查表?包含文中所有核心筛选规则、语法示例和对应场景,方便你日常实操时快速查阅。