使用 Wireshark 进行网络分析

WiresharkBeginner
立即练习

介绍

在本实验中,你将学习使用 Wireshark 这一行业标准的网络协议分析技术。这款强大的工具能让你在数据包层面检查网络流量,为故障排除和安全分析提供极具价值的洞察。

你将获得捕获、过滤和解读网络数据包的实用技能。通过动手练习,你将理解不同协议之间是如何通信的,并能识别潜在的网络问题。

安装 Wireshark

在这一步中,我们将在 Ubuntu 系统上安装 Wireshark。Wireshark 是一款网络协议分析器,可以让你捕获并以交互方式浏览网络流量。它包含在 Ubuntu 的默认软件仓库中,这使得初学者的安装过程非常简单。

  1. 首先,让我们打开终端。在桌面上找到并打开 Xfce Terminal。我们将在这里执行所有用于安装和配置 Wireshark 的命令。

打开 Xfce Terminal 窗口

注意:免费用户无法连接互联网,因此实验环境中已预装了 Wireshark。你可以直接跳到列表中的第 5 项(检查 Wireshark 是否已安装)。升级为 Pro 用户可以练习自行安装 Wireshark。

仅限 Pro 用户
  1. 在安装任何软件之前,更新软件包列表是一个好习惯。这能确保我们安装的是 Wireshark 的最新可用版本。运行以下命令:
sudo apt update
  1. 现在我们开始安装 Wireshark。-y 标志会自动对安装过程中的任何提示回答「是」,使过程更加顺畅:
sudo apt install wireshark -y
  1. 在安装过程中,你会遇到一个关于是否允许非超级用户捕获数据包的重要安全提示。这是一个关键的配置选择——选择「Yes」意味着你不需要 root 权限即可运行 Wireshark,这在日常使用中更加安全。使用方向键选择「Yes」并按回车键。

Wireshark 安装提示

  1. 安装完成后,让我们验证 Wireshark 是否安装正确。版本检查可以确认安装成功并显示你正在运行的版本:
wireshark --version
  1. 为了捕获网络流量,我们需要配置适当的权限。这包括将你的用户添加到 wireshark 用户组,并为 Dumpcap(Wireshark 的数据包捕获工具)设置正确的权限:

首先,检查 wireshark 组是否存在(它应该在安装过程中已创建):

getent group wireshark

如果由于某种原因该组不存在,请使用以下命令创建:

sudo groupadd wireshark

以下命令将 Dumpcap 配置为以提升的权限运行,同时保持 Wireshark 本身以普通用户身份运行——这是安全最佳实践:

sudo chgrp wireshark /usr/bin/dumpcap
sudo chmod 4755 /usr/bin/dumpcap
sudo gpasswd -a $USER wireshark

运行这些命令后,你需要注销并重新登录才能使组更改生效。现在你已成功安装并配置了 Wireshark,准备好开始分析网络流量了!

捕获网络流量

既然我们已经安装了 Wireshark,现在来捕获一些网络流量。这就像架设一个麦克风来记录网络上发生的所有对话。每当你的计算机在线发送或接收数据时,数据都会被拆分成称为「数据包」(Packet)的小块。Wireshark 允许我们查看并分析这些数据包。

  1. 在终端输入 wireshark 并按回车键打开 Wireshark。这将启动图形界面,我们将在其中进行数据包捕获。

  2. Wireshark 打开后,你会看到一个网络接口列表(即你的计算机用于与网络通信的连接方式)。寻找名为 eth0eth1 的接口——这些通常是你的有线以太网连接。如果你使用的是 WiFi,可能会看到 wlan0

Wireshark 接口选择

  1. 双击活动接口(即显示数据包计数正在增加的那个)开始捕获。主窗口现在将显示实时的数据包流——每一行代表当前正在发生的一个不同的网络对话。

Wireshark 数据包捕获窗口

  1. 让我们制造一些简单的网络活动以便捕获。打开一个新的终端窗口并输入:

    curl http://example.com
    

    此命令会获取 example.com 的主页,生成 Wireshark 可以捕获的 HTTP 数据包(Web 流量)。运行此命令后,你会立即在 Wireshark 中看到新的数据包出现。

  2. 在看到若干数据包后(大约 5-10 秒就足够了),点击顶部红色的「停止」按钮。这会冻结捕获过程,以便我们可以在没有新数据包不断涌入的情况下检查它们。

  3. 恭喜!你已经捕获了第一批网络流量。每一行代表一个数据包,包含源/目的地址、协议类型和时间等详细信息。三个主要面板分别显示:数据包列表(摘要)、数据包详细信息(技术解析)和原始数据包数据(十六进制视图)。

  4. 要保存你的工作,请转到 File > Save,并将文件命名为 myfirstcapture.pcapng,保存在 /home/labex 目录下。.pcapng 格式会保留所有数据包细节以供将来分析。

保存网络捕获文件

这个基础的捕获过程是网络分析的基石。在接下来的步骤中,我们将学习如何过滤和解读这些数据包,以理解网络行为并排除故障。

分析数据包数据

现在我们已经捕获了一些网络流量,让我们逐步检查它。这就像阅读一段数字对话——我们将学习如何解读计算机通信时使用的「语言」。

  1. 打开捕获文件
    启动 Wireshark,通过 File > Open 或双击文件打开你保存的捕获文件(myfirstcapture.pcapng)。该文件包含了我们之前记录的所有网络流量,类似于电话录音。

  2. 理解数据包列表
    顶部面板按时间顺序显示所有捕获的数据包。每一行代表一条网络消息,显示了:

    • 发送者(Source IP)
    • 接收者(Destination IP)
    • 通信类型(Protocol)
    • 简要摘要(Info)
  3. 检查数据包详细信息
    当你点击任何数据包时,中间面板会通过协议层展示其内部结构:

    • Frame(帧):物理网络详情
    • Ethernet(以太网):硬件寻址
    • IP:互联网路由信息
    • TCP/UDP:传输层详情
    • Application data(应用数据):如 HTTP
  4. 过滤 HTTP 流量
    在顶部的过滤器栏中输入 http 并按回车。这会隔离出 Web 流量,就像在电话记录中只搜索短信一样。HTTP 是 Web 浏览器与服务器通信所使用的协议。

Wireshark HTTP 数据包过滤器

  1. 识别 Web 请求
    在 Info 列中寻找带有「GET」字样的数据包。这些代表你的浏览器正在请求网页。点击其中一个查看:
    • 请求的精确 URL
    • 访问的网站
    • 关于请求的技术细节

HTTP GET 数据包详情

  1. 分析 HTTP 报头
    展开「Hypertext Transfer Protocol」部分以查看:

    • 请求方法(GET/POST)
    • 请求的资源(/index.html)
    • 浏览器信息
    • Cookie 和其他元数据
  2. 查找服务器响应
    搜索「HTTP/1.1 200 OK」数据包。这些表示网页已成功交付。注意:

    • 响应代码(200=成功,404=未找到)
    • 服务器类型(Apache/Nginx)
    • 内容类型(HTML、图像等)

HTTP 服务器成功响应数据包

  1. 查看网页内容
    在成功的响应中,检查「Line-based text data」部分以查看实际的网页内容。这里显示了服务器发送给浏览器的 HTML 代码。

这种分析揭示了网络中隐藏的对话。通过理解这些模式,你可以排除故障、识别可疑活动并理解应用程序是如何通信的。

使用过滤器

Wireshark 的真正威力在于它能够快速过滤和分析大量的网络数据。在这一步中,我们将学习如何使用过滤器来关注特定类型的流量。可以将过滤器看作搜索词,帮助你在浩如烟海的网络数据包中准确找到所需内容。

  1. 在 Wireshark 中打开捕获文件,我们先从一些简单的显示过滤器开始。过滤器栏位于主工具栏的正下方:

    • 要仅显示 TCP 流量(最常见的传输协议),在过滤器栏中输入 tcp 并按回车。这将从视图中隐藏所有非 TCP 数据包。
    • 要显示发往或来自特定 IP 地址的流量,输入 ip.addr == 93.184.215.14(这是 example.com 的 IP 地址,但你可以将其替换为你捕获中看到的任何 IP 地址)。双等号(==)表示「精确匹配」。

    Wireshark TCP 过滤器示例

    • 要显示所有 HTTP GET 请求(最常见的 Web 请求类型),输入 http.request.method == "GET"。这有助于你查看正在请求哪些网页。
  2. 现在让我们通过组合条件来创建一个更复杂的过滤器。我们将查找专门发往 example.com 的所有 HTTP GET 请求:

    • 在过滤器栏中输入:http.request.method == "GET" && http.host contains "example.com"
    • && 表示「逻辑与」,即两个条件必须同时满足。
    • contains 运算符允许我们匹配任何包含「example.com」的域名。

    Wireshark HTTP GET 过滤器

    • 此过滤器会显示所有发往包含「example.com」域名的 GET 请求,这对于监控特定网站的流量非常有用。
  3. 由于你可能会反复使用某些过滤器,Wireshark 允许你保存它们。让我们保存这个 HTTP GET 过滤器:

    • 点击过滤器栏旁边的加号(「+」)。这将打开过滤器管理窗口。
    • 将过滤器命名为「HTTP GETs」并点击 Save。选择一个你容易记住的描述性名称。
    • 现在你可以随时从「已保存过滤器」列表(过滤器栏旁的书签图标)中选择它来快速应用。
  4. 最后,让我们导出一些发现,以便进行文档记录或进一步分析:

    • 转到 Statistics > HTTP > Requests 查看所有 HTTP 请求的摘要。
    • 点击「Save as」将列表导出到文件。
    • 选择 /home/labex 作为位置,并将文件保存为 http_requests.txt

    导出 HTTP 请求列表

以这种方式使用过滤器可以让你快速筛选大量网络数据并专注于重要信息。这就像拥有一把功能强大的放大镜,可以瞬间显示特定类型的网络流量。掌握过滤器将在排除网络故障或分析安全事件时为你节省大量时间。

总结

在本实验中,你学习了使用 Wireshark 进行网络分析的基础知识。你已经掌握了核心技能,包括安装 Wireshark、捕获网络流量、分析数据包数据以及应用过滤器来隔离特定流量类型。

这些核心能力为网络安全和网络管理打下了坚实的基础。Wireshark 是排除网络故障、监控流量模式以及识别潜在安全威胁的强大工具。请继续练习,以进一步提升你的网络分析专业水平。