Sauron
新たに取得した Active Directory 資格情報に対する高速なコンテキスト列挙ツール。
なぜ Sauron なのか?
新しい資格情報(パスワードスプレー、フィッシング、ハッシュリプレイなど)を取得したとき、まず必要なのはコンテキストです。このアカウントの正体は何か?どのグループ(直接およびネスト)に属しているのか?どの OU に存在するのか?説明文から、その役割や紐づくアプリケーションは分かるか?Sauron はこれらを、1 回の実行で数秒のうちに回答します。
主な目的:孤立した 1 つの資格情報を、AD 内および企業グループや説明を再利用するサードパーティ製ソフトウェア/サービスにおける潜在的な能力のメンタルマップへと素早く変換すること。
主な機能
- sAMAccountName、識別名 (Distinguished Name)、SID によるオブジェクト種別(ユーザー、コンピューター、MSA/gMSA、FSP)の自動判別
- LDAP ルール
1.2.840.113556.1.4.1941を用いたネストグループ解決 + SID によるプライマリグループ解決 - オブジェクトからドメインルートまでの組織階層(OU/コンテナ)の抽出
- メタデータ抽出:説明、メモ、役職、部署、マネージャー、adminCount など
- リンクされた OU に対する GPO 列挙と、適用強制状態の解釈
- 接続フォールバック:LDAPS → 非セキュア LDAPS → strongAuthRequired 検出付き LDAP
- LDAP リクエスト数と詳細ログを出力するデバッグモード
- オブジェクト詳細、グループメンバーシップ、組織単位、ポリシー継承の構造化出力
典型的なポストスプレーのワークフロー
- 有効な資格情報を取得する(たとえば SpearSpray を使うなど)
- 取得したアカウントに対して Sauron を実行する(機微なグループに属しているものはあるか?)
- 説明文やグループ名から暗黙的なロールを抽出する
- 次のステップを決定する:権限昇格、ラテラルムーブメント、アプリケーションへのピボット、報告など
Sauron の出力の読み解き方
オブジェクト属性
| 属性 | 意味 | セキュリティコンテキスト |
|---|---|---|
sAMAccountName |
アカウントのログイン名 | 認証のための主な識別子 |
DisplayName |
人間が読むためのフルネーム | ユーザー名と異なる場合、役割/機能が分かることが多い |
DN |
識別名 (Distinguished Name) | 正確な AD 上の位置と組織構造を示す |
Description |
自由記述の説明 | 重要:アクセスの詳細、アプリケーション参照、機能的な役割が記載されていることが多い |
Notes (info) |
追加の自由記述情報 | 重要:特定の権限、アクセス範囲、運用上の詳細が含まれる場合がある |
Title |
役職 | 組織内での権限レベルを示す |
Department |
部署/事業部 | 潜在的なアクセス範囲や利用システムの範囲を示す |
Email |
メールアドレス | 連絡先情報および外部からのアクセスベクターとなり得る |
UPN |
ユーザー プリンシパル名 | 代替ログイン形式(user@domain) |
userAccountControl |
アカウント状態フラグ | 重要:アカウント状態(無効化、ロック、パスワードポリシー、委任信頼など)を示す |
Last Logon |
直近の認証日時 | アカウントの活動レベルを示す(古いアカウント = 潜在的な標的) |
Password Last Set |
パスワード変更タイムスタンプ | パスワードの経過日数を示す |
Manager |
直属の上長の DN | ソーシャルエンジニアリングやエスカレーションパスの候補 |
adminCount |
保護対象オブジェクトフラグ | 1 = 高権限アカウント(Domain Admins など) |
primaryGroupID |
デフォルトグループ RID | 通常は Domain Users (513)、Computers (515)、Controllers (516) |
objectSid |
セキュリティ識別子 | アクセス制御判断のための一意な ID |
グループ情報
| フィールド | 意味 | セキュリティコンテキスト |
|---|---|---|
Description |
グループの目的 | 重要:サードパーティアプリ(AWS、Jenkins、VMware など)へのアクセスが分かる場合がある |
Notes (info) |
追加の詳細 | 特定の権限やアクセス範囲が記載されていることが多い |
managedBy |
グループ管理者の DN | 管理連絡先であり、必ずしも編集権限を持つとは限らない |
DN |
グループの位置 | 組織的なスコープ(ドメイン全体か OU 固有か)を示す |
OU/コンテナ情報
| フィールド | 意味 | セキュリティコンテキスト |
|---|---|---|
Name (Type) |
OU/コンテナの表示名 | 組織種別(OU/Container)付きの人間が読みやすい名称 |
DN |
完全な識別名 | AD 階層内の完全なパス |
Description |
OU の目的 | 環境(本番/開発)や機能を示す場合がある |
Managed By |
OU 管理者の DN | 組織単位の管理連絡先 |
gPOptions |
グループポリシー継承設定 | ポリシーが階層下にどのように流れるかを制御する |
GPO Links |
適用されているポリシー | 継承されるセキュリティ設定や制限を示す |
GPO の詳細
| フィールド | 意味 | セキュリティコンテキスト |
|---|---|---|
displayName |
ポリシーの分かりやすい名前 | 目的(セキュリティ、ソフトウェア配布など)が示されていることが多い |
Description |
ポリシーの詳細 | 適用される制限やソフトウェアが分かる場合がある |
SYSVOL Path |
ファイルシステム上の場所 | ポリシーの保存場所とバージョン管理を示す |
versionNumber |
ポリシーバージョン | 数値が大きいほど最近変更されたことを示す |
Created |
ポリシー作成日 | ポリシーが最初に実装された時期を示す |
Last Modified |
ポリシー変更日 | 重要:最近の変更は、積極的に管理されていることを示す場合がある |
DN |
ポリシーの識別名 | AD のポリシーコンテナ内での位置 |
gPLink flags |
リンクの強制状態 | 下記の GPO リンクオプションを参照 |
GPO リンクオプション(フラグ)
| フラグ | 状態 | 強制 | 説明 |
|---|---|---|---|
0 |
有効 | 非強制 | 標準的なポリシー適用。継承によりブロックされる可能性がある |
1 |
無効 | 非強制 | ポリシーは無効で、適用されない |
2 |
有効 | 強制 | ポリシーは強制され、継承によってブロックできない |
3 |
無効 | 強制 | ポリシーは無効だが、強制としてマークされている |
インストール & 使い方
ソース: meterpreter.org