
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
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
| Flag | Descripción |
|---|---|
target | Dirección de correo electrónico o ruta a un archivo de texto |
--proxy URL | Enruta todo el tráfico a través de un proxy; deshabilita la verificación SSL (Formato: http://127.0.0.1:8080) |
--no-color | Deshabilita la salida en color en la terminal |
--csv FILE | Escribe los resultados en CSV |
--save-existing FILE | Guarda los correos electrónicos que existen |
--save-ngc FILE | Guarda los correos electrónicos con RemoteNGC (por ejemplo, notificación push sin contraseña) soportado |
--save-password-preferred FILE | Guarda los correos electrónicos existentes con contraseña como método preferido |
--skip-ngc | Deshabilita 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
isRemoteNGCSupporteden false en la solicitudGetCredentialType. 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/ListSessionscuando se conoce, de lo contrarioTrue/False
Cómo funciona
- Obtiene un contexto de sesión (
sCtx) desde la página de autorización de Microsoft OAuth - Envía cada nombre de usuario mediante POST a
login.microsoftonline.com/common/GetCredentialType - 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.