Introduction

在这个房间里,我们将介绍使用 Wireshark 进行数据包分析的基础知识,并在数据包级别调查感兴趣的事件。请注意,这是 Wireshark 房间三重奏中的第二个房间,建议在开始这个房间之前先访问第一个房间 (Wireshark:基础知识) 来练习和刷新您的 Wireshark 技能。

在第一个房间里,我们介绍了 Wireshark 的基础知识,重点介绍了它的运行方式以及如何使用它来调查流量捕获。在这个房间里,我们将介绍 Wireshark 的高级功能,重点介绍数据包级别的详细信息,包括 Wireshark 统计信息、过滤器、运算符和函数。

Statistics | Summary

统计信息

此菜单提供多个可供调查的统计信息选项,帮助用户了解流量范围、可用协议、端点和对话以及某些特定于协议的详细信息(如 DHCP、DNS 和 HTTP/2)的总体情况。对于安全分析师来说,了解如何利用静态信息至关重要。本节简要介绍了已处理的 pcap,这将有助于分析师为调查创建假设。您可以使用“统计信息”菜单查看所有可用选项。现在启动给定的 VM,打开 Wireshark,加载“Exercise.pcapng”文件并进行演练。

已解析地址

此选项通过提供已解析地址及其主机名的列表,帮助分析师识别捕获文件中可用的 IP 地址和 DNS 名称。请注意,主机名信息取自捕获文件中的 DNS 答案。分析师可以使用此菜单快速识别访问的资源。因此,他们可以发现访问的资源并根据感兴趣的事件对其进行评估。您可以使用“统计–>已解析地址”菜单来查看Wireshark已解析的所有地址。

Wireshark - resolved addresses

协议层次结构

此选项会分解捕获文件中所有可用的协议,并帮助分析师根据数据包计数器和百分比以树状视图查看协议。因此,分析师可以查看端口和服务的总体使用情况,并专注于感兴趣的事件。上一节中提到的黄金法则在本节中有效;您可以右键单击并过滤感兴趣的事件。您可以使用“统计信息 –> 协议层次结构”菜单查看此信息。

Wireshark - protocol hierarchy

对话

对话表示两个特定端点之间的流量。此选项提供五种基本格式的对话列表:以太网、IPv4、IPv6、TCP 和 UDP。因此,分析师可以识别所有对话并联系相关事件的端点。您可以使用“统计 –> 对话”菜单查看此信息。

Wireshark - conversations

端点

端点选项与对话选项类似。唯一的区别是,此选项为单个信息字段(以太网、IPv4、IPv6、TCP 和 UDP)提供唯一信息。因此,分析师可以识别捕获文件中的唯一端点并将其用于感兴趣的事件。您可以使用“统计 –> 端点”菜单查看此信息。

Wireshark 还支持使用 IEEE 分配的制造商名称将 MAC 地址解析为人性化格式。请注意,此转换是通过 MAC 地址的前三个字节完成的,仅适用于已知制造商。当您查看以太网端点时,您可以使用端点窗口左下角的“名称解析”按钮激活此选项。

Wireshark - endpoints

名称解析不仅限于 MAC 地址。Wireshark 还提供 IP 和端口名称解析选项。但是,默认情况下不启用这些选项。如果您想使用这些功能,则需要通过 “编辑 –> 首选项 –> 名称解析” 菜单激活它们。启用 IP 和端口名称解析后,您将在数据包列表窗格中看到解析的 IP 地址和端口名称,并且还可以在“对话”和“端点”菜单中查看解析的名称。

Wireshark - name resolution settings

具有名称解析的端点菜单视图:

Wireshark - name resolution view

除了名称解析之外,Wireshark 还提供 IP 地理位置映射,帮助分析师识别地图的源地址和目标地址。但此功能默认不启用,需要 GeoIP 数据库等补充数据。目前,Wireshark 支持 MaxMind 数据库,最新版本的 Wireshark 附带配置的 MaxMind DB 解析器。但是,您仍然需要 MaxMind DB 文件,并使用 “编辑 –> 首选项 –> 名称解析 –> MaxMind 数据库目录” 菜单向 Wireshark 提供数据库路径。下载并指定路径后,Wireshark 会自动在匹配的 IP 地址的 IP 协议详细信息下提供 GeoIP 信息。

Wireshark - geoip details

端点和 GeoIP 视图。

Wireshark - geoip map view

注意:您需要有效的互联网连接才能查看 GeoIP 地图。

Statistics | Protocol Details

IPv4 and IPv6

到目前为止,几乎所有选项都提供了包含两个版本的 IP 地址的信息。统计信息菜单有两个选项,用于缩小包含特定 IP 版本的数据包的统计信息。因此,分析师可以在一个窗口中识别和列出与特定 IP 版本相关的所有事件,并将其用于感兴趣的事件。您可以使用“统计信息 –> IPvX 统计信息”菜单查看此信息。

Wireshark - ipv4 and ipv6 statistics

DNS

此选项会分解捕获文件中的所有 DNS 数据包,并帮助分析师根据数据包计数器和 DNS 协议百分比以树状视图查看结果。因此,分析师可以查看 DNS 服务的整体使用情况,包括 rcode、opcode、类、查询类型、服务和查询统计信息,并将其用于感兴趣的事件。您可以使用“统计信息 –> DNS”菜单查看此信息。

Wireshark - dns statistics

HTTP

此选项会分解捕获文件中的所有 HTTP 数据包,并帮助分析师根据数据包计数器和 HTTP 协议百分比以树状视图查看结果。因此,分析师可以查看 HTTP 服务的总体使用情况,包括请求和响应代码以及原始请求。您可以使用“统计信息 –> HTTP”菜单查看此信息。

Wireshark - http statistics

Packet Filtering | Principles

Packet Filtering

在上一个房间 (Wireshark | 基础知识),我们介绍了数据包过滤以及如何在不使用查询的情况下过滤数据包。在这个房间中,我们将使用查询来过滤数据包。如前所述,Wireshark 中有两种类型的过滤器。虽然两者都使用类似的语法,但它们用于不同的目的。让我们记住这两类之间的区别。

捕获过滤器 这种类型的过滤器用于仅保存流量的特定部分。它是在捕获流量之前设置的,并且在捕获期间不可更改。
显示过滤器 这种类型的过滤器用于通过减少可见数据包的数量来调查数据包,并且在捕获期间是可以更改的。

注意:您不能使用显示过滤器表达式来捕获流量,反之亦然。

典型的用例是捕获所有内容并根据感兴趣的事件过滤数据包。只有经验丰富的专业人士才会使用捕获过滤器并嗅探流量。这就是 Wireshark 在显示过滤器中支持更多协议类型的原因。请确保在实际环境中使用捕获过滤器之前彻底了解如何使用它们。请记住,如果您的捕获过滤器与您正在寻找的特定流量模式不匹配,则无法捕获感兴趣的事件。

捕获过滤器语法

这些过滤器使用字节偏移十六进制值和带有布尔运算符的掩码,乍一看很难理解/预测过滤器的用途。基本语法解释如下:

  • 范围:主机、网络、端口和端口范围。
  • 方向:src、dst、src 或 dst、src 和 dst,
  • 协议:ether、wlan、ip、ip6、arp、rarp、tcp 和 udp。
  • 用于捕获端口 80 流量的示例过滤器:tcp port 80

您可以从 此处此处 阅读有关捕获过滤器语法的更多信息。在 “捕获 –> 捕获过滤器” 菜单下可以找到快速参考。

Wireshark - capture filters

显示过滤器语法

这是Wireshark最强大的功能。它支持3000种协议,并允许在协议细分下进行数据包级搜索。官方的“显示过滤器参考”提供了所有支持的协议细分以供过滤。

-捕获端口80流量的示例过滤器:tcp.port == 80

Wireshark有一个内置选项(显示过滤器表达式),它存储了所有支持的协议结构,以帮助分析师创建显示过滤器。我们稍后会介绍“显示过滤器表达式”菜单。现在让我们了解显示过滤器操作的基础知识。在“分析–>显示过滤器”菜单下有一个快速参考。

Wireshark - display filters

比较运算符

您可以使用不同的比较运算符来创建显示过滤器以查找感兴趣的事件。主要运算符如下表所示。

英语 类似 C 语言 说明 示例
eq == 等于 ip.src == 10.10.10.100
ne != 不等于 ip.src != 10.10.10.100
gt > 大于 ip.ttl > 250
lt < 小于 ip.ttl < 10
ge >= 大于或等于 ip.ttl >= 0xFA
le <= 小于或等于 ip.ttl <= 0xA

注意:Wireshark 支持十进制和十六进制值进行过滤。您可以根据要进行的搜索使用任何您想要的格式。

逻辑表达式

Wireshark 支持布尔语法。您也可以使用逻辑运算符创建显示过滤器。

英语 类似 C 语言 说明 示例
and && 逻辑与 (ip.src == 10.10.10.100) AND (ip.src == 10.10.10.111)
or || 逻辑或 (ip.src == 10.10.10.100) OR (ip.src == 10.10.10.111)
! 逻辑非 !(ip.src == 10.10.10.222)注意:不推荐使用 !=value;使用它可能会产生不一致的结果。建议使用 !(value) 样式以获得更一致的结果。

数据包过滤器工具栏

过滤器工具栏是您创建和应用显示过滤器的地方。它是一个智能工具栏,可帮助您轻松创建有效的显示过滤器。在开始过滤数据包之前,这里有一些提示:

  • 数据包过滤器以小写字母定义。
  • 数据包过滤器具有自动完成功能,可分解协议详细信息,每个详细信息都由一个“点”表示。
  • 数据包过滤器有三种颜色表示,如下所述。
绿色 有效过滤器
红色 无效过滤器
黄色 警告过滤器。此过滤器有效,但不可靠,建议使用有效过滤器进行更换。

Wireshark - filter colours

过滤器工具栏功能如下所示。

Wireshark - toolbar features

Packet Filtering | Protocol Filters

协议过滤器

如上一个任务中所述,Wireshark 支持 3000 种协议,并允许通过过滤协议字段进行数据包级调查。此任务显示针对不同协议字段的过滤器的创建和使用。

IP 过滤器

IP 过滤器帮助分析师根据数据包中的 IP 级别信息(OSI 模型的网络层)过滤流量。这是 Wireshark 中最常用的过滤器之一。这些过滤器过滤网络级信息,如 IP 地址、版本、生存时间、服务类型、标志和校验和值。

常用过滤器显示在给定的表中。

过滤器 说明
ip 显示所有 IP 数据包。
ip.addr == 10.10.10.111 显示所有包含 IP 地址 10.10.10.111 的数据包。
ip.addr == 10.10.10.0/24 显示所有包含来自 10.10.10.0/24 子网的 IP 地址的数据包。
ip.src == 10.10.10.111 显示所有来自 10.10.10.111 的数据包
ip.dst == 10.10.10.111 显示所有发送到 10.10.10.111 的数据包
ip.addr vs ip.src/ip.dst 注意: ip.addr 过滤流量时不考虑数据包方向。 ip.src/ip.dst 根据数据包方向过滤数据包。

Wireshark - ip filters

TCP and UDP Filters

TCP 过滤器可帮助分析师根据数据包中的协议级信息(OSI 模型的传输层)过滤流量。这些过滤器会过滤传输协议级信息,如源端口和目标端口、序列号、确认号、窗口大小、时间戳、标志、长度和协议错误。

过滤器 描述 过滤器 表达式
tcp.port == 80 显示所有端口为 80 的 TCP 数据包 udp.port == 53 显示所有端口为 53 的 UDP 数据包
tcp.srcport == 1234 显示所有来自端口 1234 的 TCP 数据包 udp.srcport == 1234 显示所有来自端口 1234 的 UDP 数据包
tcp.dstport == 80 显示发送到端口 80 的所有 TCP 数据包 udp.dstport == 5353 显示发送到端口 5353 的所有 UDP 数据包

Wireshark - tcp and udp filters

Application Level Protocol Filters | HTTP and DNS

应用级协议过滤器可帮助分析师根据数据包(OSI 模型的应用层)中的应用协议级信息过滤流量。这些过滤器根据协议类型过滤特定于应用程序的信息,例如有效负载和链接数据。

过滤器 说明 过滤器 说明
http 显示所有 HTTP 数据包 dns 显示所有 DNS 数据包
http.response.code == 200 显示所有 HTTP 响应代码为“200”的数据包 dns.flags.response == 0 显示所有 DNS 请求
http.request.method == "GET" 显示所有 HTTP GET 请求 dns.flags.response == 1 显示所有 DNS 响应
http.request.method == "POST" 显示所有 HTTP POST 请求 dns.qry.type == 1 显示所有 DNS “A” 记录

Wireshark - http and dns filters

Display Filter Expressions

如前所述,Wireshark 有一个内置选项(显示过滤器表达式),可存储所有支持的协议结构,以帮助分析师创建显示过滤器。当分析师无法回忆起特定协议所需的过滤器或不确定过滤器的可分配值时,“显示过滤器表达式”菜单提供了易于使用的显示过滤器构建器指南。它位于“分析 –> 显示过滤器表达式”菜单下。

不可能记住每个协议的显示过滤器的所有细节。每个协议可以有不同的字段,并且可以接受各种类型的值。显示过滤器表达式菜单显示所有协议字段、接受的值类型(整数或字符串)和预定义值(如果有)。请注意,掌握创建过滤器和学习协议过滤器字段需要时间和练习。

Wireshark - display filter expressions

注意:第一个房间 介绍了“着色规则”(任务 2)。现在您知道如何创建显示过滤器并过滤感兴趣的事件。您可以使用“查看 –> 着色规则”菜单分配颜色以突出显示显示过滤结果。

Advanced Filtering

高级过滤

到目前为止,您已经了解了数据包过滤操作的基础知识。现在是时候关注感兴趣事件的特定数据包详细信息了。除了上一节中介绍的运算符和表达式之外,Wireshark 还具有高级运算符和函数。这些高级过滤选项可帮助分析师对感兴趣的事件进行深入分析。

过滤器:“contains”

过滤器 包含
类型 比较运算符
说明 在数据包内搜索值。它区分大小写,并通过关注特定字段提供与“查找”选项类似的功能。
示例 查找所有“Apache”服务器。
工作流程 列出数据包的“服务器”字段包含“Apache”关键字的所有 HTTP 数据包。
用法 http.server contains "Apache"

Wireshark - contains operator

过滤器:“match”

过滤器 match
类型 比较运算符
说明 搜索正则表达式的模式。它不区分大小写,复杂查询有误差范围。
示例 查找所有 .php 和 .html 页面。
工作流程 列出所有 HTTP 数据包,其中数据包的“主机”字段与关键字“.php”或“.html”匹配。
用法 `http.host matches “.(php

过滤器:“in”

过滤器 in
类型 设置成员资格
说明 在特定范围/范围内搜索值或字段。
示例 查找使用端口 80、443 或 8080 的所有数据包。
工作流程 列出数据包的“端口”字段值为 80、443 或 8080 的所有 TCP 数据包。
用法 tcp.port in {80 443 8080}

Wireshark - matches operator

Wireshark - in operator

过滤器:“upper”

过滤器 upper
类型 功能
说明 将字符串值转换为大写。
示例 查找所有“APACHE”服务器。
工作流程 将所有 HTTP 数据包的“服务器”字段转换为大写,并列出包含“APACHE”关键字的数据包。
用法 upper(http.server) contains "APACHE"

Wireshark - upper operator

过滤器:“lower”

过滤器 lower
类型 功能
说明 将字符串值转换为小写。
示例 查找所有“apache”服务器。
工作流程 将所有 HTTP 数据包的“服务器”字段信息转换为小写,并列出包含“apache”关键字的数据包。
用法 lower(http.server) contains "apache"

Wireshark - lower operator

过滤器:“string”

过滤器 字符串
类型 功能
说明 将非字符串值转换为字符串。
示例 查找所有具有奇数的帧。
工作流程 将所有“帧编号”字段转换为字符串值,并列出以奇数值结尾的帧。
用法 string(frame.number) matches "[13579]$"

Wireshark - string operator

Bookmarks and Filtering Buttons

我们已经介绍了不同类型的过滤选项、运算符和函数。现在是时候创建过滤器并将其保存为书签和按钮以供日后使用。如上一个任务中所述,过滤器工具栏有一个过滤器书签部分,用于保存用户创建的过滤器,这有助于分析师只需单击几下即可重复使用最喜欢的/复杂的过滤器。与书签类似,您可以创建只需单击一下即可应用的过滤器按钮。

创建和使用书签。

Wireshark - bookmarks and filtering buttons

创建和使用显示过滤器按钮。

Wireshark - creating a filter button

Profiles

Wireshark 是一款多功能工具,可帮助分析师完成深入的数据包分析。正如我们在会议室中提到的那样,需要配置多个首选项才能分析特定的感兴趣事件。为每个调查案例重新更改配置非常麻烦,这需要一组不同的着色规则和过滤按钮。这就是 Wireshark 配置文件发挥作用的地方。您可以为不同的调查案例创建多个配置文件并相应地使用它们。您可以使用“编辑 –> 配置文件”菜单或“状态栏右下角 –> 配置文件”部分来创建、修改和更改配置文件配置。

Wireshark - profiles