# Wireshark 常用显示过滤器手册 > 说明:**显示过滤器(Display Filter)** 只用来筛选已经抓下来的包(不会影响抓包);和捕获过滤器(Capture Filter)语法完全不一样,不要混淆。 > 语法提示:`==` 等于;`!=` 不等于;`&&` 与;`||` 或;`!` 非;`contains` 包含字符串;`matches` 正则匹配。 ## 一、基础IP / 链路层过滤 ```wireshark ip.addr == 192.168.1.100 # 源IP 或 目的IP 是该地址 ip.src == 192.168.1.100 # 源IP ip.dst == 192.168.1.100 # 目的IP !ip.addr == 192.168.1.100 # 排除这个IP ip.addr == 10.0.0.0/8 # CIDR网段 eth.addr == 00:11:22:33:44:55 # MAC地址 eth.src / eth.dst # 源MAC / 目的MAC ``` ## 二、TCP / UDP 端口过滤 ```wireshark tcp.port == 80 # 源或目的端口80 tcp.srcport == 8080 # TCP源端口 tcp.dstport == 443 # TCP目的端口 udp.port == 53 # UDP DNS tcp.flags.syn == 1 # SYN包(握手请求) tcp.flags.ack == 1 # ACK包 tcp.flags.fin == 1 # FIN 结束连接 tcp.flags.reset == 1 # RST 重置连接(异常断开,安全分析重点) tcp.analysis.retransmission # TCP重传(网络异常) tcp.analysis.duplicate_ack # 重复ACK ``` ## 三、应用层协议常用过滤 ```wireshark http # 所有HTTP包 http.request # HTTP请求包 http.response # HTTP响应包 http.request.method == "POST" # POST请求 http.request.method == "GET" http.host == "api.test.com" # HTTP Host头 http.request.uri contains "/login" # URI包含login http contains "password" # HTTP数据包包含password字符串 tls # TLS/HTTPS流量(wireshark新版,旧版本ssl) tls.handshake # TLS握手包 tls.alert # TLS告警(连接失败) dns # 全部DNS dns.qry.name == "baidu.com" # 查询域名等于baidu.com dns.qry.name contains ".com" # 查询域名包含字符 dns.flags.response == 1 # DNS响应报文 ftp # FTP ssh # SSH smb # SMB文件共享(内网横向渗透重点) mysql # MySQL数据库流量 redis # Redis ``` ## 四、安全运维/应急分析高频过滤器(SOC蓝队最常用) ```wireshark # 查找异常RST连接 tcp.flags.reset == 1 # 查找HTTP POST上传、webshell相关 http.request.method=="POST" && http.request.uri contains "upload" # 查找HTTP请求带注入特征(单引号、union、select) http contains "union select" http contains "admin'" # 查找大量DNS查询(域名隧道、C2通信) dns && dns.flags.response ==0 # 查找SMB(445端口,永恒之蓝、内网横向) tcp.port ==445 # 查找外部访问3389远程桌面 tcp.dstport ==3389 # 查找SSH暴力破解(大量失败握手) tcp.port ==22 && tcp.flags.reset==1 # 查找HTTP返回5xx/4xx错误码 http.response.code >=400 ``` ## 五、数据包长度、内容匹配 ```wireshark frame.len > 1000 # 数据包总长度大于1000字节 tcp.payload contains "cmd" # TCP负载包含字符串 udp.payload contains "xxx" ``` ## 六、组合复杂示例(直接复制使用) ```wireshark # 1. 来自192.168.1.100 的HTTP POST流量 ip.src==192.168.1.100 && http.request.method=="POST" # 2. 排除本机,只看外网443流量 !ip.addr==127.0.0.1 && tls && tcp.dstport==443 # 3. 查找访问/login接口并且返回200成功 http.request.uri contains "/login" && http.response.code ==200 # 4. 同时匹配多个端口 tcp.port == 80 || tcp.port ==8080 || tcp.port ==443 ``` ## 七、易踩坑要点 1. **显示过滤器用 `==`;捕获过滤器用 `=` 不用双等号,语法不同,不要混用** - 捕获过滤器示例:`host 192.168.1.100 and port 80` 2. 字符串匹配:`contains` 大小写不敏感;`==` 精确匹配;`matches` 正则 3. 引号:字符串值需要英文双引号,例如 `"POST"` 4. 颜色规则:可以把RST、SYN、POST等设置颜色,方便快速告警分诊 5. 查看数据包原始payload:`tcp.payload` 为TCP应用层负载 ## 八、应急排查速查清单 - 端口扫描:大量`SYN`包,无后续ACK `tcp.flags.syn == 1 && tcp.flags.ack ==0` - 暴力破解:同一源IP大量连接到22/3389,伴随RST包 - Web攻击:HTTP包包含注入、webshell特征 - C2通信:周期性TLS/DNS出站,长连接心跳 - 数据外带:大量大包向外网传输,POST长报文