
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 | 리소스가 포함된 파일 (한 줄에 하나씩) | -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 |