📌 目录

    Wireshark 学习笔记(二)

    Wireshark 学习笔记 (二)

    数据包操作

    统计|摘要

    统计

    此菜单提供多种统计选项,可供调查,帮助用户了解流量范围、可用协议、端点和会话等宏观情况,以及一些特定协议的详细信息,如 DHCP、DNS 和 HTTP/2。

    解析地址

    此选项通过提供解析地址及其主机名的列表,帮助分析师识别捕获文件中可用的 IP 地址和 DNS 名称。请注意,主机名信息来自捕获文件中的 DNS 应答。
    Wireshark - resolved addresses

    协议分级

    此选项将捕获文件中的所有可用协议分解,并帮助分析师根据数据包计数和百分比以树状视图查看协议。因此,分析师可以查看端口和服务的整体使用情况,并专注于感兴趣的事件。
    Wireshark - protocol hierarchy

    会话

    对话表示两个特定端点之间的流量。此选项提供五种基本格式的对话列表;以太网、IPv4、IPv6、TCP 和 UDP。因此,分析师可以识别所有对话和事件中感兴趣的接触端点。 您可以使用 "统计 --> 对话" 菜单查看此信息。

    Wireshark - conversations

    端点

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

    Wireshark 还支持将 MAC 地址解析为人类可读格式,使用 IEEE 分配的制造商名称。请注意,此转换通过 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

    端点与地理位置视图。

    Wireshark - geoip map view

    统计|协议详情

    IPv4和IPv6

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

    Wireshark - ipv4 and ipv6 statistics

    DNS

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

    Wireshark - dns statistics

    HTTP

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

    Wireshark - http statistics

    数据包过滤|基本原理

    数据包过滤

    Wireshark 中有两种类型的过滤器。虽然它们使用相似的语法,但用于不同的目的。

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

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

    捕获过滤器语法

    这些过滤器使用字节偏移、十六进制值和掩码,并结合布尔运算符,初看时不容易理解/预测过滤器的目的。基础语法如下:

    • 范围(Scope): 主机、网络、端口和端口范围。
    • 方向(Direction): 源、目的、源或目的、源和目的,
    • 协议(Protocol): 以太网、无线、IP、IPv6、ARP、RARP、TCP 和 UDP。
    • 捕获端口 80 流量的示例过滤器:tcp port 80

    您可以从这里这里了解更多关于捕获过滤器语法的内容。快速参考可以在 "捕获 --> 捕获过滤器" 菜单下找到。

    Wireshark - capture filters

    显示过滤器语法

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

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

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

    Wireshark - display filters

    比较运算符

    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 - filter colours

    Wireshark - toolbar features

    数据包过滤|协议过滤器

    协议过滤器

    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和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 数据包

    Wireshark - tcp and udp filters

    应用层协议过滤器|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 - http and dns filters

    显示过滤器表达式

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

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

    Wireshark - display filter expressions

    高级过滤

    过滤器:"contains"

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

    Wireshark - contains operator

    过滤器:"匹配"

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

    Wireshark - matches operator

    过滤器:"in"

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

    Wireshark - in operator

    过滤器:"upper"

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

    Wireshark - upper operator

    过滤器:"lower"

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

    Wireshark - lower operator

    过滤器:"string"

    过滤器 字符串
    类型 函数
    描述 将非字符串值转换为字符串。
    示例 查找所有奇数编号的帧。
    工作流程 将所有“帧编号”字段转换为字符串值,并列出奇数编号的帧。
    使用 string(frame.number) matches "[13579]$"

    Wireshark - string operator

    书签和过滤按钮

    过滤器工具栏有一个过滤器书签部分,用于保存用户创建的过滤器,这有助于分析师通过几次点击重新使用喜欢的/复杂的过滤器。与书签类似,您可以创建过滤器按钮,只需单击一次即可应用。

    创建和使用书签。

    Wireshark - bookmarks and filtering buttons

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

    Wireshark - creating a filter button

    个人资料

    Wireshark 是一款多功能工具,帮助分析师进行深入的数据包分析。正如我们在会议室中所讨论的,要分析特定感兴趣的事件,需要配置多个选项。每次调查案例都需要重新更改配置,这需要不同的着色规则和过滤按钮。这就是 Wireshark 配置文件发挥作用的地方。您可以为不同的调查案例创建多个配置文件,并按需使用。您可以使用 "编辑 --> 配置文件" 菜单或 "状态栏右下角 --> 配置文件" 部分来创建、修改和更改配置文件设置。

    Wireshark - profiles

    posted @ 2025-09-12 11:18  羽弥YUMI  阅读(34)  评论(0)    收藏  举报