WireShark有捕获过滤器和显示过滤器两种过滤器,捕获过滤器可以在捕获数据包的时候就进行过滤,使得捕获的时候只进行过滤的数据捕获。显示过滤器在显示的时候进行过滤,使得显示的时候将捕获到的数据进行显示。
这两种过滤方式的优势显而易见,第一种可以减少捕获的数据包数量,从而减少系统的负荷。第二种可以捕获更多的数据包,只是在显示的时候过滤,这样可以在以后的分析中如果需要其他数据信息的话可以直接更改显示过滤规则将其他的数据包找到。
一、捕获过滤器
打开捕获过滤器的方法是:点击Capture –>Interfaces,选择好网卡之后点击Option按钮在Capture Filtera旁边的输入框里就可以输入表达式了。
1、基本语法
由限定词后跟一个ID名字或数字组成一个原语,一个表达式可以包含多个原语。例如:dst host 192.168.0.1 && tcp port 80中dst host 192.168.0.1组成一个原语,dst和host 是这个原语中的限定词192.168.0.1是ID,&&是操作符,tcp port 80又组成一个原语,tcp和port是这个原语 的限定词,80是ID,整个语句组成一个表达式。
2、BPF限定词
限定词 | 说明 | 例子 |
---|---|---|
Type | 指出名字或数字所代表的意思 | host、net、port |
Dir | 指明传输方向是前往还是来自名字或数字 | src、dst |
Proto | 限定所要匹配的协议 | ether、ip、tcp、udp、http、ftp |
3、逻辑运算符
- 连接运算符:与(&&)
- 选择运算符:或(||)
- 否定运算符:非(!)
4、主机名和地址过滤器
WireShark可以根据主机的属性进行过滤,包括MAC地址、IPV4、IPV6或者DNS主机名配置等过滤规则,如下例子:
- 根据IPv4过滤:host 192.168.0.1
- 根据IPv6过滤:host fe80::be30:7dff:fea0:5a6f
- 根据MAC地址过滤:ether host 00-1a-a0-52-e2-a0
- 根据流出传输方向过滤:src host 192.168.0.1
- 根据流入传输方向过滤:dst 192.168.0.1(host限定词可以省略)
5、端口过滤
WireShark不但可以通过主机过滤还可以通过端口过滤,端口过滤通常被用来过滤使用已知端口的服务和应用。比如我们可以监控捕获80(标准HTTP协议)端口的流量
port 80
6、协议和协议域过滤
协议过滤器可以帮助我们进行相应协议的过滤,只抓取相应协议或除这些协议的数据包,例如:
icmp (抓取icmp协议数据包)
!ip6 (抓取除ipv6协议以外的数据包)
协议域过滤器是用来对数据包某一个区域的数据进行过滤,比如要过滤icmp数据包的最开头位置(偏移量为0)的数值是不是3:
icmp[0] == 3
如果需要过滤从最开头向后偏移两个字节的数据只需要有:分割,之前写偏移位置,之后写偏移量即可。例如查看icmp数据包中从最开头向后偏移2个字节的数据是不是0x0301:
icmp[0:2] == 0x0301
7、常用捕获过滤器总结:
过滤器 | 说明 |
---|---|
tcp[13]&32==32 | 设置了URG位的TCP数据包 |
tcp[13]&16==16 | 设置了ACK位的TCP数据包 |
tcp[13]&8==8 | 设置了PSH位的TCP数据包 |
tcp[13]&4==4 | 设置了RST位的TCP数据包 |
tcp[13]&2==2 | 设置了SYN位的TCP数据包 |
tcp[13]&1==1 | 设置了FIN位的数据包 |
tcp[13]==18 | TCP SYN-ACK数据包 |
ether host 00:00:00:00:00 | 流入或者流出MAC地址为00:00:00:00:00的数据包 |
!ether host 00:00:00:00:00 | 不流入或者流出MAC地址为00:00:00:00:00的数据包 |
broadcast | 仅广播流量 |
icmp | ICMP流量 |
icmp[0:2] == 0x0301 | ICMP目标不可达、主机不可达 |
ip | 仅IPv4流量 |
ip6 | 仅IPv6流量 |
udp | 仅UDP流量 |
二、显示过滤器
显示过滤器在WireShark的主界面左上角的Filter按钮旁边,WireShark也提供了强大图形支持,可以点击Expression按钮进行选择表达式。同样,我们也可以输入表达式来进行过滤。显示过滤器语法、运算符等和捕获过滤器还有一定的差别。
显示过滤器的语法也很简单,支持比较运算符。例如现在要查看长度小于128字节的数据只需要输入frame.len < 128即可。
1、比较操作运算符一览:
运算符 | 功能 |
---|---|
== | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
2、逻辑运算符一览表
运算符 | 功能 |
---|---|
and | 逻辑与 |
or | 逻辑或 |
xor | 有且仅有一个满足 |
not | 没有一个满足 |
3、常用显示过滤器
过滤器 | 功能 |
---|---|
!tcp.port==3389 | 排除RDP流量 |
tcp.flags.syn==1 | 具有SYN标志位的TCP数据 |
tcp.flags.rst==1 | 具有RST标志位的TCP数据包 |
!arp | 排除ARP数据包 |
http | 所有的HTTP流量 |
tcp.port==23 || tcp.port == 21 | 文本管理流量(Telnet或FTP) |
smtp || pop || imap | 文本email流量(SMTP、POP、或IMAP) |