
Перечисление пользователей Entra ID и обнаружение методов аутентификации через публичный API GetCredentialType
Перечисляет методы аутентификации Microsoft Entra ID для адресов электронной почты с помощью публичного API GetCredentialType. Это та же конечная точка, которую страница входа Microsoft использует при вводе имени пользователя. В отличие от большинства инструментов, использующих метод GetCredentialType, CredSpy также показывает методы аутентификации, поддерживаемые для существующих учётных записей.
Полезно для оценки безопасности: перечисление пользователей, обнаружение предпочтительного метода аутентификации и выявление учётных записей с паролем, Remote NGC (например, беспарольные push-уведомления), 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
[!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) и сертификатная аутентификация.
Вся эта информация очень полезна при подготовке фишинговых атак.
Для аутентификации 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Аутентификация не требуется. Используется тот же неаутентифицированный процесс, что и в интерфейсе входа.
Этот инструмент предназначен только для авторизованного тестирования безопасности и исследований. Используйте его только в отношении тенантов и учётных записей, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Авторы не несут ответственности за неправомерное использование.
| Флаг | Описание |
|---|
target | Адрес электронной почты или путь к текстовому файлу |
--proxy URL | Направлять весь трафик через прокси; отключает проверку SSL (Формат: http://127.0.0.1:8080) |
--no-color | Отключить цветной вывод в терминале |
--csv FILE | Записать результаты в CSV |
--save-existing FILE | Сохранить существующие адреса |
--save-ngc FILE | Сохранить адреса с поддержкой RemoteNGC (например, беспарольные push-уведомления) |
--save-password-preferred FILE | Сохранить существующие адреса с паролем в качестве предпочтительного метода |
--skip-ngc | Отключить проверки RemoteNGC (позволяет избежать push-уведомлений, когда RemoteNGC является предпочтительным методом; это также отключает обнаружение NGC) |