【THM】Wireshark 101(Wireshark基础)-学习
本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/wireshark
通过学习相关知识点:了解Wireshark的基础知识并学习如何分析各种协议和PCAP文件。
介绍
Wireshark 是一种用于创建和分析 PCAP文件(网络数据包捕获文件-network packet capture files)的工具,通常被当作是最好的数据包分析工具之一。 在本文中,我们将了解如何安装 Wireshark 并学习如何使用它完成基本数据包分析的基础知识,并深入了解每个常见的网络协议。
如果你已经具备网络基础知识,那么你可以直接开始本文相关知识点的学习。
Wireshark安装
Wireshark 的安装非常简单,在安装时通常会附带一个打包的 GUI 向导。 Wireshark 可以在 Windows、macOS 和 Linux 等操作系统上运行。如果你使用的是 Kali Linux(或 TryHackMe AttackBox),那么它已经预先安装在你的攻击机上。
如果你要在 Windows 或 macOS 设备上安装 Wireshark,你需要先从 Wireshark 网站获取安装程序,下载安装程序后,运行它并按照 GUI 向导操作即可。
如果你想在 Linux 操作系统上安装Wireshark,你可以使用命令apt install wireshark
或类似的包管理器来安装 Wireshark 。
注意:安装 Wireshark 时会自带其他包和工具,你可以决定是否要与 Wireshark 一起安装它们。有关 Wireshark 的更多信息,请查看 Wireshark 文档。
Wireshark概述
打开 Wireshark 时,我们在屏幕中首先看到的是主页,它允许我们指定界面并应用过滤器来缩小我们捕获的流量范围。
在Wireshark主页你可以看到我们有多个界面可以选择,你可以选择过滤更多或更少的界面,我们也可以选择 是在相应界面上执行实时数据包捕获还是加载PCAP文件以进行分析。
值得注意的是,界面名称旁边的图表显示了对应界面的数据活动情况,如果界面对应的图表是一个没有波动的直线,则尝试在其上捕获数据可能是无结果的(因为当某一界面对应的图表为一条直线时,就意味着 Wireshark 客户端并没有获取到该界面相关的任何数据)。
实时数据包捕获
如果我们导航到 Wireshark 中的绿色功能区并选择管理捕获过滤器,我们就可以看到一个可用过滤器的列表。
在此处你可以不必选择过滤器,它只会有助于减少引入的数据包数量并重新组织捕获行为。有关过滤器的更多信息请转到本文的第 12 小节或者直接访问 Wireshark 网站相关页面。
一旦你选择了任何要选择的捕获过滤器,你就可以通过双击界面或者右键单击 导航到“开始捕获”来开始在相关界面上进行数据包捕获操作。
根据网络活动情况,你可能会看到没有数据包流入,或者你可能会看到数据包非常快速地流入;收集完你需要的数据包之后,你可以单击红色方块停止捕获数据包,然后你就可以开始对数据包进行分析。
查看上面的屏幕截图,我们能看到一个数据包捕获示例。以上截图所显示的区域 是你进行大部分数据包分析和剖析的地方。如果你要打开捕获到的数据包文件,请转到文件 > 打开 > 并选择要分析的PCAP文件(网络数据包捕获文件)。
在数据包捕获界面,Wireshark 能为我们提供关于每个数据包的一些重要信息,包括:
- Packet Number(数据包编号)
- Time(时间)
- Source(资源)
- Destination(目的地)
- Protocol(协议)
- Length(长度)
- Packet Info(数据包信息)
除了简单的数据包信息外,Wireshark 还会按照危险级别和协议种类对数据包进行颜色编码,以便我们能够快速发现捕获的数据包中的异常情况和所用协议。
快速浏览数据包信息有助于在分析过程中准确追踪我们要查找的内容。
收集 PCAP 文件的方法
在详细了解如何分析 PCAP文件 中的每个协议之前,我们需要先了解收集 PCAP文件 的方法。 在 Wireshark 中收集 PCAP文件 的基本步骤很简单,但是如何引入流量既是困难的部分也是有趣的部分,这可能包括:分路器、端口镜像、MAC 泛洪、ARP 中毒。 本文不会介绍如何设置这些实时数据包捕获的各种策略,只会介绍每种策略的基本理论。
收集方法概述
在尝试收集和监控实时捕获的数据包之前,需要考虑一些事情。
-
首先从捕获开始,确保一切设置正确并且你能成功捕获流量。
-
确保你的计算机有足够的计算能力来处理基于网络大小的数据包数量,这显然会因网络而异。
-
确保有足够的磁盘空间来存储所有捕获的数据包。
一旦满足所有标准并且选择了具体的收集方法,你就可以开始主动监控和收集网络上的数据包。
网络分路器
网络分路器是一种物理植入物,你可以在电缆之间进行物理分接,此类技术通常被威胁搜寻/DFIR 团队和红队用于嗅探和捕获数据包。
DFIR:Digital Forensics and Incident Response 数字取证与应急响应
有两种主要的分路方法。 第一种是使用硬件来分接电线并在遇到流量时拦截流量,如下图所示的 vampire 分接头就是一个例子。
植入网络分路器的另一种选择是使用内联网络分路器,你可以在两个网络设备之间植入或“内联”两个网络设备。 在数据包通过分接头时 分接头会复制数据包。一个常见的例子是 Throwing Star LAN 分接头。
MAC 泛洪
MAC Floods 是红队常用的一种策略,作为主动嗅探数据包的一种方式。 MAC Flooding 旨在对交换机施加压力并填充 CAM 表。 一旦 CAM 表被填满,交换机将不再接受新的 MAC 地址,因此为了保持网络活动,交换机将向交换机的所有端口发送数据包。
注意:使用此技术时应格外小心并应该事先征得明确同意。
ARP 中毒
ARP 中毒是红队用来主动嗅探数据包的另一种技术。 通过 ARP 中毒,你可以将流量从主机重定向到你正在监视的机器。 这种技术不会像 MAC 泛洪一样对网络设备造成压力,但仍应谨慎使用,并且只有在其他技术(如网络分路器)不可用时才可使用。
将这些方法与上一小节中捕获流量的知识相结合,将使你能够更好地进行主动监控和收集实时捕获的数据包。
过滤(已捕获的)数据包
数据包过滤是数据包分析中非常重要的一部分,尤其是当你有大量数据包(有时甚至超过 100,000 个)时。 在第 3 节中简要介绍了捕获过滤器,但还有第二种类型的过滤器通常被认为更强大且更易于使用。 第二种类型的过滤器被称为显示过滤器,你可以通过两种方式应用显示过滤器:通过分析选项卡选择、在数据包捕获顶部的过滤器栏中选择。
过滤运算符
Wireshark 的过滤器语法简单易懂,便于快速掌握。 要充分利用这些过滤器,你需要对布尔和逻辑运算符有基本的了解。
Wireshark 中有几个你需要熟悉的过滤运算符:
- and - 运算符: and / &&
- or - 运算符: or / ||
- equals - 运算符: eq / ==
- not equal - 运算符: ne / !=
- greater than - 运算符: gt / >
- less than - 运算符: lt / <
Wireshark 还有一些其他运算符超出了普通逻辑运算符的能力,这些运算符是 contains、matches 和 bitwise_and 运算符。 当你捕获了大量数据并需要精确定位单个数据包时,这些运算符非常有用。 它们超出了本文的范围,但是我建议你自己进行研究,Wireshark 过滤器文档可能是一个很好的学习起点。
基本过滤
过滤器使我们可以对数据包进行很大范围的处理,可以有很多不同的过滤语法选项。 我们将仅介绍相关的基础知识,例如按 IP、协议等进行过滤。有关过滤的更多信息,请查看Wireshark 过滤器文档。
过滤器命令有一个通用语法,但有时它们可能有点傻。 Wireshark 过滤器的基本语法是某种服务或协议,如 ip 或 tcp,后跟一个点,然后是要过滤的任何内容,例如地址、MAC、SRC、协议等。
按 IP 过滤:我们将查看的第一个过滤器是 ip.addr,此过滤器将允许你梳理流量并仅查看包含具有特定 IP 地址的数据包,无论它来自源地址还是目标地址。
语法:ip.addr == <IP 地址>
这个过滤器在实际应用中很方便,比如当你在寻找威胁目标时,如果你已经用其他工具识别了一个潜在的可疑主机,你可以使用 Wireshark 进一步分析来自该设备的数据包。
按 SRC 和 DST 过滤:我们查看的第二个过滤器包括两种命令和一个过滤运算符:ip.src、 ip.dst、and。 这类过滤器允许我们按流量的来源和目的地进行流量过滤。
语法:ip.src == <SRC IP 地址> and ip.dst == <DST IP 地址>
与第一个过滤器类似,我们可以看到 Wireshark 正在梳理数据包并根据我们设置的源地址和目标地址进行过滤。
按 TCP 协议过滤:我们将介绍的最后一个过滤器是协议过滤器,它允许你设置要过滤的端口或协议,在尝试跟踪当前使用的异常协议或端口时非常方便。
Wireshark 可以通过端口号和协议名称进行流量过滤。
语法: tcp.port eq <Port #> or <协议 名称>
按 UDP 协议过滤:你还可以通过将前缀从 tcp
更改为 udp
来按照 UDP 端口进行流量过滤。
语法:udp.port eq <Port #> or <协议 名称>
建议自行尝试使用其他过滤器和运算符进行流量过滤操作。
显示过滤器语法索引:https://www.wireshark.org/docs/dfref/
数据包剖析
本节介绍 Wireshark 如何使用 OSI 分层模型来分解数据包以及如何使用这些层进行分析。 希望你已经具备 OSI 模型是什么以及它是如何工作的相关背景知识。
OSI将计算机网络体系结构(architecture)划分为以下七层:
- 第一层物理层: 将数据转换为可通过物理介质传送的电子信号,相当于邮局中的搬运工人。
- 第二层数据链路层: 决定访问网络介质的方式。在此层将数据分帧,并处理流控制。本层将指定拓扑结构并提供硬件寻址,相当于邮局中的装拆箱工人。
- 第三层网络层: 将数据路由以通过大型网络,相当于邮局中的排序工人。
- 第四层传输层: 提供终端到终端的可靠连接,相当于从公司中跑到邮局的送信职员。
- 第五层会话层: 允许用户使用简单易记的名称建立会话连接,相当于在公司中收寄信、写信封与拆信封的秘书。
- 第六层表示层: 协商数据交换格式,相当于在公司中向老板做简报、替老板写信的助理。
- 第七层应用层: 用户的应用程序和网络之间的接口。
数据包详细信息
你可以双击捕获的数据包以打开查看其详细信息。 根据 OSI 模型,数据包由 5 到 7 层组成,我们接下来将会针对一个捕获的 HTTP 数据包示例进行详细介绍。
从上面我们可以看到该数据包有 7 个不同的层(实际上对应OSI模型之后可分为5层):帧/数据包、源 [MAC]、源 [IP]、协议、协议错误、应用程序协议和应用程序数据。 下面我们将更详细地介绍这些层。
- 帧(第 1 层)——这将显示你正在查看的帧/数据包以及特定于 OSI 模型的物理层的详细信息。
- 源 [MAC](第 2 层)——这将显示源和目标 MAC 地址; 来自 OSI 模型的数据链路层。
- 源 [IP](第 3 层)——这将显示源和目标 IPv4 地址; 来自 OSI 模型的网络层。
- 协议(第 4 层)——这将向你显示使用的协议 (UDP/TCP) 以及源和目标端口的详细信息; 来自 OSI 模型的传输层。
- 协议错误——这是第 4 层的延续,会显示 TCP 中需要重新组装的特定段。
- 应用程序协议(第 5 层)——这将显示特定的正在使用的协议的详细信息,例如 HTTP、FTP、SMB 等协议。对应的是 OSI 模型中的应用程序层。
- 应用程序数据——这是第 5 层的扩展,可以显示特定应用程序的数据。
现在我们了解了一般数据包的组成部分,接下来看看各种应用程序协议及其具体细节。
ARP流量
ARP 概述
ARP 或地址解析协议(Address Resolution Protocol)是第 2 层协议,用于连接 IP 地址和 MAC 地址,其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。ARP将包含 REQUEST 消息和 RESPONSE 消息。为了识别数据包,消息头将包含以下两个操作码之一:
- 请求 (操作码1)
- 响应 (操作码2)
在下面你可以看到关于多个 ARP 请求和响应的数据包捕获。
值得注意的是,大多数设备能自我识别ARP请求的来源与目标地,Wireshark 也能识别具体某一设备的ARP请求来源和目的地,例如上图中的 Intel_78 设备,关于可疑流量的一个例子是:出现了来自无法识别的来源的大量ARP请求。 你还需要在 Wireshark 中启用一个设置来解析物理地址,要启用此功能,请导航至 查看 > 名称解析 > 确保选中解析物理地址。
查看下面的屏幕截图,我们可以看到 Cisco 设备正在发送 ARP 请求,这意味着我们应该能够信任该设备,但是在实际分析数据包时应始终保持谨慎。
ARP 流量概览
ARP 请求数据包:
我们可以通过查看第一个 ARP 请求数据包并查看数据包详细信息来开始分析数据包。
查看上图中的数据包详细信息,数据包最重要的详细信息将以红色标出:首先,我们可以看到 Opcode ,这是操作码(operation code)的缩写,它将告诉我们该数据包是属于 ARP 请求还是 ARP 响应;第二个概述的细节是数据包的目标位置,在上图中的情况下,它表示的是对所有人的广播请求。
ARP 响应数据包:
查看上面的数据包细节我们可以从 Opcode 中看到它是一个 ARP 响应数据包。 我们还可以获得其他有用的信息,例如与该回复数据包一起发送的 MAC 和 IP 地址,因为这是一个响应数据包,所以我们知道这些地址是与消息一起发送的信息。
ARP 是分析起来比较简单的协议之一,我们需要记住的只是识别它是请求包还是响应包,以及它是由谁发送的。
练习ARP数据包分析
我们已经了解了 ARP 数据包以及ARP正常流量的相关知识点,现在可以开始练习 ARP 流量分析。
启动TryHackMe所提供的 AttackBox,进入文件夹 /root/Rooms/Wireshark101
并双击 task7.pcap
文件,选择在 Wireshark
中打开该文件; 你也可以选择在TryHackMe的对应实验房间中下载和本小节知识点对应的 PCAP 文件,然后在你的本地攻击机上进行流量分析。
在本实验环境下已经捕获的数据包(PCAP文件)包含多种协议,因此你可能需要运用之前已经讲解过的关于过滤器的知识点,以便对实验环境下捕获的数据包进行分析。
答题(关于ARP数据包分析的练习)
启动TryHackMe所提供的AttackBox,在文件夹 /root/Rooms/Wireshark101 下找到 task7.pcap ,使用Wireshark打开该pcap文件,开始pcap文件分析工作:
过滤器语法: <协议 名称>,此处在过滤栏输入arp(小写)即可;查看数据包 6 的Opcode,该数据包为ARP请求包:
操作码:request (1)
查看数据包 19 的源 MAC 地址:
源MAC地址:80:fb:06:f0:45:d7
查找所有的arp响应包,使用过滤器语法 arp.opcode==2 即可:
该PCAP文件中的ARP响应包有:76,400,459,520
在 Wireshark 中启用一个设置来解析ip地址,导航至 查看 > 名称解析 > 确保选中解析网络地址;然后查看 MAC 地址 80:fb:06:f0:45:d7 所对应的ip地址:
MAC 地址80:fb:06:f0:45:d7所对应的ip地址为:10.251.23.1
ICMP流量
ICMP 概述
ICMP 或 Internet 控制消息协议(Internet Control Message Protocol)用于分析网络上的各种节点。 这最常用于ping
命令和traceroute
命令等实用程序。 在进行ICMP流量分析之前,你应该先熟悉 ICMP 的工作原理,如果你需要复习,请阅读 IETF 文档。
在下面你可以看到一个ping
命令的示例,我们可以看到ICMP
协议对服务器的请求消息,还有来自服务器的响应消息。
ICMP 流量概览
ICMP 请求:
下面我们将看到ping
请求的数据包详细信息。 数据包详细信息中有一些重要的事情,我们首先要注意的是数据包的类型和代码。 type 等于 8 表示它是一个请求包,如果它等于 0 则表示它是一个响应包。 当这些代码被更改或看起来不正确时,这通常会是可疑活动的迹象。
数据包中还有另外两个有助于分析的细节:时间戳和数据。 时间戳可用于识别请求 ping 的时间,在某些情况下还可用于识别可疑活动;还可以查看数据字符串,它通常只是一个随机数据字符串。
ICMP 响应:
查看下例,你可以看到响应包和请求包非常相似。区分响应包的主要特征之一是代码,在下面的例子中,你可以看到该数据包对应的Type代码是 0,这就确认了它是一个ICMP响应数据包。
针对ICMP请求数据包的相同分析技术也适用于此处,请求包和响应包的主要区别是数据包类型不同。
练习ICMP数据包分析
我们已经了解了 ICMP 数据包是如何形成的以及它包含的内容,现在可以开始对 ICMP 数据包进行实践分析。
启动TryHackMe所提供的 AttackBox,进入文件夹 /root/Rooms/Wireshark101
并双击 task8.pcap
文件,选择在 Wireshark
中打开该文件; 你也可以选择在TryHackMe的对应实验房间中下载和本小节知识点对应的 PCAP 文件,然后在你的本地攻击机上进行流量分析。
此网络捕获数据包文件(packet capture -pcap文件)只有两个协议,因此是否决定使用过滤器语句过滤出 ICMP 协议取决于你自己。
答题(关于ICMP数据包分析的练习)
启动TryHackMe所提供的AttackBox,在文件夹 /root/Rooms/Wireshark101 下找到 task8.pcap ,使用Wireshark打开该pcap文件,开始pcap文件分析工作:
查看数据包4的类型:
查看数据包5的类型:
查看数据包12的时间戳:
因为时区差异,天数可能需要+1或者-1
查看数据包18的完整数据字符串:
08090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
TCP流量
TCP 概述
TCP 或传输控制协议(Transmission Control Protocol)用于处理数据包的传递问题,包括排序和错误。 你应该先提前了解 TCP 的工作原理,如果你需要复习TCP协议,请查看IETF TCP 文档。
下图是一个 Nmap 扫描示例,所扫描的端口为 80 和 443 ,我们可以看到端口是关闭状态: RST, ACK 包为红色状态。
在分析 TCP 数据包时,Wireshark 非常有用,它可以按照危险级别对数据包进行颜色编码。
通过分析 TCP 数据包可以提升你对当前网络环境的信息洞察力,但由于TCP发送的数据包数量巨大,也可能难以进行有效的TCP分析。因此,你可能需要使用 RSA NetWitness 和 NetworkMiner 等其他工具来过滤并进一步分析所捕获的数据包。
TCP 流量概览
在分析 TCP 数据包时,常见的一件事情是 TCP 握手过程。TCP 握手过程 包括一系列数据包:syn、syn&ack、ack ;完成该过程将允许设备之间建立连接。
当TCP握手过程出现故障或包含其他数据包(如 RST 数据包)时,则代表在当前的网络环境中发生了可疑或错误的事情。 上面的 Nmap 扫描结果就是一个很好的例子。
TCP 数据包分析
关于 TCP 数据包分析,在此处我们不会深入研究数据包的每个细节,我们将会重点查看数据包的一些行为和结构。
在下面的示例中,我们可以看到 SYN 数据包的详细信息,在实际查看 TCP 数据包时,我们要查找的主要内容是序列号和确认号。
在上图示例的情况下,我们能够看到该端口并没有打开,因为确认号显示为 0 。
在 Wireshark 中,我们还可以通过导航到 编辑(edit) > 首选项(preferences) > 协议(protocols ) > TCP > 相对序列号(取消选中框)来查看原始序列号。
通常,在分析 TCP 数据包时需要将其作为一个整体来获取相关信息,而不是一个一个地查看细节。
DNS流量
DNS 概述
DNS 或域名服务协议( Domain Name Service protocol)用于将 IP 地址解析为对应的域名。在分析DNS流量之前,你应该先了解 DNS,如果你需要复习,你可以查看 IETF DNS 文档。
在分析 DNS 数据包时,你应该注意以下相关信息:
- Query-Response(查询-响应)
- DNS-Servers Only(仅限DNS服务器)
- UDP
如果关于以上信息存在不适宜的情况,则应进一步检查DNS数据包并将其视为可疑的数据包。
下图是一个已捕获的DNS数据包文件,其中包含了多个 DNS 查询和响应。
你可以立即查看数据包,以便了解这些数据包正在查询的内容,这在你有很多数据包并且需要快速识别可疑或异常流量时非常有用。
DNS 流量概览
DNS查询:
观察下面的DNS查询,我们有两个信息可以用来分析该数据包。
第一个信息是DNS查询的目的地,在此示例中DNS查询的目的地是 UDP 53端口,这意味着该数据包通过了检查,如果显示的DNS查询的目的地是 TCP 53端口,则应将其视为可疑流量,需要进一步分析。
第二个信息是DNS查询的具体内容,这可以与其他信息一起用于构建完整的DNS查询过程。
在分析 DNS 数据包时,你需要了解你的当前网络环境以及流量在你当前的网络环境中是否会被认为是正常的。
DNS响应:
下面我们看到一个响应包,它类似于查询包,但它会包含一个可以用来验证 DNS 查询的应答。
练习DNS数据包分析
现在我们已经了解了 关于 DNS 流量的特征和交互方式的基础知识,现在可以开始对 DNS 数据包进行实践分析。
启动TryHackMe所提供的 AttackBox,进入文件夹/root/Rooms/Wireshark101
,双击task10.pcap
文件,选择在Wireshark中打开该文件;你也可以选择在TryHackMe的对应实验房间中下载和本小节知识点对应的 PCAP 文件,然后在你的本地攻击机上进行流量分析。
此处需要分析的 已捕获的数据包文件 只涉及两个协议,因此可以自由决定是否使用过滤器语句过滤出 ICMP 协议。
答题(关于DNS数据包分析的练习)
启动TryHackMe所提供的AttackBox,在文件夹 /root/Rooms/Wireshark101 下找到 task10.pcap ,使用Wireshark打开该pcap文件,开始pcap文件分析工作:
查看数据包 1 中的DNS查询(Queries)内容:
8.8.8.8.in-addr.arpa
查看在数据包 26 中所查询的网站站点:
www.wireshark.org
查看数据包 26 的Transaction ID :
0x2c58
HTTP流量
HTTP 概述
HTTP 或超文本传输协议(Hypertext Transfer Protocol)是万维网常用的端口协议,并能被一些网站使用,但是,它的加密版本--HTTPS协议更为常见。
HTTP 可用于向 Web 服务器发送 GET 和 POST 请求,以便接收网页等内容。 了解如何分析 HTTP流量 有助于快速发现 SQLi、Web Shell 和其他与 Web 相关的攻击向量。
HTTP 流量概览
在学习HTTP流量分析之前,你应该大致了解一下关于HTTP协议的工作原理,如果你需要复习HTTP协议,可以阅读关于HTTP方法的IETF官方文件。
HTTP协议是用于数据包分析的最直接的协议之一,该协议直截了当,不包括任何握手过程或者其他进行通信前的先决条件。
从上面的截图中,我们可以看到一个HTTP数据包示例,通过查看HTTP数据包 我们可以很容易地收集到信息,因为HTTP中的数据流没有像 HTTPS 那样使用了加密手段。 我们可以从HTTP数据包中收集到一些重要信息:请求 URI、文件数据、服务器。
现在我们已经了解了 HTTP 数据包的基本结构,我们可以继续查看已捕获的HTTP数据包示例,以动手操作数据包。
练习HTTP数据包分析
要了解 HTTP 数据包的流向并动手操作数据包,我们需要分析包含http协议的 pcap文件(已捕获的数据包文件)。
启动TryHackMe AttackBox,我们可以转到AttackBox上的文件夹/root/Rooms/Wireshark101
,然后双击 task11.pcap
文件以在 Wireshark 中打开该文件。
打开PCAP文件,我们可以看到这只是一个简单的HTTP抓包文件,其中包含了一些请求数据包。为了深入了解 捕获到的数据包,我们可以查看其中一个HTTP请求包的详细信息,例如数据包 4 。
从上面这个数据包中,我们可以了解到一些非常重要的信息,如主机(host)、用户代理(user-agent)、所请求的URI(requested URI)和响应(response)。
我们可以使用 Wireshark 的一些内置功能来帮助理解所有这些数据并重新组织数据以供将来进一步的分析。Wireshark 有一个非常有用的功能,该功能可以组织 存在于捕获包的协议层次结构中的具体协议:导航到统计(Statistics) > 协议层次结构(Protocol Hierarchy) 即可。
此信息在威胁搜寻等实际应用中非常有效,可以识别捕获到的数据包中的差异。
Wireshark 的一个功能特性是可以导出 HTTP 对象,此功能将允许我们组织 捕获包中所有请求的URI (requested URIs) 。要使用Wireshark的 HTTP 对象导出功能,请导航到文件 > 导出对象 > HTTP(file > Export Objects > HTTP)。
与协议层次结构类似,这对于快速识别捕获包中可能存在的差异很有用。
我们将在本小节介绍的最后一个Wireshark功能是端点(Endpoints )。此功能允许用户组织 在特定捕获包中找到的所有端点和 IP,像其他功能一样,这对于识别数据包中的差异来源很有用,如果想要使用 Endpoints 功能,请导航至 Statistics > Endpoints 。
HTTP不是一个常见的协议,因为相比之下 HTTPS协议 现在更加常用; 但是,HTTP协议仍然可能会被网站使用,如果有机会捕获到HTTP数据包,我们可以很容易地对其进行流量分析。
答题(关于HTTP数据包分析的练习)
启动TryHackMe所提供的AttackBox,在文件夹 /root/Rooms/Wireshark101 下找到 task11.pcap ,使用Wireshark打开该pcap文件,开始pcap文件分析工作:
导航到统计(Statistics) > 协议层次结构(Protocol Hierarchy) ,查看Domain Name System(DNS)协议对应的数据包所占百分比:
4.7
使用Endpoints功能,导航至 Statistics > Endpoints ,查看.237结尾所对应的ip地址:
145.254.160.237
查看数据包 4 对应的user-agent:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113\r\n
查看数据流,获取数据包 18 对应的完整请求URI(request URI)信息:
查看数据包 38 所请求的域名:
www.ethereal.com
查看数据流,获取数据包 38 对应的完整请求URI(request URI)信息:
HTTPS流量
从数据包分析的角度来看,HTTPS 或安全超文本传输协议(Hypertext Transfer Protocol Secure)可能是最令人讨厌的协议之一,而且分析 HTTPS 数据包所需采取的步骤可能会让人难以理解。
HTTPS 流量概览
在发送加密信息之前,客户端和服务器需要就各个步骤达成一致以建立安全隧道。
- 客户端和服务器就协议版本要达成一致;
- 客户端和服务器需要选择加密算法;
- 客户端和服务器可以相互认证,这一步是可选的;
- 使用公钥创建安全隧道。
我们可以通过查看客户端和服务器之间进行握手的数据包 来开始分析 HTTPS 流量。
下面是客户端的 Hello 数据包,它将显示以下信息:SSLv2 记录层、握手类型和 SSL 版本。
下面是服务器端的 Hello 数据包,它将发送与客户端 Hello 数据包类似的信息,但该数据包还将包括会话(session )详细信息和 SSL 证书信息。
下面是客户端密钥交换数据包,这部分握手过程将确定用于加密客户端和服务器之间的进一步通信的公钥。
在下一个数据包中,服务器将确认公钥并创建安全隧道,此后的所有流量都将根据上述商定的规范进行加密。
客户端和服务器之间的流量现在已加密,所以你需要使用密钥才能解密两台主机之间发送的数据流。
练习HTTPS数据包分析
为了练习分析 HTTPS 数据包,我们可以分析TryHackMe所提供的实验环境下的 rsasnakeoil2.cap 文件和解密密钥文件,我们转到 AttackBox 上的文件夹 /root/Rooms/Wireshark101 并解压压缩文件task12.zip即可。
我们首先需要将捕获的数据包文件加载到 Wireshark 中,打开Wireshark 导航到 文件 > 打开并选择rsasnakeoil2.cap文件即可。
查看上面截图中的已捕获数据包,我们可以看到所有的请求数据包都是加密的。仔细观察这些数据包,它们包含了 HTTPS 握手过程以及一些加密请求数据包。 让我们打开其中一个加密请求数据包进行查看:数据包 11。
我们可以从数据包详细信息中确认应用程序数据已被加密处理,我们需要在 Wireshark 中使用 RSA 密钥以查看数据。
为了加载 RSA 密钥,请导航至 Edit > Preferences > Protocols > TLS > [+] ,如果你使用的是旧版本的 Wireshark,那么也可能是导航至 SSL 而不是 TLS。
你需要使用以下首选项填写TLS菜单上的各个部分:
- IP Address: 127.0.0.1
- Port: start_tls
- Protocol: http
- Keyfile: RSA key location(导入外部密钥文件的具体路径)
现在我们已经将 RSA 密钥导入到 Wireshark 中,如果我们返回并查看已捕获的数据包界面,我们可以看到数据流现在变更为未加密状态。
我们现在可以在未加密的数据流中看到 HTTP 请求,鼠标左键双击数据包条目 以便进一步查看数据包的细节,我们可以看到未加密的数据流。
如上图所示,我们可以看到一些非常重要的信息,例如请求 URI 和用户代理,这些信息在 Wireshark 的实际应用中非常有用,例如在进行威胁搜寻和网络管理等工作时。
我们可以使用其他功能来组织数据流,例如使用 HTTP 对象导出功能,你可以导航到 文件 > 导出对象 > HTTP 来使用该功能。
答题(关于HTTPS流量分析的练习)
打开AttackBox 上的文件夹 /root/Rooms/Wireshark101 并解压压缩文件task12.zip,结合上面的操作步骤,完成答题:
使用Wireshark打开rsasnakeoil2.cap 文件即可:
加载 RSA 密钥,导航至 Edit > Preferences > Protocols > TLS > [+] ,如果使用的是旧版本的 Wireshark,那么也可能是导航至 SSL 而不是 TLS ,使用以下首选项填写TLS或者SSL菜单上的各个部分 :
- IP Address: 127.0.0.1
- Port: start_tls
- Protocol: http
- Keyfile: RSA key location(导入外部密钥文件的具体路径)
查看数据流,获取数据包 31 的完整请求 URI :
查看数据流,获取关于数据包 50的完整请求URI:
查看数据包50中列出的 User-Agent :
Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
分析和利用PCAP文件
Zerologon PCAP 概述
我们从名为 Zerologon 或 CVE-2020-1472 的 Windows Active Directory Exploit 中收集了 PCAP 文件。
该PCAP 文件中的场景包含一个私有 IP 为 192.168.100.6 的 Windows 域控制器和一个私有 IP 为 192.168.100.128 的攻击者。
让我们看一下分析该 PCAP 文件的步骤,并对所发生的事件做出假设。
我们可以进入 AttackBox 上的/root/Rooms/Wireshark101
文件夹,然后双击task13.pcap
文件以在 Wireshark 中打开它。
识别攻击者
打开 PCAP 文件后,我们立即看到一些可能不寻常的东西。 首先,我们能看到一些来自 OpenVPN、ARP 等的正常流量;然后我们开始识别在这种情况下能够被称为未知协议的 DCERPC 和 EPM。
查看数据包,我们看到 192.168.100.128 正在发送大量请求,因此我们可以假设该ip对应的设备是攻击者;我们可以继续查看来自该 IP 的数据包以缩小搜索范围。
Zerologon POC连接分析
我们可以为我们认为可疑的 IP 的 src 设置一个过滤器:ip.src == 192.168.100.128 。 在分析 PCAPS文件 时,我们需要了解 IOC(Indicators of Compromise-入侵指标),它们可能和特定漏洞有关,所以也被称为威胁情报(此知识点并不在本文的范围之内); 如果我们有 Zerologon 漏洞利用的背景知识,我们就会知道该漏洞exp使用了多个 RPC 连接,并且 DCERPC 请求将更改机器帐户的密码,这可以通过 PCAP文件内容 进行验证。
Secretsdump SMB分析
进一步观察该PCAP文件,我们可以看到 SMB2/3 流量和 DRSUAPI 流量,通过对该攻击的背景知识了解,我们能够知道该攻击可能使用了 secretsdump 来转储哈希值。
Secretsdump工具可以通过滥用 SMB2/3协议 和 DRSUAPI协议 来转储哈希值,所以我们可以假设该PCAP文件中有部分流量(涉及SMB2/3 协议和DRSUAPI 协议)是基于secretsdump产生的。
每个漏洞利用和攻击都将带有其独特的人工性质,在这种情况下,我们可以很清楚发生了什么事件以及发生事件的顺序。 一旦我们确定了攻击者,如果我们在威胁搜寻或 DFIR(数据取证和应急响应) 团队中,我们需要继续执行其他步骤来进行威胁识别和隔离并需要及时报告相关的威胁事件。
小结
Wireshark 在线文档:https://www.wireshark.org/docs/
Wireshark Sample Captures(Wireshark数据包捕获样本):https://wiki.wireshark.org/SampleCaptures
Threat Hunting challenge(威胁狩猎挑战-pcap文件分析案例):https://dfirmadness.com/case-001-pcap-analysis/
TryHackMe所提供的流量分析进阶学习:https://tryhackme.com/room/overpass2hacked