这是一个用于演示 CVE-2026-54121(又名 Certighost)的概念验证工具。详细分析请参阅 https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26。
该概念验证是一个自包含的 Python 脚本。它需要 impacket、cryptography、pyasn1、asn1crypto 和 dnspython。
sudo pip install --break-system-packages git+https://github.com/fortra/impacket.git cryptography pyasn1 asn1crypto pycryptodome dnspython
请以 root 身份运行,因为恶意 LDAP 和 SMB 服务需要监听高权限端口 389 和 445。
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
成功执行后,目标证书(.pfx)和 Kerberos 缓存(.ccache)将写入当前目录。
GHOSTABCDEFGH$),或复用通过 --computer-name 传入的账户。cdc 属性,指向受控 IP(通过 --listener 指定;可选,若省略则自动检测),并附带一个 rmd 属性,携带目标 DC 的 DNS 名称。STATUS_NOLOGON_SERVER_TRUST_ACCOUNT 问题的 PR。certighost 现在内置了针对恶意 SMB NetLogon 路径的脚本内热补丁(根据 MS-NRPC 2.2.1.4.15,在 ParameterControl 中于 K 位 0x800 之外同时设置 E 位 0x20),因此该漏洞利用可针对托管在域控制器上的 CA 生效,而无需担心安装不同/分叉版本的 Impacket。EDITF_ATTRIBUTESUBJECTALTNAME2 / ESC6),证书请求现在将 SAN:dns 身份设置为目标 DC 的 DNS 名称(rmd_value),而非恶意计算机的名称,从而避免在 PKINIT 阶段出现 KDC_ERR_CLIENT_NAME_MISMATCH。在基于 AD 构建的模板上,请求 SAN 会被忽略,因此该更改是安全的空操作。