
Azure RedOpsは、Microsoft Entra IDのセキュリティ態勢を評価するためのオフェンシブセキュリティツールキットです。
Azure / Entra ID レッドチーム運用のためのスイスアーミーナイフ的ツール。
作者: Mr.Un1k0d3r (TrueCyber Inc) バージョン: 0.1 言語: Python 3.12+
AzureRedOps は、Microsoft Entra ID と Azure テナントのセキュリティ態勢を評価するためのオフェンシブセキュリティツールキットです。認証、トークン管理、ディレクトリ列挙、特権チェック、パスワードスプレー、Microsoft Graph に対する侵害後アクションといった、よく使われるレッドチームワークフローを、一貫した --activity 駆動の CLI の背後にまとめています。
すべての操作は -a/--activity で選択します。認証中に取得したトークンはローカルにキャッシュされ(.azure_creds)、-l/--load-access-token で名前を指定して再利用できるため、生の JWT を貼り付ける必要はほとんどありません。
このツールの詳細は CYPFER ブログ をご覧ください。
.azure_creds)でアクセストークン/更新トークンを保存、一覧表示、デコード/表示、削除します。どのフローでも -s/--save と -n/--name を使うと、トークンを自動的に永続化できます。auth) — ユーザー名/パスワードによる直接認証。phish-start / phish-capture) — OAuth デバイス認可グラントを悪用し、ターゲットが microsoft.com/devicelogin でユーザーコードを入力したときに発行されるトークンを取得します。デフォルトで自動キャプチャされます。auth-app) — カスタムアプリケーション登録に対する完全な Authorization Code + PKCE フロー。組み込みのローカル HTTPS リスナーがリダイレクトを受信して提供します。auth-interactive) — 実際のブラウザ(Playwright。デフォルトは Firefox、-br で切替)を操作し(MFA / 条件付きアクセス / SSO に対応)、記録されたセッション HAR からすべてのトークンを収穫します。refresh) — 更新トークンを新しいアクセストークンと交換します。obo) — 発行済みのアクセストークンを、下流リソースにスコープされた新しいトークンと交換します(OAuth 2.0 jwt-bearer / OBO)。browser-sso) — 対象の Web アプリ(Outlook on the web、Teams、SharePoint、Azure ポータルなど)に対して、ユーザーとして認証済みの実際のブラウザを直接開きます。-aprt/--auto-prt を使用すると、更新トークンから Primary Refresh Token (PRT) Cookie を自動的に生成し(デバイス登録 → PRT → x-ms-RefreshTokenCredential)、新しいブラウザで手動ログインなしにシングルサインオンを完了します。gather-all コレクター。spray)と、クロスアプリ更新トークンスプレー(spray-refresh)。magic-app は AllPrincipals 同意を持つ公開リダイレクト可能なアプリを検出します。既知/注目すべき Microsoft アプリ ID の組み込みリストも含みます。requirements.txt を参照):
PyJWTrequestsplaywrightcryptography (browser-sso -aprt、つまり自動 PRT フローの場合のみ必要)auth-interactive、browser-sso)用の Playwright ブラウザランタイム。
Firefox がデフォルトのエンジンです(-br/--browser)。次のコマンドでインストールしてください:
python -m playwright install firefox。includes/web/cert.pem および includes/web/key.pem に配置します
(auth-app PKCE フローの場合のみ必要 — 注記 を参照)。git clone AzureRedOps cd AzureRedOps
python3 -m venv AzureRedOps source AzureRedOps/bin/activate # Linux / macOS
pip install -r requirements.txt
python -m playwright install firefox
ツールを実行してください:```bash
python3 AzureRedOps.py -a <activity> [options]
一般的な呼び出しパターンは次のとおりです:```bash python3 AzureRedOps.py -a [authentication] [activity options] [global options]
### トークンの提供
Microsoft Graph を呼び出すアクティビティにはアクセス トークンが必要です。指定方法は 2 つあります:
| 方法 | フラグ | 例 |
|--------|------|---------|
| 生のトークンを渡す | `-ac, --access-token` | `-ac eyJ0eXAi...` |
| 名前でキャッシュされたトークンを読み込む | `-l, --load-access-token` | `-l mytoken` |
`-l` を使用すると、一致する `access_token` (および、該当する場合は `refresh_token`
と `tenant`) が `.azure_creds` ストアから読み取られます。
### トークンのファイルへの保存 (`-s` / `-n`)
トークンを取得するアクティビティ(`auth`、`auth-app`、`auth-interactive`、
`phish-start`/`phish-capture`、`refresh`)は、`-s/--save` を `-n/--name` と
一緒に追加することで、ローカル資格情報ストア (`.azure_creds`) に
**自動的に永続化**できます:```bash
# Authenticate and save the resulting tokens under the name "victim1"
python3 AzureRedOps.py -a auth -u [email protected] -p 'P@ssw0rd!' -tid <tenant-guid> -s -n victim1
-s/--save は自動保存を有効にします。-n/--name が必要です — -n がない場合、ツールはエラーで終了します。-n/--name は、トークンが保存されるキーです。後で、生の JWT を貼り付ける代わりに -l victim1 で再利用したり、-a view -n victim1 で表示したり、-a delete -n victim1 で削除したりできます。auth-interactive アクティビティは常に自動保存され、-n が指定されていない場合は対話的に名前の入力を求められます。-j)ほとんどの列挙アクティビティ(list-users、list-applications、list-principals、gather-all、raw-url)は、-j/--json <filename> を受け付け、生の API レスポンスを印刷する代わりに(または印刷に加えて)JSON ファイルに書き込みます。```bash
python3 AzureRedOps.py -a list-users -l victim1 -j users.json
For `gather-all`, 指定されたファイル名はサフィックスとして使用され、Graph エンドポイントごとに 1 つのファイルが書き込まれます
(例: `users-<name>`、`groups-<name>`、...)。
> ヒント: `-j` は構造化された JSON エクスポートを制御し、`-re/--redirect-to-file` は
> 整形されたコンソール出力を `output.txt` にミラーリングします。これら 2 つは独立しています。
### テナント識別子
- `-t, --tenant` は**ドメイン名**(例: `contoso.com`)を指定し、`id` アクティビティで使用されます。
- `-tid, --tenant-id` は**テナント GUID** または `common` を指定し、認証アクティビティで使用されます。
---
## コマンドラインオプション