アップデート一覧に戻る
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)がカレントディレクトリに書き込まれます。

このスクリプトが行うこと

  1. 新しいコンピューターアカウント(例: GHOSTABCDEFGH$)を作成するか、--computer-name で渡されたアカウントを再利用します。
  2. 2つの不正リスナーを起動します: ポート445のSMB/LSAサーバーと、ポート389のLDAPサーバー。
  3. そのコンピューターアカウントとして証明書要求を送信し、制御下にあるIPを指すカスタム cdc 属性(--listener で指定。省略時は自動検出)と、ターゲットDCのDNS名を保持する rmd 属性を埋め込みます。
  4. CAは不正なLSA/LDAPリスナーに接続し直します。リスナーは作成したアカウントとして認証し(Netlogonを介して実際のDCによって検証されます)、CAのルックアップに対して、代わりにターゲットDCのID(sAMAccountName、SID、dNSHostName)を返答します。
  5. CAはDCに属する有効な証明書を発行します。
  6. スクリプトはまた、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:dns IDを不正コンピューターのものではなく、ターゲットDCのDNS名(rmd_value)に設定するため、PKINITステップでの KDC_ERR_CLIENT_NAME_MISMATCH を回避します。ADテンプレートからの構築ではリクエストSANは無視されるため、この変更は安全なno-opです。

参照

カテゴリ