شمارش دامنههای Azure: پایان یک تکنیک، شروع روشهای جدید
خلاصهٔ کاملتر
تا همین اواخر، یک درخواست GET ساده و بدون نیاز به احراز هویت به اندپوینت ACS مایکروسافت کافی بود تا تمام دامنههای مرتبط با یک تنانت Azure Active Directory رو یکجا تحویل بگیری. این اندپوینت بخشی از زیرساخت قدیمی Azure Access Control Service بود که رسماً از سال ۲۰۱۸ «بازنشسته» شده بود، ولی هنوز زنده بود و داده میداد. فیلد allowedAudiences در خروجی، لیست کاملی از دامنههای تأییدشدهی تنانت رو شامل میشد، از جمله پیشوند onmicrosoft.com که برای ابزارهای offensive مثل شناسایی SharePoint و OneDrive ضروریه.
مایکروسافت این اندپوینت رو در مارس ۲۰۲۶ کاملاً بست. پیش از این هم در ژوئن ۲۰۲۴، اندپوینت SOAP مربوط به Autodiscover که ابزارهایی مثل AADInternals روی آن متکی بودند رو خاموش کرده بود. نتیجه اینه که «tenant enumeration» به معنای واقعی کلمه — یعنی گرفتن لیست کامل دامنهها با یک درخواست بینیاز به لاگین — دیگه ممکن نیست.
با این حال، چند تکنیک جزئی هنوز کار میکنند. Tenant ID یک دامنه رو میشه از اندپوینت OpenID Configuration گرفت. پیشوند onmicrosoft.com که برای ساختن URLهای SharePoint و OneDrive لازمه، اغلب در رکوردهای DNS/DKIM پنهانه؛ وقتی سازمانی DKIM signing رو از طریق Exchange Online فعال میکنه، مایکروسافت از آنها میخواد CNAME هایی بسازن که آدرس هدفشون حاوی نام تنانت هست:
dig +short selector1._domainkey.tesla.com CNAME
این یک DNS query سادهست که پیشوند تنانت رو برمیگردونه — مثلاً tesla.com به teslamotorsinc.onmicrosoft.com اشاره میکنه. برای سازمانهایی که DKIM ندارن، میشه پیشوند رو با brute-force کردن MX record های *.onmicrosoft.com حدس زد و با tenant ID تأیید کرد.
وقتی DKIM وجود نداره و حدسزدن هم جواب نمیده، Microsoft Graph API (اندپوینت findTenantInformationByDomainName) میتونه کمک کنه؛ ولی این یکی نیاز به احراز هویت و پرمیشن CrossTenantInformation.ReadBasic.All داره. یه نکتهی مهم اینه که این API فیلد defaultDomainName رو برمیگردونه که لزوماً همون پیشوند onmicrosoft.com نیست — ادمین میتونه هر دامنهای رو به عنوان default تنظیم کنه. ترکیب DKIM و Graph API پوشش نسبتاً خوبی میده.
سایت azmap.dev این تکنیکها رو بهصورت waterfall اجرا میکنه: اول DKIM روی همه دامنههای مرتبط، بعد Graph API، و در آخر brute-force نام برند. همچنین یک دیتابیس از اسکن بیش از ۶۰۰ میلیون دامنه داره که نگاشت domain به tenant ID رو ذخیره میکنه. هر query ناشناخته، دیتابیس رو غنیتر میکنه. خروجی API حالا در یک درخواست همه چیز رو برمیگردونه: tenant ID، tenant name (پیشوند MOERA)، brand name، و لیست دامنههای مرتبط.
نکات کلیدی:
- اندپوینت ACS مایکروسافت (/metadata/json/1) در مارس ۲۰۲۶ کاملاً بسته شد
- قبل از آن هم اندپوینت Autodiscover SOAP از ژوئن ۲۰۲۴ غیرفعال شده بود
- DKIM CNAME lookup سریعترین روش برای گرفتن پیشوند onmicrosoft.com هست، ولی فقط اگه سازمان DKIM رو از Exchange Online فعال کرده باشه
- MX brute-force روی *.onmicrosoft.com برای سازمانهایی که DKIM ندارن استفاده میشه
- Microsoft Graph API پوشش بیشتری میده ولی نیاز به احراز هویت داره
- azmap.dev با ترکیب این روشها و دیتابیس ۶۰۰ میلیون دامنه، سرویس رایگان ارائه میده




