Retour aux mises à jour
New releaseJul 28, 2026

CredSpy v1.1.0

Énumération d'utilisateurs Entra ID et découverte de méthodes d'authentification via l'API publique GetCredentialType

Partager

PyPi Version Python Version GitHub Sponsors Twitter LinkedIn

CredSpy

É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.

Table des matières

Installation

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

Utilisation

# 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

Options

FlagDescription
targetAdresse e-mail ou chemin vers un fichier texte
--proxy URLAchemine tout le trafic via un proxy ; désactive la vérification SSL (Format : http://127.0.0.1:8080)
--no-colorDésactive la sortie colorée du terminal
--csv FILEÉcrit les résultats dans un fichier CSV
--save-existing FILEEnregistre les e-mails qui existent
--save-ngc FILEEnregistre les e-mails pour lesquels RemoteNGC (par ex. notification push sans mot de passe) est pris en charge
--save-password-preferred FILEEnregistre les e-mails existants dont le mot de passe est la méthode préférée
--skip-ngcDé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 isRemoteNGCSupported sur false dans la requête GetCredentialType. 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).

Sortie

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

Colonnes CSV

Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType

  • Exists — nom de l'énumération (Exists, NotExist, …)
  • RemoteNGC — PushNotification / ListSessions lorsqu'il est connu, sinon True/False

Fonctionnement

  1. Récupère un contexte de session (sCtx) depuis la page d'autorisation OAuth de Microsoft
  2. Envoie chaque nom d'utilisateur en POST à login.microsoftonline.com/common/GetCredentialType
  3. Analyse les indicateurs d'identification et affiche / exporte les résultats

Aucune authentification requise. Cela utilise le même flux non authentifié que l'interface de connexion.

Avertissement

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.

Catégories