
Python 기반 정찰 도구로, DNS 검증, 다중 서비스 프로빙, 응답 분석을 통해 Azure 서비스를 발견하고 테넌트 소유권을 귀속시킵니다. 동시 스캔, 순열 생성, 여러 내보내기 형식을 지원합니다.
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 |