
Microsoft Entra ID (Azure AD) تعداد غير مصادَق لـ Microsoft Entra ID (Azure AD)
المصدر: EvilMist Toolkit - Invoke-EntraEnum.ps1 - https://github.com/Logisek/EvilMist
يكتشف معلومات المستأجر باستخدام واجهات برمجة التطبيقات العامة.
يسترجع تفاصيل المستأجر من خدمة azmap.dev.
# استبدل DOMAIN بالنطاق المستهدف (مثال: example.com)
curl -s "https://azmap.dev/api/tenant?domain=DOMAIN&extract=true"
الاستجابة تحتوي على: tenantId، displayName، countryCode
يسترجع إعداد اتصال OpenID Connect بما في ذلك نقاط نهاية الرموز المميزة.
# استبدل DOMAIN بالنطاق المستهدف
curl -s "https://login.microsoftonline.com/DOMAIN/v2.0/.well-known/openid-configuration"
الاستجابة تحتوي على: token_endpoint، authorization_endpoint، jwks_uri، issuer
يسترجع تكوين مساحة اسم النطاق والاتحاد.
# استبدل DOMAIN بالنطاق المستهدف
curl -s "https://login.microsoftonline.com/getuserrealm.srf?login=enum@DOMAIN&json=1"
الاستجابة تحتوي على:
NameSpaceType - "Managed" أو "Federated"AuthURL - عنوان مصادقة الاتحاد (إذا كان النطاق اتحاديًا)CloudInstanceName - مثيل السحابة (مثال: "microsoftonline.com")FederationBrandName - اسم العلامة التجارية للمؤسسةDomainName - النطاق الموثّقيتحقق مما إذا كان المستخدم موجودًا في Azure AD. يُرجع رموزًا مختلفة بناءً على وجود المستخدم.
# استبدل EMAIL بعنوان البريد الإلكتروني المستهدف
curl -s -X POST "https://login.microsoftonline.com/common/GetCredentialType" \
-H "Content-Type: application/json" \
-d '{
"Username": "EMAIL",
"isOtherIdpSupported": true,
"checkPhones": false,
"isRemoteNGCSupported": true,
"isCookieBannerShown": false,
"isFidoSupported": true,
"originalRequest": "",
"country": "US",
"forceotclogin": false,
"isExternalFederationDisallowed": false,
"isRemoteConnectSupported": false,
"federationFlags": 0,
"isSignup": false,
"flowToken": "",
"isAccessPassSupported": true
}'
رموز IfExistsResult:
0 = المستخدم موجود (موفّر هوية Azure)1 = المستخدم غير موجود2 = طلب غير صالح4 = خطأ في الخادم5 = المستخدم موجود (موفّر هوية اتحادي)6 = المستخدم موجود (موفّر هوية خارجي غير تابع لـ Microsoft)استعلامات DNS لسجلات Azure/M365 ذات الصلة. استخدم أوامر dig أو nslookup أو host.
# CNAME للنطاق الرئيسي
dig CNAME DOMAIN
# CNAME لـ Autodiscover
dig CNAME autodiscover.DOMAIN
dig CNAME lyncdiscover.DOMAIN
dig CNAME sip.DOMAIN
dig TXT DOMAIN
dig SRV _ldap._tcp.DOMAIN
dig SRV _kerberos._tcp.DOMAIN
dig SRV _autodiscover._tcp.DOMAIN
dig SRV _sip._tls.DOMAIN
dig SRV _sipfederationtls._tcp.DOMAIN
dig MX DOMAIN
غير قابل للاكتشاف تمامًا - لا يُنشئ أي سجلات تدقيق.
يتحقق مما إذا كان المستخدم موجودًا عبر استطلاع عنوان موقع OneDrive الشخصي الخاص به.
# استبدل TENANT باسم المستأجر (مثال: example)
# استبدل USERPATH بالبريد الإلكتروني بالتنسيق: user_domain_com (يُستبدل @ و . بـ _)
# مثال: [email protected] يصبح john_doe_example_com
curl -s -o /dev/null -w "%{http_code}" -I \
"https://TENANT-my.sharepoint.com/personal/USERPATH/_layouts/15/onedrive.aspx"
رموز الحالة:
200 = المستخدم موجود، OneDrive قابل للوصول401/403 = المستخدم موجود، الوصول مرفوض404 = المستخدم غير موجودcurl -s -o /dev/null -w "%{http_code}" -I \
"https://example-my.sharepoint.com/personal/john_doe_example_com/_layouts/15/onedrive.aspx"
يسترجع بيانات الاتحاد الوصفية بما في ذلك شهادات التوقيع ونقاط نهاية الرموز المميزة.
# استبدل DOMAIN بالنطاق المستهدف
curl -s "https://login.microsoftonline.com/DOMAIN/FederationMetadata/2007-06/FederationMetadata.xml"
الاستجابة تحتوي على (XML):
يكتشف ما إذا كان الدخول الموحّد لسطح المكتب (Seamless Single Sign-On) مفعّلاً.
# استبدل DOMAIN بالنطاق المستهدف
curl -s "https://login.microsoftonline.com/getuserrealm.srf?login=user@DOMAIN&json=1"
ابحث عن: DesktopSsoEnabled: true
# استبدل TENANT_ID بمعرّف المستأجر GUID
curl -s -o /dev/null -w "%{http_code}" \
"https://autologon.microsoftazuread-sso.com/TENANT_ID/winauth/trust/2005/usernamemixed"
يكتشف موارد Azure المرتبطة بالمستأجر. يستخدم تحليل DNS.
# استبدل TENANT باسم المستأجر
# النطاق الأساسي للمستأجر
dig A TENANT.onmicrosoft.com
# SharePoint
dig A TENANT.sharepoint.com
# OneDrive
dig A TENANT-my.sharepoint.com
# تخزين Azure Blob
dig A TENANT.blob.core.windows.net
# ملفات Azure
dig A TENANT.file.core.windows.net
# قائمة انتظار Azure
dig A TENANT.queue.core.windows.net
# جدول Azure
dig A TENANT.table.core.windows.net
# Key Vault
dig A TENANT.vault.azure.net
# Azure SQL
dig A TENANT.database.windows.net
# App Service
dig A TENANT.azurewebsites.net
# نشر Kudu/Git
dig A TENANT.scm.azurewebsites.net
# الخدمات السحابية
dig A TENANT.cloudapp.net
dig A TENANT.cloudapp.azure.com
# Exchange Online Protection
dig A TENANT.mail.protection.outlook.com
# سجل الحاويات
dig A TENANT.azurecr.io
# Redis Cache
dig A TENANT.redis.cache.windows.net
# Service Bus
dig A TENANT.servicebus.windows.net
# Front Door
dig A TENANT.azurefd.net
# Azure AD B2C
dig A TENANT.b2clogin.com
# إدارة API
dig A TENANT.azure-api.net
# Traffic Manager
dig A TENANT.trafficmanager.net
# HDInsight
dig A TENANT.azurehdinsight.net
# Cosmos DB
dig A TENANT.documents.azure.com
# Cognitive Search
dig A TENANT.search.windows.net
# Cognitive Services
dig A TENANT.cognitiveservices.azure.com
# لاحقات شائعة: dev, prod, staging, test, uat, qa, backup, dr, api, app, web, data
dig A TENANTdev.blob.core.windows.net
dig A TENANTprod.azurewebsites.net
dig A TENANTstaging.vault.azure.net
يتحقق من وجود المستخدم عبر نقطة نهاية Autodiscover V2 بصيغة JSON.
# استبدل EMAIL بعنوان البريد الإلكتروني المستهدف
curl -s -o /dev/null -w "%{http_code}" -L --max-redirs 0 \
"https://autodiscover-s.outlook.com/autodiscover/autodiscover.json?Email=EMAIL&Protocol=Autodiscoverv1"
رموز الحالة:
200 = المستخدم موجود302 (إعادة توجيه) = المستخدم غير موجود401/403 = المستخدم موجود (مطلوب مصادقة)نقطة نهاية Autodiscover قديمة قائمة على XML لتعداد المستخدمين.
# استبدل DOMAIN بالنطاق المستهدف
# استبدل EMAIL بعنوان البريد الإلكتروني المستهدف
curl -s -X POST "https://autodiscover.DOMAIN/autodiscover/autodiscover.xml" \
-H "Content-Type: text/xml; charset=utf-8" \
-d '<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
<Request>
<EMailAddress>EMAIL</EMailAddress>
<AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
</Request>
</Autodiscover>'
مؤشرات الاستجابة:
RedirectAddr في الاستجابة = المستخدم موجودRedirectUrl في الاستجابة = قد يشير إلى وجود المستخدمErrorCode: InvalidUser = المستخدم غير موجودErrorCode: NoError = المستخدم موجوديستطلع نقاط نهاية EWS لفحص مدى تعرضها.
# نقاط نهاية Office 365 EWS
curl -s -o /dev/null -w "%{http_code}" \
"https://outlook.office365.com/EWS/Exchange.asmx"
curl -s -o /dev/null -w "%{http_code}" \
"https://outlook.office.com/EWS/Exchange.asmx"
# نقاط نهاية محلية/نطاقات مخصصة
# استبدل DOMAIN بالنطاق المستهدف
curl -s -o /dev/null -w "%{http_code}" \
"https://DOMAIN/EWS/Exchange.asmx"
curl -s -o /dev/null -w "%{http_code}" \
"https://mail.DOMAIN/EWS/Exchange.asmx"
curl -s -o /dev/null -w "%{http_code}" \
"https://ews.DOMAIN/EWS/Exchange.asmx"
رموز الحالة التي تشير إلى التوفر:
200، 301، 302، 307، 308 = متاح401، 403 = متاح (مطلوب مصادقة)404 = غير متاحيكتشف مواقع SharePoint وTeams.
# استبدل TENANT باسم المستأجر
# جذر المستأجر
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com"
# جذر OneDrive
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT-my.sharepoint.com"
# أسماء مواقع شائعة للفحص
# مواقع: intranet, portal, hr, finance, it, projects, marketing, sales, support, admin, security, dev
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com/sites/intranet"
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com/sites/portal"
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com/sites/hr"
# مواقع Teams
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com/teams/intranet"
curl -s -o /dev/null -w "%{http_code}" \
"https://TENANT.sharepoint.com/teams/it"
رموز الحالة:
200 = الموقع موجود ويمكن الوصول إليه علنًا401، 403 = الموقع موجود، مطلوب مصادقة301، 302، 307، 308 = الموقع موجود، تتم إعادة التوجيه404 = الموقع غير موجوديستطلع نقاط نهاية اكتشاف Lync for Business.
# استبدل DOMAIN بالنطاق المستهدف
curl -s -o /dev/null -w "%{http_code}" \
"https://lyncdiscover.DOMAIN"
curl -s -o /dev/null -w "%{http_code}" \
"https://lyncdiscoverinternal.DOMAIN"
curl -s -o /dev/null -w "%{http_code}" \
"https://sip.DOMAIN"
# سجلات MX
dig MX DOMAIN
# SPF (سجل TXT)
dig TXT DOMAIN
# DMARC
dig TXT _dmarc.DOMAIN
# DKIM (محددات شائعة)
dig TXT selector1._domainkey.DOMAIN # Microsoft 365
dig TXT selector2._domainkey.DOMAIN # Microsoft 365
dig TXT google._domainkey.DOMAIN # Google Workspace
dig TXT default._domainkey.DOMAIN
dig TXT dkim._domainkey.DOMAIN
dig TXT mail._domainkey.DOMAIN
dig TXT k1._domainkey.DOMAIN # Mailchimp
dig TXT s1._domainkey.DOMAIN
dig TXT s2._domainkey.DOMAIN
# MTA-STS
dig TXT _mta-sts.DOMAIN
# BIMI
dig TXT default._bimi.DOMAIN
# TLS-RPT
dig TXT _smtp._tls.DOMAIN
# استبدل DOMAIN بالنطاق المستهدف
curl -s "https://mta-sts.DOMAIN/.well-known/mta-sts.txt"
بالنظر إلى معرّف المستأجر، يكتشف الموارد المرتبطة به.
# استبدل TENANT_ID بمعرّف المستأجر GUID
# إعداد OpenID (الإصدار 2.0)
curl -s "https://login.microsoftonline.com/TENANT_ID/v2.0/.well-known/openid-configuration"
# إعداد OpenID (الإصدار 1.0)
curl -s "https://login.microsoftonline.com/TENANT_ID/.well-known/openid-configuration"
# معلومات Graph الخاصة بالمستأجر (يتطلب مصادقة لكنه يكشف معلومات في الخطأ)
curl -s "https://graph.microsoft.com/v1.0/tenantRelationships/findTenantInformationByTenantId(tenantId='TENANT_ID')"
# نقطة نهاية Device Code
curl -s "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/devicecode"
# OAuth Authorize (يكشف العلامة التجارية للمستأجر)
curl -s "https://login.microsoftonline.com/TENANT_ID/oauth2/v2.0/authorize?client_id=00000000-0000-0000-0000-000000000000&response_type=code&scope=openid"
يعدّد إعداد OAuth عبر تحليل رسائل الخطأ لمعرّفات التطبيقات المعروفة.
# استبدل TENANT بمعرّف المستأجر أو النطاق
# معرّفات تطبيقات Microsoft المعروفة للاختبار:
# Microsoft Graph
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000003-0000-0000-c000-000000000000&response_type=code&scope=openid"
# Azure AD Graph (متوقف)
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000002-0000-0000-c000-000000000000&response_type=code&scope=openid"
# Office 365 Exchange Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000002-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"
# Office 365 SharePoint Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000003-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"
# Skype for Business Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=00000004-0000-0ff1-ce00-000000000000&response_type=code&scope=openid"
# Azure Service Management API
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=797f4846-ba00-4fd7-ba43-dac1f8f63013&response_type=code&scope=openid"
# Microsoft Azure PowerShell
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=1950a258-227b-4e31-a9cf-717495945fc2&response_type=code&scope=openid"
# Microsoft Azure CLI
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=04b07795-8ddb-461a-bbee-02f9e1bf7b46&response_type=code&scope=openid"
# Microsoft Office
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=d3590ed6-52b3-4102-aeff-aad2292ab01c&response_type=code&scope=openid"
# Microsoft Teams
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=1fec8e78-bce4-4aaf-ab1b-5451cc387264&response_type=code&scope=openid"
# Microsoft Planner
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=9bc3ab49-b65d-410a-85ad-de819febfddc&response_type=code&scope=openid"
# أدوات سطر أوامر Microsoft Graph
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=de8bc8b5-d9f9-48b1-a8ad-b748da725064&response_type=code&scope=openid"
# Azure Portal
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c&response_type=code&scope=openid"
# لوحة وصول تطبيقات Microsoft
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=0000000c-0000-0000-c000-000000000000&response_type=code&scope=openid"
# Microsoft Outlook
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=5d661950-3475-41cd-a2c3-d671a3162bc1&response_type=code&scope=openid"
# Microsoft OneDrive
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=eb1cec80-a830-486e-b45b-f57094f163f9&response_type=code&scope=openid"
# عميل SharePoint Online
curl -s "https://login.microsoftonline.com/TENANT/oauth2/v2.0/authorize?client_id=57fb890c-0dab-4253-a5e0-7188c88b2bb4&response_type=code&scope=openid"
رموز خطأ AADSTS للتحليل:
AADSTS700016 = التطبيق غير موجود في الدليلAADSTS650057 = مورد غير صالح (التطبيق موجود لكن هناك مشكلة في الإعداد)AADSTS65001 = مطلوب موافقة المستخدم/المسؤول (التطبيق موجود)AADSTS50011 = عدم تطابق عنوان URL للرد (التطبيق موجود)AADSTS90002 = المستأجر غير موجود| الطريقة | نقطة النهاية | طريقة HTTP |
|---|---|---|
| معلومات المستأجر | https://azmap.dev/api/tenant?domain={domain}&extract=true | GET |
| إعداد OpenID | https://login.microsoftonline.com/{domain}/v2.0/.well-known/openid-configuration | GET |
| نطاق المجال | https://login.microsoftonline.com/getuserrealm.srf?login=user@{domain}&json=1 | GET |
| تعداد المستخدمين | https://login.microsoftonline.com/common/GetCredentialType | POST |
| تعداد OneDrive | https://{tenant}-my.sharepoint.com/personal/{user_path}/_layouts/15/onedrive.aspx | HEAD |
| بيانات الاتحاد الوصفية | https://login.microsoftonline.com/{domain}/FederationMetadata/2007-06/FederationMetadata.xml | GET |
| Autologon | https://autologon.microsoftazuread-sso.com/{tenant_id}/winauth/trust/2005/usernamemixed | GET |
| Autodiscover V2 | https://autodiscover-s.outlook.com/autodiscover/autodiscover.json?Email={email}&Protocol=Autodiscoverv1 | GET |
| Autodiscover V1 | https://autodiscover.{domain}/autodiscover/autodiscover.xml | POST |
| EWS | https://outlook.office365.com/EWS/Exchange.asmx | GET |
| SharePoint | https://{tenant}.sharepoint.com/sites/{site} | GET |
| Lync | https://lyncdiscover.{domain} | GET |
| سياسة MTA-STS | https://mta-sts.{domain}/.well-known/mta-sts.txt | GET |
| استطلاع OAuth | https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?client_id={app_id}&response_type=code&scope=openid | GET |