
Énumération d'utilisateurs Entra ID et découverte de méthodes d'authentification via l'API publique GetCredentialType
Énumérez les méthodes d'authentification Microsoft Entra ID pour des adresses e-mail à l'aide de l'API publique GetCredentialType. Il s'agit du même point de terminaison que celui utilisé par la page de connexion Microsoft lorsque vous saisissez un nom d'utilisateur. Contrairement à la plupart des outils utilisant la méthode GetCredentialType, CredSpy affiche également les méthodes d'authentification prises en charge pour les comptes existants.
Utile pour les évaluations de sécurité : énumération d'utilisateurs, découverte de la méthode d'authentification préférée et identification des comptes utilisant un mot de passe, Remote NGC (par ex. notification push sans mot de passe), FIDO2/passkeys ou l'authentification par certificat.
Nécessite Python 3.10+.
pipx (recommandé) :
# 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 ...
Après l'installation, exécutez credspy depuis n'importe où :
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
| Flag | Description |
|---|---|
target | Adresse e-mail ou chemin vers un fichier texte |
--proxy URL | Achemine tout le trafic via un proxy ; désactive la vérification SSL (Format : http://127.0.0.1:8080) |
--no-color | Désactive la sortie colorée du terminal |
--csv FILE | Écrit les résultats dans un fichier CSV |
--save-existing FILE | Enregistre les e-mails qui existent |
--save-ngc FILE | Enregistre les e-mails pour lesquels RemoteNGC (par ex. notification push sans mot de passe) est pris en charge |
--save-password-preferred FILE | Enregistre les e-mails existants dont le mot de passe est la méthode préférée |
--skip-ngc | Désactive les vérifications RemoteNGC (évite les notifications push lorsque RemoteNGC est la méthode préférée ; cela désactive également la découverte NGC) |
--delay <float> | Effectue une pause du nombre de secondes indiqué entre chaque compte. À utiliser lors de la vérification d'un grand nombre de comptes pour éviter la limitation de débit |
[!IMPORTANT] Dans le rare cas où l'utilisateur a RemoteNGC défini comme méthode principale, Microsoft déclenchera instantanément la notification push RemoteNGC vers l'application Authenticator pendant l'énumération. Le seul moyen d'éviter cela est de définir
isRemoteNGCSupportedsur false dans la requêteGetCredentialType. Cela a pour conséquence que la réponse n'indiquera plus si RemoteNGC est pris en charge. Si vous souhaitez éviter l'envoi de notifications automatiques et que vous n'avez pas besoin de la découverte RemoteNGC, utilisez l'option--skip-ngc.
Si un fichier de sortie existe déjà, il vous est demandé de confirmer l'écrasement (Y/n).
Les résultats s'affichent dans le terminal au fur et à mesure que chaque e-mail est vérifié :
[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
Si le compte de messagerie existe, la première colonne après l'adresse e-mail indiquera la méthode d'authentification préférée de l'utilisateur. La dernière colonne listera les autres méthodes d'authentification prises en charge telles que Password, RemoteNGC, Fido (=PassKeys) et l'authentification par certificat.
Toutes ces informations sont très utiles à prendre en compte lors de la préparation d'attaques de phishing.
Pour l'authentification Fido, le nombre d'entrées dans l'AllowList des FidoParams renvoyés par Microsoft est affiché. Cela peut servir d'indicateur pour connaître le nombre de méthodes d'authentification Fido que l'utilisateur a enregistrées. Cependant, il semble que cela inclue également les clés Fido supprimées qui ne sont plus liées au compte.
Un résumé est affiché à la fin :
--- 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 lorsqu'il est connu, sinon True/FalsesCtx) depuis la page d'autorisation OAuth de Microsoftlogin.microsoftonline.com/common/GetCredentialTypeAucune authentification requise. Cela utilise le même flux non authentifié que l'interface de connexion.
Cet outil est destiné exclusivement aux tests de sécurité et à la recherche autorisés. Ne l'utilisez que contre des tenants et des comptes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de tester. Les auteurs ne sont pas responsables d'une utilisation abusive.