
Перечисление пользователей Entra ID и обнаружение методов аутентификации через публичный API GetCredentialType
Перечисление методов аутентификации Microsoft Entra ID для адресов электронной почты с использованием публичного API GetCredentialType. Это тот же эндпоинт, который использует страница входа Microsoft при вводе имени пользователя. В отличие от большинства инструментов, использующих метод GetCredentialType, CredSpy также показывает методы аутентификации, поддерживаемые для существующих учётных записей.
Полезно для оценки безопасности: перечисление пользователей, обнаружение предпочтительного метода аутентификации и выявление учётных записей с паролем, Remote NGC (например, Passwordless Push Notification), FIDO2/passkeys или сертификатной аутентификацией.
Требуется Python 3.10+.
pipx (рекомендуется):
# Install pipx (skip this if you already have it)
apt install pipx
pipx ensurepath
# From PyPI (recommended)
pipx install credspy
# Or from GitHub
pipx install git+https://github.com/RedByte1337/CredSpy.git
# From a local clone
git clone https://github.com/RedByte1337/CredSpy.git
cd CredSpy
pipx install .
pip:
pip install .
# or run without installing
pip install -r requirements.txt
python credspy.py ...
После установки запускайте credspy из любого места:
credspy -h
# Single email
credspy [email protected]
# File of emails (one per line, # for comments)
credspy emails.txt
# Through a proxy (SSL verification disabled for MITM tools)
credspy emails.txt --proxy http://127.0.0.1:8080
# Export results to CSV
credspy emails.txt --csv results.csv
# Save filtered email lists (combinable)
credspy emails.txt \
--save-existing existing.txt \
--save-ngc ngc.txt \
--save-password-preferred password-preferred.txt
| Флаг | Описание |
|---|---|
target | Адрес электронной почты или путь к текстовому файлу |
--proxy URL | Направлять весь трафик через прокси; отключает проверку SSL (Формат: http://127.0.0.1:8080) |
--no-color | Отключить цветной вывод в терминал |
--csv FILE | Записать результаты в CSV |
--save-existing FILE | Сохранить существующие адреса электронной почты |
--save-ngc FILE | Сохранить адреса электронной почты с поддержкой RemoteNGC (например, passwordless push-notification) |
--save-password-preferred FILE | Сохранить существующие адреса электронной почты с паролем в качестве предпочтительного метода |
--skip-ngc | Отключить проверки RemoteNGC (избегает push-уведомлений, когда RemoteNGC является предпочтительным методом; это также отключает обнаружение NGC) |
--delay <float> | Приостанавливает работу на указанное количество секунд между каждой учётной записью. Используйте при проверке большого количества учётных записей, чтобы избежать троттлинга |
[!IMPORTANT] В редком случае, когда у пользователя RemoteNGC установлен в качестве основного метода, Microsoft мгновенно отправит push-уведомление RemoteNGC в приложение Authenticator во время перечисления. Единственный способ избежать этого — установить
isRemoteNGCSupportedв false в запросеGetCredentialType. Это приведёт к тому, что ответ больше не будет возвращать информацию о поддержке RemoteNGC. Если вы хотите избежать отправки автоматических уведомлений и вам не нужно обнаружение RemoteNGC, используйте флаг--skip-ngc.
Если какой-либо выходной файл уже существует, вам будет предложено подтвердить перезапись (Y/n).
Результаты выводятся в терминал по мере проверки каждого адреса электронной почты:
[email protected] | Preferred: Fido (7) | Supported: Password, RemoteNGC (PushNotification), Fido (Count: 3)
[email protected] | IfExistsResult: NotExist (1)
[email protected] | Preferred: Password (1) | Supported: Password, RemoteNGC (PushNotification)
[email protected] | Preferred: RemoteNGC (2) | Supported: Password, RemoteNGC (PushNotification)
[email protected] | Preferred: Fido (7) | Supported: Password, Fido (Count: 5), Certificate
Если учётная запись электронной почты существует, первый столбец после адреса электронной почты покажет предпочтительный метод аутентификации для пользователя. Последний столбец перечислит другие поддерживаемые методы аутентификации, такие как Password, RemoteNGC, Fido (=PassKeys) и Certificate authentication.
Вся эта информация очень полезна для учёта при подготовке фишинговых атак.
Для аутентификации Fido показано количество записей в AllowList параметров FidoParams, возвращаемых Microsoft. Это можно использовать как индикатор для определения количества методов аутентификации Fido, зарегистрированных пользователем. Однако, похоже, это также включает удалённые ключи Fido, которые больше не связаны с учётной записью.
В конце выводится сводка:
--- Summary ---
Exists: 6/7
Throttled: 0/7
Preferred: Fido 3/6, Password 2/6, ...
Supported: Password 6/6, RemoteNGC 1/6, Fido 3/6, Certificate 2/6
DomainType: Managed 6/6
--- Output files ---
CSV (results.csv): 7 entries
Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType
Exists, NotExist, …)PushNotification / ListSessions, когда известно, иначе True/FalsesCtx) со страницы авторизации Microsoft OAuthlogin.microsoftonline.com/common/GetCredentialTypeАутентификация не требуется. Используется тот же неаутентифицированный поток, что и в интерфейсе входа.
Этот инструмент предназначен только для авторизованного тестирования безопасности и исследований. Используйте его только против тенантов и учётных записей, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Авторы не несут ответственности за неправомерное использование.