THMWireshark101THM
Introduction
Wireshark 是一种用于创建和分析 PCAP(网络数据包捕获文件)的工具,通常被用作最佳数据包分析工具之一。在本课程中,我们将介绍安装 Wireshark 的基础知识以及使用它进行基本数据包分析,并深入了解每种常见的网络协议。
Installation
Wireshark 的安装非常简单,通常附带一个打包的 GUI 向导。幸运的是,如果您使用的是 Kali Linux(或 TryHackMe AttackBox),那么它已经安装在您的机器上。Wireshark 可以在 Windows、macOS 和 Linux 上运行。要开始在 Windows 或 macOS 设备上安装 Wireshark,您需要先从 Wireshark 网站 获取安装程序。下载安装程序后,只需运行它并按照 GUI 向导操作即可。
如果您使用的是 Linux,则可以使用 apt install wireshark 或类似的包管理器安装 Wireshark。
注意:Wireshark 可能附带其他软件包和工具;您可以决定是否要与 Wireshark 一起安装它们。
有关 Wireshark 的更多信息,请查看 Wireshark 文档。
Wireshark Overview
打开 Wireshark 时我们看到的第一个屏幕是主页,它允许我们指定我们的接口以及应用过滤器来缩小我们捕获的流量范围。
在这里您可以看到我有多个接口需要过滤,但您的接口可能比我拥有的多或少。从这里我们可以选择是否要对我们的接口执行实时捕获或加载 PCAP 进行分析。
值得注意的是,接口名称旁边的图表显示了接口上的活动,如果接口的条形图平坦,则尝试捕获该接口可能毫无用处(因为 Wireshark 客户端没有拾取该接口上的任何数据)。
Live Packet Captures
如果我们首先导航到 Wireshark 中的绿色功能区并选择管理捕获过滤器,我们就可以查看可用过滤器的列表。
您不必选择过滤器,它只会帮助减少传入的数据包数量并组织捕获。这只是对过滤器的简要介绍,有关过滤器的更多信息,请转到任务 12 或转到 Wireshark 网站。
选择任何要选择的捕获过滤器后,您可以通过双击接口或右键单击并导航到“开始捕获”来开始捕获接口。
根据网络活动,您可能看不到传入的数据包,也可能会看到数据包非常快速地流入。
收集完所需或想要的数据包后,您可以单击红色方块停止捕获,然后开始分析。
查看上面的屏幕截图,我们可以看到一个示例捕获。在此屏幕上,您将对数据包进行大部分分析和剖析。要打开数据包捕获,请转到文件 > 打开 >,然后选择要分析的 PCAP。
在此屏幕上,Wireshark 为我们提供了有关每个数据包的一些重要信息,包括:
- 数据包编号
- 时间
- 来源
- 目的地
- 协议
- 长度
- 数据包信息
除了快速数据包信息外,Wireshark 还按危险级别和协议对数据包进行颜色编码,以便能够快速发现捕获中的异常和协议。
快速浏览数据包信息有助于在分析过程中准确找到您要查找的内容。
尝试使用 Wireshark 的菜单和各种功能来感受它,我们将在后面的任务中进一步详细介绍其中一些功能。
Collection Methods
在详细介绍如何分析 PCAP 中的每个协议之前,我们需要了解收集 PCAP 文件的方法。在 Wireshark 中收集 PCAP 的基本步骤可能很简单,但引入流量既是困难的部分,也是有趣的部分,这可能包括:窃听、端口镜像、MAC 泛洪、ARP 中毒。本房间将不介绍如何设置这些实时数据包捕获的各种策略,而只会介绍每种策略的基本理论。
Collection Methods Overview
在开始尝试收集和监控实时数据包捕获之前,需要考虑一些事项。
- 首先从样本捕获开始,以确保所有设置都正确,并且您成功捕获了流量。
- 确保您有足够的计算能力来处理基于网络规模的数据包数量,这显然会因网络而异。
- 确保有足够的磁盘空间来存储所有数据包捕获。
满足所有这些条件并选择了收集方法后,您就可以开始主动监控和收集网络上的数据包了。
Network Taps
网络窃听器是一种物理植入物,可在电缆之间进行物理窃听,威胁搜寻/DFIR 团队和红队通常使用这些技术来嗅探和捕获数据包。
窃听线路有两种主要方法。第一种是使用硬件窃听线路并拦截通过的流量,例如下图所示的吸血鬼窃听器。
另一种安装网络分接头的方法是使用内联网络分接头,您可以将其安装在两个网络设备之间或“内联”两个网络设备。分接头将在数据包通过分接头时复制数据包。这种分接头的一个例子是非常常见的 Throwing Star LAN 分接头
MAC Floods
MAC 泛洪是红队常用的一种主动嗅探数据包的策略。MAC 泛洪旨在给交换机施加压力并填充 CAM 表。一旦 CAM 表被填满,交换机将不再接受新的 MAC 地址,因此为了保持网络正常运行,交换机将向交换机的所有端口发送数据包。
注意:使用此技术时应极其谨慎,并事先征得明确同意。
ARP Poisoning
ARP 中毒是红队用来主动嗅探数据包的另一种技术。通过 ARP 中毒,您可以将流量从主机重定向到您正在监控的机器。这种技术不会像 MAC 泛洪那样给网络设备带来压力,但仍应谨慎使用,并且仅在其他技术(如网络分路器)不可用时使用。
将这些方法与您之前从上一个任务中捕获流量的知识相结合,将使您能够主动监控并从头开始收集实时数据包捕获。
Filtering Captures
Packet Filtering is a very important part of packet analysis especially when you have a very large number of packet sometimes even 100,000 plus. In task 3 capture filters were briefly covered however there is a second type of filter that is often thought of as more powerful and easier to use. This second method is known as display filters, you can apply display filters in two ways: through the analyze tab and at the filter bar at the top of the packet capture.
Filtering Operators
Wireshark 的过滤器语法简单易懂,因此很容易快速掌握。要充分利用这些过滤器,您需要对布尔和逻辑运算符有基本的了解。
Wireshark 仅有几个您需要熟悉的运算符:
- 与 - 运算符:and / &&
- 或 - 运算符:or / ||
- 等于 - 运算符:eq / ==
- 不等于 - 运算符:ne / !=
- 大于 - 运算符:gt / >
- 小于 - 运算符:lt / <
Wireshark 还有一些其他运算符,它们的功能超出了普通逻辑运算符的范围。这些运算符是包含、匹配和 bitwise_and 运算符。当您有大量捕获并需要精确定位单个数据包时,这些运算符非常有用。它们超出了这个房间的范围,但是我建议你自己做研究,Wireshark 过滤文档可以是一个很好的起点。
Basic Filtering
过滤为我们提供了对数据包进行操作的非常广泛的范围,因此可以有很多不同的过滤语法选项。我们将只介绍这个房间中最基本的内容,例如按 IP、协议等进行过滤。有关过滤的更多信息,请查看 Wireshark 过滤文档。
过滤命令有通用语法,但有时它们可能有点愚蠢。Wireshark 过滤器的基本语法是某种服务或协议,如 ip 或 tcp,后跟一个点,然后是要过滤的内容,例如地址、MAC、SRC、协议等。
按 IP 过滤:我们将要查看的第一个过滤器是 ip.addr,此过滤器将允许您梳理流量并仅查看这些数据包中包含特定 IP 地址的数据包,无论这些数据包来自源还是目标。
Syntax: ip.addr == <IP Address>
此过滤器在实际应用中非常方便,例如当您在寻找威胁并使用其他工具识别出潜在可疑主机时,您可以使用 Wireshark 进一步分析来自该设备的数据包。
按 SRC 和 DST 过滤:第二个过滤器将查看二合一过滤器以及过滤器运算符:ip.src 和 ip.dst。这些过滤器允许我们根据流量的来源和目的地来过滤流量。
Syntax: ip.src == <SRC IP Address> and ip.dst == <DST IP Address>
与第一个过滤器类似,我们可以看到 Wireshark 正在梳理数据包并根据我们设置的源和目标进行过滤。
按 TCP 协议过滤:我们将介绍的最后一个过滤器是协议过滤器,它允许您设置要过滤的端口或协议,并且在尝试跟踪正在使用的不寻常协议或端口时非常方便。
值得一提的是,Wireshark 可以按端口号和协议名称进行过滤。
Syntax: tcp.port eq <Port #> or <Protocol Name>
按 UDP 协议过滤:您还可以通过将前缀从 tcp 更改为 udp 来按 UDP 端口进行过滤
Syntax: udp.port eq <Port #> or <Protocol Name>
此任务的过滤到此结束,但我建议您自行尝试其他过滤器和运算符。准备好后,继续执行任务 5。
Packet Dissection
本节介绍 Wireshark 如何使用 OSI 层分解数据包以及如何使用这些层进行分析。希望您已经了解 OSI 模型是什么以及它如何工作。
Packet Details
您可以双击捕获的数据包以打开其详细信息。根据 OSI 模型,数据包由 5 到 7 层组成。我们将在示例捕获的 HTTP 数据包中介绍所有这些层。
从上图我们可以看到数据包有 7 个不同的层:帧/数据包、源 [MAC]、源 [IP]、协议、协议错误、应用协议和应用数据。下面我们将更详细地介绍这些层。
- 帧(第 1 层)——这将显示您正在查看的帧/数据包以及特定于 OSI 模型物理层的详细信息。
- 源 [MAC](第 2 层)——这将向您显示来自 OSI 模型数据链路层的源和目标 MAC 地址。
- 源 [IP](第 3 层)——这将向您显示来自 OSI 模型网络层的源和目标 IPv4 地址。
- 协议(第 4 层)——这将向您显示所使用的协议(UDP/TCP)的详细信息以及源端口和目标端口;来自 OSI 模型的传输层。
- 协议错误——这是第 4 层的延续,显示需要重新组装的 TCP 特定段。
- 应用程序协议(第 5 层)——这将显示正在使用的协议(如 HTTP、FTP、SMB 等)的特定详细信息。来自 OSI 模型的应用程序层。
- 应用程序数据——这是第 5 层的扩展,可以显示特定于应用程序的数据。
现在我们了解了一般数据包的组成,接下来看看各种应用协议及其具体细节。
ARP Traffic
ARP 概述
ARP 或地址解析协议是用于将 IP 地址与 MAC 地址连接起来的第 2 层协议。它们将包含请求消息和响应消息。为了识别数据包,消息头将包含两个操作代码之一:
- 请求 (1)
- 回复 (2)
下面您可以看到多个 ARP 请求和回复的数据包捕获。
值得注意的是,大多数设备都会识别自己或 Wireshark 会识别它,例如 Intel_78,可疑流量的一个例子是来自无法识别的来源的大量请求。但是,您需要在 Wireshark 中启用设置来解析物理地址。要启用此功能,请导航至“查看”>“名称解析”>“确保已选中解析物理地址”。
查看下面的屏幕截图,我们可以看到 Cisco 设备正在发送 ARP 请求,这意味着我们应该能够信任此设备,但是,在分析数据包时,您应该始终保持谨慎。
ARP Traffic Overview
ARP 请求数据包:
我们可以通过查看第一个 ARP 请求数据包并查看数据包详细信息来开始分析数据包。
查看上面的数据包详细信息,数据包中最重要的细节以红色标出。Opcode 是操作代码的缩写,它会告诉您它是 ARP 请求还是回复。第二个标出的细节是数据包的目标,在本例中是向所有人发出的广播请求。
ARP 回复数据包:
查看上面的数据包详细信息,我们可以从操作码中看到它是一个 ARP 回复数据包。我们还可以获得其他有用的信息,例如与回复一起发送的 MAC 和 IP 地址,因为这是一个回复数据包,我们知道这是与消息一起发送的信息。
ARP 是分析起来比较简单的协议之一,您需要记住的只是确定它是请求数据包还是回复数据包以及它是由谁发送的。
ICMP Traffic
ICMP 概述
ICMP 或 Internet 控制消息协议用于分析网络上的各种节点。它最常用于 ping 和 traceroute 等实用程序。您应该已经熟悉 ICMP 的工作原理;但是,如果您需要复习一下,请阅读 IETF 文档。
下面您可以看到 ping 的示例,我们可以看到 ICMP 向服务器发出的请求,然后是服务器的回复。
ICMP 流量概览
ICMP 请求:
下面我们可以看到 ping 请求数据包的详细信息。数据包详细信息中有几个重要信息,我们首先要注意,即数据包的类型和代码。类型等于 8 表示它是一个请求数据包,如果等于 0,则表示它是一个回复数据包。当这些代码被更改或看起来不正确时,这通常是可疑活动的迹象。
数据包中还有两个其他详细信息可用于分析:时间戳和数据。时间戳可用于识别请求 ping 的时间,在某些情况下也可用于识别可疑活动。我们还可以查看数据字符串,它通常只是一个随机数据字符串。
ICMP 回复:
下面您可以看到回复数据包与请求数据包非常相似。区分回复数据包的主要区别之一是代码,在本例中,您可以看到代码为 0,确认它是一个回复数据包。
请求数据包的相同分析技术也适用于此,同样,主要区别在于数据包类型。
TCP Traffic
TCP 概述
TCP 或传输控制协议处理数据包的传送,包括排序和错误。您应该已经了解 TCP 的工作原理,如果您需要复习一下,请查看 IETF TCP 文档。
下面您可以看到 Nmap 扫描的示例,扫描端口 80 和 443。我们可以通过红色的 RST、ACK 数据包判断端口已关闭。
在分析 TCP 数据包时,Wireshark 非常有用,它按危险等级对数据包进行颜色编码。如果您记不住颜色代码,请返回任务 3 并重新了解 Wireshark 如何使用颜色匹配数据包。
TCP 可以在分析时提供对网络的有用见解,但由于它发送的数据包数量,分析起来也很困难。这时您可能需要使用其他工具(如 RSA NetWitness 和 NetworkMiner)来筛选并进一步分析捕获的内容。
TCP Traffic Overview
分析 TCP 数据包时,您会看到一个常见的东西,即 TCP 握手,您应该已经很熟悉它了。它包括一系列数据包:syn、synack、ack;这允许设备建立连接。
通常,当此握手出现问题或包含其他数据包(如 RST 数据包)时,网络中就会出现可疑或错误的情况。上一节中的 Nmap 扫描就是一个很好的例子。
TCP Packet Analysis
为了分析 TCP 数据包,我们不会深入研究数据包的每个细节;但是,请看一下数据包的一些行为和结构。
下面我们可以看到 SYN 数据包的详细信息。查看 TCP 数据包时,我们主要要查找的是序列号和确认号。
TCP SYN 数据包中未设置确认号,因为客户端未确认来自服务器的任何数据。在初始 SYN 数据包中,确认号通常为 0。
在 Wireshark 中,我们还可以通过导航至编辑 > 首选项 > 协议 > TCP > 相对序列号(取消选中复选框)来查看原始序列号。
通常,需要将 TCP 数据包作为一个整体来查看以了解一个故事,而不是逐一查看细节。
DNS Traffic
DNS Overview
DNS 或域名服务协议用于通过 IP 地址解析名称。与其他协议一样,您应该熟悉 DNS;但是,如果您不熟悉,可以使用 IETF DNS 文档 复习一下。
在分析 DNS 数据包时,您应该牢记以下几点。
- 查询响应
- 仅 DNS 服务器
- UDP
如果其中任何一个出现问题,则应进一步检查数据包,并将其视为可疑数据包。
下面我们可以看到包含多个 DNS 查询和响应的数据包捕获。
通过查看数据包,我们可以立即看到它们正在查询的内容,当您有许多数据包并且需要快速识别可疑或异常流量时,这非常有用。
DNS 流量概述
DNS 查询:
查看下面的查询,我们实际上有两条信息可用于分析数据包。我们可以查看的第一条信息是查询的来源,在本例中,它是 UDP 53,这意味着该数据包通过了检查,如果是 TCP 53,则应将其视为可疑流量并需要进一步分析。我们还可以查看它正在查询的内容,这可以与其他信息一起构建发生的事情的故事。
在分析 DNS 数据包时,您确实需要了解您的环境以及流量在您的环境中是否被视为正常。
DNS 响应:
下面我们看到一个响应数据包,它类似于查询数据包,但它也包含一个可用于验证查询的答案。
HTTP Traffic
HTTP 或超文本传输协议是万维网常用的端口,一些网站也使用它,但是,它的加密对应物:HTTPS 更常见,我们将在下一篇文章中讨论。HTTP 用于向 Web 服务器发送 GET 和 POST 请求,以接收网页等内容。了解如何分析 HTTP 有助于快速发现 SQLi、Web Shell 和其他与 Web 相关的攻击媒介。
HTTP 流量概述
在完成本房间之前,您应该已经对 HTTP 的工作原理有了大致的了解;但是,如果您需要复习,可以阅读 IETF 关于 HTTP 方法 的官方论文。
HTTP 是最直接的数据包分析协议之一,该协议直截了当,在通信之前不包含任何握手或先决条件。
上面我们可以看到一个示例 HTTP 数据包,查看 HTTP 数据包我们可以轻松收集信息,因为数据流不像 HTTP 对应的 HTTPS 那样加密。我们可以从数据包中收集到的一些重要信息是请求 URI、文件数据、服务器。
现在我们了解了 HTTP 数据包的基本结构,我们可以继续查看示例 HTTP 数据包捕获以亲手处理数据包。
实用 HTTP 数据包分析
为了了解 HTTP 数据包的流程并亲手处理数据包,我们可以分析 http.cap 文件。转到 AttackBox 上的文件夹 /root/Rooms/Wireshark101,双击 task11.pcap 文件以在 Wireshark 中打开它;您也可以下载此任务的 pcap。
打开 PCAP 后,我们可以看到这只是一个简单的 HTTP 数据包捕获,其中包含几个请求。
深入到数据包捕获中,我们可以查看其中一个 HTTP 请求的详细信息,例如数据包 4。
从这个数据包中,我们可以识别出一些非常重要的信息,如主机、用户代理、请求的 URI 和响应。
我们可以使用 Wireshark 的一些内置功能来帮助消化所有这些数据并将其组织起来以供将来进一步分析。我们可以先看看 Wireshark 中一个非常有用的功能,它可以用来组织捕获协议层次结构中存在的协议。导航到“统计信息”>“协议层次结构”。
这些信息在实际应用中非常有用,例如威胁搜寻,可用于识别数据包捕获中的差异。
我们将要介绍的 Wireshark 中的下一个功能是导出 HTTP 对象。此功能将允许我们在捕获中组织所有请求的 URI。要使用导出 HTTP 对象,请导航至文件 > 导出对象 > HTTP。
与协议层次结构类似,它有助于快速识别捕获中可能存在的差异。
我们将在本房间的这一部分介绍的最后一个功能是端点。此功能允许用户组织在特定捕获中找到的所有端点和 IP。与其他功能一样,它有助于识别差异的来源。要使用端点功能,请导航至统计信息 > 端点。
HTTP 并不是常见的协议,因为 HTTPS 现在更为常用;然而,HTTP 仍然经常使用,并且如果有机会,可以很容易地进行分析。
HTTPS Traffic
从数据包分析的角度来看,HTTPS 或超文本传输协议安全可能是最令人讨厌的协议之一,并且理解分析 HTTPS 数据包所需采取的步骤可能会令人困惑。
HTTPS 流量概述
在发送加密信息之前,客户端和服务器需要就各种步骤达成一致,以建立安全隧道。
- 客户端和服务器就协议版本达成一致
- 客户端和服务器选择加密算法
- 客户端和服务器可以相互验证;此步骤是可选的
- 使用公钥创建安全隧道
我们可以通过查看客户端和服务器之间的握手数据包来开始分析 HTTPS 流量。下面是一个客户端 Hello 数据包,显示了 SSLv2 记录层、握手类型和 SSL 版本。
下面是服务器 Hello 数据包,发送与客户端 Hello 数据包类似的信息,但这次它包含会话详细信息和 SSL 证书信息
下面是客户端密钥交换包,握手的这一部分将确定用于加密客户端和服务器之间的进一步消息的公钥。
在下一个数据包中,服务器将确认公钥并创建安全隧道,此后的所有流量都将根据上面列出的约定规范进行加密。
客户端和服务器之间的通信现在已经加密,您将需要密钥来解密两个主机之间发送的数据流。
实用 HTTPS 数据包分析
我们首先需要将 PCAP 加载到 Wireshark 中。导航到文件 > 打开并选择 snakeoil2 PCAP。
从上面的数据包捕获中我们可以看到所有请求都是加密的。仔细查看数据包,我们可以看到 HTTPS 握手以及加密请求本身。让我们仔细看看其中一个加密请求:数据包 36。
我们可以从数据包详细信息中确认应用程序数据已加密。您可以在 Wireshark 中使用 RSA 密钥来查看未加密的数据。要加载 RSA 密钥,请导航至编辑 > 首选项 > 协议 > TLS > [+]。如果您使用的是旧版本的 Wireshark,则这将是 SSL 而不是 TLS。您需要在菜单上的各个部分填写以下首选项:
IP 地址:127.0.0.1
端口:start_tls
协议:http
密钥文件:RSA 密钥位置
现在我们已将 RSA 密钥导入 Wireshark,如果我们返回到数据包捕获,我们可以看到数据流现在未加密。
现在,我们可以看到未加密数据流中的 HTTP 请求。进一步查看数据包的一个细节,我们可以更清楚地看到未加密的数据流。
查看数据包详细信息,我们可以看到一些非常重要的信息,例如请求 URI 和用户代理,这些信息在 Wireshark 的实际应用中非常有用,例如威胁搜寻和网络管理。
我们现在可以使用其他功能来组织数据流,例如使用导出 HTTP 对象功能,要访问此功能,请导航至文件 > 导出对象 > HTTP
Analyzing Exploit PCAPs
Zerologon PCAP Overview
我们从最近的 Windows Active Directory 漏洞 Zerologon 或 CVE-2020-1472 中收集了 PCAP 文件。PCAP 文件中的场景包含一个私有 IP 为 192.168.100.6 的 Windows 域控制器和一个私有 IP 为 192.168.100.128 的攻击者。让我们逐步分析 PCAP 并对发生的事件做出假设。
Identifying the Attacker
打开 PCAP 文件后,我们立即看到一些可能不寻常的东西。首先,我们看到一些来自 OpenVPN、ARP 等的正常流量。然后我们开始识别在本例中称为未知协议的协议 DCERPC 和 EPM。
查看数据包,我们发现 192.168.100.128 正在发送所有请求,因此我们可以假设该设备是攻击者。我们可以继续查看来自此 IP 的数据包,以缩小搜索范围。
Zerologon POC Connection Analysis
我们可以为我们认为可疑的 IP 的源设置过滤器。在分析 PCAPS 时,我们需要注意特定漏洞可能具有的 IOC 或危害指标。这称为威胁情报,超出了本房间的范围;我建议,如果您对这个房间更感兴趣,那么在完成本房间后,您可以自己研究这个主题。在这种情况下,如果我们有 Zerologon 漏洞的背景知识,我们就会知道该漏洞使用多个 RPC 连接和 DCERPC 请求来更改机器帐户密码,这可以通过 PCAP 进行验证。
Secretsdump SMB 分析
进一步查看 PCAP,我们可以看到 SMB2/3 流量和 DRSUAPI 流量,同样,根据对攻击的先前了解,我们知道它使用 secretsdump 来转储哈希。Secretsdump 滥用 SMB2/3 和 DRSUAPI 来执行此操作,因此我们可以假设此流量是 secretsdump。
每次漏洞利用和攻击都会有其独特的痕迹,在这种情况下,发生的事情和事件发生的顺序是一目了然的。一旦我们确定了攻击者,我们就需要采取其他步骤来识别和隔离,如果我们是威胁搜寻或 DFIR 团队的一员,我们还需要报告事件。
Conclusion
想要了解更多?有多个课程和认证可以深入研究 Wireshark。我推荐的第一个免费资源是 Wireshark 在线文档。它非常详细,可以帮助您了解学习 Wireshark 的所有细微差别。除了书面文档外,他们还提供了一些视频来帮助您。
您可以在 此处 找到 Wireshark 文档。
如果您想更多地练习使用 Wireshark,您可以查看他们的 Wireshark 示例捕获。或者,如果您正在寻找真正的威胁搜寻挑战,您可以查看 DFIR Madness 的 案例:001 PCAP 分析。
如果你想继续在 Tryhackme 上磨练你的分析技能,请查看 Overpass 2 - Hacked。