介绍
在这个实验中,你将学习如何使用 Wireshark 显示过滤器来分析网络流量,并发现潜在的安全威胁。Wireshark 是一款强大的网络协议分析器,可以捕获和剖析网络数据包,这对网络安全专业人员至关重要。
通过掌握这些过滤器,你将能够快速隔离和检查特定的流量类型。这将简化你的分析,并提高你检测和处理安全事件的能力。
启动 Wireshark 并分析网络流量
在这一步中,我们将开始使用 Wireshark。首先,你将学习如何启动它。然后,你将捕获网络流量或使用提供的示例文件进行分析。了解 Wireshark 界面至关重要,因为它可以帮助你查看和分析数据包数据。
启动 Wireshark
要启动 Wireshark,你需要打开一个终端窗口。你可以通过单击任务栏中的终端图标或按 Ctrl+Alt+T 来执行此操作。打开终端后,你将使用命令来启动 Wireshark。在终端中,键入以下命令并按 Enter 键:
wireshark
此命令会告诉你的系统启动 Wireshark 应用程序。几秒钟后,Wireshark 将打开。你应该会看到一个类似于下面显示的窗口:

使用网络捕获文件
对于这个实验,你有两个选择:
选项 1:使用提供的示例文件
我们为你准备了一个示例捕获文件,位于 /home/labex/project/sample.pcapng。此文件包含各种你可以分析的网络流量。要打开此文件:
- 在 Wireshark 中,转到 File(文件)> Open(打开)
- 导航到
/home/labex/project/sample.pcapng - 单击“Open(打开)”

该文件将加载到 Wireshark 中,显示先前捕获的各种数据包。
选项 2:捕获你自己的流量
如果你更喜欢捕获你自己的流量:
在 Wireshark 主窗口中,查找可用网络接口的列表。
找到
eth1接口。在这个实验环境中,eth1是我们将用于捕获数据包的主要网络接口。双击
eth1。此操作会立即启动数据包捕获过程。通过打开一个新终端并运行以下命令来生成一些网络流量:
curl www.google.comNote: Free users can not connect to the internet. Upgrade to a pro to capture your own traffic. 注意:免费用户无法连接到互联网。 升级到 Pro 以捕获你自己的流量。
捕获到足够的数据包后(目标是至少 20-30 个数据包),单击 Wireshark 工具栏中的红色方形“Stop(停止)”按钮。
了解 Wireshark 界面
Wireshark 界面分为三个主要面板,每个面板都有特定的用途:
- 数据包列表(Packet List)(顶部面板):此面板显示已捕获的所有数据包,并按接收顺序排列。它为你提供了捕获流量的快速概览。
- 数据包详情(Packet Details)(中间面板):当你在顶部面板中选择一个数据包时,此中间面板会以分层格式显示该数据包的详细信息。它会分解数据包的结构,显示诸如源 IP 地址和目标 IP 地址、协议类型等信息。
- 数据包字节(Packet Bytes)(底部面板):此面板以十六进制格式显示所选数据包的原始字节。它对于深入分析非常有用,尤其是在你需要查看正在传输的确切数据时。
要了解这些面板如何协同工作,请单击顶部面板中的不同数据包。你将看到相应的详细信息和原始字节在中间和底部面板中更新。
理解和应用基本显示过滤器
在这一步中,我们将探索 Wireshark 中的显示过滤器。在分析网络流量时,显示过滤器是必不可少的工具。它们可以帮助你专注于特定类型的数据包,而不必筛选所有捕获的数据。在本节结束时,你将了解什么是显示过滤器、它们为什么有用,以及如何应用基本的显示过滤器来隔离特定类型的网络流量。
什么是显示过滤器
当你分析网络流量时,查看每个捕获的数据包可能会让人感到不知所措。你通常希望专注于特定类型的数据包。这就是 Wireshark 显示过滤器的用武之地。它们允许你仅显示符合特定条件的数据包。这使得分析过程更加高效,因为你不会在不相关的数据上浪费时间。
Wireshark 中的显示过滤器使用特殊的语法。这种语法使你能够根据各种属性(例如协议、IP 地址、端口,甚至数据包的内容)来过滤数据包。了解这种语法是有效使用显示过滤器的关键。
过滤器工具栏
看一下 Wireshark 窗口的顶部。你会注意到一个文本字段。它可能标记为“Apply a display filter...(应用显示过滤器……)”或仅显示“Expression...(表达式……)”。这是你输入显示过滤器的地方。输入过滤器并按 Enter 键后,Wireshark 将使用该过滤器仅显示相关的数据包。

基本协议过滤器
让我们从一个简单的例子开始。假设你只想查看 HTTP 流量。HTTP 是用于 Web 浏览的协议。为此,你需要在过滤器工具栏中输入一个过滤器。键入以下过滤器,然后按 Enter 键:
http

应用此过滤器后,Wireshark 将仅显示 HTTP 数据包。所有其他数据包将被暂时隐藏。你会注意到,当你应用有效的过滤器时,过滤器栏会变成绿色。这是一种视觉指示,表明你的过滤器工作正常。
现在,输出应该只显示与 HTTP 流量相关的数据包。这通常包括 Web 请求(当你向网站请求信息时)和响应(当网站向你发送信息时)。如果你在示例文件中没有看到任何 HTTP 流量,你可以尝试可能存在的其他协议,例如 TCP、UDP 或 DNS:
tcp
或者尝试通过在终端中运行 curl 命令来生成更多 HTTP 流量:
curl www.google.com
IP 地址过滤器
接下来,让我们根据 IP 地址过滤流量。IP 地址就像网络上设备的唯一标识符。首先,查看你的数据包列表。你会看到标记为“Source(源)”和“Destination(目标)”的列。这些列显示了发送和接收数据包的设备的 IP 地址。
一旦你确定了在捕获中频繁出现的 IP 地址(例如,假设你看到 192.168.1.1),你就可以使用它来创建过滤器。在过滤器工具栏中键入以下过滤器,以仅查看来自该源的的数据包:
ip.src == 192.168.3.131

你可以将 192.168.3.131 替换为你实际在捕获中看到的 IP 地址。应用此过滤器后,将仅显示具有该源 IP 地址的数据包。
如果你想再次查看所有数据包,可以清除当前过滤器。只需单击过滤器栏右侧的“Clear(清除)”按钮 (X) 即可。
端口过滤器
许多网络服务在特定端口上运行。端口就像设备上的一个门,允许特定类型的网络流量进入或离开。例如,HTTP 通常使用 80 端口。要按端口号过滤数据包,你可以使用以下过滤器:
tcp.port == 80
此过滤器将显示使用 TCP 80 端口的传入和传出数据包。你还可以尝试其他常见端口,如 443 (HTTPS) 或 53 (DNS),具体取决于你的捕获中可用的端口。
组合过滤器
你可以使用逻辑运算符(如 and 和 or)组合过滤器,从而使过滤器更加强大。例如,如果你只想显示使用 80 端口的 HTTP 流量,则可以使用以下过滤器:
http and tcp.port == 80

尝试应用不同的过滤器组合,并观察显示的数据包如何变化。请记住,在尝试新过滤器之前,你可以通过单击“Clear(清除)”按钮来清除先前的过滤器,或者直接在过滤器栏中修改现有过滤器以在其基础上构建。
高级过滤技巧
在这一步中,我们将探索如何创建更复杂的过滤器,以进行详细的网络流量分析。作为初学者,你可能想知道为什么我们需要高级过滤。嗯,在实际场景中,网络捕获文件可能非常大,其中充满了各种流量。高级过滤技术就像安全专业人员的强大放大镜。它们可以帮助我们从这些大型捕获文件的数据海洋中快速挑选出可疑或重要的流量。
具有多个条件的复杂过滤器
Wireshark 使你能够通过组合多个条件来构建复杂的过滤器。当你想更精确地分析流量时,这非常有用。让我们首先创建一个过滤器来查找 HTTP GET 请求。
http.request.method == "GET"
此过滤器旨在仅显示包含 GET 请求的 HTTP 数据包。应用此过滤器后,你将看到发送到 Web 服务器的请求数据包。我们使用此过滤器的原因是 GET 请求是一种常见的 HTTP 请求类型,用于从服务器检索数据。通过隔离这些请求,我们可以专注于网络中的数据检索活动。
如果你的示例文件不包含 HTTP GET 请求,请尝试使用以下替代过滤器来查找指示连接尝试的 TCP SYN 数据包:
tcp.flags.syn == 1
现在,让我们使过滤器更具体。我们将添加一个端口条件。
tcp.port == 80 and http.request.method == "GET"
这个新过滤器仅显示在标准 HTTP 端口 (80) 上发生的 HTTP GET 请求。标准 HTTP 端口广泛用于未加密的 Web 流量。通过添加此端口条件,我们将搜索范围缩小到仅使用典型 HTTP 通信通道的那些 GET 请求。
基于数据包大小进行过滤
网络攻击通常涉及具有异常大小的数据包。攻击者可能会使用大或小的数据包来隐藏恶意数据或破坏网络的正常运行。要基于数据包大小进行过滤,我们使用特定的语法。
tcp.len >= 100 and tcp.len <= 500
此过滤器显示有效负载长度在 100 字节和 500 字节之间的 TCP 数据包。你可以根据需要调整这些值。例如,如果你怀疑攻击涉及更大的数据包,则可以增加上限。通过基于数据包大小进行过滤,我们可以识别可能指示攻击的异常流量模式。
基于特定内容进行过滤
你还可以根据数据包中的特定内容来过滤流量。当你查找与特定网站或服务相关的流量时,这非常有用。例如,让我们查找与特定网站相关的 HTTP 流量。
http.host contains "google"

此过滤器仅显示主机头包含“google”的 HTTP 流量。你可以将“google”替换为你感兴趣分析的任何域名。HTTP 请求中的主机头告诉服务器客户端正在尝试访问哪个网站。通过基于主机头进行过滤,我们可以专注于与特定域相关的流量。
如果你的示例文件没有带有主机头的 HTTP 流量,请尝试使用以下更通用的内容过滤器:
frame contains "http"
使用“contains”运算符进行文本搜索
contains 运算符是在数据包中搜索特定文本字符串的便捷工具。它允许我们在数据包数据中查找某些关键字。
frame contains "password"
此过滤器显示数据包数据中任何位置包含单词“password(密码)”的数据包。这对于检测可能的安全问题非常有帮助。例如,如果密码以明文形式发送(这是一个很大的安全风险),则此过滤器可以帮助我们发现这些数据包。
或者尝试使用以下过滤器:
frame contains "login(登录)"

否定过滤器
有时,你可能想查看除某些类型之外的所有流量。这就是 not 运算符的用武之地。
not arp
此过滤器隐藏所有 ARP 数据包。ARP(地址解析协议)用于将本地网络中的 IP 地址映射到 MAC 地址。有时,ARP 流量可能非常常见,并且可能会使你的分析变得混乱。通过使用 not 运算符,我们可以排除这种类型的流量,而专注于其他更相关的数据包。
保存和应用过滤器书签
如果你发现自己经常使用某些过滤器,则不必每次都键入它们。你可以将它们另存为书签。方法如下:
- 在过滤器栏中输入一个过滤器。这是你键入我们一直在学习的过滤器表达式的地方。
- 单击过滤器栏右侧的“+”按钮。此按钮用于将当前过滤器另存为书签。
- 为你的过滤器命名,然后单击“OK(确定)”。命名过滤器可以让你以后轻松识别它。
保存过滤器后,你可以通过单击过滤器下拉菜单中的名称来应用它。这样可以节省你的时间和精力,尤其是在进行重复分析时。
导出过滤后的数据包
在你过滤流量以仅显示感兴趣的数据包之后,你可能希望仅将这些数据包保存到新文件中。这对于与同事分享特定发现或进行进一步分析非常有用。这是你的操作方法:
- 应用你所需的过滤器。确保你已设置过滤器以仅显示要保存的数据包。
- 单击 File(文件)> Export Specified Packets(导出指定的数据包)。此选项允许你导出特定的一组数据包。
- 确保在“Packet Range(数据包范围)”部分中选择了“Displayed(已显示)”。这可确保仅导出当前可见的数据包(即,与你的过滤器匹配的数据包)。
- 选择文件名和位置。在这里,你可以决定将新捕获文件保存在哪里以及如何命名它。
- 单击“Save(保存)”。这将创建一个新的捕获文件,其中仅包含与你的过滤器匹配的数据包。
分析安全相关流量
在这一步中,我们将重点介绍使用 Wireshark 过滤器进行安全分析。安全分析在网络安全领域至关重要,因为它可以帮助我们发现网络流量中潜在的恶意活动。在本节结束时,你将能够使用特定的 Wireshark 过滤器识别各种类型的安全威胁。
识别端口扫描活动
端口扫描是攻击者用来收集有关目标系统信息的常用技术。攻击者使用它来查找网络上的开放端口,然后可以利用这些端口。为了检测潜在的端口扫描,我们寻找从单个源到多个端口的大量连接尝试。
让我们使用一个特定的过滤器来识别此类活动。在 Wireshark 中尝试使用以下过滤器:
tcp.flags.syn == 1 and tcp.flags.ack == 0
此过滤器显示没有 ACK 标志的 SYN 数据包。在 TCP 连接中,SYN 数据包是发送的第一个数据包,用于启动连接,而 ACK 数据包用于确认连接。当我们看到从一个源到不同目标端口的大量没有 ACK 的 SYN 数据包时,这强烈表明存在端口扫描。
检测可疑的 DNS 流量
DNS 隧道和其他基于 DNS 的攻击正变得越来越普遍。这些攻击使用 DNS 协议来隐藏恶意活动,例如数据泄露或命令和控制通信。为了检测此类攻击,我们需要寻找不寻常的 DNS 流量。
使用以下过滤器来检查 DNS 查询:
dns
应用此过滤器后,查找异常长的域名或对同一域名的大量 DNS 请求。这些可能是数据泄露或命令和控制通信的迹象。
识别密码暴力破解尝试
密码暴力破解攻击是攻击者未经授权访问 SSH 或 FTP 等服务的常用方法。在暴力破解攻击中,攻击者会尝试多种密码组合,直到找到正确的密码为止。
为了检测潜在的暴力破解密码尝试,我们可以过滤失败的登录尝试。使用以下过滤器:
ftp contains "530" or ssh contains "Failed"
此过滤器显示包含常见失败响应消息的 FTP 和 SSH 数据包。如果你看到来自同一源的多个失败,则可能表明存在暴力破解尝试。
分析 HTTP 错误响应
Web 应用程序攻击通常会生成 HTTP 错误响应。攻击者可能会尝试利用 Web 应用程序中的漏洞,而这些尝试可能会导致服务器返回错误响应。
使用以下命令过滤这些错误响应:
http.response.code >= 400
此过滤器显示状态代码为 400 或更高的 HTTP 响应数据包。所有这些状态代码都表示错误响应。通过检查这些数据包,我们可以识别尝试进行的 Web 漏洞利用。
查找明文凭据
以明文形式传输凭据是一项重大的安全风险。如果攻击者拦截了这些凭据,他们就可以未经授权访问系统。
要检测明文凭据,请使用以下过滤器:
http contains "user" or http contains "pass" or http contains "login"

此过滤器可帮助我们查找可能包含登录信息的 HTTP 流量。仔细检查与此过滤器匹配的数据包,以识别潜在的安全风险。
实践场景:分析示例流量并生成新流量
现在你已经学习了各种以安全为中心的过滤器,现在是时候将你的知识付诸实践了。你可以分析提供的示例文件,也可以生成和分析新流量。
分析示例文件
- 如果你使用的是提供的示例文件(/home/labex/project/sample.pcapng),请尝试应用我们讨论过的一些安全过滤器来识别任何有趣的模式:
tcp.flags.syn == 1 and tcp.flags.ack == 0
- 查找可能表明扫描、可疑连接或其他安全问题的模式。
生成和分析新流量
- 或者,打开一个新的终端窗口。在此窗口中,我们将生成一些包含多个请求的 HTTP 流量。运行以下命令:
for i in {1..5}; do
curl -I www.google.com
sleep 1
done
这些命令向 www.google.com 发送五个 HTTP HEAD 请求,每个请求之间间隔一秒。
- 接下来,转到 Wireshark 并应用以下过滤器以查找所有 HTTP 请求:
http.request
此过滤器将显示捕获的流量中的所有 HTTP 请求。
浏览这些数据包以识别正常 HTTP 流量的模式。注意标头、请求频率和其他详细信息。
最后,尝试创建一个可以区分正常 HTTP 浏览和自动扫描工具的过滤器。例如:
http.request and !(http.user_agent contains "Mozilla")

此过滤器显示没有浏览器用户代理的 HTTP 请求。由于大多数正常的 Web 浏览都是使用用户代理中包含 Mozilla 的浏览器完成的,因此没有它的请求可能表明是自动工具而不是正常浏览。
通过练习这些以安全为中心的过滤技术,你将培养快速识别真实网络捕获中可疑流量所需的技能。
总结
在这个实验中,你学习了如何使用 Wireshark 显示过滤器进行网络流量分析和潜在的安全威胁识别。你首先使用提供的示例捕获文件或捕获实时网络流量,并熟悉 Wireshark 界面。然后,你掌握了基本的显示过滤器,可以根据协议、IP 地址和端口隔离特定的流量类型。你还通过复杂的过滤技术提高了你的技能,结合了多个条件并搜索了特定内容。最后,你将这些技能应用于安全分析场景中,以检测可疑活动,例如端口扫描、凭据泄露和潜在的攻击。
这些 Wireshark 过滤技能对于高效的网络故障排除和安全分析至关重要。通过从大型捕获中快速隔离相关数据包,你可以大大减少识别和响应网络问题和安全事件所需的时间。随着你不断练习使用 Wireshark,你将对网络协议和流量模式有直观的了解,从而提高你的整体网络安全能力。


