数据包分析是一个复杂的话题。如果在没有设置参数的情况下启动Wireshark,就会开始实时捕获或打开一个预先录制的pcap文件。在很短的时间内,可能有成千上万的数据包等待分析。有一种危险,就是被大量的数据困住了。
然而,如果用户想深入分析数据包,没有一个其他产品可以替代Wireshark。但是,有一些方法可以使这项任务变得更加容易。
本文解释了应对挑战和减少数据包分析工作的策略--无论是为了排除故障还是为了评估网络质量。
第一部分也就是本篇讨论的是解释如何使用Wireshark工具进行结构化搜索的技术。这里涵盖了过滤器、颜色标记和协议层次的技术。
第二部分将会在下一期为大家进行介绍,我们该如何使用 Allegro 网络万用表来加快 pcap 分析器的工作。
旗舰级的Wireshark
开源程序Wireshark是一个非常好用的pcap分析器。该项目从前身 "Ethereal "中脱颖而出,自2006年以来一直存在,自其发布以来已将所有商业对比产品挤出市场。Wireshark是一个面向数据包的分析器,用于准确定位问题,并以图形显示数据日志。
大多数繁忙的网络会有许多水平的网络连接,需要准确的数据包分析。例如,只访问一个网站就会产生与许多其他主机的连接。
过滤器的使用
由于需要处理的数据量巨大,Pcap 文件的分析可能是一个挑战。可以使用过滤器来有选择地隐藏不感兴趣的连接。我们的目标是最终获得一组相对容易管理的数据包,作为详细分析的起点。
除了应用BPF语法等外部工具和技术来过滤流量外,Wireshark还有一些板载手段来减少大量的信息,以便更接近相关信息。Wireshark区分了两种类型的过滤器。捕获过滤器定义哪些数据包被记录下来;显示过滤器定义了哪些捕获的数据包被包括在当前的分析中。但是,这两种过滤器使用不同的语法。
在Wireshark中的简单显示过滤器
在Wireshark中最常用的使内容更精简得技术是使用显示过滤器。
显示过滤器最简单的用途是将流量减少到单一的应用程序、特定的协议或数据字段的确切规格。要做到这一点,你可以使用菜单(分析->显示过滤器)来选择,例如,HTTP协议,这将限制视图到所有的HTTP条目,或者直接在过滤器工具栏上插入所需的过滤器值。如果你想只看到所有的SIP连接,你只需在输入框中输入'sip',然后用'Enter'确认即可。
在Wireshark中通过显示过滤器进行特定的协议过滤
过滤器正在使用中,可以在过滤器工具栏的输入栏中看到(用绿色突出显示)。右下方的状态栏也显示过滤器已被设置,或者当时确实只显示了一定比例的数据包。
在直接输入显示过滤器时,Wireshark提供了一个自动完成功能,因此在输入过滤器时,所有具有相同字母序列的可用过滤器都会被建议。
比较运算符
除了使用简单的过滤器,条件也可以被链接。Wireshark的过滤器语法提供了括号、逻辑运算符,如'and' 'or',以及比较运算符,如= =或! =。
例如,如果你想显示 "从IP地址10.17.2.5到80端口的任何TCP流量",翻译成Wireshark的过滤语法是ip.src = = 10.17.2.5 and tcp.dstport = = 80。
在这个例子中,条件是用 'and' 连接的。条件1规定,数据包的源IP地址必须是10.17.2.5,条件2规定,协议必须是TCP,目的端口必须是80。
任何数量的条件都可以连接起来,以进一步限制显示的流量的选择。
来自Wireshark的表达式生成器
作为一个熟练的Wireshark用户,表达式可以从内存中自由应用。最初,使用Wireshark的表达式生成器对话框将表达式添加到显示过滤器中是非常容易的。
当右击过滤器工具栏中的术语 "表达式 "时,这个对话框会打开。在这里,可以选择和链接预定义的运算符。为了检查所选的过滤器是否正确,过滤器工具栏变成绿色。如果过滤器是无效的,则该区域会以红色显示。
在Wireshark中调用表达式生成器
如果需要的话,可以保存Wireshark的过滤器。
捕获过滤器
除了上述减少显示数据包的显示过滤器外,还可以在流量记录开始的那一刻应用过滤器;这些被称为捕获过滤器,确保网络数据被限制在所需的选择范围内。
Wireshark捕获过滤器使用与tcpdump、libpcap过滤器相同的语法。就是说,用字节偏移、十六进制值和与真值相关的掩码的语法来过滤数据。捕获过滤器的应用并不简单,因为它们比显示过滤器更隐蔽。
Wireshark手册中包含了更多关于集成在Wireshark中的过滤器的信息。
在这篇文章中,只讨论了Wireshark作为机载工具所提供的最重要的过滤器。应用比最简单的显示过滤器更深奥的过滤器,需要对Wireshark的过滤器语法有深入的了解,以便持续使用过滤器来解决自己的研究问题。
使用Wireshark进行颜色标记
除了过滤功能外,Wireshark还有一个可定制的颜色编码系统。例如,默认情况下,所有UDP数据包都标为蓝色,标准TCP传输为紫色,HTTP为绿色。这些颜色编码有助于管理员一目了然地识别数据包的类型。用户定义的颜色规则可以分配给自己的配置文件并保存,完成系统。文本和背景颜色都可以自定义。
单个数据流可以通过自动颜色编码轻松追踪。然而,为了一目了然地看到哪些连接是活动的,或者单个数据包属于哪些连接,而不是通过IP地址/端口号来确定,你可以通过颜色代码来调节。要启用这一点,在右键单击数据包后,你可以在上下文菜单中点击 "彩色连接",并选择连接类型(以太网、IPv4、IPv6、TCP、UDP等)。
根据传输协议为连接着色,同一IP对之间的单个通信流可以被区分出来。这比只看IP地址能够进行更细化的分析。在多个主机同时进行通信的情况下,或者在同一主机之间有多个通信连接需要区分的情况下,对单个连接进行颜色编码特别有用。如果你想仔细观察任何潜在的可疑流量,颜色编码也是一种可行的记录方式。颜色编码为大型 pcap 数据文件的初始定位提供了一种易于使用的技术。
使用协议层次
这里要介绍的第三种技术是使用协议分层,以便在大型 pcap 文件中更好地定位。与颜色编码相比,这需要高级的 Wireshark 知识。协议层次的使用提供了有用的线索,例如,在追踪可疑的应用程序或协议时。
要显示记录文件中使用的日志,必须选择菜单项 "统计->日志层次结构"。层次结构提供了一个树状的日志视图,包括每个日志的统计值。它被称为层次结构,因为数据是根据通信层排列的,因为大多数数据包包含多个封装的协议。因此,一个HTTP数据包被列在一个TCP数据包下,两者都在IP数据包下,等等。
按协议层次的Wireshark视图
除了协议信息外,管理员还可以查看该协议在总流量中的份额有多高,数据包的确切数量或某一协议的带宽。如果在数据条目中发现意外的高值,应该更仔细地检查这个流量。为此,用鼠标右键标记该条目,以便进一步分析。一个上下文菜单打开,可以直接过滤或着色数据包。由于列表的分层结构,不可能对日志进行排序或重新排序。
然而,可以采用演绎策略,直接从日志层次视图中过滤掉不感兴趣的日志。可以从过滤后的结果中保存一个单独的捕获文件。
总的来说,协议分层技术是一种可扩展的方式,可以获得一个 pcap 文件的整体视图。协议层次结构通常是进一步分析的起点,因为在这里可以看到意外流量或错误的迹象,比如意外的协议或单个协议的意外数据比例。引起注意的往往不是某个协议的存在,而是其相对比例。
下一期我们将告诉大家,如何使用Allegro网络万用表作为预过滤器来过滤和构建大型捕获文件。