
Una herramienta de reconocimiento en Python diseñada para descubrir servicios de Azure y atribuir información sobre la propiedad del tenant basándose en sus respuestas.
Esta herramienta ayuda a investigadores de seguridad, pentesters y administradores de Azure a descubrir recursos de Azure asociados con IDs de tenant específicos.
Prueba nombres de recursos contra 6 servicios diferentes de Azure y sus subdominios:
.azurewebsites.net y .scm.azurewebsites.net)dev.azure.com).vault.azure.net).blob.core.windows.net).sharepoint.com).azuredatabricks.net)Clona o descarga la herramienta:
git clone https://github.com/NetSPI/ATEAM.git
cd ATEAM
Instala las dependencias requeridas:
pip install -r requirements.txt
O instala manualmente:
pip install requests dnspython urllib3
Verifica la instalación:
python ateam.py --help
Escanea un solo recurso:
python ateam.py -r "myapp"
Escanea múltiples recursos:
python ateam.py -r "app1" "app2" "app3"
Escanea desde un archivo de texto con lista de recursos:
python ateam.py -f resources.txt
Salida detallada (verbose) con 20 workers:
python ateam.py -f resources.txt -v -w 20
Genera permutaciones y escanea:
python ateam.py -f resources.txt -p
Genera permutaciones con un tamaño de lote más pequeño (recomendado para escaneos grandes):
python ateam.py -f resources.txt -p -b 100
Exporta los resultados a HTML:
python ateam.py -e html
Limpia la base de datos y empieza de cero:
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
El archivo permutations.txt contiene prefijos y sufijos comunes para generar variaciones de nombres de recursos:
dev
prod
test
staging
api
web
...
Esto generará combinaciones como:
devmyappmyappdevprodmyappmyapp-prodLos resultados se almacenan en azure_tenants.db (SQLite) con el siguiente esquema:
resource_uri: La URL del recurso descubiertoresource_type: Tipo de servicio de Azuretenant_id: ID de tenant extraídodiscovered_at: Marca de tiempo del descubrimiento2025-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
⚠️ Importante: Asegúrate siempre de tener la autorización adecuada antes de escanear cualquier recurso. El escaneo no autorizado puede violar los términos de servicio o las leyes aplicables.
Puedes habilitar el registro detallado (verbose) para obtener información detallada, pero puede ser demasiado:
python ateam.py -f resources.txt -v
Si experimentas mensajes de «killed» al usar permutaciones, intenta reducir el tamaño del lote:
python ateam.py -f resources.txt -p -b 100 -w 5
Esto procesa los recursos en lotes más pequeños con menos workers concurrentes para evitar el agotamiento de la memoria.
¡Las contribuciones son bienvenidas! No dudes en enviar:
| Opción | Descripción | Ejemplo |
|---|
-f, --file | Archivo que contiene los recursos (uno por línea) | -f resources.txt |
-r, --resources | Lista de recursos separados por espacios | -r "app1" "app2" |
-w, --workers | Número de workers concurrentes (predeterminado: 10) | -w 20 |
-b, --batch-size | Recursos por lote (predeterminado: 1000) | -b 100 |
-v, --verbose | Habilita el registro detallado (verbose) | -v |
-l, --list | Lista todas las entradas de la base de datos | -l |
-e, --export | Exporta resultados (csv, json, html) | -e html |
--clear | Limpia la base de datos antes de escanear | --clear |
-t, --tenant | Filtra los resultados por ID de tenant | -t "tenant-id" |
-p, --permutations | Genera permutaciones de nombres de recursos | -p |