一、核心功能与界面解析
1. 基础架构与工作原理
抓包原理:通过 WinPCAP/libpcap 直接访问网卡,支持端口镜像、ARP 欺骗等方式获取局域网流量。
界面模块:
数据包列表:显示捕获的数据包摘要,支持颜色编码(如 SYN 包为红色)。
详细信息:分层展示协议字段(如 TCP 序列号、HTTP 头部),支持右键追踪流。
字节区:显示原始十六进制数据,可定位特定字段(如 Cookie 值)。
2. 协议解码深度
OSI 七层解析:从物理层(Frame)到应用层(HTTP/TLS)逐层拆解,支持 2000 + 协议。
动态解码:自动识别协议类型(如 WebSocket 升级请求),支持自定义协议插件。
二、过滤系统:精准定位关键数据
1. 抓包过滤器(BPF 语法)
语法规则:[协议] [方向] [类型] [值],如host 192.168.1.1 and port 80。
实战场景:
仅捕获 SSH 流量:port 22
排除广播包:not broadcast
混合协议过滤:(tcp port 80 or udp port 53) and net 192.168.1.0/24。
在上面我们通过指定要抓包的网卡以及加上过滤条件即可实现捕获过滤
2.显示过滤器(灵活表达式)
(1)核心语法规则(4 个部分)
在进行捕获过程中使用的过滤器为显示过滤器,语法格式如下
字段:Wireshark 定义的数据包字段,格式为 “协议.字段名”,需记常用字段:
IP 层:ip.addr(IP 地址,含源和目的)、ip.src(源 IP)、ip.dst(目的 IP)
TCP 层:tcp.port(TCP 端口)、tcp.srcport(源端口)、tcp.dstport(目的端口)
UDP 层:udp.port(UDP 端口)
ICMP 层:icmp.type(ICMP 类型,如 8 = 请求、0 = 响应)
应用层:http(HTTP 流量)、dns(DNS 流量)
比较运算符:连接字段和值,常用:
==:等于(如ip.addr == 192.168.1.1)
!=:不等于
>=/<=:大于等于 / 小于等于(用于端口 / 数值)
逻辑运算符:组合多个条件,需大写:
and:同时满足(如ip.src == 10.0.0.2 and tcp.dstport == 80)
or:满足一个即可(如tcp.port == 80 or tcp.port == 443)
not:排除条件(如not ip.addr == 192.168.0.0/24)
特殊格式:
网段:ip.addr == 192.168.1.0/24(注意用==,而非捕获过滤的空格)
端口范围:tcp.port >= 1024 and tcp.port <= 65535
(2)构造逻辑:按 “目标→找字段→组合条件”
明确筛选目标:比如 “在已抓包中,筛选出所有 HTTP 流量(80 端口)且源 IP 是 192.168.2.5 的数据包”。
找字段拆解:
HTTP 流量:tcp.dstport == 80(或直接用http)
源 IP:ip.src == 192.168.2.5
组合语法:http and ip.src == 192.168.2.5(或tcp.dstport == 80 and ip.src == 192.168.2.5)
(3)关键区别:捕获过滤 vs 显示过滤
|
维度
|
捕获过滤(BPF)
|
显示过滤(专有语法)
|
|
作用时机
|
抓包前
|
抓包后
|
|
语法核心
|
协议 + 方向 + 主机 / 端口(无.)
|
协议。字段名 + 运算符 + 值(有.)
|
|
逻辑运算符
|
小写(and/or/not)
|
大写(AND/OR/NOT)
|
|
网段格式
|
src net 192.168.1.0/24
|
ip.addr == 192.168.1.0/24
|
字段语法:协议.字段 == 值,如http.request.method == "POST"。
高级技巧:
逻辑组合:(tcp.port == 80 || tcp.port == 443) && ip.src == 192.168.1.100
内容搜索:tcp contains "password"(需谨慎使用,可能泄露敏感信息)。
正则匹配:http.host matches ".*\\.com$"(匹配所有.com 域名)。
协议专属过滤:
TCP:tcp.flags.syn == 1(SYN 包)、tcp.analysis.retransmission(重传包)。
HTTP:http.response.code >= 400(错误响应)、http.time > 1.0(慢速响应)。
DNS:dns.flags.rcode != 0(解析错误)、dns.qry.name contains "example.com"。
3. 过滤性能优化
优先级原则:抓包过滤器优先于显示过滤器,复杂条件应前置到抓包阶段。
字段索引:使用http.request.uri而非http contains "uri",利用 Wireshark 内置索引提升效率。
三、协议分析实战
1. TCP 连接全流程解析
三次握手:
tcp.flags.syn == 1(客户端发起 SYN)
tcp.flags.syn == 1 && tcp.flags.ack == 1(服务器响应 SYN-ACK)
tcp.flags.ack == 1(客户端确认 ACK)。
异常诊断:
连接重置:tcp.flags.reset == 1(排查防火墙或服务崩溃)。
窗口为零:tcp.analysis.zero_window(流量控制导致传输暂停)。
在分析->专家信息可以看到抓到的流量分析,在握手失败这里会有红色报告错误
2. HTTP 流量深度分析
请求 - 响应追踪:右键数据包选择Follow TCP Stream,可查看完整对话(含 POST 数据、Cookie)。
性能诊断:
http.time > 2.0(响应时间超 2 秒)
http.content_length > 1000000(大文件传输优化)。
在统计->捕获文件属性我们可以看到上面的的统计信息。
安全检测:
SQL 注入尝试:http.request.uri contains "union"
XSS 攻击特征:http.request.uri contains "