
UpdatedAug 1, 2026
CVE-2026-54121 — Updated!
Certighost POC
CVE-2026-54121 (Certighost)
Это proof-of-concept инструмент для демонстрации CVE-2026-54121, также известного как Certighost. Подробный анализ читайте здесь: https://gist.github.com/H0j3n/a5ef2609b5f2944ac2390a191a534c26
Установка зависимостей
Proof of concept представляет собой автономный 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. - Запускает два поддельных слушателя: SMB/LSA-сервер на порту 445 и LDAP-сервер на порту 389.
- Отправляет запрос на сертификат от имени этой учётной записи компьютера, встраивая настраиваемый атрибут
cdc, указывающий на контролируемый IP (через--listener; необязательно, автоматически определяется, если опущен), а также атрибутrmd, содержащий DNS-имя целевого DC. - CA подключается обратно к поддельным LSA/LDAP-слушателям. Они аутентифицируются как созданная учётная запись (проверенная через реальный DC по Netlogon) и отвечают на запросы CA идентичностью целевого DC (sAMAccountName, SID, dNSHostName).
- CA выдаёт действительный сертификат, принадлежащий DC.
- Скрипт также выполняет PKINIT с использованием pfx DC для запроса .ccache и NT-хэша.
Хронология
- 28 июля 2026 — Благодарность @GregDurys за PR, исправляющий проблему
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT.certighostтеперь содержит надлежащий внутрискриптовый хотпатч поддельного пути SMB NetLogon (устанавливающий бит E0x20вместе с битом K0x800вParameterControl, согласно MS-NRPC 2.2.1.4.15), поэтому эксплойт работает против CA, размещённого на контроллере домена, без необходимости установки другой/форкнутой версии Impacket. - 28 июля 2026 — Благодарность @Hack0ura за упоминание исправления request-SAN. На CA, который учитывает SAN, переданные в запросе (
EDITF_ATTRIBUTESUBJECTALTNAME2/ ESC6), запрос на сертификат теперь устанавливает идентичностьSAN:dnsв DNS-имя целевого DC (rmd_value) вместо имени поддельного компьютера, избегаяKDC_ERR_CLIENT_NAME_MISMATCHна этапе PKINIT. Для шаблонов, создаваемых из AD, SAN из запроса игнорируется, поэтому изменение безопасно и ничего не меняет (no-op).