Wireshark入门与进阶系列六之常见显示过滤器

时间:2024-03-19 20:15:09
转自:https://blog.csdn.net/qq_29277155/article/details/52088729

0x00 前言

    我们都知道,wireshark可以实现本地抓包,同时Wireshark也支持remote packet capture protocol(rpcapd)协议远程抓包,只要在远程主机上安装相应的rpcapd服务例程就可以实现在本地电脑执行wireshark 捕获远程电脑的流量了。但是各种协议的流量非常巨大,如果我们捕获所有协议的流量,那么数小时内,捕获到的流量将到达几百M,甚至几G。硬盘空间很快就被填满了。所以很有必要,只捕获特定的流量或者不捕获某些流量而捕获其他所有的流量。

    此外,在我们捕获的流量中把自己需要的流量筛选出来,以便我们对其进行判断。其中的问题可能是网络故障诊断、协议性能诊断、HTTP诊断、后门蠕虫诊断、常见网络攻击诊断等。所以我们很有必要在捕获过滤器的基础上讨论一下,显示过滤器的常见用例。


0x01显示语法

语法:Protocol.String 1.String 2Comparison operator ValueLogical OperationsOther expression

例子:http.request.full_uri contains "png"

Protocol(协议)ether,fddi, ip,arp,rarp,decnet,lat, sca,moprc,mopdl, tcp , udp 等,如果没指明协议类型,则默认为捕捉所有支持的协议。

string1和string2是可选的,可在捕获流量时,在”应用显示过滤器“ 右侧的” 表达式“中打开” 显示过滤器表达式“中看到具体的参数

更具体的显示表达式可参考下面的方式:

(当进行到第三步“关系” 的时候,第四步 “值” 的右侧括号中会提示输入的数据类型。这点很重要!!)

 Wireshark入门与进阶系列六之常见显示过滤器

Comparison operator,可选的字段如下:

== #等于 ip.src==10.0.0.5
!= #不等于. ip.src!=10.0.0.5
> #大于. frame.len > 10
< #小于. frame.len < 128
>= #大于或等于. frame.len ge 0x100
<= #小于或等于. frame.len <= 0x20


0x02 常见使用的显示过滤器表达式

1 http显示过滤

1.1 http方法
http.ssl_port    #https方法发送请求数据
http.request.method == “GET” #通过GET方法请求数据
http.request.method == “POST” #通过POST方法请求数据
http.request.full_uri contains "png"    #通过请求中包含” png "名字的url
http contains “GET” #通过请求中包含GET
http contains “HTTP/1.” #通过请求中包含“HTTP/1.”
1.2 http 显示请求
1 GET包
http.request.method == “GET” && http contains “Host: ”
http.request.method == “GET” && http contains “User-Agent: ”
2 POST包
http.request.method == “POST” && http contains “Host: ”
http.request.method == “POST” && http contains “User-Agent: ”
3 响应包
http contains “HTTP/1.1 200 OK” && http contains “Content-Type: ”
http contains “HTTP/1.0 200 OK” && http contains “Content-Type: ”
更具体的显示表达式可参考下面的方式:
Wireshark入门与进阶系列六之常见显示过滤器

2 端口过滤

2.1 仅显示80端口的流量
tcp.port==80 || udp.port==80     #显示tcp端口为80的流量(包括tcp和udp)
tcp.port >= 1 and tcp.port <= 80    #显示tcp端口在1-80之间的流量
tcp.dstport == 8080    #只显tcp协议的目标端口8080
tcp.dstport == 8080    #只显tcp协议的源端口8080
2.2 FTP/telnet默认的端口
tcp.port == 23
tcp.port>=20 and tcp.port<=30

2.3 常见的web应用端口

tcp.port=7001        #WebLogic,默认的端口号为7001
tcp.port=9080 #WebSphere应用程序,默认的端口号为9080
tcp.port=9090 #WebSphere管理工具,默认的端口号为9090
tcp.port=8080        #JBOSS,默认的端口号为8080
tcp.port-8080 #TOMCAT,默认的端口号为8080

#其他的服务,显示过滤器表达式如同上面


3 主机过滤

ip.addr == 10.202.188.188           # 仅显示10.202.188.188的流量

ip.src ==10.202.188.188              #仅显示目的为10.202.188.188的流量

ip.dst ==10.202.188.188              #仅显示来源为10.202.188.188的流量

ip.addr !=10.202.188.188             #显示除10.202.188.188外的流量

ip.add!=10.202.188.188 && sip     #显示除10.202.188.188外的其他主机的sip协议


4 协议过滤

4.1 arp 协议流量

 arp     #显示接口中所有的arp协议

ip.addr =10.202.188.188 and arp #仅显示主机10.202.188.188的arp请求。

arp.src.proto_ipv4 #显示源协议为IPv4的地址请求。

更具体的显示表达式可参考下面的方式:

Wireshark入门与进阶系列六之常见显示过滤器


4.2 dns协议流量

dns    #显示dns服务的流量,其他更具体的方式也类似4.1 中的操作

ip.addr !=10.202.188.188     #显示除10.202.188.188外的流量

4.3 smtp协议流量

smtp     #显示smtp 服务的流量

4.4 sip协议

sip       #显示sip协议。

此外,诸如stp、sdp、vlan等等网络协议都可以使用这种方式进行表达式显示筛选


0x04 10大实用显示过滤显示器

1 从流量包中构建显示过滤表达式
2 从表达式中构建显示过滤表达式
3 从统计分析报告中构建显示过滤表达式

IP Address: ip.addr == x.x.x.x
MAC Address:eth.addr == xx:xx:xx:xx:xx:xx
ICMP!icmp
My MAC Address:eth.addr == xx:xx:xx:xx:xx:xx
DHCP:bootp
High Delta Time:frame.time_delta > 1
TCP Port:tcp.port == x
UDP Port:udp.port == x
TCP ACK RTT:tcp.analysis.ack_rtt > 1
TCP Length:> x < ytcp.len > x && tcp.len < yBonus
Not My MAC:!eth.addr == xx:xx:xx:xx:xx:xx


0x05参考资料

https://wiki.wireshark.org/

https://wiki.wireshark.org/DisplayFilters

https://wiki.wireshark.org/Security