对于我们个人用户,显示过滤器相比捕获过滤器要更为常用。显示过滤器主要适用于单机环境流量不大的情况。对于攻击者而言,往往不知道需要什么样的数据包,只能在抓包审计之后再确定,因而也通常选用显示过滤器。
当停止捕获数据之后,在数据包列表上面的过滤框中输入过滤表达式,就可以只显示我们需要的数据包。比如输入表达式“http”,就只显示采用http协议的数据包,点击过滤框右侧的×,可以去掉过滤规则,重新显示所有数据包。
(1)语法规则
显示过滤器的语法规则:
在显示过滤器所采用的过滤表达式中,经常要用到各种比较运算符,主要有:
比较运算符 |
说明 |
== |
等于 |
!= |
不等于 |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
应用示例:
ip.addr == 192.168.0.1 //筛选出含有IP地址192.168.0.1的包 ip.src == 192.168.0.1 //筛选出源地址为192.168.0.1的包 ip.dst == 192.168.0.1 //筛选出目的地址为192.168.0.1的包 frame.len<=128 //只显示长度小于128字节的包 tcp.port == 80 //只显示含有80端口的包 tcp.dstport == 25 //只显示目的TCP端口号为25的包 tcp.port > 1024 //只显示端口号大于1024的包 |
显示过滤器中的逻辑运算符:
逻辑运算 |
逻辑运算符 |
与 |
and、&& |
或 |
or、|| |
非 |
!、not |
应用示例:
http //只显示采用http协议的包 http or arp //只显示采用http或arp协议的包 snmp || dns || icmp //显示采用SNMP或DNS或ICMP协议的包 not arp //不显示采用arp协议的包 !tcp //不显示采用tcp协议的包 !(ip.addr == 192.168.0.1) //排除含有IP地址192.168.0.1的包 |
注意,如果过滤器的语法是正确的,表达式的背景呈绿色。如果呈红色,则说明表达式有误。
(2)自动添加过滤表达式
有些过滤表达式的写法是比较复杂的,下面介绍一种相对简单的方法,可以自动添加过滤表达式。
首先清除之前的过滤结果,显示完整的数据包。
然后选择一条我们希望在过滤后能保留下来的数据包,比如要过滤出所有HTTP协议中以POST方式发送的数据包,我们先手动找到这样的一个数据包,比如在第3个包的Info中出现了POST信息。
选定3号包,查看该数据包的详细信息。在应用层Hypertext Transfer Protocol中的POST部分再次展开后可以看到Request Method:POST。
在Request Method:POST上点击右键,选择“作为过滤器应用/选中”。
此时就可以发现,过滤器中已经填写上了对应的过滤规则。同时显示也变成了对应的过滤规则下的数据包。
如果我们想要找方法为GET的包,直接将POST改成GET即可。
使用这种方式,难度在于需要事先找到一条含有自己想要的过滤信息的数据包。相比较而言这种方式更加适于初学者,简单易行,而且时间久了,会慢慢的熟悉常见的过滤语句,直到最终直接输入。
(3)保存过滤后的数据包
我们可以将过滤后的数据包保存下来以备以后随时使用,比如我们要保存http.request.method == "POST"的数据包,在文件菜单中选择“导出特定分组”。
选择之后,可以看到保存的方式有多种。可以保存所有的数据包(Captured),也可以只保存过滤后的数据包(Displayed)。下方的数据显示,在所有的344条数据包中,有62条为满足我们过滤条件的数据包。一般情况下都是选择Displayed。
本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1737031