CertiHound - AD CS BloodHound 列挙 チートシート
CertiHound は Active Directory Certificate Services(AD CS)列挙ツール。証明書テンプレートと CA 設定を LDAP 経由で収集し、BloodHound CE 互換形式でエクスポートします。PKI ノードと証明書悪用エッジ(ESC1–ESC スタイル攻撃パス)を BloodHound グラフに追加して、証明書ベースの権限昇格が古典的な AD 攻撃パスと並んで表示されるようにします。Certipy の ADCS 悪用と BloodHound の攻撃パス可視化のギャップを埋めます。
認可評価のみを対象。AD CS の列挙にはドメイン認証情報と許可が必要。
インストール
| 方法 | コマンド |
|---|
| pip | pip install certihound |
| ソースから | リポジトリを git clone して、 pip install -e . 実行 |
| 要件 | ドメインへの LDAP アクセス。表示用に BloodHound CE v6 |
| 確認 | certihound --help |
AD CS データ収集
certihound -u analyst -p '***' -d example.local \
-dc dc01.example.local -o output/
| フラグ | 目的 |
|---|
-u, --username | ドメインユーザー |
-p, --password | パスワード(またはハッシュ/Kerberos) |
-d, --domain | ターゲットドメイン |
-dc, --domain-controller | LDAP クエリ用 DC |
-o, --output | JSON 出力ディレクトリ |
--ldaps | LDAPS(636)を使用 |
出力は BloodHound CE にインポートする JSON ファイル群です。
列挙対象
| AD CS オブジェクト | 重要な理由 |
|---|
| 認証局 | 登録/CA 設定、web 登録 |
| 証明書テンプレート | ESC 設定ミスの中核 |
| 登録権 | 誰がどのテンプレートをリクエストできるか |
| テンプレートフラグ | ENROLLEE_SUPPLIES_SUBJECT 、EKU など |
| CA 権限 | ManageCA / ManageCertificates 権限 |
表示される ESC 攻撃パス
| ESC | 設定ミス |
|---|
| ESC1 | テンプレートがサブジェクト + auth EKU 提供を許可 |
| ESC2 | 任意用途 EKU テンプレート |
| ESC3 | 登録エージェントテンプレート |
| ESC4 | 脆弱なテンプレート ACL(書き込み可能テンプレート) |
| ESC6 | CA 上の EDITF_ATTRIBUTESUBJECTALTNAME2 |
| ESC7 | 脆弱な CA 権限 |
| ESC8 | AD CS web 登録への NTLM リレー |
CertiHound はこれらをエッジとしてエンコードしており、BloodHound は低権限ユーザーから Domain Admin へ証明書悪用を経由したパスを追跡できます。
BloodHound CE へのインポート
| ステップ | 実行方法 |
|---|
| 1 | CertiHound を実行して JSON を生成 |
| 2 | BloodHound CE で、Ingest UI/API 経由で JSON をアップロード |
| 3 | PKI ノード/エッジがグラフに表示される |
| 4 | AD CS を走査する高価値ターゲットへのパスをクエリ |
一般的なワークフロー
# AD CS を列挙して証明書攻撃パスを BloodHound CE にロード
certihound -u audit -p '***' -d corp.local -dc dc.corp.local -o adcs/
# → adcs/*.json を BloodHound CE にアップロード。以下をクエリ:
# "shortest path to Domain Admins" (PKI エッジ含む)
# 実際の悪用には Certipy と組み合わせ
AD CS ツールキットの中での CertiHound
リソース