背景
该漏洞在5月11日被研究员Oliver Lyak发现并公开了漏洞原理及技术细节后,引发安全从业者的广泛关注并被相关从业者快速复现该漏洞利用场景。
虽然默认情况下不会为 Active Directory 环境安装 AD证书服务,但根据在企业环境中的实际经验,该证书服务仍然被广泛部署,并且错误配置的证书服务的安全风险是巨大的。
漏洞分析
CVE-2022-26923 漏洞影响所有版本的Windows Server中的AD域控服务。攻击者可以利用该漏洞在安装了AD证书服务的环境中仿冒另一计算机账户并代表该账户颁发证书,从而导致计算机账户或域控制器被接管,这有效地为攻击者提供了一个完整的域凭据泄露的清晰攻击路径。
我们还原了基本的利用过程,这种特权升级过程对攻击者来说工作量非常小,意味着攻击者利用此漏洞所需的技能水平非常低,基本步骤如下:
-
找到拥有AD证书服务的任意版本Windows 服务器
-
获得已泄露的低权限 AD 用户的凭据(Domain User即可)
-
使用这些凭据在域中注册新主机/机器账户(Machine Account)
-
将计算机对象的 dNSHostName属性更改为特权主机(例如域控制器)的主机名属性
-
删除SPN属性值,绕过篡改后的属性值冲突
-
使用默认模板请求机器证书
-
使用收到的模板执行 Kerberos 身份验证,现在作为特权机器账户,而不是我们的假机器账户
客户端认证
证书模板便于用户和系统注册证书。证书在网络中有许多用例。对于 CVE-2022-26923 和 AD证书服务恶意利用白皮书中发现的模板错误配置,主要关注的是客户端身份验证用例。
客户端身份验证允许证书的所有者使用它来验证他们自己在 AD 中的身份以进行身份验证。例如,客户端证书用于针对 Web 应用程序进行身份验证。身份验证过程通过Kerberos进行。如果我们有一个具有客户端身份验证 EKU 的有效证书,我们可以与AD证书服务和密钥分发中心交互,以请求一个 Kerberos TGT,然后可以将其用于进一步的身份验证。
如果有有效的证书,攻击者可以利用它来生成一个 TGT 来模拟另一个用户或系统。从本质上讲,我们希望能够修改证书请求的SAN属性以指向具有执行权限提升的更多权限的某人或其他事物。
默认证书模板
默认情况下,当 AD证书服务安装在环境中时,两个证书模板可用于支持客户端身份验证的请求:
-
用户证书模板- 属于域用户组的任何用户都可以请求此证书模板
-
机器证书模板- 属于域计算机组的任何主机都可以请求此证书模板
默认情况下,用户模板不易受到攻击。当根据用户模板请求证书时,用户账户的用户主体名称 (UPN) 将嵌入可用于识别的 SAN 中。由于UPN 必须是唯一的,而且通常无法修改 UPN,因此无法利用此模板。此外,由于无法更改证书签名请求中的 SAN 值,无法通过指定其 UPN 来模拟其他用户。
但是,计算机账户没有 UPN。机器模板不使用 UPN 进行身份验证,而是使用机器的 DNS 名称进行识别和身份验证。当通过机器模板为机器请求证书时,AD证书服务将机器的 DNS 名称嵌入到 SAN 中,然后用于身份验证。
默认域用户权限
默认情况下,任何AD 账户用户最多可以在域中注册 10 台新计算机。这通常在组织中用于允许用户携带自己的设备 (BYOD) 并将其注册以在域中使用。这本身并不是一个真正的漏洞,一旦CVE-2022-26923漏洞结合该配置,会导致权限提升攻击路径。
当在 AD 中注册新主机时,用户被分配为该主机的所有者。这为我们提供了对与该主机关联的 AD 对象的某些权限。这里有两个权限特别会导致问题:
-
验证写入 DNS 主机名- 此权限允许我们更新与主机关联的 AD 对象的 DNS 主机名
-
验证写入服务主体名称 (SPN) - 此权限允许我们更新与主机关联的 AD 对象的 SPN
Kerberos 身份验证使用 SPN 将服务实例与服务登录账户相关联。默认情况下,计算机 AD 对象接收与其名称关联的SPN,以允许 Kerberos 身份验证,主机需要该身份验证才能针对 AD 执行特定请求。SPN 必须是唯一的,这意味着不允许两个 AD 对象拥有相同的SPN。
你可以认为它就像将更改 DNS 主机名一样简单,但是如果您更改 DNS 主机名,Microsoft 会自动更新 SPN 属性。由于它的唯一性,如果尝试通过 DNS 主机名属性模拟另一台主机,我们将收到错误消息。但如果同样更改了 SPN,攻击者可以绕过这个限制。
如果只有这两个权限之一,我们就不会有漏洞。然而,拥有这两个权限的组合允许攻击者执行权限提升。
PoC概念验证
由于CVE-2022-26923漏洞的利用详情已被研究员Oliver公开,目前国内多家安全机构也发文表示成功复现此漏洞,我们有理由相信随着时间的推移,未来将会出现大量针对此漏洞的利用攻击。
解决方案及临时缓解措施
对于 CVE-2022–26923 缓解和保护措施,强烈建议企业将运行 AD 证书的服务器和域控制器更新到微软5月10日发布的最新版本。
通过使用Tenable.ad 域控安全风险可视化解决方案,很容易化被动为主动,主动防御此漏洞风险并能实时侦测针对此漏洞的攻击行为,在未产生实质攻击之前阻断其攻击路径。
预防阶段T.ad可以帮助客户全量识别AD域控中的配置风险,给出对应的缓解措施从根本解决问题。
默认情况下,任何用户(无论是否拥有特权)都可以将一台或多台计算机加入到域。这样做将触发在 Active Directory 中创建新计算机账户的操作。本次漏洞也利用到了这一配置特性。Tenable.ad通过风险暴露指标,帮用户直接解决漏洞利用的先决条件,修复了AD不安全配置,从而做到主动预防。
在攻击链条的第二步,攻击者需要就是篡改其DNS主机名,这时候T.ad可以动态监控当前域中所有机器的DNS主机名是否发生变更,同理也可以追踪SPN 属性值的变化。如果有任何变动,在第一时间响应调查原因。
这个漏洞最根本的问题是AD证书服务的不安全配置导致的,所谓的“配置错误的”证书模板是以多个会导致安全问题的参数为基础的模板。但只有根据上下文,基于每个参数的用途,才能区分修改哪些参数能移除风险。
-
尽快将针对此漏洞的微软补丁应用到您的所有域控制器服务器 -
评估所有拥有着“write to DNS hostname”的权限的账户,收回已有权限并判断此权限是否带来了非法变更 -
将ms-DS-MachineAccountQuota属性设置为 0,这虽然不会解决问题,但是这样做大幅度提高黑客攻击成本 -
根据企业的需要调整证书模板的权限和批准 -
使用T.ad产品的客户可以真正在早期阶段预防和实时动态检测报警来防止此漏洞,能帮助客户在攻击被利用前发现AD中不安全配置、缓解风险项是我们做AD安全的愿望的一部分,不断提升黑客利用成本是我们的初衷,真正将风险可视化,做到主动出击,提前加固预防 -
如果攻击者尝试利用成功,T.ad会向安全团队提供详细的实时警报,使调查更为容易并提供快速响应所需的所有信息
识别受影响的系统
Tenable 漏洞研发团队也已经发布了用于识别该漏洞的漏洞检查plugin,Nessus和T.sc请更新至最新的漏洞插件库。
获取更多信息
-
Active Directory Domain Privilege Escalation (CVE-2022–26923)
https://research.ifcr.dk/certifried-active-directory-domain-privilege-escalation-cve-2022-26923-9e098fe298f4
-
微软关于CVE-2022-26923 - 安全更新程序指南
https://msrc.microsoft.com/update-guide/vulnerability/CVE-2022-26923
-
Certified Pre-Owned
https://posts.specterops.io/certified-pre-owned-d95910965cd2
关注Tenable安全响应团队,获取最新资讯!
原文始发于微信公众号(安世加):CVE-2022-26923: Active Directory 域权限提升漏洞利用分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论