
Certighost POC
Esta é uma ferramenta de prova de conceito para demonstrar a CVE-2026-54121, também conhecida como Certighost. Leia a análise detalhada aqui: https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26
A prova de conceito é um script Python autocontido. Ele requer impacket, cryptography, pyasn1, asn1crypto e dnspython.
sudo pip install --break-system-packages git+https://github.com/fortra/impacket.git cryptography pyasn1 asn1crypto pycryptodome dnspython
Execute como root, pois os serviços LDAP e SMB falsos escutam nas portas privilegiadas 389 e 445.
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
Uma execução bem-sucedida grava o certificado alvo (.pfx) e o cache Kerberos (.ccache) no diretório atual.
GHOSTABCDEFGH$) ou reutiliza uma fornecida via --computer-name.cdc apontando para um IP controlado (via --listener; opcional, detectado automaticamente se omitido) além de um atributo rmd contendo o nome DNS do DC alvo.STATUS_NOLOGON_SERVER_TRUST_ACCOUNT. O certighost agora inclui um hotpatch próprio no script para o caminho NetLogon do SMB falso (definindo o bit E 0x20 juntamente com o bit K 0x800 em ParameterControl, de acordo com MS-NRPC 2.2.1.4.15), de modo que o exploit funcione contra uma CA hospedada em um Domain Controller sem se preocupar em instalar uma versão diferente/fork do Impacket.EDITF_ATTRIBUTESUBJECTALTNAME2 / ESC6), a solicitação de certificado agora define a identidade SAN:dns para o nome DNS do DC alvo (rmd_value) em vez do computador falso, evitando KDC_ERR_CLIENT_NAME_MISMATCH na etapa PKINIT. Em modelos baseados em AD, o SAN da solicitação é ignorado, portanto a alteração é um no-op seguro.