
Enumeración de usuarios de Entra ID y descubrimiento de métodos de autenticación a través de la API pública GetCredentialType
Enumera los métodos de autenticación de Microsoft Entra ID para direcciones de correo electrónico usando la API pública GetCredentialType. Este es el mismo endpoint que utiliza la página de inicio de sesión de Microsoft cuando se ingresa un nombre de usuario. A diferencia de la mayoría de herramientas que usan 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.
Requiere Python 3.10+.
pipx (recomendado):
# Instalar pipx (omitir si ya lo tienes)
apt install pipx
pipx ensurepath
# Desde PyPI (recomendado)
pipx install credspy
# O desde GitHub
pipx install git+https://github.com/RedByte1337/CredSpy.git
# Desde un clon local
git clone https://github.com/RedByte1337/CredSpy.git
cd CredSpy
pipx install .
pip:
pip install .
# o ejecutar sin instalar
pip install -r requirements.txt
python credspy.py ...
Después de la instalación, ejecuta credspy desde cualquier lugar:
credspy -h
# Correo único
credspy [email protected]
# Archivo con correos (uno por línea, # para comentarios)
credspy correos.txt
# A través de un proxy (verificación SSL desactivada para herramientas MITM)
credspy correos.txt --proxy http://127.0.0.1:8080
# Exportar resultados a CSV
credspy correos.txt --csv resultados.csv
# Guardar listas de correos filtradas (combinables)
credspy correos.txt \
--save-existing existentes.txt \
--save-ngc ngc.txt \
--save-password-preferred password-preferido.txt
[!IMPORTANT] En el raro caso de que el usuario tenga RemoteNGC como método principal, Microsoft activará instantáneamente la notificación push RemoteNGC en la aplicación Authenticator durante la enumeración. La única forma de evitarlo es establecer
isRemoteNGCSupporteden falso en la solicitudGetCredentialType. Esto tiene la consecuencia de que la respuesta ya no devolverá si RemoteNGC es compatible. Si deseas evitar el envío de notificaciones automáticas y no necesitas el descubrimiento de RemoteNGC, usa la opción--skip-ngc.
Si algún archivo de salida ya existe, se te pedirá confirmación para sobrescribir (Y/n).
Los resultados se muestran en la terminal a medida que se verifica cada correo:
[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 existe, la primera columna después de la dirección mostrará el método de autenticación preferido del usuario. La última columna listará los otros métodos de autenticación compatibles, como Password, RemoteNGC, Fido (=PassKeys) y autenticación por Certificate.
Toda esta información es muy útil a tener en cuenta al preparar ataques de phishing.
Para autenticación Fido, se muestra el número de entradas en la AllowList de los FidoParams devueltos por Microsoft. Esto se puede usar como indicador para saber cuántos métodos de autenticación Fido tiene registrados el usuario. Sin embargo, parece que 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
Email, Exists, PreferredType, HasPassword, RemoteNGC, HasFido, HasCertAuth, DomainType
Exists, NotExist, …)PushNotification / ListSessions cuando se conoce, en otro caso True/FalsesCtx) desde la página de autorización OAuth de Microsoftlogin.microsoftonline.com/common/GetCredentialTypeNo se requiere autenticación. Utiliza el mismo flujo no autenticado que la interfaz de inicio de sesión.
Esta herramienta está destinada únicamente para pruebas de seguridad autorizadas e investigación. Úsala solo contra inquilinos y cuentas que poseas o para las cuales tengas permiso explícito por escrito. Los autores no se responsabilizan por el mal uso.
| Indicador | Descripción |
|---|
target | Dirección de correo o ruta a un archivo de texto |
--proxy URL | Enrutar todo el tráfico a través de un proxy; desactiva la verificación SSL (Formato: http://127.0.0.1:8080) |
--no-color | Deshabilitar salida de terminal coloreada |
--csv FILE | Escribir resultados en un archivo CSV |
--save-existing FILE | Guardar correos que existen |
--save-ngc FILE | Guardar correos con RemoteNGC (por ejemplo, notificación push sin contraseña) compatible |
--save-password-preferred FILE | Guardar correos existentes con contraseña como método preferido |
--skip-ngc | Deshabilitar comprobaciones RemoteNGC (evita notificaciones push cuando RemoteNGC es el método preferido; también desactiva el descubrimiento de NGC) |