Volver a actualizaciones
Nuevo releaseJul 28, 2026

CredSpy v1.1.0

Enumeración de usuarios de Entra ID y descubrimiento de métodos de autenticación a través de la API pública GetCredentialType

Compartir

PyPi Version Python Version GitHub Sponsors Twitter LinkedIn

CredSpy

Enumera los métodos de autenticación de Microsoft Entra ID para direcciones de correo electrónico utilizando la API pública GetCredentialType. Este es el mismo endpoint que utiliza la página de inicio de sesión de Microsoft cuando introduces un nombre de usuario. A diferencia de la mayoría de las herramientas que utilizan el método GetCredentialType, CredSpy también muestra los métodos de autenticación soportados para cuentas existentes.

Útil para evaluaciones de seguridad: enumeración de usuarios, descubrimiento del método de autenticación preferido e identificación de cuentas con contraseña, Remote NGC (por ejemplo, notificación push sin contraseña), FIDO2/passkeys o autenticación por certificado.

Tabla de contenidos

Instalación

Requiere Python 3.10+.

pipx (recomendado):

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

Después de la instalación, ejecuta credspy desde cualquier lugar:

credspy -h

Uso

# 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

Opciones

FlagDescripción
targetDirección de correo electrónico o ruta a un archivo de texto
--proxy URLEnruta todo el tráfico a través de un proxy; deshabilita la verificación SSL (Formato: http://127.0.0.1:8080)
--no-colorDeshabilita la salida en color en la terminal
--csv FILEEscribe los resultados en CSV
--save-existing FILEGuarda los correos electrónicos que existen
--save-ngc FILEGuarda los correos electrónicos con RemoteNGC (por ejemplo, notificación push sin contraseña) soportado
--save-password-preferred FILEGuarda los correos electrónicos existentes con contraseña como método preferido
--skip-ngcDeshabilita las comprobaciones de RemoteNGC (evita las notificaciones push cuando RemoteNGC es el método preferido; esto también deshabilita el descubrimiento de NGC)
--delay <float>Espera la cantidad de segundos indicada entre cada cuenta. Úsalo al comprobar un gran número de cuentas para evitar la limitación de velocidad

[!IMPORTANT] En el raro caso de que el usuario tenga RemoteNGC configurado como su método principal, Microsoft activará instantáneamente la notificación push de RemoteNGC a la aplicación Authenticator durante la enumeración. La única forma de evitar esto es establecer isRemoteNGCSupported en false en la solicitud GetCredentialType. Esto tiene como consecuencia que la respuesta ya no devolverá si RemoteNGC está soportado. Si quieres evitar enviar notificaciones automáticas y no necesitas el descubrimiento de RemoteNGC, utiliza el flag --skip-ngc.

Si ya existe algún archivo de salida, se te pedirá que confirmes la sobrescritura (Y/n).

Salida

Los resultados se muestran en la terminal a medida que se comprueba cada correo electrónico:

[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 la cuenta de correo electrónico existe, la primera columna después de la dirección de correo electrónico mostrará el método de autenticación preferido del usuario. La última columna enumerará los otros métodos de autenticación soportados, como Password, RemoteNGC, Fido (=PassKeys) y autenticación por Certificate.

Toda esta información es muy útil para tenerla en cuenta al preparar ataques de phishing.

Para la autenticación Fido, se muestra el número de entradas en la AllowList de los FidoParams devueltos por Microsoft. Esto puede utilizarse como indicador para saber cuántos métodos de autenticación Fido ha registrado el usuario. Sin embargo, parece que esto también incluye claves Fido eliminadas que ya no están vinculadas a la cuenta.

Al final se imprime un resumen:

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

Columnas del CSV

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

  • Exists — nombre del enum (Exists, NotExist, …)
  • RemoteNGC — PushNotification / ListSessions cuando se conoce, de lo contrario True/False

Cómo funciona

  1. Obtiene un contexto de sesión (sCtx) desde la página de autorización de Microsoft OAuth
  2. Envía cada nombre de usuario mediante POST a login.microsoftonline.com/common/GetCredentialType
  3. Analiza los flags de credenciales e imprime / exporta los resultados

No se requiere autenticación. Esto utiliza el mismo flujo no autenticado que la interfaz de inicio de sesión.

Descargo de responsabilidad

Esta herramienta está destinada únicamente a pruebas de seguridad e investigación autorizadas. Úsala solo contra inquilinos y cuentas que poseas o para las que tengas permiso explícito por escrito para probar. Los autores no se hacen responsables del uso indebido.

Categorías