
Azure サービスを発見し、その応答に基づいてテナント所有権情報を特定するために設計された Python 製偵察ツールです。
このツールは、セキュリティ研究者、ペネトレーションテスター、Azure 管理者が特定のテナント ID に関連付けられた Azure リソースを発見するのに役立ちます。
6 種類の Azure サービスとそのサブドメインに対してリソース名をテストします:
.azurewebsites.net および .scm.azurewebsites.net)dev.azure.com).vault.azure.net).blob.core.windows.net).sharepoint.com).azuredatabricks.net)ツールをクローンまたはダウンロードします:
git clone https://github.com/NetSPI/ATEAM.git
cd ATEAM
必要な依存関係をインストールします:
pip install -r requirements.txt
または手動でインストールします:
pip install requests dnspython urllib3
インストールを確認します:
python ateam.py --help
単一のリソースをスキャン:
python ateam.py -r "myapp"
複数のリソースをスキャン:
python ateam.py -r "app1" "app2" "app3"
テキストファイルのリソースリストからスキャン:
python ateam.py -f resources.txt
(20)ワーカーを使用した詳細出力:
python ateam.py -f resources.txt -v -w 20
順列を生成してスキャン:
python ateam.py -f resources.txt -p
より小さいバッチサイズで順列を生成(大規模スキャンに推奨):
python ateam.py -f resources.txt -p -b 100
結果を HTML にエクスポート:
python ateam.py -e html
データベースをクリアして最初からやり直す:
python ateam.py -f resources.txt --clear
ATEAM/
├── ateam.py # Main script
├── requirements.txt # Python dependencies
├── permutations.txt # Resource name permutations
└── README.md # This file
permutations.txt ファイルには、リソース名のバリエーションを生成するための一般的な接頭辞と接尾辞が含まれています:
dev
prod
test
staging
api
web
...
これにより、次のような組み合わせが生成されます:
devmyappmyappdevprodmyappmyapp-prod結果は以下のスキーマで azure_tenants.db(SQLite)に保存されます:
resource_uri: 検出されたリソース URLresource_type: Azure サービスの種類tenant_id: 抽出されたテナント IDdiscovered_at: 検出時刻のタイムスタンプ2025-06-27 14:37:39 - INFO - Found Storage Account tenant ID 72f988bf-86f1-41af-91ab-2d7cd011db47 for mars
2025-06-27 14:37:40 - INFO - Found App Service SCM tenant ID 'common' for notarealapplication
2025-06-27 14:37:47 - INFO - Found Key Vault tenant ID 72f988bf-86f1-41af-91ab-2d7cd011db47 for mdo
Resource URI Type Tenant ID Discovered At
-----------------------------------------------------------------------------------------------------------------
hanover.scm.azurewebsites.net AppServices-SCM 72f988bf-86f1-41af-91ab-2d7cd011db47 2025-06-27 21:37:41
dev.azure.com/microsoft DevOps 72f988bf-86f1-41af-91ab-2d7cd011db47 2025-06-27 21:37:12
mdo.vault.azure.net KeyVault 72f988bf-86f1-41af-91ab-2d7cd011db47 2025-06-27 21:37:47
mars.blob.core.windows.net StorageAccount 72f988bf-86f1-41af-91ab-2d7cd011db47 2025-06-27 21:37:46
⚠️ 重要: リソースをスキャンする前に、必ず適切な権限があることを確認してください。無許可のスキャンは、利用規約や関連法規に違反する可能性があります。
詳細な情報を得るために詳細ログを有効にできますが、出力が多くなりすぎる場合があります:
python ateam.py -f resources.txt -v
順列を使用する際に「killed」というメッセージが表示される場合は、バッチサイズを小さくしてみてください:
python ateam.py -f resources.txt -p -b 100 -w 5
これにより、メモリ枯渇を防ぐため、より少ない同時ワーカー数でリソースを小さなバッチに分けて処理します。
貢献を歓迎します!お気軽に以下を送信してください:
| オプション | 説明 | 例 |
|---|
-f, --file | リソースを含むファイル(1 行に 1 つ) | -f resources.txt |
-r, --resources | スペース区切りのリソースリスト | -r "app1" "app2" |
-w, --workers | 同時ワーカー数(デフォルト: 10) | -w 20 |
-b, --batch-size | バッチあたりのリソース数(デフォルト: 1000) | -b 100 |
-v, --verbose | 詳細ログを有効化 | -v |
-l, --list | すべてのデータベースエントリを一覧表示 | -l |
-e, --export | 結果をエクスポート(csv、json、html) | -e html |
--clear | スキャン前にデータベースをクリア | --clear |
-t, --tenant | テナント ID で結果をフィルタリング | -t "tenant-id" |
-p, --permutations | リソース名の順列を生成 | -p |