《精通Wireshark》—第2章2.2节抓包过滤器

2.2 抓包过滤器
抓包过滤器可以让管理员只抓取自己想要抓取的信息,同时丢弃其他的信息。抓包这个进程是一个处理器密集型任务,同时Wireshark也会占用大量的内存空间。所以,我们有时候需要保留一些资源以兹他用,这些资源可以用来进行数据包分析,有时候我们只想要抓取那些满足某些条件的数据包,同时丢弃其他的数据包。

Wireshark可以让用户采用一些比较有意思的方法来对接口进行配置,让软件只抓取那些满足某些条件的数据包,这些条件需要在Capture Options窗口中进行配置,这个窗口的截图如图2-1所示。

下面是对话框中的一些抓包可选项。

Capture:在这个窗口中,用户可以选择自己想要抓包的接口,用户甚至可以一次性选择多个接口让软件进行监听。窗格中的每一列(如是否在这个接口抓包[Capture]、接口编号[Interface]、接口名称、该接口是否启用了杂合模式等)都会显示一个接口的详细信息。在Capture对话框下面,用户可以看到一个复选框,在这里可以选择杂合模式,甚至选择可选项Use promiscuous on all interfaces直接一次性激活所有接口的杂合模式。
Manage Interfaces:这个按钮可以添加或者删除用户希望监听的接口。用户甚至可以在这里添加远端的接口,不过这可能需要用户拥有根权限。
Capture Filter:点击Capture Filter按钮之后,用户就会看到一个图2-2所示的对话框。这个对话框中默认会显示用户已经配置好的抓包过滤器,而用户也可以在这个对话框中创建和保存自定义的抓包过滤器。

首先,用户可以直接采用这些默认的过滤配置文件,以此来了解如何创建自定义的过滤参数。在读者熟练掌握了这些基本使用方法之后,就可以继续在同一个窗口中创建自己的自定义过滤器了,但一定要按照伯克利数据包过滤(BPF,Berkley Packet Filtering)语法来定义过滤。BPF语法是一种行业标准,很多协议分析软件都可以使用这种语法,因此不同协议分析软件中使用的过滤器配置也可以相互迁移。

为了帮助读者掌握这种方法,我们先来一起创建一个过滤器;假设我们需要抓取从一台位于192.168.1.1的Web服务器发来的数据包(如果读者在监测的Web服务器使用的并不是这个地址,读者可以进行相应地修改),就应该按照下面的步骤进行设置。

1.打开Capture Options(抓包可选项)对话框。

2.点击Capture Filter(抓包过滤器)。

3.点击New(新建)。

4. 在Filter name(过滤器名)文本框中输入Web server 192.168.1.1(见图2-3)。

5.在Filter String(过滤器字符串)文本框中输入host 192.168.1.1 and port 80。

6.在完成上面的配置之后,点击OK;如果输入的内容正确,那么在Capture Filter按钮之后出现的文本框背景就是绿色的,如图2-4所示。

Capture Files:这个选项可以让管理员将抓取的数据包保存到系统中已有的文件中。如果用户选择一个文件的话,抓取的数据包就会被添加到管理员选择的这个文件中。这时系统中会创建出一个临时文件,设备会将数据写入到这个临时文件中,这个文件会保存到用户指定的位置。可根据自己的需要选择文件的保存路径,为此输入文件的绝对路径,或者点击File文本框旁边的Browse(浏览)来选择路径。
如果选择了多个文件可选项,那么用户可以将数据包保存到多个文件中,这个过程可以描述为下面这样。
Next File Every:在抓取到一定量的数据之后,Wireshark会创建出一个新的文件,并且将这些数据添加进去。例如,我们可以在Wireshark抓取到2MB数据之后就创建一个新的文件。
Next File Every:在经过一段指定的时间之后,Wireshark会创建出一个新的文件,并且将这些数据添加进去。例如,我们可以在启动抓包进程之后每5分钟就创建一个新的文件。
Ring buffer:用户可以用这个可选项限制新文件的创建。Wireshark会根据先来后到(First in First Out)的次序将数据写入多个文件集当中。比如,我们选择了Ring buffer这个可选项,同时将文件的数量增加到了5个,同时我们配置了每抓取到5MB的数据,软件就会创建一个新的文件。
现在,根据之前我们所作的配置,一旦软件开始抓包,那么每抓取到5MB的数据,软件就会创建出一个新的文件,并且将抓取的数据包写入到文件中。一旦文件超出了我们在Ring buffer部分设置的参数值,Wireshark就不会再创建新的文件了。软件会回到第一个文件,在这个文件的基础上写入新的数据。图2-5显示的就是这种配置方法。

Stop Capture Settings:这个可选项可以让软件在满足某项触发条件后即停止抓包的进程;有4种不同的触发因素。满足这些条件可以让Wireshark停止抓取新的数据包,这些因素如下所示。
Packet(s):在抓取的数据包达到某个数量之后,停止抓包。
File(s):在创建的文件达到某个数量之后,停止抓包。
Megabyte(s):在抓取数据的字节数达到某个数量之后,停止抓包。
Minute(s):在抓取数据包一段时间之后,停止抓包。
这里读者可能想问一个问题:如果我们同时选择多个可选项会怎么样呢?比如,按照图2-6进行勾选。

用户可以一次勾选多个可选项;这样的话,Wireshark会在触发第一个条件时,就停止抓包。

Display Options:这里有很多可选项可以进行配置,来限制Packet List Pane(数据包列表面板)和Protocol Hierarchy(协议分层)窗口中显示的数据包及相关信息。读者可以参考图2-7来了解相关信息。

如果选择了Update list of packet in real-time(数据包实时更新列表),就会发现每当Wireshark抓取到新的数据包时,Packet List Pane(数据包列表面板)中的信息就会更新,同时面板会自动向上滚动。用户要根据自己的需求来选择可选项;否则执行这两项任务所需要的资源就会用来执行其他进程了。

如果勾选了Hide capture info dialog(隐藏抓包信息对话框)复选框,那么Protocol Hierarchy(协议分层)窗口中(以百分比的形式)显示的统计数据就会隐藏起来。如果没有任何特定的目的,建议用户不要勾选这些可选项。

Name Resolution:如果勾选,这个特性可以将二层、三层和四层地址解析为对应的名称。为了解释清楚这个问题,请看图2-8。

2.2.1 为什么要使用抓包过滤器
当网络中数据流的规模相当庞大时,只抓取满足某些条件的流量就显得十分重要了。如果用户需要在生产环境中进行流量分析,那他迟早会需要自定义抓包过滤器。用户要在开始抓包进程之前应用抓包过滤器。总之,Wireshark抓取的每个数据包都交给抓包引擎,再由抓包引擎将抓取的数据包转换成人类可以读懂的格式。但是如果用户应用了抓包过滤器,那么Wireshark就会丢弃与用户需求不符的那些数据包。Wireshark不会将这些丢弃的数据包交给抓包引擎进行转换。相比之下,显示过滤器就要具体和强大得多了;在使用抓包过滤器时,用户一定要谨慎,因为如果有数据包因为与用户定义的规则不符而被丢弃,这些数据包是无法恢复的。

创建过滤器时要使用伯克利数据包过滤器(BPF)语法,还有很多协议分析软件使用的也是这种语法,因为这种语法是行业标准。这种语法很容易学习和使用,使用基本的格式来构建用户的过滤标准就可以了。

2.2.2 如何使用抓包过滤器
我们之前使用BPF语法在capture filter对话框中创建了一个简单的抓包过滤器;下面我们来具体讨论一下这个抓包过滤器,这对于掌握BPF至关重要,毕竟大量协议分析软件都使用了BPF。

如果使用BPF语法,就必须按照一个格式结构来定义过滤器的标准,这个格式由两个参数组成,它们是标识符(identifier)和修饰符(qualifier),下面我们分别对这两个概念进行说明。

标识符:这是我们在数据包中寻找的参数。例如,如果想要过滤出某个IP地址的数据包,那么抓包过滤器就要定义类似于host 192.168.1.1这样的语句,其中192.168.1.1这个值就是标识符。
修饰符:修饰符可以分为3部分。
类型(Type):修饰符有3种类型:host、port和net。简言之,类型修饰符标识的是这个修饰符指代的名称或编号。例如,过滤器host 192.168.1.1.1中,host就是类型修饰符。
方向(Direction):有时,我们也需要抓取来自某个源地址或者去往某个目的地址的数据包,这时我们可以将方向作为一个修饰符。例如,在src host 192.168.1.1这个抓包过滤器中,src这个修饰符的作用就是让软件只抓取来自某台特定主机的数据包。同理,如果设置dst host 192.168.1.1这样一个抓包过滤器,那么软件就只会抓取去往host 192.168.1.1的数据包了。
协议(Proto):这是协议修饰符,它可以让用户指定要将哪个协议的流量添加到抓包过滤器的语法当中,来抓取该协议的数据包。例如,如果用户希望抓取主机192.168.1.1发送的http流量,那么抓包过滤器就应该写作src host 192.168.1.1 and tcp port 80。
在前面的示例中,我们用串联运算符(&/and)将两个表达式组合了起来。同理,我们还可以使用变更运算符(|/or)和否定运算符(!/not)来组合和创建复杂的过滤器。

例如,我们在前文中创建了过滤器src host 192.168.1.1 and tcp port 80,其效果是抓取所有始发自192.168.1.1这个地址,并且目的端口为80的流量。

如果使用的运算符是or,即过滤器为src host 192.168.1.1 or tcp port 80,那么只要流量与上面两个表达式中的任何一个相匹配,软件都会抓取流量。这也就是说,所有由192.168.1.1始发的流量,和所有发往80端口的流量,都会被软件抓取到,无论另一个条件是否匹配。

如果使用的运算符是not,那么抓包过滤器not port 80表示的就是所有与80端口有关的流量都不要抓取。

一旦开始在生产环境中抓包,读者就会发现and、or和not这样的运算符是多么常用。

2.2.3 抓包过滤器的示例
虽然Wireshark提供了大量的过滤器,这些过滤器都可以帮助用户熟悉BPF语法,不过要默认访问当前的过滤器,可以在主工具栏中选择Capture | Capture Filers或者点击Capture Options按钮,然后点击Capture Filter。我们可以在同一个窗口中创建已经介绍过的新过滤器。

要创建抓包过滤器,可以参考下表中的内容。


熟练掌握BPF语法相当重要。在深入学习和使用Wireshark的过程中,读者就会意识到这种技能的重要性。建议读者不断进行练习,直到自己已经对BPF语法烂熟于胸为止。
2.2.4 使用协议头部参数的抓包过滤器
用户可以用协议头部字段中的参数来自定义抓包过滤器。创建这类过滤器的语法大概是这种形式:proto[offset:size(optional)]=value。在这里,proto是用户想要抓取流量的协议,offset是对应的数值在数据包头部中的位置,size是要抓取的数据长度,value是想要寻找的数据。

比如说,我们只想抓取ICMP响应数据包;那么,如果观察图2-9,就会发现ICMP头部类型处于最开始的位置,因此offset参数就应该从0开始。因此,在本例当中,offset值就应该设置为0,size部分应该设置为1字节。我们拥有所有创建抓包过滤器所必需的信息,所以,我们现在创建的表达式大致就会是这样:icmp[0:1]=0(见图2-10)。

我们首先来尝试向www.google.com发起ping测试,看看是否可以实现通信(见图2-11)。

设置的结果是,Wireshark就只会抓取ICMP响应数据包了。通过相同的方法,我们就可以按照协议头部的参数来过滤出自己想要的流量了。

下表列出了一些基于TCP或UDP中某些字节的抓包过滤器;读者也不妨试着配置这些抓包过滤器。

时间: 2025-01-21 11:03:35

《精通Wireshark》—第2章2.2节抓包过滤器的相关文章

《精通Wireshark》—第1章1.5节抓取信息的方式

1.5 抓取信息的方式抓取网络数据包有很多不同的方法.管理员可以根据需求的不同,有针对性地对协议分析软件进行配置,并将它部署在网络中的某个位置. 1.5.1 基于集线器的网络基于集线器的网络是最容易抓取数据包的,在这种环境中管理员可以把协议分析软件部署在任何地方,因为集线器会将所有数据包广播到它们所在的整个网络中.有鉴于此,我们根本不用考虑在哪里部署数据包分析软件.然而,集线器亦有其弱点,由于数据包之间会发生冲突,因此集线器网络的性能也会显著降低.由于集线器中没有任何按照优先级转发数据包的机制,

《精通Wireshark》目录—导读

版权精通Wireshark• 著 [印度] Charit Mishra 译 YESLAB工作室 责任编辑 傅道坤 • 人民邮电出版社出版发行 北京市丰台区成寿寺路11号 邮编 100164 电子邮件 315@ptpress.com.cn 网址 http://www.ptpress.com.cn • 读者服务热线:(010)81055410 反盗版热线:(010)81055315 版权声明精通WiresharkCopyright Packt Publishing 2016. First publi

《精通Wireshark》—第2章2.1节过滤器简介

第2章 用Wireshark过滤出我们需要的数据精通Wireshark本章会对Wireshark可以使用的不同过滤方式进行介绍,也就是如何抓取和显示我们使用的过滤配置.我们也会介绍如何创建和使用不同的配置文件.下面是我们在这一章中会进行介绍的内容: 抓包过滤器简介:使用抓包过滤器的原因与方法:实验操作--抓包过滤器:显示过滤器简介:使用显示过滤器的原因与方法:实验操作--显示过滤器:给流量标注颜色:创建新的Wireshark配置文件:实验操作--配置文件.希望读者已经作好了充份的准备,在接下来的

《精通Wireshark》—第1章1.4节通过Wireshark进行数据包分析

1.4 通过Wireshark进行数据包分析 数据包分析(也称为数据包嗅探或协议分析)的作用是抓取在网络(以太网或WiFi)传输中的数据包,并且对其中的信息进行解答的过程,其目的在于了解网络中正在发生的情况.数据包分析需要借助像Wireshark这样的协议分析软件来实现,这些软件可以在互联网上进行下载.其中有些软件是免费的,也有一些软件需要付费才能用于商业目的.在本书中,我们会使用Wireshark来进行网络分析.Wireshark是一款开源软件,同时也是互联网上最优秀的免费网络分析软件. 在当

《精通Wireshark》—第2章2.6节总结

2.6 总结在有些情况下,搜索工具十分好用,用户可以在Wireshark的Edit菜单中打开搜索工具.搜索工具为用户提供了很多搜索数据包内容的向量. 用户可以通过过滤流量的方式,来把注意力放在那些自己真正感兴趣的数据包上:过滤器的类型有两种:显示过滤器和抓包过滤器. 显示过滤器会把数据包隐藏起来,一旦用户清除了自己配置的过滤器表达式,所有隐藏的信息都会再次出现.但抓包过滤器会丢弃那些不满足(用户所定义的)表达式的数据包.Wireshark不会将这些丢弃的数据包转交给抓包引擎. 抓包过滤器使用了B

《精通Wireshark》—第2章2.3节显示过滤器

2.3 显示过滤器显示过滤器远比抓包过滤器更加灵活和强大.显示过滤器并不会丢弃数据包,只是为了用户阅读之便将一部分数据包隐藏起来而已.丢弃数据包这种做法其实效率不高,因为一旦数据包被丢弃,这些数据包也就无法再恢复回来了.在用户配置了显示过滤器之后,只有那些满足用户过滤器所设置条件的数据包才会被软件显示出来.在应用过滤器之后,用户就可以在Wireshark窗口状态栏的第二列看到一系列数据包. 显示过滤器可以用于Packet List Pane(数据包列表面板)上面的Filter对话框中的抓包文件.

《Wireshark网络分析实战》—第1章1.1节 Wireshark简介

第1章 Wireshark简介 Wireshark网络分析实战 本章涵盖以下内容: 安置Wireshark(主机/程序): 开始抓包: 配置启动窗口: 配置时间参数: 调整配色规则: 保存.打印及导出数据: 配置用户界面(点击EDIT菜单的Preferences菜单项,会弹出Preferences窗口.所谓配置用户界面,就是配置该窗口中User Interface配置选项里的内容): 配置协议参数(即配置Preferences窗口中Protocol配置选项里的内容). 1.1 Wireshark

《Wireshark网络分析实战》—第1章1.3节开始抓包

1.3 开始抓包 Wireshark网络分析实战 本节首先将介绍如何启动Wireshark,然后会讲解布放好Wireshark之后,如何对其进行配置,以应对不同的抓包场景. 1.3.1 准备工作 安装过Wireshark之后,需点击桌面→开始→程序菜单或快速启动栏上相应的图标,运行该数据包分析软件. Wireshark一旦运行,便会弹出图1.6所示的窗口(Wireshark1.10.2运行窗口). 1.3.2 操作方法 要想让Wireshark软件能抓到数据包,有以下三种途径:点击Capture

《Wireshark网络分析实战》—第1章1.4节配置启动窗口

1.4 配置启动窗口Wireshark网络分析实战本节会介绍与Wireshark启动窗口有关的基本配置,同时会介绍抓包主窗口.文件格式以及可视选项的配置. 1.4.1 准备工作启动Wireshark软件,首先映入眼帘的就是启动窗口.可在此窗口中调整以下各项配置参数,来满足抓包需求: 工具条配置:抓包主窗口配置:时间格式:名字解析:所抓数据包的配色:抓包时是否自动滚屏:字体大小:主窗口数据包属性栏的配置:配色规则.先来熟悉一下Wireshark启动窗口内几个常用的工具条(栏),如图1.11所示.