Wireshark 学习笔记 (二)
数据包操作
统计|摘要
统计
此菜单提供多种统计选项,可供调查,帮助用户了解流量范围、可用协议、端点和会话等宏观情况,以及一些特定协议的详细信息,如 DHCP、DNS 和 HTTP/2。
解析地址
此选项通过提供解析地址及其主机名的列表,帮助分析师识别捕获文件中可用的 IP 地址和 DNS 名称。请注意,主机名信息来自捕获文件中的 DNS 应答。
协议分级
此选项将捕获文件中的所有可用协议分解,并帮助分析师根据数据包计数和百分比以树状视图查看协议。因此,分析师可以查看端口和服务的整体使用情况,并专注于感兴趣的事件。
会话
对话表示两个特定端点之间的流量。此选项提供五种基本格式的对话列表;以太网、IPv4、IPv6、TCP 和 UDP。因此,分析师可以识别所有对话和事件中感兴趣的接触端点。 您可以使用 "统计 --> 对话" 菜单查看此信息。
端点
端点选项与会话选项类似。唯一的区别是此选项为单个信息字段(以太网、IPv4、IPv6、TCP 和 UDP)提供唯一信息。因此,分析师可以在捕获文件中识别唯一的端点,并将其用于感兴趣的事件。 您可以使用 "统计 --> 端点" 菜单查看此信息。
Wireshark 还支持将 MAC 地址解析为人类可读格式,使用 IEEE 分配的制造商名称。请注意,此转换通过 MAC 地址的前三个字节完成,并且仅适用于已知的制造商。在查看以太网端点时,您可以通过端点窗口左下角的 "名称解析" 按钮激活此选项。
名称解析不仅限于 MAC 地址。Wireshark 还提供了 IP 和端口号名称解析选项。然而,这些选项默认情况下是禁用的。如果您想使用这些功能,需要通过"编辑 --> 首选项 --> 名称解析"菜单来启用它们。一旦您启用了 IP 和端口号名称解析,您将在数据包列表窗格中看到解析的 IP 地址和端口号,同时也能够在"会话"和"端点"菜单中查看解析的名称。
端点菜单视图,包含名称解析:
除了名称解析外,Wireshark 还提供 IP 地理位置映射功能,帮助分析师识别源地址和目标地址。但此功能默认未启用,需要补充数据,如 GeoIP 数据库。目前,Wireshark 支持 MaxMind 数据库,最新版本的 Wireshark 已配置 MaxMind DB 解析器。然而,您仍需要 MaxMind DB 文件,并通过 "编辑 --> 首选项 --> 名称解析 --> MaxMind 数据库目录" 菜单向 Wireshark 提供数据库路径。下载并指定路径后,Wireshark 将自动在匹配的 IP 地址的 IP 协议详细信息下提供 GeoIP 信息。.
端点与地理位置视图。
统计|协议详情
IPv4和IPv6
到目前为止,几乎所有选项都提供了包含两个版本 IP 地址的信息。统计菜单有两个选项用于缩小包含特定 IP 版本的统计信息。因此,分析师可以在单个窗口中识别并列出与特定 IP 版本相关联的所有事件,并使用它来查看感兴趣的事件。您可以使用 "统计 --> IPvX 统计" 菜单来查看这些信息。
DNS
此选项将捕获文件中的所有 DNS 数据包分解,并帮助分析师根据数据包计数器和 DNS 协议的百分比在树形视图中查看结果。因此,分析师可以查看 DNS 服务的整体使用情况,包括 rcode、opcode、class、查询类型、服务以及查询统计信息,并使用它来查看感兴趣的事件。您可以使用 "统计 --> DNS" 菜单来查看这些信息。
HTTP
此选项将捕获文件中的所有 HTTP 数据包分解,并帮助分析师根据数据包计数器和 HTTP 协议的百分比以树状视图查看结果。因此,分析师可以查看 HTTP 服务的整体使用情况,包括请求和响应代码以及原始请求。您可以使用“统计 --> HTTP”菜单查看这些信息。
数据包过滤|基本原理
数据包过滤
Wireshark 中有两种类型的过滤器。虽然它们使用相似的语法,但用于不同的目的。
捕获过滤器 | 这种类型的过滤器用于仅保存流量的一部分。它在捕获流量之前设置,并且在捕获过程中不可更改。 |
---|---|
显示过滤器 | 这种类型的过滤器用于通过减少可见数据包的数量来调查数据包,并且在捕获过程中可以更改。 |
注意: 您不能在捕获流量时使用显示过滤器表达式,反之亦然。
捕获过滤器语法
这些过滤器使用字节偏移、十六进制值和掩码,并结合布尔运算符,初看时不容易理解/预测过滤器的目的。基础语法如下:
- 范围(Scope): 主机、网络、端口和端口范围。
- 方向(Direction): 源、目的、源或目的、源和目的,
- 协议(Protocol): 以太网、无线、IP、IPv6、ARP、RARP、TCP 和 UDP。
- 捕获端口 80 流量的示例过滤器:
tcp port 80
您可以从这里和这里了解更多关于捕获过滤器语法的内容。快速参考可以在 "捕获 --> 捕获过滤器" 菜单下找到。
显示过滤器语法
这是 Wireshark 最强大的功能。它支持 3000 种协议,并允许在协议分解下进行数据包级别的搜索。官方的“ 显示过滤器参考 ”提供了所有支持的协议分解,用于过滤。
- 捕获端口 80 流量的示例过滤器:
tcp.port == 80
Wireshark 具有一个内置选项(显示过滤器表达式),用于存储所有支持的协议结构,以帮助分析师创建显示过滤器。我们稍后将介绍“显示过滤器表达式”菜单。现在让我们了解显示过滤器操作的基础知识。快速参考可以在 "分析 --> 显示过滤器" 菜单下找到。
比较运算符
English | 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 在过滤时支持十进制和十六进制值。你可以根据将要进行的搜索使用任何你想要的格式.
逻辑表达式
英文 | C 语言风格 | 描述 | 示例 |
---|---|---|---|
adn | && | 逻辑与 | (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) |
not | ! | 逻辑非 | !(ip.src == 10.10.10.222) 注意: 使用 !=value 已不推荐;使用它可能导致结果不一致。建议使用 !(value) 样式以获得更一致的结果。 |
数据包过滤工具栏
过滤工具栏是您创建和应用显示过滤器的地方。它是一个智能工具栏,可以帮助您轻松创建有效的显示过滤器。在开始过滤数据包之前,这里有一些建议:
- 数据包过滤器使用小写定义。
- 数据包过滤器具有自动补全功能,用于分解协议细节,每个细节都由一个“点”表示。
- 数据包过滤器具有以下的三色表示方法。
绿色 | 有效的过滤器 |
---|---|
红色 | 无效的过滤器 |
黄色 | 警告过滤器。这个过滤器可以工作,但它不可靠,建议用有效的过滤器替换它。 |
数据包过滤|协议过滤器
协议过滤器
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 则根据数据包方向进行过滤。 |
TCP和UDP过滤器
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 数据包 |
应用层协议过滤器|HTTP和DNS
应用层协议过滤器帮助分析师根据数据包中的应用层协议信息(OSI 模型的第 4 层)过滤流量。这些过滤器根据协议类型过滤特定应用信息,如有效载荷和关联数据。
过滤器 | 描述 | 过滤器 | 描述 |
---|---|---|---|
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 具有内置选项(显示过滤器表达式),用于存储所有支持的协议结构,以帮助分析师创建显示过滤器。当分析师无法回忆特定协议所需的过滤器,或不确定过滤器可分配的值时,显示过滤器表达式菜单提供了一个易于使用的显示过滤器构建指南。它位于“分析 --> 显示过滤器表达式”菜单下。
不可能记住每种协议的显示过滤器所有细节。每种协议可以有不同的字段,并且可以接受各种类型的值。显示过滤器表达式菜单显示了所有协议字段、接受的值类型(整数或字符串)以及预定义值(如果有)。请注意,掌握创建过滤器和学习协议过滤器字段需要时间和练习。
高级过滤
过滤器:"contains"
过滤器 | 包含 |
---|---|
类型 | 比较操作符 |
描述 | 在数据包中搜索值。它是区分大小写的,并提供与“查找”选项类似的功能,通过专注于特定字段。 |
示例 | 查找所有 "Apache" 服务器。 |
工作流程 | 列出所有 HTTP 数据包,其中数据包的 "服务器" 字段包含 "Apache" 关键字。 |
用法 | http.server contains "Apache" |
过滤器:"匹配"
过滤器 | matches |
---|---|
类型 | 比较操作符 |
描述 | 搜索正则表达式的模式。它不区分大小写,复杂的查询有误差范围。 |
示例 | 查找所有 .php 和 .html 页面。 |
工作流程 | 列出所有 HTTP 数据包,其中数据包的 "host" 字段匹配关键词 ".php" 或 ".html"。 |
使用 | `http.host matches ".(php |
过滤器:"in"
过滤器 | in |
---|---|
类型 | 设置成员资格 |
描述 | 在特定范围/范围内搜索某个值或字段。 |
示例 | 查找所有使用端口 80、443 或 8080 的数据包。 |
工作流程 | 列出所有 TCP 数据包,其中数据包的 "端口" 字段值为 80、443 或 8080。 |
使用 | tcp.port in {80 443 8080} |
过滤器:"upper"
过滤器 | 大写 |
---|---|
类型 | 函数 |
描述 | 将字符串值转换为大写。 |
示例 | 查找所有 "APACHE" 服务器。 |
工作流程 | 将所有 HTTP 数据包的"服务器"字段转换为大写,并列出包含"APACHE"关键字的数据包。 |
使用 | upper(http.server) contains "APACHE" |
过滤器:"lower"
过滤器 | 小写 |
---|---|
类型 | 函数 |
描述 | 将字符串值转换为小写。 |
示例 | 查找所有 "apache" 服务器。 |
工作流程 | 将所有 HTTP 数据包的"服务器"字段信息转换为小写,并列出包含"apache"关键字的数据包。 |
使用 | lower(http.server) contains "apache" |
过滤器:"string"
过滤器 | 字符串 |
---|---|
类型 | 函数 |
描述 | 将非字符串值转换为字符串。 |
示例 | 查找所有奇数编号的帧。 |
工作流程 | 将所有“帧编号”字段转换为字符串值,并列出奇数编号的帧。 |
使用 | string(frame.number) matches "[13579]$" |
书签和过滤按钮
过滤器工具栏有一个过滤器书签部分,用于保存用户创建的过滤器,这有助于分析师通过几次点击重新使用喜欢的/复杂的过滤器。与书签类似,您可以创建过滤器按钮,只需单击一次即可应用。
创建和使用书签。
创建和使用显示过滤器按钮。
个人资料
Wireshark 是一款多功能工具,帮助分析师进行深入的数据包分析。正如我们在会议室中所讨论的,要分析特定感兴趣的事件,需要配置多个选项。每次调查案例都需要重新更改配置,这需要不同的着色规则和过滤按钮。这就是 Wireshark 配置文件发挥作用的地方。您可以为不同的调查案例创建多个配置文件,并按需使用。您可以使用 "编辑 --> 配置文件" 菜单或 "状态栏右下角 --> 配置文件" 部分来创建、修改和更改配置文件设置。