
É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 en utilisant l'API publique GetCredentialType. C'est le même point de terminaison que la page de connexion Microsoft utilise 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 des utilisateurs, découverte de la méthode d'authentification préférée, et identification des comptes avec mot de passe, Remote NGC (par exemple notification push sans mot de passe), FIDO2/clés d'accès, ou 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
[!IMPORTANT] Dans le cas rare où l'utilisateur a défini RemoteNGC comme méthode principale, Microsoft déclenchera instantanément la notification push RemoteNGC vers l'application Authenticator lors de l'énumération. La seule façon d'éviter cela est de définir
isRemoteNGCSupportedsur false dans la requêteGetCredentialType. Cela a pour conséquence que la réponse ne renverra plus l'information de prise en charge de RemoteNGC. Si vous souhaitez éviter d'envoyer des notifications automatiques et que vous n'avez pas besoin de la découverte RemoteNGC, utilisez le drapeau--skip-ngc.
Si un fichier de sortie existe déjà, une confirmation de remplacement vous est demandée (Y/n).
Les résultats sont diffusés 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 e-mail existe, la première colonne après l'adresse e-mail affiche la méthode d'authentification préférée de l'utilisateur. La dernière colonne liste 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 la liste AllowList des FidoParams renvoyés par Microsoft est affiché. Cela peut être utilisé comme indicateur pour savoir combien de méthodes d'authentification Fido 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 lorsque connu, sinon True/FalsesCtx) depuis la page d'autorisation OAuth de Microsoftlogin.microsoftonline.com/common/GetCredentialTypeAucune authentification n'est requise. Cela utilise le même flux non authentifié que l'interface de connexion.
Cet outil est destiné uniquement aux tests de sécurité autorisés et à la recherche. Ne l'utilisez que contre des locataires et des comptes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite. Les auteurs ne sont pas responsables d'une mauvaise utilisation.
| 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 terminal en couleurs |
--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 exemple notification push sans mot de passe) est pris en charge |
--save-password-preferred FILE | Enregistre les e-mails existants avec le mot de passe comme 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) |