Rust製のオールインワンActive Directoryエクスプロイトフレームワーク: LDAP/SMB/Kerberos列挙、攻撃グラフのパス探索、Kerberoasting、NTLMリレー、チケット偽造、DCSync、レポート作成を単一の静的バイナリに統合。
Active Directory エクスプロイトフレームワーク。
すべての玉座は堕ちる。Overthrone がそれを確実にする。
これは何か · インストール · ワードリスト · コマンド · ウィザードの使い方 · アーキテクチャ · 機能 · 使用例 · FAQ
中世の戦争で城を落とすには、攻城技師、斥候、騎兵、弓兵、坑道兵、そして内側から門を開ける誰かが必要だった。Active Directory のペネトレーションテストはまさにそれだ。ただし城は Fortune 500 企業で、門は設定ミスのグループポリシーで、「内側の誰か」は Windows Server 2008 がモダンと見なされていた頃から一度もローテーションされていない Password123! を持つサービスアカウントである。
Overthrone は、キルチェーン全体を処理する全領域対応の AD レッドチームフレームワークだ。「ネットワークアクセスと夢がある」状態から「このフォレストの全ドメインを掌握し、それを証明する 47 ページの PDF がここにある」状態までをカバーする。Rust で構築されているのは、C2 フレームワークにもメモリ安全性がふさわしいからであり、エンゲージメント中に use-after-free バグをデバッグすることが信頼問題(Active Directory 的なものと個人的なものの両方)を育む方法だからだ。
これはスキャナではない。これは「Mimikatz を Rust で動かす」ツールではない。これは、変な目で見ただけで壊れるような、また別の Python ラッパーでもない。これは攻城エンジンそのものだ。単一バイナリ。最小限のランタイム依存関係*。すべての後悔(ブルーチームにとっての)。
省略形: すべてのコマンドは
overthroneとovtの両方で動作する。3 文字で済むのに 10 文字打つには人生は短すぎるからだ。ovt wizard=overthrone wizard。Active Directory に対する同じ戦争犯罪を、より少ないキーストロークで。
⚠️ 非推奨のお知らせ: 以前のベータ版にあった
ovt auto-pwnコマンドは削除され、ovt wizardに置き換えられた。筋肉記憶がまだauto-pwnと打ってしまう場合も心配はいらない - 指はそのうち適応する。ウィザードは auto-pwn が成長したときにずっと望んでいたものだ: インタラクティブで、再開可能で、Q ラーニングで最適化され、ステージごとの一時停止/承認機能により、デモ中に誤って DCSync してしまうことを防ぐ。
*バイナリは約 35 個の Rust クレート(Tokio、ldap3、kerberos_asn1 など)で静的リンクされている - Python も .NET も JVM も不要。SMB ファイル操作、smbclient 風シェル(ovt smb shell)、RPC(ovt rpc、rpcclient コマンドセット)、リモート実行はすべて内蔵の純粋な Rust 製 SMB2 クライアント上で動作する。外部の smbclient バイナリは、内蔵クライアントがネゴシエーションできないホストでの最後の手段としてのみ使用される。
sequenceDiagram
participant Op as Operator
participant CLI as overthrone-cli
participant PILOT as overthrone-pilot
participant REAPER as overthrone-reaper
participant HUNTER as overthrone-hunter
participant FORGE as overthrone-forge
participant CORE as overthrone-core
participant DC as Domain Controller
Note over Op,DC: Phase 0: Initial Access (T1078)
Op->>CLI: ovt enum / scan / kerberos commands
CLI->>CORE: TCP/TLS connect to target
Note over CLI,DC: Phase 1: Discovery & Enumeration (T1087, T1069, T1482)
CLI->>REAPER: enum_all(target, domain, credentials)
REAPER->>CORE: LDAP bind + paginated search
CORE->>DC: LDAP query (port 389/636)
DC-->>CORE: RootDSE + namingContexts
CORE->>DC: Search base DN: users, groups, computers
DC-->>CORE: LDAP entries with attributes
CORE-->>REAPER: Structured ADData
Note over REAPER: Enrich: LAPS v1/v2 decrypt, GPP decrypt,<br/>Snaffler share crawl, ADCS template scan
REAPER-->>CLI: ADData { users, groups, trusts, ACLs,<br/>GPOs, LAPS, SPNs, delegations }
Note over CLI,DC: Phase 2: Attack Graph Analysis (TA0007)
CLI->>CORE: build_graph(ADData)
CORE->>CORE: petgraph DiGraph construction<br/>30+ edge types with weighted costs
CORE->>CORE: Reverse Dijkstra from Domain Admins
CORE-->>CLI: AttackGraph + shortest paths to goal
Note over CLI: Output: Path from current position to DA,<br/>broken down hop-by-hop with technique
Note over CLI,DC: Phase 3: Credential Access (T1558, T1110)
CLI->>HUNTER: kerberoast(SPN accounts)
HUNTER->>CORE: TGS-REQ for each SPN
CORE->>DC: TCP:88 → Kerberos TGS exchange
DC-->>CORE: TGS-REP with encrypted ticket
CORE-->>HUNTER: ServiceTicket hash (etype 17/18/23)
HUNTER->>HUNTER: Offline crack: embedded wordlist +<br/>rayon parallel + rule engine
HUNTER-->>CLI: CrackedCredentials
CLI->>HUNTER: password_spray(userlist, candidates)
HUNTER->>CORE: Kerberos AS-REQ for each user
CORE->>DC: pre-auth attempt (TCP:88)
DC-->>CORE: KDC error or success
CORE-->>HUNTER: SprayResult { valid, locked, exists }
HUNTER-->>CLI: SprayResults with lockout-safe delay