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

[玩转系统] AD证书服务:风险设置及其补救措施

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

AD证书服务:风险设置及其补救措施


Active Directory 证书服务已经存在很长时间了,但学习它的资源并不丰富。因此,它经常出现配置错误,从而成为越来越多的攻击媒介。事实上,SpecterOps 发布了一份白皮书,详细介绍了一些错误配置和潜在的攻击,并提供了强化建议。在这篇博客中,我介绍了几个配置错误的设置以及如何发现它们,提供了进一步强化安全性的几个选项,并解释了如何使用免费工具来检查您的环境。

背景

当向身份颁发基于身份验证的证书时,该证书可用于作为主题备用名称 (SAN) 中设置的身份进行身份验证;这通常是 UPN 或 DNS 名称。然后使用证书代替密码进行初始身份验证。如果您想了解更多详细信息,此初始身份验证的技术参考是 RFC4556。

一旦颁发了基于身份验证的证书,就可以使用它作为主体进行身份验证,直到该证书被撤销或过期。这将绕过依赖于重置用户密码以踢出攻击者等策略的事件响应计划;除非证书也被吊销,否则攻击者可以持久访问该帐户。

有风险的模板设置

以下是一些可能导致配置错误的证书模板设置。

基于身份验证的 EKU

首先,寻找支持任何类型的域级身份验证的增强型密钥用法 (EKU)。这是一个简短的列表:

  • 任何目的 (2.5.29.37.0)
  • SubCA(无)
  • 客户端身份验证 (1.3.6.1.5.5.7.3.2)
  • PKINIT 客户端身份验证 (1.3.6.1.5.2.3.4)
  • 智能卡登录 (1.3.6.1.4.1.311.20.2.2)

手动查找允许此操作的所有证书模板的最简单方法是打开证书颁发机构 MMC 管理单元,连接到您的证书颁发机构,查看证书模板部分并扫描预期用途列以查找任何这些身份验证 EKU。例如,下图显示计算机、智能卡登录副本和两个域控制器模板至少包含一个 PKU。

解决找到的模板后,请务必记住,也有一些方法可以滥用普通证书。例如,PoshADCS 的 Get-SmartCardCertificate 函数可以修改模板,为其请求证书,然后将更改恢复到模板。

[玩转系统] AD证书服务:风险设置及其补救措施

“登记者用品主题”标志

当 mspki-certificate-name-flag 属性中存在标志 CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT 时,证书的登记者可以在证书签名请求中提供自己的备用使用者名称。这意味着任何被允许使用此设置注册证书的用户都可以以网络中的任何用户(包括特权用户)的身份请求证书。

您可以在证书模板控制台中检查此标志;它位于“主题名称”选项卡下的“在请求中提供”单选选项:

[玩转系统] AD证书服务:风险设置及其补救措施

或者,您可以使用如下所示的 PowerShell 命令从 AD 获取模板并检查证书中是否设置了该标志:

Get-ADobject -Filter { ObjectClass -eq "PKIcertificateTemplate" } -SearchBase (Get-ADRootDSE).ConfigurationNamingContext -prop * | Select Name, mspki-certificate-name-flag, @{ Name = "SupplyInRequest" ; Expression = { $_.'mspki-certificate-name-flag' -band 0x00000001 } }

进一步降低风险

除了更正证书错误配置之外,还可以考虑使用以下选项来控制证书的颁发。

CA 证书管理器批准或授权签名

首先,可能也是最重要的一点,查看每个证书上的“颁发要求”选项卡,看看它是否需要获得证书颁发机构 (CA) 经理或一个或多个授权的批准

[玩转系统] AD证书服务:风险设置及其补救措施

启用其中一项或两项设置可以通过在颁发证书之前要求进行检查来大大降低风险。如果您不确定是否需要授权签名,至少需要 CA 证书管理员批准;那么每次请求证书时,都会在颁发之前前往证书颁发机构进行人工审核。

注册权限

其次,查看每个模板中的注册权限,可以在“安全”选项卡上找到该权限。仅当通用主体或大型组拥有这些权限时,许多错误配置才至关重要。特别是,检查经过身份验证的用户、域用户以及任何不应能够请求证书的大型用户组;如果您找到他们,请考虑撤销他们的注册或自动注册权限。

[玩转系统] AD证书服务:风险设置及其补救措施

EDITF_ATTRIBUTESUBJECTALTNAME2 注册表项

最后,检查 EDITF_ATTRIBUTESUBJECALTNAME2 注册表设置。此设置是最有趣的设置之一:如果在 CA 上启用,则颁发的任何基于身份验证的证书(包括主题自动从 Active 构建的证书) Directory)可以在 SAN 中具有用户定义的值。

要检查此设置,您可以运行以下命令:

certutil –getreg policyEditFlags

如果 EDITF_ATTRIBUTESUBJECALTNAME2 位于输出列表中,则应使用以下命令将其删除:

certutil -config "CA CONNECTION STRING" -setreg policyEditFlags - EDITF_ATTRIBUTESUBJECTALTNAME2

有关此设置的更多指导可以在此处找到。

使用 PSPKIAudit 检查有风险的设置

PSPKIAudit 工具可以帮助您审核 PKI 基础设施。要使用 PSPKIAudit,只需从 GitHub 下载该工具,导入模块并运行 Invoke-PKIAudit 命令即可。这将从 Active Directory 中枚举证书颁发机构,然后查询它以获取某些默认选项。

下面是几个显示该工具输出的屏幕截图,其中显示了错误配置的证书和 CA 上的错误配置。如果 PSPKIAudit 发现本文未涵盖的任何错误配置,请查看 SpecterOps 论文以获取补救建议。

[玩转系统] AD证书服务:风险设置及其补救措施

[玩转系统] AD证书服务:风险设置及其补救措施

结论

我预计针对 Active Directory 证书服务的攻击数量将会不断增加。事实上,自从 SpecterOps 论文发表以来,带有 ADCS NTLM 中继攻击的 PetitPotam 就已经出现,并且 SpecterOps 正在 BlackHat 2021 上发布 ForgeCert(证书金票)。因此,迫切需要检查环境中的错误配置并进行修复及时进行处理,然后定期重复该过程。

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

取消回复欢迎 发表评论:

关灯