介绍
在这个实验(lab)中,你将学习如何使用 Wireshark(一种流行的网络协议分析器)来捕获和分析网络流量。网络流量分析在网络安全中至关重要,它可以识别潜在的威胁并监控网络活动。
在本实验(lab)结束时,你将获得使用 Wireshark 捕获和分析网络数据包的实践经验,这对于调查安全事件来说是一项宝贵的技能。
捕获网络流量
在这一步中,我们将学习如何启动 Wireshark,捕获网络流量,并将其保存以供分析。网络数据包捕获允许你查看流经你的网络接口的所有数据,从而提供对网络通信的可见性。
什么是网络数据包(Network Packet)?
在我们开始之前,让我们了解一下什么是网络数据包(network packet)。数据包(packet)是一种格式化的数据单元,通过网络传输。当你在互联网上执行任何活动(例如访问网站、发送电子邮件或观看视频)时,数据会被分解成更小的块或“数据包(packets)”,并通过网络发送到其目的地。
每个数据包(packet)包含:
- 源地址和目标地址(类似于信件上的发件人和收件人地址)
- 载荷(payload)(实际的数据或消息内容)
- 元数据(metadata)(关于如何处理数据包(packet)的信息)
真实世界的应用:在网络安全中,理解数据包(packet)结构是检测可疑行为的基础。例如,具有不寻常的源地址或目标端口的数据包(packet)可能表明有人试图扫描你的网络。
启动 Wireshark
首先,让我们通过在终端中运行以下命令来打开 Wireshark:
wireshark
执行此命令后,将打开 Wireshark 应用程序。你应该看到显示可用网络接口的 Wireshark 主界面。
输出将类似于这样:

给初学者的提示:如果这是你第一次使用 Wireshark,请不要担心你看到的所有选项。我们将专注于基本数据包(packet)捕获和分析所需的必要功能。
选择一个网络接口
在你可以捕获数据包(packet)之前,你需要选择要监视的网络接口。每个接口代表你系统上的不同网络连接。
在 Wireshark 主窗口中,你将看到可用网络接口的列表。每个接口旁边都有一个小图表,显示当前活动。
对于这个实验(lab),双击 eth1 接口。这通常是主要的以太网接口。如果你没有看到 eth1,请选择任何显示活动的接口(移动的图表)。
提示:每个接口旁边的图表显示了该接口上的网络活动级别。选择具有更多活动的接口将产生更有趣的捕获结果。
正在发生什么:当你选择一个接口时,你是在告诉 Wireshark 要监听哪个“网络管道”。不同的接口可能会显示不同类型的流量——例如,Wi-Fi 与以太网连接。
开始捕获数据包(Packets)
选择一个接口后,Wireshark 应该会自动开始捕获数据包(packets)。如果它没有,你可以通过单击工具栏中的蓝色鲨鱼鳍图标或按 Ctrl+E 手动启动捕获。
当捕获运行时,你将看到数据包(packets)在主窗口中实时显示:

让捕获运行大约 30-60 秒,以收集足够的网络流量以供分析。
安全提示:请记住,Wireshark 捕获流经所选网络接口的所有流量。在生产环境或共享网络中使用时,请确保你具有执行此类监控的权限,因为它可能会捕获敏感信息。
期望的结果:在捕获期间,你可能会看到不同颜色的线条快速出现在显示中。每条线代表一个数据包(packet),颜色表示不同的协议(例如,蓝色表示 TCP,浅绿色表示 HTTP)。
了解数据包(Packet)列表
在捕获时,观察 Wireshark 窗口中的主数据包(packet)列表。每行代表一个数据包(packet),其中包含几列信息:
- No.: 此捕获会话中的数据包(packet)编号
- Time: 捕获数据包(packet)的时间
- Source: 发送设备的 IP 地址或主机名
- Destination: 接收设备的 IP 地址或主机名
- Protocol: 使用的网络协议(TCP、UDP、HTTP 等)
- Length: 数据包(packet)的大小(以字节为单位)
- Info: 关于数据包(packet)的附加详细信息
Wireshark 使用不同的颜色来突出显示各种协议,从而更容易识别不同类型的流量。
深入了解:颜色编码是 Wireshark 的一个强大功能。例如,红色通常用于指示错误,浅蓝色用于 TCP 流量,浅绿色用于 HTTP 流量。这种视觉提示可以帮助你快速识别你感兴趣的流量。
排序提示:你可以单击任何列标题来对数据包(packet)列表进行排序。例如,单击“Protocol”标题会将相似的协议分组在一起,这在查找特定类型的流量时非常有用。
停止捕获
在捕获 30-60 秒后,通过单击工具栏中的红色方形图标或再次按 Ctrl+E 来停止捕获。
为什么要停止?:虽然 Wireshark 可以无限期地捕获数据包(packets),但在合理的时间段后停止有助于保持文件大小可管理并使分析更容易。对于特定的调查,你可能会运行更长时间的捕获。
保存捕获的数据包(Packets)
现在让我们保存捕获的网络流量以供以后分析:
- 单击 Wireshark 窗口顶部菜单中的
File - 选择
Save As - 导航到
/home/labex/project目录 - 输入
capture.pcapng作为文件名 - 单击
Save按钮
保存对话框将如下所示:

.pcapng 文件格式是 Wireshark 用于存储数据包(packet)捕获的本机格式。它包含有关你捕获的数据包(packets)的所有信息,并且可以在 Wireshark 中重新打开以进行进一步分析。
扩展知识:Wireshark 还支持较旧的 .pcap 格式和其他用于导入/导出的格式。.pcapng 格式提供了比旧的 .pcap 格式更多的功能,例如支持多个接口捕获和数据包(packet)注释。
你现在已成功捕获网络流量并将其保存以供分析。在下一步中,我们将探讨如何分析此捕获的数据。
了解 Wireshark 界面
现在你已经捕获了网络流量,让我们学习如何使用 Wireshark 的界面来分析它。理解这个界面对于有效的网络流量分析至关重要。
Wireshark 界面布局
Wireshark 界面分为三个主要窗格:
- 数据包(Packet)列表窗格(顶部):显示所有捕获的数据包(packets)及其基本信息
- 数据包(Packet)详情窗格(中间):显示有关所选数据包(packet)的详细信息
- 数据包(Packet)字节窗格(底部):以十六进制和 ASCII 格式显示所选数据包(packet)的原始数据
要详细检查一个数据包(packet),只需在数据包(Packet)列表窗格中单击它。该数据包(packet)的详细信息将显示在下面的窗格中。

这种三窗格布局设计允许你查看高级概览和低级详细信息,这对于全面的网络分析至关重要。
自定义提示:Wireshark 允许你自定义界面布局。你可以通过拖动它们之间的分隔线来调整每个窗格的大小,或者通过右键单击分隔线并选择“隐藏(Hide)”来完全隐藏一个窗格。如果你不小心隐藏了一个窗格,你可以通过菜单中的“视图(View)> 窗格(Panes)”来恢复它。
导航 Wireshark 界面
要详细检查一个数据包(packet):
- 在数据包(Packet)列表窗格中单击一个数据包(packet)
- 该数据包(packet)的详细信息将显示在下面的窗格中
- 浏览数据包(Packet)详情窗格以查看有关数据包(packet)的结构化信息
- 查看数据包(Packet)字节窗格以了解数据包(packet)的原始十六进制和 ASCII 表示形式
实践提示:尝试在数据包(Packet)列表窗格中选择不同的数据包(packets),并观察其他两个窗格如何更新以显示有关所选数据包(packet)的信息。尝试使用不同协议类型的数据包(packets)来查看它们包含的不同信息。
了解数据包(Packet)详情窗格
数据包(Packet)详情窗格显示分层的数据包(packet)信息,反映了网络协议栈(network protocol stack):
- 帧(Frame)层:关于数据包(packet)捕获的物理信息(捕获时间、帧长度)
- 以太网(Ethernet)层:包含 MAC 地址和其他链路层信息
- 互联网协议(IP)层:包含 IP 地址信息
- 传输层(TCP/UDP):包含端口号和会话信息
- 应用层(HTTP, DNS 等):包含特定于应用程序的数据
背景知识:这种分层反映遵循 OSI(开放系统互连)模型或 TCP/IP 模型,这是网络通信的标准模型。了解这些层有助于你了解网络通信的工作原理。
可视化:将这些层想象成一个信封内的信封。最外层(帧(Frame))包含所有内容。里面是以太网(Ethernet)层,然后是 IP 层,依此类推。每一层都添加了自己的寻址和控制信息,以确保数据正确到达其目的地。
检查数据包(Packet)详情
要深入了解特定数据包(packet):
- 在数据包(Packet)列表窗格中单击一个数据包(packet)
- 在数据包(Packet)详情窗格中,通过单击每个字段旁边的箭头 (►) 来展开各个部分
- 当你在数据包(Packet)详情窗格中选择不同的字段时,相应的字节将在数据包(Packet)字节窗格中突出显示
这允许你检查数据包(packet)的每个方面,从低级以太网(Ethernet)帧到高级应用程序数据。
例如,如果你选择一个 HTTP 数据包(packet)并展开“超文本传输协议(Hypertext Transfer Protocol)”部分,你可以看到 HTTP 请求或响应的详细信息:
- 请求方法(GET、POST 等)
- 标头信息(User-Agent、Content-Type 等)
- 状态代码和响应消息
动手练习:尝试查找一个 HTTP 数据包(packet)并展开其详细信息。检查请求 URL、状态代码或其他有趣的 HTTP 标头信息。如果找不到 HTTP 数据包(packet),请尝试在网络上打开一个网站以生成一些 HTTP 流量。
故障排除提示:在调查网络问题时,请特别注意以红色突出显示或包含“error”、“warning”或“malformed”等词语的字段。这些通常表示可能导致网络问题的潜在问题。
使用 Wireshark 的导航工具
Wireshark 提供了几个有用的导航工具来帮助你浏览捕获:
- 过滤器工具栏:位于主窗口顶部,允许你过滤显示的数据包(packets)
- 缩放工具:允许你放大或缩小时间轴视图
- 颜色编码:不同类型的数据包(packets)使用不同的颜色,从而更容易在视觉上识别
- 查找功能(Ctrl+F):允许你在数据包(packet)内容中搜索特定信息
时间显示选项:默认情况下,Wireshark 显示相对于捕获开始的时间。你可以通过右键单击“Time”列并选择不同的“时间显示格式(Time Display Format)”来更改此设置,例如绝对时间或日期和时间。
导航快捷方式:按 Ctrl+G 跳转到特定的数据包(packet)编号,这在分析大型捕获或在文档中跟踪对特定数据包(packets)的引用时非常有用。
通过熟悉这些工具,你将能够更有效地浏览和分析网络捕获。
使用显示过滤器
显示过滤器是 Wireshark 最强大的功能之一,允许你专注于特定类型的流量。通过仅显示你感兴趣的数据包(packets),这使得分析更易于管理。
为什么过滤器很重要
想象一下,你的捕获中有成千上万甚至数百万个数据包(packets)。在如此大量的数据中查找特定信息可能非常困难。显示过滤器允许你“缩小搜索范围”,仅显示与你的分析相关的数据包(packets)。
真实世界的例子:在排除 Web 应用程序问题时,你可能只对到特定服务器的 HTTP 流量感兴趣。使用过滤器,你可以立即专注于这些数据包(packets),而忽略不相关的网络流量。
应用基本过滤器
要应用过滤器,请在窗口顶部的过滤器栏中键入它。例如,要仅显示 TCP 流量,请输入:
tcp
按 Enter 键或单击蓝色箭头按钮以应用过滤器。
结果将仅显示 TCP 数据包(packets):

以下是一些你可以尝试的其他有用过滤器:
http: 仅显示 HTTP 流量dns: 仅显示 DNS 流量ip.addr == 8.8.8.8: 显示到或来自 IP 地址 8.8.8.8 的流量tcp.port == 443: 仅显示 HTTPS 流量
要清除过滤器并再次查看所有数据包(packets),请单击过滤器栏旁边的“X”按钮。
过滤器语法帮助:Wireshark 的过滤器栏具有内置帮助。在你键入时,如果语法有效,它将以绿色突出显示语法;如果存在错误,则以红色突出显示。你也可以按 Ctrl+Space 获取自动完成建议。
历史记录提示:Wireshark 会记住你以前使用过的过滤器。单击过滤器栏右侧的向下箭头以查看你的过滤器历史记录。
高级过滤技术
除了基本过滤器之外,Wireshark 还支持更复杂的过滤器表达式:
比较运算符:不仅仅是等于 (==)
tcp.len > 100: 大于 100 字节的 TCP 数据包(packets)frame.time_delta <= 0.1: 与前一个数据包(packet)的时间差 ≤ 0.1 秒的数据包(packets)

复合条件:
http && !(tcp.port == 80): HTTP 流量但不在标准 HTTP 端口上(ip.src == 192.168.1.100 && ip.dst == 8.8.8.8) || (ip.src == 8.8.8.8 && ip.dst == 192.168.1.100): 特定设备和 DNS 服务器之间的通信
包含(contains)和匹配(matches):
http contains "password": 包含字符串“password”的 HTTP 流量tcp matches "GET [^ ]+ HTTP": 匹配 GET 请求的正则表达式的 TCP 数据包(packets)
效率提示:掌握过滤器表达式可以大大提高你分析网络流量时的效率。考虑保存常用的过滤器表达式以便快速应用。
使用表达式构建器(Expression Builder)
如果你不确定确切的过滤器语法,Wireshark 提供了表达式构建器(Expression builder):
- 单击过滤器栏旁边的“表达式(Expression...)”按钮
- 浏览字段名称列表或开始键入以搜索
- 选择一个字段,选择一个关系(==、>、contains 等),然后输入一个值
- 单击“确定(OK)”以应用过滤器
这可以帮助你构建复杂的过滤器,而无需记住确切的语法。
使用着色规则(Coloring Rules)
Wireshark 使用颜色来帮助你快速识别不同类型的流量。要查看着色规则(coloring rules):
- 转到菜单中的“视图(View)> 着色规则(Coloring Rules)”
- 将打开一个对话框,显示当前的着色规则(coloring rules)

着色规则(coloring rules)按从上到下的顺序应用。与数据包(packet)匹配的第一个规则确定其颜色。你可以通过选中或取消选中它们旁边的框来启用或禁用规则。
查看完后,关闭“着色规则(Coloring Rules)”对话框。
自定义规则:对于经常执行特定类型分析的人来说,创建自己的颜色规则非常有用。例如,你可以为到你公司内部服务器的流量或感兴趣的特定应用程序创建特殊颜色。
颜色与过滤器:请记住,着色规则(coloring rules)突出显示数据包(packets)但仍然显示所有内容,而过滤器实际上从视图中删除不匹配的数据包(packets)。通常,使用着色来获得概览,然后应用过滤器来专注于特定问题是有用的。
追踪 TCP 流
Wireshark 中最强大的分析功能之一是追踪 TCP 流的能力。TCP 流表示两个主机之间的完整对话。
什么是 TCP 流?
TCP(传输控制协议,Transmission Control Protocol)是互联网上最常用的通信协议之一。它提供可靠的、有序的数据传输。TCP 流是单个 TCP 连接中交换的所有数据包(packets)的集合,表示两个端点之间的完整对话。
例如,当你的浏览器连接到网站时,它会建立一个 TCP 连接,并通过该连接发送请求和接收响应。整个交换过程构成一个 TCP 流。
为什么这很重要:网络通信通常涉及许多单独的数据包(packets),只有放在一起查看才有意义。TCP 流功能将这些碎片化的通信重构为连贯的对话,从而更容易理解应用程序级别发生的事情。
追踪 TCP 流
要追踪 TCP 流:
- 在你的捕获中找到一个 TCP 数据包(packet)(如果需要,你可以使用
tcp过滤器) - 右键单击该数据包(packet)
- 选择“追踪(Follow)> TCP 流(TCP Stream)”

将打开一个新窗口,显示完整的对话。红色文本表示从客户端发送到服务器的数据,蓝色文本表示从服务器发送到客户端的数据。
理解颜色:红色文本(客户端到服务器)通常包括请求、命令或上传的数据。蓝色文本(服务器到客户端)通常包括响应、下载的内容或状态消息。这种颜色编码有助于你快速了解通信的方向。
分析 TCP 流内容
TCP 流窗口提供了几个有用的分析选项:
内容显示选项(右上角):
- ASCII:将内容显示为文本,非常适合 HTTP 和其他基于文本的协议
- Hex Dump(十六进制转储):以十六进制和 ASCII 格式显示内容,适用于包含二进制数据的流
- C Arrays(C 数组):将数据显示为 C 编程语言数组
- Raw(原始):仅显示原始数据
让我们尝试
YAML格式,以更易读的格式查看数据。
流导航(下拉菜单):
- 如果你的捕获包含多个 TCP 流,你可以使用此菜单在它们之间导航
- 流编号从 0 开始,并按遇到它们的顺序递增
查找功能:
- 使用 Ctrl+F 在流内容中搜索
- 这有助于在大型流中定位特定字符串或模式
分析提示:不同的显示选项可以揭示不同的见解。例如,切换到“Hex Dump(十六进制转储)”视图以查看左侧的十六进制值和右侧的 ASCII 表示形式。这在分析混合文本和二进制数据的协议时很有帮助。
保存 TCP 流
保存 TCP 流对于文档编制或离线分析很有价值:
- 单击 TCP 流窗口中的“另存为(Save As)”按钮
- 导航到
/home/labex/project目录 - 输入
tcp_stream.txt作为文件名 - 单击“保存(Save)”

此保存的文件包含整个 TCP 对话的文本,可以稍后查看或与他人共享。
查找有趣的流
在实际场景中,捕获通常包含数百或数千个不同的 TCP 流。要找到有趣的流:
- 使用显示过滤器缩小范围(例如,
http或tcp.port == 3001) - 查找关键数据包(packets)(例如,连接启动或包含特定内容的数据包(packets))
- 在这些数据包(packets)上使用“追踪 TCP 流(Follow TCP Stream)”功能
一旦你确定了特定的流,你也可以过滤该流。在 TCP 流窗口中,记下“流索引(Stream index)”值(例如“TCP Stream: 5”)。你可以使用过滤器 tcp.stream eq 5 仅显示来自该特定流的所有数据包(packets)。
调查策略:在分析潜在的安全事件时,请注意不寻常的端口号、到意外 IP 地址的连接或在不寻常的时间发生的通信。追踪这些流通常会揭示恶意活动。
了解 TCP 通信模式
当你检查多个 TCP 流时,你将开始识别 TCP 通信中的模式:
- 三次握手(Three-way handshake):启动连接的 SYN、SYN-ACK、ACK 序列
- 数据传输:主要的请求 - 响应交换
- 四次挥手(Four-way closure):终止连接的 FIN 和 ACK 序列
通过检查这些模式,你可以确定通信问题发生的位置,例如连接建立失败或过早终止。
统计分析工具
Wireshark 提供了几种统计工具来帮助分析你的捕获。这些工具提供了对整体网络模式的深入了解,并可以帮助识别异常活动。
为什么统计分析很重要
虽然逐个数据包(packet)的分析对于深入调查至关重要,但统计分析可以帮助你:
- 识别网络上的主要活动模式
- 发现异常流量或潜在问题
- 了解资源使用情况和网络性能
- 识别最活跃的主机和服务
全局观:将数据包(packet)分析视为检查单个树木,而统计分析则让你了解整个森林。两种视角对于完整的网络分析都是必要的。
使用统计工具
要访问这些工具,请浏览“统计(Statistics)”菜单并尝试以下选项:
协议分层(Protocol Hierarchy)
“协议分层(Protocol Hierarchy)”显示了捕获中协议的分布情况:
- 单击“统计(Statistics)> 协议分层(Protocol Hierarchy)”
- 将打开一个窗口,显示检测到的所有协议的树状视图
- 百分比表示你的流量中有多少使用每种协议

此视图可帮助你快速识别:
- 哪些协议消耗的带宽最多
- 意外或可能不需要的网络流量
- 网络流量的总体组成
分析提示:不寻常的协议分布可能表明网络问题或安全问题。例如,异常大量的 DNS 流量可能表明 DNS 隧道活动或恶意软件通信。
会话(Conversations)
“会话(Conversations)”统计信息列出了端点之间的所有连接:
- 单击“统计(Statistics)> 会话(Conversations)”
- 选择你要检查的协议级别的选项卡(以太网(Ethernet)、IPv4、TCP 等)
- 该列表显示了哪些主机正在通信以及它们交换了多少数据

此工具对于以下情况特别有用:
- 识别哪些设备对正在交换最多的数据
- 发现设备之间意外的通信
- 查找潜在的未经授权的连接
交互式功能:你可以右键单击任何会话,然后选择“应用为过滤器(Apply as Filter)”以仅显示属于该会话的数据包(packets)。这使得调查特定通信变得容易。
端点(Endpoints)
“端点(Endpoints)”统计信息列出了捕获中的所有设备:
- 单击“统计(Statistics)> 端点(Endpoints)”
- 选择你要检查的协议级别的选项卡
- 该列表显示了参与流量的所有设备

使用此工具可以:
- 识别网络上最活跃的设备
- 查找未知或意外的设备
- 按 IP 地址或 MAC 地址分析流量模式
网络映射:“端点(Endpoints)”工具本质上创建了在你的网络上通信的所有设备的映射。在安全上下文中,这有助于识别恶意设备或未经授权的系统。
I/O 图(I/O Graph)
“I/O 图(I/O Graph)”显示了随时间变化的流量:
- 单击“统计(Statistics)> I/O 图(I/O Graph)”
- 该图显示了在捕获期间流量如何变化
- 你可以添加具有不同过滤器的多个图来比较不同类型的流量

这种可视化非常适合:
- 识别流量峰值或异常模式
- 将网络事件与时间相关联
- 比较同一时间段内不同类型的流量
高级用法:单击“+”按钮以添加具有特定显示过滤器的其他图线。例如,你可以有一条线显示所有流量,另一条线仅显示 HTTP 流量,第三条线显示 DNS 流量。这使得查看不同协议之间的关系变得容易。
统计分析的实际应用
这些统计工具在以下情况下特别有价值:
- 排除网络问题:识别哪些应用程序或设备正在消耗过多的带宽
- 安全监控:检测可能表明入侵或恶意软件的异常流量模式
- 网络基线:建立正常的流量模式以帮助识别未来的异常情况
- 性能优化:确定哪些协议或连接正在主导网络使用
高级统计功能
随着你越来越熟悉 Wireshark,请探索以下其他统计功能:
- 服务响应时间(Service Response Time):测量服务响应请求所需的时间
- HTTP 统计(HTTP Statistics):提供 HTTP 流量和性能的详细细分
- DNS 统计(DNS Statistics):显示 DNS 查询和响应模式
- 专家信息(Expert Information):突出显示 Wireshark 检测到的潜在问题或异常情况
这些高级统计信息为专门的分析任务提供了更深入的见解。
恭喜!你现在已经学习了使用 Wireshark 分析网络流量的基础知识。这些技能构成了更高级的网络分析和网络安全调查的基础。
总结
在这个实验中,你已经学习了使用 Wireshark 捕获和分析网络流量的基本技能。首先,你安装了 Wireshark 并设置了数据包(packet)捕获所需的权限。然后,你从你的系统捕获了实时网络流量,并将其保存以供进一步分析。最后,你探索了各种分析技术,例如显示过滤器(display filters)、着色规则(coloring rules)和追踪 TCP 流(following TCP streams)。
你所获得的技能是网络故障排除和网络安全调查的基础。网络流量分析使你能够识别安全威胁、排除网络和应用程序问题、详细了解协议功能以及监控网络性能。随着你在网络安全领域的不断进步,你可以在这些基础知识的基础上开发更高级的数据包(packet)分析技术,包括恶意软件检测、入侵检测和网络取证。


