
عدّ حسابات المستخدمين وطرق المصادقة المسجَّلة عبر بوابة إعادة تعيين كلمة المرور الذاتية من Microsoft (SSPR)
استكشاف نقطة نهاية إعادة تعيين كلمة المرور الذاتية (SSPR) من Microsoft لسرد طرق التحقق المسجلة وتمييز أي منها تفتقر إلى عامل ثانٍ قوي. يوفر تعداد المستخدمين وتقديرًا تقريبيًا لوضع MFA عبر حسابات Entra.
[!NOTE] اعتبارًا من أغسطس 2026، أزالت Microsoft اختبار CAPTCHA القديم من تدفق SSPR واستبدلته بتقييد من الخادم وكشف إساءة الاستخدام القائم على السلوك (انظر MC1400824). موقف Microsoft هو أن عناصر التحكم في الخادم كافية لكشف ومنع إساءة الاستخدام الآلية.
# Install pipx if needed
apt install pipx && pipx ensurepath
# From a local clone
git clone https://github.com/mlcsec/ResetSpy.git
cd ResetSpy
pipx install .
python3 -m venv .venv
pip install -r requirements.txt
# Single acc
resetspy [email protected]
# Email file (one per line)
resetspy emails.txt
# Proxy
resetspy emails.txt --proxy http://127.0.0.1:8080
# Export to CSV with increased delay
resetspy emails.txt --csv results.csv --delay 4
# Full HTTP debug — request/response headers and bodies printed to stderr
resetspy [email protected] -v
يُضاف تأخير عشوائي فوق --delay بين كل طلب.
يُطبَّق التراجع الأسي (حتى --retries محاولات) على استجابات 429
وأخطاء الشبكة. التأخير الافتراضي هو ثانيتان؛ زِده إلى
4-6 ثوانٍ للدفعات الكبيرة. يتم تدوير User-Agent من مجموعة من 16
وكيلاً شائعًا (Windows، macOS، iOS، Android) عند كل طلب.
تجربة تسجيل معلومات الأمان المدمجة من Microsoft، المفعّلة افتراضيًا منذ 2020، تسجّل طرق المصادقة لكل من SSPR وMFA في تدفق واحد. عمليًا، هذا يعني أنه على معظم مستأجري Entra ID الحديثين، فإن الطرق المرئية عبر SSPR هي نفس الطرق التي تحمي تسجيل الدخول. الحساب الذي لا يحتوي على طريقة SSPR قوية مسجلة من المرجح جدًا أنه حساب لا يحتوي على طريقة MFA قوية مسجلة.
المراجع:
SSPR وMFA سجلان منفصلان. التسجيل المدمج يجعلهما متداخلين في معظم الحالات لكنهما ليسا الشيء نفسه. قد توجد طريقة لـ MFA دون أن تكون مرئية هنا إذا سُجّلت قبل تفعيل التسجيل المدمج، أو إذا استبعدها المسؤول من سياسة SSPR.
مفاتيح أمان FIDO2 والمصادقة القائمة على الشهادات غير مدعومة من SSPR. لم تُضف Microsoft هذه الطرق أبدًا إلى تدفق SSPR. المستخدم الذي يكون عامله المسجل الوحيد مفتاح FIDO2 أو بطاقة ذكية سيظهر هنا على أنه لا يملك أي طرق — نتيجة سلبية خاطئة. عمليًا هذا نادر للمستخدمين العاديين لكنه أكثر شيوعًا في البيئات عالية الأمان أو عديمة كلمة المرور.
المراجع:
عدم تطابق السياسات لكل طريقة. يمكن للمسؤولين السماح بطريقة لتسجيل دخول MFA لكن استبعادها من سياسة SSPR، أو العكس. على سبيل المثال قد تسمح مؤسسة بإشعار تطبيق المصادقة لتسجيل الدخول لكن ليس لإعادة تعيين كلمة المرور. الأداة ترى فقط ما يرغب SSPR في تقديمه.
تعطيل SSPR بالكامل (SSPR_0011). إذا لم يكن SSPR مرخّصًا أو غير
مفعّل لمستخدم، تُرجع نقطة النهاية ViewSsprNotEnabledInUserPolicy
ولا تتوفر معلومات عن الطرق. الحساب موجود وعلى الأرجح لديه MFA
مُهيّأ، لكن هذه الأداة لا تستطيع تحديد ما هو.
الحسابات الضيفية والفيدرالية. المستخدمون الخارجيون وضيوف B2B يصادقون
عبر مستأجرهم الرئيسي. نقطة نهاية SSPR في المستأجر المورد ليس لديها
رؤية لتسجيل MFA في المستأجر الرئيسي وتُرجع
ViewFeatureNotAvailable. وضع MFA الخاص بهم غير مرئي من نقطة النهاية هذه.
قيود الطرق على مستوى المستأجر. إذا عطّل مسؤول فئة طريقة في سياسة SSPR، فلن تُعرض لأي مستخدم بغض النظر عن التسجيل الفردي، مما يجعل من المستحيل التمييز بين "الطريقة غير مسجلة" و"الطريقة معطّلة".
حسابات المسؤولين دائمًا مفعّلة لـ SSPR. إعدادات سياسة SSPR من Microsoft تنطبق فقط على المستخدمين النهائيين العاديين. حسابات المسؤولين دائمًا مفعّلة لإعادة تعيين كلمة المرور الذاتية بغض النظر عن سياسة SSPR للمستأجر، وتشترط Microsoft أن يكون لديهم طريقتا مصادقة مسجلتان. هذا مفروض على مستوى المنصة ولا يمكن تعطيله من قبل مسؤولي المستأجر.
المرجع: SSPR policy documentation
[!IMPORTANT] هذا له تأثير مفيد للاستطلاع. إذا كان SSPR معطّلاً للمستخدمين العاديين في مستأجر (يُرجع
ViewSsprNotEnabledInUserPolicy)، فإن أي حساب يصل بنجاح إلى شاشة اختيار الطريقة من المرجح أنه عضو في دور مميز. الحسابات التي تُعدّد بنجاح عبر SSPR عندما تكون سياسة المستأجر الأوسع معطّلة تبرز كحسابات مسؤول محتملة، وطرقها المسجلة مرئية حتى عندما لا تكون طرق المستخدم العادي كذلك. هذا يسمح بتحديد الأهداف عالية القيمة والحسابات المميزة التي يمكن استهدافها لمزيد من الهجمات الموجّهة.
CurrentViewName من الخادم كمصدر الحقيقة للنتيجة — وليس مطابقة نص HTMLتُظهر بوابة SSPR من Microsoft (passwordreset.microsoftonline.com) شاشة
اختيار طريقة الاتصال (MultigateAuthenticationControl) بعد
قبول اسم مستخدم صالح. يسرد HTML المُعاد كل طريقة تحقق مسجلة
كزر راديو في MultigateAuthenticationControl_RadioTable.
الطرق التي يكون صف <tr> الخاص بها display:none غير مسجلة لذلك المستخدم
ويتم تخطيها.
لكل هدف، تنفذ الأداة طلبين. أولاً، GET إلى صفحة الهبوط
لإنشاء جلسة واستخراج رموز نموذج ASP.NET (__VIEWSTATE،
__EVENTVALIDATION، WorkflowConsistencyCheck) المطلوبة لكي
يقبل الخادم طلب POST. هذه الرموز مرتبطة تشفيريًا بملف تعريف ارتباط
الجلسة ولا يمكن التنبؤ بها أو إعادة استخدامها عبر الجلسات. ثانيًا،
POST يرسل عنوان البريد الإلكتروني إلى جانب تلك الرموز، محاكيًا
إعادة إرسال UpdatePanel غير المتزامن الذي ينفذه المتصفح عندما ينقر المستخدم على Next.
يُستخدم الحقل المخفي CurrentViewName في استجابة ASP.NET كمصدر
موثوق لما قرره الخادم، بدلاً من مطابقة السلاسل الفرعية في نص HTML.
يُشار إلى البريد الإلكتروني البديل وأسئلة الأمان على أنها ضعيفة لأنها قابلة للتصيّد ولا تحقق الغرض من عامل ثانٍ. الحسابات التي تحتوي فقط على طرق ضعيفة، أو لا تحتوي على أي طرق، يتم تمييزها.
[!NOTE] تدعم Microsoft كلاً من رموز OATH البرمجية ورموز OATH العتادية (معاينة) لـ SSPR. رموز OATH البرمجية المُدخلة عبر تطبيق المصادقة على الأرجح تظهر عبر نفس زر
AppCodeRadioمثل TOTP — كلاهما يظهر كإدخال رمز مكوّن من ستة أرقام — لذا فهي على الأرجح مغطاة بالفعل دون معرّف راديو منفصل. رموز OATH العتادية (جهاز مفاتيح مادي) هي فئة أجهزة مميزة لكنها تنتج أيضًا رمزًا زمنيًا؛ قد تُعرض عبر نفس الزر أو زر مختلف لم يُلاحظ بعد أثناء اختبار هذه العملية.
| Flag | Default | Description |
|---|
--delay SECONDS | 2.0 | Base delay between requests; jitter added automatically |
--retries N | 1 | Max retries per account on transient errors |
--proxy URL | Proxy; disables SSL verification automatically | |
--csv FILE | Export all results to CSV | |
-v / --verbose | Print full request/response headers and bodies to stderr |
| Capability | Supported |
|---|
| User enumeration (account exists or not) | Yes |
| SSPR method enumeration | Yes |
| MFA method inference (via combined registration) | Approximate — reliable for most standard tenants |
| FIDO2 / certificate-based MFA detection | No |
| Guest / federated account MFA | No |
| Accounts with SSPR disabled | No (account confirmed to exist, methods unknown) |
| Admin account identification | Partial — admins are always SSPR-enabled, so they may stand out when tenant SSPR is otherwise disabled |
| Radio ID | Method | Strength |
|---|
MultigateAuthenticationControl_AltEmailRadio | Alternate Email OTP | Weak |
MultigateAuthenticationControl_SecurityQuestionsRadio | Security Questions | Weak |
MultigateAuthenticationControl_AppCodeRadio | Authenticator App (TOTP) | Adequate |
MultigateAuthenticationControl_MobileAppNotificationRadio | Authenticator Push Notification | Adequate |
MultigateAuthenticationControl_PhoneRadio | Phone Call / SMS | Adequate |
MultigateAuthenticationControl_OfficePhoneRadio | Office Phone | Adequate |
| Status | Meaning |
|---|
MFA OK | Account found; at least one strong second factor registered in SSPR |
NO MFA | Account found; no strong factor (weak-only or no methods registered) |
NOT FOUND | Username does not exist in the directory |
SSPR DISABLED | Account exists but admin policy blocks SSPR (e.g. SSPR_0011) — methods unknown |
SSPR N/A | Account type not supported by SSPR — guest, external, or federated users |
CAPTCHA | Server presented a CAPTCHA; manual intervention required |
ERROR | Unexpected response or network failure |