8
月
在社区成长 8 月
LEVEL 50
100 XP
ESC4 Active Directory 证书服务漏洞是Active Directory 证书服务(ADCS) 中的一个高风险漏洞,攻击者可以利用该漏洞利用错误配置的证书模板权限(例如Write、GenericAll、WriteDACL)。此缺陷是证书攻击的关键入口点。通过修改易受攻击的模板,攻击者可以使用客户端或服务器身份验证EKU 颁发身份验证证书,从而允许他们使用Kerberos PKINIT 模拟特权用户或系统(例如,域模拟管理员、域控制器)。
这种形式的ESC4 攻击可能会导致整个域受到损害。有效的ADCS 证书攻击缓解需要严格的权限控制和强化的证书模板配置。
使用impacket-psexec 进行利用后横向移动权限升级
使用Metasploit 进行ESC4 攻击
缓解措施
当满足以下条件时,ESC4攻击成为可能
True – 低权限用户对证书模板具有写入/所有者/修改权限(例如WriteOwner、WriteDacl、WriteProperty)。
True – 低权限用户对易受攻击的模板具有注册或自动注册权限。
True – 模板允许指定自定义主题备用名称(SAN)(例如,欺骗域控制器FQDN)。
True – 模板包含或可以修改为包含服务器身份验证EKU (3.6.1.5.5.7.3.1)。
Note: 这使得证书可以用于LDAPS、Kerberos PKINIT 或SMB 等服务。
正确– CA 不需要批准证书颁发(无管理员或手动批准设置)。
正确– Kerberos (PKINIT)、LDAPS 或带有服务器身份验证EKU 的SMB 信任证书等服务。
正确– 攻击者可以请求包含任意SAN 条目的证书,例如域控制器的名称。
Note: ESC4 攻击也可能因疏忽而成功,尤其是在没有针对证书模板修改或可疑证书请求进行审核或警报的情况下。
修改Template: 攻击者添加服务器身份验证EKU 以启用基于证书的模拟。
请求Certificate: 攻击者使用Certipy-AD 等工具从修改后的模板请求证书。
检查/重新颁发证书: 确认滥用路径并生成更新的证书(如果修改)。
使用证书: 攻击者使用颁发的证书作为受信任的服务器(例如域控制器)进行身份验证。
危害域: 攻击者升级权限,获得域管理员权限并完全控制域。
主题备用名称(SAN): 包含DNS 名称或IP,如果修改则启用服务器模拟。
密钥用法: 指定加密函数,允许使用证书进行SSL/TLS 或Kerberos 身份验证。
EKU(扩展密钥用法): 定义证书的用法,攻击者可以在其中添加服务器身份验证EKU 来冒充受信任的服务器。
域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 包含各种工具
Tools: Impacket-psexec、certipy-ad、Metasploit
在域控制器上运行certtmpl.msc,然后导航到证书模板→ 管理。
复制“证书模板”模板
向下滚动并找到“代码签名”模板。
右键单击它→ 单击“复制模板”。
常规选项卡:
将模板显示名称设置为: ESC4
(可选)调整有效期- 默认1 年通常就足够了。
请求证书时会显示该名称
选择域用户
检查→写入
选择应用程序策略→ 单击编辑
然后点击确定确认发行请求
这种形式的ESC4 攻击可能会导致整个域受到损害。有效的ADCS 证书攻击缓解需要严格的权限控制和强化的证书模板配置。
目录
ESC4 攻击概述ESC4 攻击机制服务器身份验证EKU 结构先决条件实验室设置枚举和利用使用Certipy 的ESC4 攻击使用impacket-psexec 进行利用后横向移动权限升级
使用Metasploit 进行ESC4 攻击
缓解措施
ESC4 攻击概述
ADCS 中的ESC4 攻击是由于证书模板上的访问控制条目(ACE) 配置错误而引起的。当这些ACE 授予非预期或无特权的Active Directory 用户修改证书模板安全设置的能力时,攻击者就可以获得对该模板的控制权,从而使他们能够颁发具有提升权限的证书。当攻击者可以利用带有服务器身份验证EKU(扩展密钥用法)的证书来冒充受信任的服务器(例如域控制器)并获得对敏感资源的未经授权的访问时,这种攻击尤其危险。当满足以下条件时,ESC4攻击成为可能
True – 低权限用户对证书模板具有写入/所有者/修改权限(例如WriteOwner、WriteDacl、WriteProperty)。
True – 低权限用户对易受攻击的模板具有注册或自动注册权限。
True – 模板允许指定自定义主题备用名称(SAN)(例如,欺骗域控制器FQDN)。
True – 模板包含或可以修改为包含服务器身份验证EKU (3.6.1.5.5.7.3.1)。
Note: 这使得证书可以用于LDAPS、Kerberos PKINIT 或SMB 等服务。
正确– CA 不需要批准证书颁发(无管理员或手动批准设置)。
正确– Kerberos (PKINIT)、LDAPS 或带有服务器身份验证EKU 的SMB 信任证书等服务。
正确– 攻击者可以请求包含任意SAN 条目的证书,例如域控制器的名称。
Note: ESC4 攻击也可能因疏忽而成功,尤其是在没有针对证书模板修改或可疑证书请求进行审核或警报的情况下。
ESC4攻击机制
ESC4 攻击始于ADCS 中错误配置的证书模板,其中具有写入或完全控制权限的攻击者可以颁发服务器身份验证EKU 证书。这些受信任的证书使攻击者可以冒充域控制器等关键服务器,从而实现权限升级、未经授权的访问和整个域的入侵。攻击流程:
识别易受攻击的模板: 攻击者发现权限配置错误(例如写入、完全控制)的证书模板。修改Template: 攻击者添加服务器身份验证EKU 以启用基于证书的模拟。
请求Certificate: 攻击者使用Certipy-AD 等工具从修改后的模板请求证书。
检查/重新颁发证书: 确认滥用路径并生成更新的证书(如果修改)。
使用证书: 攻击者使用颁发的证书作为受信任的服务器(例如域控制器)进行身份验证。
危害域: 攻击者升级权限,获得域管理员权限并完全控制域。
服务器身份验证 EKU 结构
EKU(扩展密钥用法)是X.509 证书中的一个字段,用于定义证书的预期用途。服务器身份验证EKU 用于为在安全通信通道中对服务器进行身份验证而颁发的证书。它通常用于SSL/TLS 证书和域控制器等服务的Kerberos 身份验证。服务器身份验证 EKU 结构:
OID(对象标识符): 1.3.6.1.5.5.7.3.1: 定义服务器身份验证(SSL/TLS 或Kerberos)的证书。主题备用名称(SAN): 包含DNS 名称或IP,如果修改则启用服务器模拟。
密钥用法: 指定加密函数,允许使用证书进行SSL/TLS 或Kerberos 身份验证。
EKU(扩展密钥用法): 定义证书的用法,攻击者可以在其中添加服务器身份验证EKU 来冒充受信任的服务器。
先决条件
Windows Server 2019 作为支持PKINIT 的Active Directory域必须配置Active Directory 证书服务和证书颁发机构。
Kali Linux 包含各种工具
Tools: Impacket-psexec、certipy-ad、Metasploit
实验室设置
首先启动证书模板控制台:在域控制器上运行certtmpl.msc,然后导航到证书模板→ 管理。
复制“证书模板”模板
向下滚动并找到“代码签名”模板。
右键单击它→ 单击“复制模板”。
配置新模板
将出现一个新窗口,其中包含多个选项卡,请一一浏览。常规选项卡:
将模板显示名称设置为: ESC4
(可选)调整有效期- 默认1 年通常就足够了。
请求证书时会显示该名称
配置主题名称选项卡:
选择: 从此Active Directory 信息构建选择: 使用者名称格式为无检查: 用户主体名称(UPN) 注: 将此项设置为“无”将使用使用者名称的默认Active Directory 信息,无需任何其他格式或自定义。
配置安全选项卡
单击“添加”→ 输入“域用户”→ 单击“确定”选择域用户
检查→写入
配置扩展选项卡
转到“扩展”选项卡选择应用程序策略→ 单击编辑
编辑窗口内:
单击添加,然后选择服务器身份验证
然后点击确定确认发行请求