
Перечисление учётных записей пользователей и зарегистрированных методов аутентификации через портал самостоятельного сброса пароля 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 SECONDS | 2.0 | Базовая задержка между запросами; джиттер добавляется автоматически |
--retries N | 1 | Максимум повторных попыток на учётную запись при временных ошибках |
--proxy URL | Прокси; автоматически отключает проверку SSL | |
--csv FILE | Экспорт всех результатов в CSV | |
-v / --verbose | Вывод полных заголовков и тел запросов/ответов в stderr |
Случайный джиттер добавляется поверх --delay между каждым запросом.
Экспоненциальная задержка (до --retries попыток) применяется при
ответах 429 и сетевых ошибках. Задержка по умолчанию — 2 секунды; увеличьте до
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 или смарт-карта, будет отображаться здесь как не имеющий методов — ложноотрицательный результат. На практике это редко для обычных пользователей, но чаще встречается в высокозащищённых или беcпарольных средах.
Ссылки:
Несоответствия политик по методам. Администраторы могут разрешить метод для входа через MFA, но исключить его из политики SSPR, или наоборот. Например, организация может разрешить push-уведомление аутентификатора для входа, но не для сброса пароля. Инструмент видит только то, что готов предложить SSPR.
SSPR полностью отключён (SSPR_0011). Если SSPR не лицензирован или не
включён для пользователя, конечная точка возвращает ViewSsprNotEnabledInUserPolicy
и информация о методах недоступна. Учётная запись существует и, вероятно, имеет настроенный MFA,
но этот инструмент не может определить какой.
Гостевые и федеративные учётные записи. Внешние пользователи и гости B2B аутентифицируются
через свой домашний тенант. Конечная точка SSPR ресурсного тенанта не имеет
видимости регистрации MFA домашнего тенанта и возвращает
ViewFeatureNotAvailable. Их состояние MFA невидимо из этой конечной точки.
Ограничения методов на уровне тенанта. Если администратор отключил класс методов в политике SSPR, он не будет предложен ни одному пользователю независимо от индивидуальной регистрации, что делает невозможным отличить «метод не зарегистрирован» от «метод отключён».
Учётные записи администраторов всегда имеют включённый SSPR. Настройки политики SSPR Microsoft применяются только к обычным конечным пользователям. Учётные записи администраторов всегда включены для самостоятельного сброса пароля независимо от политики SSPR тенанта, и Microsoft требует, чтобы у них было зарегистрировано два метода аутентификации. Это обеспечивается на уровне платформы и не может быть отключено администраторами тенанта.
Ссылка: Документация по политикам SSPR
[!IMPORTANT] Это имеет полезное следствие для разведки. Если SSPR отключён для обычных пользователей в тенанте (возвращая
ViewSsprNotEnabledInUserPolicy), любая учётная запись, которая успешно достигает экрана выбора метода, вероятно, является членом привилегированной роли. Учётные записи, которые чисто перечисляются через SSPR, когда общая политика тенанта отключена, выделяются как вероятные учётные записи администраторов, и их зарегистрированные методы видны, даже когда методы обычных пользователей не видны. Это позволяет идентифицировать высокоценные цели и привилегированные учётные записи, которые можно выделить для дальнейших целевых атак.
| Возможность | Поддерживается |
|---|---|
| Перечисление пользователей (существует учётная запись или нет) | Да |
| Перечисление методов SSPR | Да |
| Вывод методов MFA (через объединённую регистрацию) | Приблизительно — надёжно для большинства стандартных тенантов |
| Обнаружение FIDO2 / MFA на основе сертификатов | Нет |
| MFA гостевых / федеративных учётных записей | Нет |
| Учётные записи с отключённым SSPR | Нет (учётная запись подтверждена как существующая, методы неизвестны) |
| Идентификация учётных записей администраторов | Частично — администраторы всегда имеют включённый SSPR, поэтому они могут выделяться, когда SSPR тенанта в остальном отключён |
CurrentViewName используется как источник истины для результата — а не сопоставление по телу HTMLПортал SSPR Microsoft (passwordreset.microsoftonline.com) показывает
экран выбора контактного метода (MultigateAuthenticationControl) после
принятия действительного имени пользователя. Возвращаемый HTML перечисляет каждый зарегистрированный
метод проверки в виде радиокнопки в MultigateAuthenticationControl_RadioTable.
Методы, строка <tr> которых имеет display:none, не зарегистрированы для этого пользователя
и пропускаются.
Для каждой цели инструмент выполняет два запроса. Сначала GET на целевую
страницу для установления сессии и извлечения токенов формы ASP.NET (__VIEWSTATE,
__EVENTVALIDATION, WorkflowConsistencyCheck), которые необходимы для
того, чтобы сервер принял POST. Эти токены криптографически привязаны к
cookie сессии и не могут быть предсказаны или повторно использованы между сессиями. Во-вторых,
POST, который отправляет адрес электронной почты вместе с этими токенами, воспроизводя
асинхронный postback UpdatePanel, который выполняет браузер, когда пользователь нажимает Далее.
Скрытое поле CurrentViewName в ответе ASP.NET используется как
авторитетный сигнал о том, что решил сервер, а не сопоставление подстрок
в теле HTML.
| Radio ID | Метод | Надёжность |
|---|---|---|
MultigateAuthenticationControl_AltEmailRadio | OTP на альтернативную почту | Слабый |
MultigateAuthenticationControl_SecurityQuestionsRadio | Контрольные вопросы | Слабый |
MultigateAuthenticationControl_AppCodeRadio | Приложение-аутентификатор (TOTP) | Достаточный |
MultigateAuthenticationControl_MobileAppNotificationRadio | Push-уведомление аутентификатора | Достаточный |
MultigateAuthenticationControl_PhoneRadio | Телефонный звонок / SMS | Достаточный |
MultigateAuthenticationControl_OfficePhoneRadio | Рабочий телефон | Достаточный |
Альтернативная почта и контрольные вопросы помечены как слабые, поскольку они подвержены фишингу и не соответствуют смыслу второго фактора. Учётные записи только со слабыми методами или без методов вообще помечаются.
[!NOTE] Microsoft поддерживает как программные OATH-токены, так и аппаратные OATH-токены (предварительная версия) для SSPR. Программные OATH-токены, введённые через приложение-аутентификатор, скорее всего, отображаются через ту же кнопку
AppCodeRadio, что и TOTP — оба представляют собой ввод шестизначного кода — поэтому они, вероятно, уже охвачены без отдельного radio ID. Аппаратные OATH-токены (физический брелок) — это отдельный класс устройств, но они также генерируют код на основе времени; они могут отображаться через ту же кнопку или другую, которая ещё не была замечена во время тестирования этого процесса.
| Статус | Значение |
|---|---|
MFA OK | Учётная запись найдена; зарегистрирован хотя бы один надёжный второй фактор в SSPR |
NO MFA | Учётная запись найдена; нет надёжного фактора (только слабые или нет зарегистрированных методов) |
NOT FOUND | Имя пользователя не существует в каталоге |
SSPR DISABLED | Учётная запись существует, но политика администратора блокирует SSPR (например, SSPR_0011) — методы неизвестны |
SSPR N/A | Тип учётной записи не поддерживается SSPR — гостевые, внешние или федеративные пользователи |
CAPTCHA | Сервер представил CAPTCHA; требуется ручное вмешательство |
ERROR | Неожиданный ответ или сбой сети |