
Python-инструмент для разведки, предназначенный для обнаружения служб Azure и определения принадлежности тенанта через проверку DNS, многосервисное зондирование и анализ ответов. Поддерживает параллельное сканирование, генерацию перестановок и несколько форматов экспорта.
Инструмент разведки на Python, предназначенный для обнаружения служб Azure и определения принадлежности клиента на основе их ответов.
Этот инструмент помогает исследователям безопасности, специалистам по пентесту и администраторам Azure обнаруживать ресурсы Azure, связанные с конкретными идентификаторами клиентов (tenant ID).
Проверяет имена ресурсов для 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: URL обнаруженного ресурсаresource_type: тип службы Azuretenant_id: извлеченный tenant 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 | Файл со списком ресурсов (по одному в строке) | -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 | Фильтровать результаты по tenant ID | -t "tenant-id" |
-p, --permutations | Сгенерировать перестановки имен ресурсов | -p |