
UpdatedAug 1, 2026
CVE-2026-54121 — Updated!
Certighost POC
CVE-2026-54121 (Certighost)
これは、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
使用方法
不正なLDAPおよびSMBサービスは特権ポート389および445で待ち受けるため、rootとして実行してください。
sudo python3 certighost.py -d playground.local -u lowpriv -p 'Password1234' --dc-ip 192.168.1.10
実行に成功すると、ターゲットの証明書(.pfx)とKerberosキャッシュ(.ccache)がカレントディレクトリに書き込まれます。
このスクリプトが行うこと
- 新しいコンピューターアカウント(例:
GHOSTABCDEFGH$)を作成するか、--computer-nameで渡されたアカウントを再利用します。 - 2つの不正リスナーを起動します: ポート445のSMB/LSAサーバーと、ポート389のLDAPサーバー。
- そのコンピューターアカウントとして証明書要求を送信し、制御下にあるIPを指すカスタム
cdc属性(--listenerで指定。省略時は自動検出)と、ターゲットDCのDNS名を保持するrmd属性を埋め込みます。 - CAは不正なLSA/LDAPリスナーに接続し直します。リスナーは作成したアカウントとして認証し(Netlogonを介して実際のDCによって検証されます)、CAのルックアップに対して、代わりにターゲットDCのID(sAMAccountName、SID、dNSHostName)を返答します。
- CAはDCに属する有効な証明書を発行します。
- スクリプトはまた、DCのpfxを使用してPKINITを実行し、.ccacheとNTハッシュを要求します。
タイムライン
- 2026年7月28日 —
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT問題を修正したPRに対して @GregDurys に謝意を表します。certighostには現在、不正SMB NetLogonパスに対する適切なスクリプト内ホットパッチが同梱されています(MS-NRPC 2.2.1.4.15に従い、ParameterControlのKビット0x800とともにEビット0x20を設定します)。これにより、別の/フォークされたImpacketバージョンをインストールすることを心配せずに、ドメインコントローラー上でホストされているCAに対してエクスプロイトが機能します。 - 2026年7月28日 — リクエストSANの修正に言及してくれた @Hack0ura に謝意を表します。リクエストで指定されたSANを尊重するCA(
EDITF_ATTRIBUTESUBJECTALTNAME2/ ESC6)では、証明書リクエストはSAN:dnsIDを不正コンピューターのものではなく、ターゲットDCのDNS名(rmd_value)に設定するため、PKINITステップでのKDC_ERR_CLIENT_NAME_MISMATCHを回避します。ADテンプレートからの構築ではリクエストSANは無視されるため、この変更は安全なno-opです。