
أداة استطلاع بلغة Python لاكتشاف خدمات Azure وتحديد ملكية المستأجرين عبر التحقق من DNS، واستقصاء الخدمات المتعددة، وتحليل الاستجابات. تدعم المسح المتزامن، وتوليد التباديل، وصيغ تصدير متعددة.
أداة استكشاف مكتوبة بلغة Python مصممة لاكتشاف خدمات Azure وتحديد معلومات ملكية المستأجر بناءً على استجاباتها.
تساعد هذه الأداة باحثي الأمن، ومختبرَي الاختراق، ومسؤولي Azure على اكتشاف موارد 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
| الخيار | الوصف | المثال |
|---|---|---|
-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 | تصفية النتائج حسب معرف المستأجر | -t "tenant-id" |
-p, --permutations | توليد تباديل أسماء الموارد | -p |
ATEAM/
├── ateam.py # السكربت الرئيسي
├── requirements.txt # تبعيات Python
├── permutations.txt # تباديل أسماء الموارد
└── README.md # هذا الملف
يحتوي ملف permutations.txt على البادئات واللواحق الشائعة لتوليد تنويعات من أسماء الموارد:
dev
prod
test
staging
api
web
...
سينتج ذلك مجموعات مثل:
devmyappmyappdevprodmyappmyapp-prodتُخزّن النتائج في azure_tenants.db (SQLite) بالمخطط التالي:
resource_uri: رابط المورد المكتشفresource_type: نوع خدمة Azuretenant_id: معرف المستأجر المستخرجdiscovered_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
يعالج هذا الموارد في دفعات أصغر مع عدد أقل من العمال المتزامنين لمنع استنزاف الذاكرة.
نرحب بالمساهمات! لا تتردد في تقديم: