Introduction

Wireshark 是一款开源、跨平台的网络数据包分析工具,能够嗅探和调查实时流量并检查数据包捕获 (PCAP)。它通常被用作最好的数据包分析工具之一。在本课程中,我们将了解 Wireshark 的基础知识并使用它来执行基本的数据包分析。

Tool Overview

Use Cases

Wireshark 是目前最强大的流量分析工具之一。它有多种用途:

  • 检测和排除网络问题,例如网络负载故障点和拥塞。
  • 检测安全异常,例如恶意主机、异常端口使用和可疑流量。
  • 调查和了解协议详细信息,例如响应代码和有效负载数据。

注意:Wireshark 不是入侵检测系统 (IDS)。它只允许分析师发现和深入调查数据包。它也不会修改数据包;它会读取数据包。因此,检测任何异常或网络问题高度依赖于分析师的知识和调查技能。

GUI 和数据

Wireshark GUI 打开时会显示一个一体化页面,可帮助用户以多种方式调查流量。乍一看,有五个部分非常突出。

工具栏 主工具栏包含多个菜单和快捷方式,用于数据包嗅探和处理,包括过滤、排序、汇总、导出和合并。
显示过滤栏 主要查询和过滤部分。
最近的文件 最近调查的文件列表。您可以双击调用列出的文件。
捕获过滤器和接口 捕获过滤器和可用的嗅探点(网络接口)。网络接口是计算机和网络之间的连接点。软件连接(例如 lo、eth0 和 ens33)启用网络硬件。
状态栏 工具状态、配置文件和数字数据包信息。

下图显示了 Wireshark 的主窗口。表中说明的部分已突出显示。现在打开 Wireshark 并完成演练。

Wireshark - GUILoading PCAP Files

上图显示的是Wireshark的空界面。唯一可用的信息是最近处理的“http1.cap”文件。让我们加载该文件并查看Wireshark的详细数据包介绍。请注意,您也可以使用“文件”菜单,拖放文件或双击文件来加载pcap。

Wireshark - load pcaps

现在,我们可以看到已处理的文件名、数据包的详细数量和数据包详细信息。数据包详细信息显示在三个不同的窗格中,使我们能够以不同的格式发现它们。

数据包列表窗格 每个数据包的摘要(源地址和目标地址、协议和数据包信息)。您可以单击列表选择一个数据包进行进一步调查。选择数据包后,详细信息将显示在其他面板中。
数据包详细信息窗格 所选数据包的详细协议细分。
数据包字节窗格 所选数据包的十六进制和解码的 ASCII 表示。它根据详细信息窗格中单击的部分突出显示数据包字段。

为数据包着色

除了快速数据包信息外,Wireshark 还根据不同条件和协议的顺序为数据包着色,以快速发现捕获中的异常和协议(这解释了为什么给定的屏幕截图中几乎所有内容都是绿色的)。通过查看数据包信息,您可以准确找到分析过程中要查找的内容。您可以使用显示过滤器创建自定义颜色规则来发现感兴趣的事件,我们将在下一节中介绍这些规则。现在让我们关注默认设置,并了解如何查看和使用所表示的数据详细信息。

Wireshark 有两种数据包着色方法:仅在程序会话期间可用的临时规则和保存在首选项文件(配置文件)下并可用于下一个程序会话的永久规则。您可以使用“右键单击菜单”或“查看 –> 着色规则”菜单来创建永久着色规则。“着色数据包列表”菜单可激活/停用着色规则。临时数据包着色是通过“右键单击菜单”或“查看 –> 对话过滤器”菜单完成的,这将在任务 5 中介绍。

默认永久着色如下所示。

Wireshark - packet colours

Traffic Sniffing

您可以使用蓝色的“鲨鱼按钮”启动网络嗅探(捕获流量),红色按钮将停止嗅探,绿色按钮将重新启动嗅探过程。状态栏还将提供使用的嗅探接口和收集到的数据包数量。

Wireshark - traffic sniffing

Merge PCAP Files

Wireshark 可以将两个 pcap 文件合并为一个文件。您可以使用 “文件 –> 合并” 菜单路径将 pcap 与已处理的文件合并。当您选择第二个文件时,Wireshark 将显示所选文件中的数据包总数。单击“打开”后,它会将现有 pcap 文件与所选文件合并并创建一个新的 pcap 文件。请注意,您需要在处理“合并”的 pcap 文件之前保存它。

See image
Wireshark - merge pcaps

View File Details

了解文件详细信息很有帮助。尤其是在处理多个 pcap 文件时,有时您需要了解并调用文件详细信息(文件哈希、捕获时间、捕获文件注释、接口和统计信息)来识别文件、对其进行分类和优先排序。您可以通过以下方式查看详细信息:“统计信息 –> 捕获文件属性” 或单击窗口左下角的“pcap 图标”。

See image
Wireshark - file details

Packet Dissection

数据包解析

数据包解析也称为协议解析,通过解码可用的协议和字段来调查数据包详细信息。Wireshark 支持解析大量协议,您也可以编写自己的解析脚本。您可以在 此处 找到有关解析的更多详细信息。

注意:本节介绍 Wireshark 如何使用 OSI 层来分解数据包以及如何使用这些层进行分析。希望您已经具备 OSI 模型及其工作原理的背景知识。

数据包详细信息

您可以单击数据包列表窗格中的数据包以打开其详细信息(双击将在新窗口中打开详细信息)。根据 OSI 模型,数据包由 5 到 7 层组成。我们将在示例捕获的 HTTP 数据包中介绍所有这些层。下图显示查看数据包编号 27。

Wireshark - packet details

每次单击一个详细信息时,它将突出显示数据包字节窗格中的相应部分。

Wireshark - packet bytes

让我们仔细查看一下详细信息窗格。

Wireshark - packet details

我们可以看到数据包的七个不同层:帧/数据包、源 [MAC]、源 [IP]、协议、协议错误、应用程序协议和应用程序数据。下面我们将更详细地介绍这些层。

帧(第 1 层):这将向您显示您正在查看的帧/数据包以及特定于 OSI 模型物理层的详细信息。

See image
Wireshark - layer 1

源 [MAC](第 2 层):这将向您显示来自 OSI 模型数据链路层的源和目标 MAC 地址。

See image
Wireshark - layer 2

源 [IP](第 3 层):这将向您显示来自 OSI 模型网络层的源和目标 IPv4 地址。

See image
Wireshark - layer 3

协议(第 4 层):这将向您显示所用协议(UDP/TCP)以及源端口和目标端口的详细信息;来自 OSI 模型的传输层。

See image
Wireshark - layer 4

协议错误:第四层的延续显示需要重新组装的 TCP 特定段。

See image
Wireshark - protocol error

应用协议(第 5 层):这将显示所用协议的具体详细信息,例如 HTTP、FTP 和 SMB。来自 OSI 模型的应用层。

See image
Wireshark - layer 5

应用程序数据:第五层的扩展可以显示特定于应用程序的数据。

See image
Wireshark - application data

了解了一般数据包是由什么组成的,下面我们来了解一下各种应用协议以及它们的具体细节。

Packet Navigation

Packet Numbers

Wireshark 计算所调查数据包的数量并为每个数据包分配一个唯一编号。这有助于大型捕获的分析过程,并可轻松返回事件的特定点。

Wireshark - packet numbers

Go to Packet

数据包编号不仅有助于计算数据包总数,还可以使查找/调查特定数据包变得更加容易。此功能不仅可以在数据包之间上下导航;它还提供帧内数据包跟踪并查找对话特定部分中的下一个数据包。您可以使用“Go”菜单和工具栏来查看特定数据包。

Wireshark - go to packet

Find Packets

除了数据包编号,Wireshark 还可以通过数据包内容查找数据包。您可以使用“编辑 –> 查找数据包”菜单在数据包中搜索感兴趣的特定事件。这有助于分析师和管理员找到特定的入侵模式或故障踪迹。

查找数据包有两个关键点。第一点是了解输入类型。此功能接受四种类型的输入(显示过滤器、十六进制、字符串和正则表达式)。字符串和正则表达式搜索是最常用的搜索类型。搜索不区分大小写,但您可以通过单击单选按钮在搜索中设置区分大小写。

第二点是选择搜索字段。您可以在三个窗格(数据包列表、数据包详细信息和数据包字节)中进行搜索,了解每个窗格中可用的信息对于查找感兴趣的事件非常重要。例如,如果您尝试在数据包详细信息窗格中查找可用的信息并在数据包列表窗格中进行搜索,Wireshark 不会找到它,即使它存在。

Wireshark - find packets

Mark Packets

标记数据包是另一个对分析师有用的功能。您可以通过标记来查找/指向特定数据包以进行进一步调查。它可以帮助分析师指出感兴趣的事件或从捕获中导出特定数据包。您可以使用“编辑”或“右键单击”菜单来标记/取消标记数据包。

无论原始颜色代表连接类型如何,标记的数据包都将显示为黑色。请注意,标记的数据包信息在每个文件会话中都会更新,因此关闭捕获文件后标记的数据包将丢失。

Wireshark - mark packets

Packet Comments

与数据包标记类似,注释也是对分析师有用的另一个功能。您可以为特定数据包添加注释,这将有助于进一步调查或提醒并指出其他层分析师的重要/可疑点。与数据包标记不同,注释可以保留在捕获文件中,直到操作员将其删除。

Wireshark - packet comments

Export Packets

捕获文件可以在单个文件中包含数千个数据包。如前所述,Wireshark 不是 IDS,因此有时需要从文件中分离出特定的数据包并深入挖掘以解决事件。此功能可帮助分析师共享唯一可疑的数据包(确定的范围)。因此,分析过程中不会包含冗余信息。您可以使用“文件”菜单导出数据包。

Wireshark - export packets

Export Objects (Files)

Wireshark 可以提取通过网络传输的文件。对于安全分析师来说,发现共享文件并保存以供进一步调查至关重要。导出对象仅适用于选定协议的流(DICOM、HTTP、IMF、SMB 和 TFTP)。

Wireshark - export objects

Time Display Format

Wireshark 会列出捕获的数据包,因此调查默认流程并非总是最佳选择。默认情况下,Wireshark 以“自捕获开始以来的秒数”显示时间,常见用法是使用 UTC 时间显示格式以获得更好的视图。您可以使用“查看 –> 时间显示格式”菜单来更改时间显示格式。

img

Wireshark - time display format

Expert Info

Wireshark 还可以检测协议的特定状态,以帮助分析师轻松发现可能的异常和问题。请注意,这些只是建议,并且始终存在误报/漏报的可能性。专家信息可以提供一组三种不同严重程度的类别。详细信息如下表所示。

严重程度 颜色 信息
Chat 蓝色 有关通常工作流程的信息。
Note 青色 值得注意的事件,例如应用程序错误代码。
Warn 黄色 警告,例如不寻常的错误代码或问题陈述。
Error 红色 问题,例如格式错误的数据包。

下表列出了经常遇到的信息组。您可以参考 Wireshark 的官方文档以获取有关专家信息条目的更多信息。

信息 信息
校验和 校验和错误。 弃用 弃用的协议使用。
注释 数据包注释检测。 格式错误 格式错误的数据包检测。

您可以使用状态栏中的“左下角部分”“分析 –> 专家信息”菜单通过对话框查看所有可用的信息条目。它将显示数据包编号、摘要、组协议和总发生次数。

Wireshark - expert info

Packet Filtering

Packet Filtering

Wireshark 拥有强大的过滤引擎,可帮助分析师缩小流量范围并专注于感兴趣的事件。Wireshark 有两种过滤方法:捕获和显示过滤器。捕获过滤器用于仅“捕获”对所用过滤器有效的数据包。显示过滤器用于“查看”对所用过滤器有效的数据包。我们将在下一节讨论这些过滤器的区别和高级用法。现在让我们关注显示过滤器的基本用法,这将首先帮助分析师。

过滤器是为 Wireshark 官方协议参考中提供的协议设计的特定查询。虽然过滤器只是调查感兴趣事件的选项,但有两种不同的方法可以过滤流量并从捕获文件中去除噪音。第一种使用查询,第二种使用右键单击菜单。Wireshark 提供了强大的 GUI,对于不想为基本任务编写查询的分析师来说,有一条黄金法则:“如果您可以单击它,您就可以过滤和复制它”。

应用为过滤器

这是过滤流量的最基本方法。在调查捕获文件时,您可以单击要过滤的字段,然后使用“右键菜单”或“分析”菜单来过滤特定值。应用过滤器后,Wireshark 将生成所需的过滤器查询,应用它,根据您的选择显示数据包,并从数据包列表窗格中隐藏未选择的数据包。请注意,总数据包数和显示的数据包数始终显示在状态栏上。

Wireshark - apply as filter

Conversation filter

当您使用“应用为过滤器”选项时,您将仅过滤数据包的单个实体。此选项是调查数据包中特定值的好方法。但是,假设您想通过关注 IP 地址和端口号来调查特定数据包编号和所有链接数据包。在这种情况下,“对话过滤器”选项可帮助您仅查看相关数据包并轻松隐藏其余数据包。您可以使用“右键菜单”或“分析 –> 对话过滤器”菜单来过滤对话。

Wireshark - conversation filter

Colourise Conversation

此选项与“对话过滤器”类似,但有一个区别。它突出显示链接的数据包而不应用显示过滤器并减少查看的数据包数量。此选项与“着色规则”选项配合使用,广告会更改数据包颜色而不考虑先前应用的颜色规则。您可以使用“右键菜单”或“查看 –> 着色对话”菜单单击即可为链接的数据包着色。请注意,您可以使用“查看 –> 着色对话 –> 重置着色”菜单撤消此操作。

Wireshark - colourise conversation

Prepare as Filter

与“应用为过滤器”类似,此选项可帮助分析师使用“右键单击”菜单创建显示过滤器。但是,与前一个模型不同,此模型不会在选择后应用过滤器。它会将所需的查询添加到窗格中,并等待执行命令(输入)或使用“右键单击”菜单中的“.. 和/或..” 选择另一个过滤选项。

Wireshark - prepare as filter

Apply as Column

默认情况下,数据包列表窗格提供有关每个数据包的基本信息。您可以使用“右键菜单”或**“分析 **–>应用为列” 菜单将列添加到数据包列表窗格。单击某个值并将其应用为列后,它将显示在数据包列表窗格中。此功能可帮助分析师检查捕获文件中可用数据包中特定值/字段的外观。您可以通过单击数据包列表窗格顶部来启用/禁用数据包列表窗格中显示的列。

Wireshark - apply as column

Follow Stream

Wireshark 以数据包部分大小显示所有内容。但是,可以重建流并查看应用程序级别呈现的原始流量。根据协议,流可帮助分析师重新创建应用程序级数据并了解感兴趣的事件。还可以查看未加密的协议数据,如用户名、密码和其他传输数据。

您可以使用“右键菜单”或“分析 –> 跟踪 TCP/UDP/HTTP 流”菜单来跟踪流量流。流显示在单独的对话框中;来自服务器的数据包以蓝色突出显示,来自客户端的数据包以红色突出显示。

Wireshark - follow stream

一旦您跟踪某个流,Wireshark 就会自动创建并应用所需的过滤器来查看特定流。请记住,一旦应用过滤器,查看的数据包数量就会发生变化。您需要使用位于显示过滤器栏右上方的“X 按钮”来删除显示过滤器并查看捕获文件中所有可用的数据包。