Administrator
发布于 2023-05-25 / 613 阅读
42
0

Wireshark教程:解密HTTPS流量

本教程使用的pcap包含基于Windows的恶意软件。如果使用Windows计算机,则存在感染风险。如果可能,我们建议您在非Windows环境中查看此pcap,如BSD、Linux或macOS。
文章来自:https://unit42.paloaltonetworks.com/wireshark-tutorial-decrypting-https-traffic/

执行摘要

    本教程专为调查可疑网络活动并查看流量数据包捕获(pcaps)的安全专业人员设计。说明假定您熟悉wireshark,它的重点是Wireshark 3.x版。
    在查看可疑网络活动时,我们经常会遇到加密流量。为什么?因为大多数网站使用超文本传输协议安全(HTTPS)协议。但像大多数网站一样,各种类型的恶意软件也使用HTTPS。在查看恶意软件活动中的pcap时,了解感染后流量中包含的内容非常有帮助。

本 Wireshark 教程介绍了如何在 Wireshark 中解密来自 pcap 的 HTTPS 流量。可以使用基于文本的日志进行解密,其中包含最初记录 pcap 时捕获的加密密钥数据。使用此密钥日志文件,我们可以解密 pcap 中的 HTTPS 活动并查看其内容。

今天,我们将检查来自Dridex恶意软件感染的 HTTPS 活动。

注意:我们的说明假定您已按照之前“自定义 Wireshark – 更改您的列显示”中所述自定义了 Wireshark 列显示。

这是一个 Github 存储库,其中包含一个 ZIP 存档,其中包含pcap 和一个用于本教程的密钥日志文件。

警告:本教程使用的 pcap 包含基于 Windows 的恶意软件。如果使用 Windows 计算机,则存在感染风险。我们建议您尽可能在 BSD、Linux 或 macOS 等非 Windows 环境中查看此 pcap。

加密流量背后的背景

在 20 世纪 90 年代中后期,网站最常用的协议是超文本传输​​协议 (HTTP),它生成未加密的网络流量。然而,随着安全性越来越受到关注,网站开始转向 HTTPS,现在我们很少看到来自网页浏览的 HTTP 流量。

HTTPS 本质上是一个包含 HTTP 流量的加密通信隧道。这些隧道首先使用安全套接字层 (SSL) 作为加密协议。如今,大多数 HTTPS 流量都使用传输层安全 (TLS)。

HTTPS 网络流量

HTTPS 流量通常会显示域名。例如,当在 Web 浏览器中查看https://www.wireshark.org时,pcap 会在自定义的 Wireshark 列显示中查看www.wireshark.org作为此流量的服务器名称。遗憾的是,我们不知道其他详细信息,例如实际 URL 或从服务器返回的数据。遵循来自 pcap 的传输控制协议 (TCP) 流不会泄露此流量的内容,因为它是加密的。
image-1685004948898

image-1685005179963

加密密钥日志文件

加密密钥日志是一个文本文件。图 3 显示了一个示例。
image-1685005249563
这些日志是在最初记录 pcap 时使用中间人 (MitM) 技术创建的。如果在记录 pcap 时没有创建此类文件,则无法解密该 pcap 中的 HTTPS 流量。

带有密钥日志文件的 Pcap 示例

包含 pcap 及其密钥日志文件的受密码保护的 ZIP 存档可在此 Github 存储库中获得。转到 Github 页面,单击 ZIP 存档条目,然后下载它,如图 4 和 5 所示。值得注意的是,当使用密钥日志解密时,此 ZIP 存档中包含的 pcap 提供对基于 Windows 的恶意软件样本的访问。一如既往,我们建议您谨慎行事,并在非 Windows 环境中按照本教程中的步骤进行操作。
image-1685005304175
image-1685005326348
使用infected作为密码从 ZIP 存档中提取 pcap 和密钥日志文件。这将提供两个文件,如图 6 所示:

  • Wireshark-教程-KeysLogFile.txt
  • Wireshark-教程-解密-HTTPS-SSL-TLS-traffic.pcap
    image-1685005373379

没有密钥日志文件的 HTTPS 流量

在 Wireshark 中打开Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap。使用有关 Wireshark 过滤器的先前教程中所述的基本 Web 过滤器。Wireshark 3.x 的基本过滤器是:

(http.request 或 tls.handshake.type eq 1) 和 !(ssdp)

此 pcap 来自 Windows 10 主机上的 Dridex 恶意软件感染。所有网络流量,包括感染活动,都是 HTTPS。没有密钥日志文件,我们无法看到流量的任何详细信息,只能看到 IP 地址、TCP 端口和域名,如图 7 所示。
image-1685005414359

加载按键日志文件

在 Wireshark 中打开Wireshark-tutorial-on-decrypting-HTTPS-SSL-TLS-traffic.pcap。然后使用菜单路径Edit --> Preferences调出Preferences Menu,如图8所示。
image-1685005452443

在 Preferences Menu 的左侧,单击 Protocols,如图 9 所示。
image-1685005485276

如果您使用的是 Wireshark 版本 2.x,请向下滚动直到找到SSL并选择它。如果您使用的是 Wireshark 版本 3.x,请向下滚动到TLS并选择它。选择 SSL 或 TLS 后,您应该会看到一行(Pre)-Master-Secret log filename。单击“浏览”按钮并选择名为Wireshark-tutorial-KeysLogFile.txt的密钥日志文件,如图 10、11 和 12 所示。
image-1685005513747

image-1685005532532

image-1685005550515

带有密钥日志文件的 HTTPS 流量

单击“确定”后,当使用基本过滤器时,您的 Wireshark 列显示将在每个 HTTPS 行下列出解密的 HTTP 请求,如图 13 所示。
image-1685005601007

在此 pcap 中,我们现在可以看到以前隐藏在 HTTPS 流量中的对microsoft.com和skype.com域的 HTTP 请求。我们还发现由 Dridex 感染引起的以下流量:

  • foodsgoodforliver[.]com - GET /invest_20.dll
  • 105711[.]com - POST /docs.php

对foodgoodforliver[.]com 的GET 请求返回了 Dridex 的 DLL 文件。对105711[.]com 的POST 请求是来自受 Dridex 感染的 Windows 主机的命令和控制 (C2) 流量。

我们可以通过跟踪 HTTP 流来查看流量。右键单击该行以将其选中,然后单击左键以调出一个菜单以跟踪 HTTP 流。图 14 和 15 显示了对foodgoodforliver[.]com的 HTTP GET 请求的 HTTP 流。
image-1685005646368

image-1685005663231

由于我们有此流量的关键日志文件,我们现在可以从 pcap 中导出此恶意软件。使用菜单路径File --> Export Objects --> HTTP从 pcap 中导出该文件,如图 16 所示。
image-1685005702086

如果你在 BSD、Linux 或 macOS 环境中,打开一个终端窗口并使用file命令确认这是一个 DLL 文件。然后使用shasum -a 256获取文件的 SHA256 哈希值,如图 17 所示。
image-1685005727558

该恶意软件的 SHA256 哈希值是:
31cf42b2a7c5c558f44cfc67684cc344c17d4946d3a1e0b2cecb8eb58173cb2f

如果您在线搜索此散列,您应该会从至少两个公开可用的在线沙箱环境中找到结果。

最后,我们可以查看来自此 Dridex 感染的 C2 流量。使用您的基本 Web 过滤器,然后跟随从 POST 请求之一到105711[.]com 的HTTP 流。图 18 显示了来自其中一个 HTTP 流的示例。
image-1685005763271

结论

本教程回顾了如何使用密钥日志文本文件使用 Wireshark 解密 pcap 中的 HTTPS 流量。如果最初记录 pcap 时没有创建密钥日志文件,则无法在 Wireshark 中解密来自该 pcap 的 HTTPS 流量。

有关 Wireshark 的更多帮助,请参阅我们之前的教程:


评论