简介
在本次实验中,你将学习如何使用 Wireshark 过滤网络流量,Wireshark 是进行网络分析和网络安全调查的重要工具。你将练习捕获实时数据包、应用显示过滤器来隔离特定流量,并导出过滤后的结果以进行进一步检查。
本次实验将让你亲身体验 Wireshark 的核心功能,从接口选择到流量分析。这些技能将帮助你识别网络模式、解决连接问题,并检测网络通信中潜在的安全威胁。
在本次实验中,你将学习如何使用 Wireshark 过滤网络流量,Wireshark 是进行网络分析和网络安全调查的重要工具。你将练习捕获实时数据包、应用显示过滤器来隔离特定流量,并导出过滤后的结果以进行进一步检查。
本次实验将让你亲身体验 Wireshark 的核心功能,从接口选择到流量分析。这些技能将帮助你识别网络模式、解决连接问题,并检测网络通信中潜在的安全威胁。
在这一步中,你将安装 Wireshark,它是一款强大的网络协议分析器,可让你实时检查网络流量。你可以把它想象成网络通信的显微镜——它能捕获通过你网络传输的数据包,并以可读的格式显示出来。
在开始之前,了解 Wireshark 需要特殊权限才能捕获网络数据这一点很重要。这就是为什么我们要仔细配置它,使其能在你的 LabEx 虚拟机(VM)上正常工作。
首先,我们需要更新软件包列表。这能确保你的系统了解最新可用的软件版本:
sudo apt update
现在使用以下命令安装 Wireshark。-y
标志会自动确认安装:
sudo apt install -y wireshark
在安装过程中,Wireshark 会询问关于非超级用户访问的问题。我们使用 debconf(Debian 配置系统)提前进行配置,以允许普通用户捕获数据包:
echo "wireshark-common wireshark-common/install-setuid boolean true" | sudo debconf-set-selections
接下来,我们将你的用户添加到 'wireshark' 组。这样无需 root 访问权限就能授予必要的权限:
sudo usermod -aG wireshark $USER
让我们通过检查版本来验证安装是否成功。这可以确认 Wireshark 已正确安装:
wireshark --version
你应该会看到类似以下的输出:
Wireshark 3.6.8 (Git v3.6.8 packaged as 3.6.8-1~ubuntu20.04.0)
组权限的更改需要新的登录会话才能生效。在常规系统中,你需要注销并重新登录,但在 LabEx 中,只需打开一个新的终端标签页,更改就会生效。
请记住,这些配置步骤至关重要,因为像 Wireshark 这样的网络监控工具需要特殊权限才能访问网络接口,但我们希望在不总是需要 root 访问权限的情况下安全地使用它们。
在这一步中,你将学习如何在 Wireshark 中识别并选择用于数据包捕获的网络接口。网络接口是计算机与网络之间的连接点。你可以将它们想象成网络流量进出计算机的“门”。每个接口都有唯一的名称和特性,这些决定了它能够捕获哪种类型的流量。
首先,让我们使用 Wireshark 的内置命令列出系统上所有可用的网络接口。这能帮助你在选择之前查看所有可能的捕获点:
wireshark -D
你应该会看到类似以下的输出:
1. eth0
2. any (Pseudo-device that captures on all interfaces)
3. lo (Loopback)
输出显示了带有编号的接口名称。'eth0' 通常是你的物理以太网端口,而 'lo' 用于内部回环流量。
若要获取更详细的接口信息,我们可以使用 Linux 的 ip
命令。它不仅会显示接口名称,还会显示它们当前的运行状态:
ip link show
这将显示所有网络接口及其当前状态(UP/DOWN)。接口必须处于 UP 状态才能捕获流量。
在我们的实验环境中,我们将使用 eth0
接口,它通常是 Linux 系统中的主要以太网接口。在使用之前,让我们验证其状态以确保它处于活动状态:
ip link show eth0
在输出中查找 "state UP" 以确认接口处于活动状态。如果显示为 DOWN,你需要在继续操作之前排查连接问题。
现在,让我们使用 Wireshark 的终端版本(tshark)测试在该接口上捕获数据包。这个快速测试有助于在使用完整的图形用户界面(GUI)之前验证一切是否正常工作:
sudo tshark -i eth0 -c 5
此命令从 eth0 接口捕获 5 个数据包(-i 指定接口,-c 设置数据包数量),并在终端中显示它们。需要使用 sudo,因为数据包捕获需要 root 权限。
要以 GUI 模式启动 Wireshark(我们将在后续步骤中使用它进行更高级的过滤):
wireshark &
在 Wireshark 的 GUI 中,你会在主窗口中看到可用接口的列表。符号 &
会让 Wireshark 在后台运行,这样你就可以继续使用终端。
在这一步中,你将学习如何使用 Wireshark 捕获实时网络流量。数据包捕获是拦截并记录网络流量的过程,它能让你实时分析网络通信情况。这对于网络故障排查和安全分析至关重要。
首先,从终端以图形用户界面(GUI)模式启动 Wireshark。&
符号会让命令在后台运行,这样你就可以继续使用终端:
wireshark &
当 Wireshark 打开后,你会看到一个可用网络接口的列表。这些接口代表了你机器上的物理和虚拟网络连接。通过双击选择 eth0
(我们在上一步中确定的接口),它通常是你的主要以太网接口。
Wireshark 会立即开始捕获该接口上的所有网络流量。主窗口将数据包分为三个部分显示:数据包列表(摘要)、数据包详细信息(协议解析)和数据包字节(十六进制原始数据)。数据包在被捕获时会实时显示。
为了生成一些用于捕获的测试流量,打开一个新的终端并运行一个简单的 ping 命令。这会向谷歌的 DNS 服务器(8.8.8.8)发送 ICMP 回显请求:
ping -c 4 8.8.8.8
在 Wireshark 中,你现在应该能看到捕获到的 ICMP 数据包。这些数据包代表了你的 ping 请求和响应。每一行数据包都显示了重要的元数据:
当你完成捕获后,点击工具栏中的红色方形“停止”按钮。这会冻结显示内容,以便你检查捕获到的数据包。
若要保存捕获的内容以便后续分析:
ping_capture.pcapng
(.pcapng 是 Wireshark 的捕获文件格式)~/project
目录中,以便于访问对于命令行捕获(适用于自动化操作或远程系统),你可以使用 Wireshark 的命令行版本 tshark。以下命令从 eth0 接口精确捕获 10 个数据包并保存它们:
sudo tshark -i eth0 -w ~/project/cli_capture.pcap -c 10
-w
标志指定输出文件,-c
限制捕获的数据包数量。
在这一步中,你将学习如何使用 Wireshark 的显示过滤器来聚焦特定的网络流量。显示过滤器通过仅显示符合你指定条件的数据包,帮助你分析捕获的数据包。你可以将它们想象成搜索词,让你在数千个数据包中快速找到你感兴趣的特定网络会话。
首先,在 Wireshark 中打开你之前保存的捕获文件:
wireshark ~/project/ping_capture.pcapng &
此命令在后台(&
)打开 Wireshark 并加载你保存的数据包捕获文件。.pcapng
文件包含了你之前记录的所有网络流量。
若要过滤出 ICMP 流量(ping 数据包),在顶部的过滤器栏中输入以下内容:
icmp
按下回车键,你将在显示窗口中仅看到 ICMP 数据包。ICMP 是 ping 命令使用的协议,因此这个过滤器可帮助你从其他流量中分离出与 ping 相关的网络活动。
若要过滤与特定 IP 地址(如 8.8.8.8)之间的流量:
ip.addr == 8.8.8.8
这个过滤器会显示所有源 IP 地址或目标 IP 地址为 8.8.8.8 的数据包。在 Wireshark 过滤器中,双等号(==
)用于精确匹配。
使用逻辑运算符组合过滤器:
icmp && ip.addr == 8.8.8.8
这将仅显示涉及 8.8.8.8 的 ICMP 数据包。&&
运算符表示“与”,因此一个数据包必须同时满足这两个条件才会被显示出来。
其他一些有用的过滤器:
http
(显示网页浏览活动)dns
(显示域名查找)ip.src == 192.168.1.1
(显示源自该 IP 地址的数据包)ip.dst == 8.8.8.8
(显示发往该 IP 地址的数据包)若要保存过滤后的视图:
filtered_ping.pcapng
,保存路径为 ~/project
这将创建一个新的捕获文件,其中仅包含过滤后的数据包,这对于共享特定的流量模式或进行进一步分析非常有用。
若要进行命令行过滤(使用 tshark):
tshark -r ~/project/ping_capture.pcapng -Y "icmp" -w ~/project/tshark_filtered.pcap
这种替代方法使用 Wireshark 的命令行版本(tshark)来过滤和保存数据包,而无需打开图形界面。-Y
标志用于指定过滤表达式,类似于你在 Wireshark GUI 中使用的方式。
在这一步中,你将学习如何以不同格式从 Wireshark 导出过滤后的数据包数据,用于分析和报告。导出数据能让你与同事分享你的发现,或将数据导入其他分析工具。
首先,在 Wireshark 中打开你过滤后的捕获文件。这里假设你已经在前面的步骤中完成了数据包的捕获和过滤:
wireshark ~/project/filtered_ping.pcapng &
若要以 Wireshark 的原生格式导出所有显示的数据包(应用过滤后):
exported_packets.pcapng
,保存路径为 ~/project
,以便后续分析Wireshark 的命令行工具 tshark
可让你以各种格式导出数据。以下是常见的示例:
若要导出为 CSV 格式(适用于电子表格分析):
tshark -r ~/project/filtered_ping.pcapng -T fields -e frame.number -e ip.src -e ip.dst -E header=y -E separator=, > ~/project/packet_data.csv
这将导出带有列标题的数据包编号、源 IP 地址和目标 IP 地址。
若要导出为详细的纯文本输出:
tshark -r ~/project/filtered_ping.pcapng -V > ~/project/packet_details.txt
这将显示完整的数据包详细信息,类似于 Wireshark 界面中的显示。
JSON 格式适用于编程分析。将所有数据包数据导出为 JSON 格式:
tshark -r ~/project/filtered_ping.pcapng -T json > ~/project/packets.json
导出后,通过列出文件来验证所有文件是否正确创建:
ls -lh ~/project/*.pcapng ~/project/*.csv ~/project/*.txt ~/project/*.json
若要快速检查导出到 PCAPNG 文件中的数据包数量:
capinfos ~/project/exported_packets.pcapng | grep "Number of packets"
这将通过显示数据包数量来确认你的过滤器是否按预期工作。
在本次实验中,你通过实际操作学习了如何使用 Wireshark 过滤网络流量。关键步骤包括安装 Wireshark、配置用户权限、识别网络接口,以及在 eth0
接口上捕获实时流量。
你还练习了应用显示过滤器来分析特定数据包,并导出过滤后的数据。这些技能为你利用 Wireshark 强大的过滤功能进行高效的网络流量分析奠定了基础。