当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 通过 Pass-the PRT 横向移动到云

作者:精品下载站 日期:2024-12-14 06:19:04 浏览:15 分类:玩电脑

通过 Pass-the PRT 横向移动到云


攻击者使用各种策略在本地 Windows 计算机上横向传播,包括传递票证、传递哈希值、过度传递哈希值和黄金票证攻击。但类似的技术也可以有效地从受感染的工作站横向移动到连接的云资源,绕过 MFA 等强身份验证措施。

本文介绍了攻击者如何通过名为 Pass-the-PRT 的攻击来横向移动到云。

什么是 PRT?

主刷新令牌 (PRT) 类似于 Kerberos 票证授予票证 (TGT) — 两者都用于提供单点登录 (SSO)。但是,虽然 TGT 适用于 Windows 系统,但 PRT 使你能够登录 Windows 10 设备,然后访问 Azure 和 Microsoft 365 资源,而无需重新进行身份验证。 Windows 10 设备必须已加入 Azure 或混合 Azure 加入。

以下概述了此过程的工作原理:登录时,您的 Windows 10 设备将与 Windows 10 云身份验证提供程序进行通信。其 Azure AD 插件将验证您的凭据并返回 PRT 和会话密钥。您的设备将使用其可信平台模块 (TPM) 重新加密会话密钥,然后将密钥和 PRT 存储在 LSASS 中。 然后,当您尝试使用支持 SSO 到 Azure 的浏览器(带有 Windows 10 扩展的 Edge 或 Chrome)登录网站时,云身份验证提供程序将为浏览器创建一个 PRT cookie,并使用该 cookie 获取令牌蔚蓝广告。 Azure AD 将验证 PRT cookie 并让您进入。

(如果您想深入了解,请查看 Microsoft 文档、Jairo Cadena 对 PRT 和 SSO 的总结、Dirk-jan Mollema 撰写的有关 PRT 的文章,以及 GitHub 上的 ROADtoken 和 RequestAADRefreshToken 项目。)

要查看您是否有 PRT,请运行以下命令:

Dsregcmd.exe /status

在“SSO 状态”部分中,选中 AzureAdPrt;如果设置为 YES,则您拥有 PRT。

[玩转系统] 通过 Pass-the PRT 横向移动到云

如果设置为“否”,请使用以下命令检查您的设备是否已加入 Azure AD,因为这是发出 PRT 所必需的。

[玩转系统] 通过 Pass-the PRT 横向移动到云

执行 PRT 传递攻击

如果攻击者设法获取用户的 PRT 和会话密钥,他们就可以创建 PRT cookie,使他们能够以该用户的身份访问 Web 资源,从而绕过任何现有的条件访问要求。 PRT 的有效期为 14 天,因此除非帐户被禁用,否则他们的访问权限最多为 2 周。

让我们详细了解如何执行此类攻击。

先决条件:我们已经入侵了一台已颁发 PRT 的 Windows 10 设备,并且我们拥有该计算机的本地管理员权限。

步骤概述:

  1. 从 LSASS 中提取 PRT 并保存以供以后使用。
  2. 提取会话密钥。
  3. 解密会话密钥并使用 DPAPI 主密钥来使用它。我们在传递 Cookie 攻击中了解了这一点,并将使用相同的方法。
  4. 使用解密的会话密钥来获取派生密钥和上下文。这是创建我们的 PRT cookie 所必需的。派生密钥用于对 cookie 的 JWT 进行签名。
  5. 在任何系统中,使用 PRT、派生密钥和上下文来创建新的 PRT cookie。
  6. 将 cookie 导入到我们的 Chrome 浏览器会话中。现在,我们将作为用户对网站进行身份验证 — 无需知道其密码,也无需处理任何 MFA 提示。

让我们更深入地了解每一步。

步骤 1. 从 LSASS 中提取 PRT。

要查看我们受感染的机器的 PRT 数据,我们在 Mimikatz 版本 2.2.0 20200807 或更高版本中使用以下命令:

Privilege::debug
Sekurlsa::cloudap

这是输出。我们将复制标记为PRT的部分并保存以供以后使用。

[玩转系统] 通过 Pass-the PRT 横向移动到云

如果没有看到任何 PRT 数据,请通过运行命令 dsregcmd /status (如前所示)检查设备是否已加入 Azure AD。如果AzureAdPrt设置为YES,请检查计算机运行的Windows 10版本;在我们的实验室中,我们需要至少升级到版本 1909 才能使攻击起作用。

[玩转系统] 通过 Pass-the PRT 横向移动到云

步骤 2. 提取所有权证明密钥。

现在我们将提取会话密钥或“ProofOfPosessionKey”,如下突出显示。 这是加密的,我们需要使用 DPAPI 主密钥来解密它。

[玩转系统] 通过 Pass-the PRT 横向移动到云

步骤 3. 解密会话密钥。

现在我们将权限提升到 SYSTEM 并在计算机上下文中运行,以便能够使用 DPAPI 主密钥来解密会话密钥:

Token::elevate
Dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect

[玩转系统] 通过 Pass-the PRT 横向移动到云

现在我们将复制两个值。第一个是上下文值:

[玩转系统] 通过 Pass-the PRT 横向移动到云

第二个是派生键值:

[玩转系统] 通过 Pass-the PRT 横向移动到云

步骤 4. 生成 PRT cookie。

我们可以从任何工作站执行剩下的攻击。要生成 PRT cookie,我们只需运行以下命令:

Dpapi::cloudapkd /context:[CONTEXT] /derivedkey:[DerivedKey] /Prt:[PRT]

输出将在使用密钥签名后包含一个已签名的 PRT cookie。复制该文本。

[玩转系统] 通过 Pass-the PRT 横向移动到云

步骤 5. 将 PRT cookie 注入浏览器会话中。

以隐身模式启动 Google Chrome 并导航至 https://login.microsoftonline.com。 当系统提示您输入登录数据时,右键单击页面上的任意位置,然后选择检查以打开 Chrome 开发工具。

转到“应用程序”选项卡,双击Cookies,然后单击login.microsoftonline.com。在右侧窗格中的顶部操作栏中,单击带有斜线的圆圈以清除所有现有 Cookie。

然后双击表中的空行并添加以下新 cookie:

Name: x-ms-RefreshTokenCredential
Value: [Paste your output from above]
HttpOnly: Set to True (checked)

将其他字段保留为默认值。

[玩转系统] 通过 Pass-the PRT 横向移动到云

刷新页面并确保 cookie 没有消失。如果是这样,您可能犯了一个错误,必须重新执行该过程。

再次导航到 https://login.microsoftonline.com,它应该会自动让您以受感染的用户身份登录:

[玩转系统] 通过 Pass-the PRT 横向移动到云

防范传递 PRT 攻击

传递 PRT 攻击很难检测,因为它们滥用合法的 SSO 流程。一个有用的策略是使用端点保护软件,该软件可以检测在攻击的第一阶段运行的 Mimikatz 的使用情况。

然而,预防比检测更好。请记住,Pass-the-PRT 是一种横向移动技术;要执行此操作,入侵者需要已经获得对计算机的访问权限。借助 Netwrix Active Directory 安全解决方案等工具,您可以从一开始就防止恶意分子在您的环境中获得立足点。

此外,这种攻击需要当地的管理权限。使用 Netwrix PolicyPak 等端点管理软件,您可以删除用户的这些强大权限,而不会影响他们的工作效率。此外,您还可以防止计算机启动恶意软件,甚至保护其浏览器设置。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯