
Enumerazione degli utenti di Entra ID e scoperta dei metodi di autenticazione tramite l'API pubblica GetCredentialType
Enumera i metodi di autenticazione di Microsoft Entra ID per indirizzi email utilizzando l'API pubblica GetCredentialType. Questo è lo stesso endpoint utilizzato dalla pagina di login di Microsoft quando si inserisce un nome utente. A differenza della maggior parte degli strumenti che utilizzano il metodo GetCredentialType, CredSpy mostra anche i metodi di autenticazione supportati per gli account esistenti.
Utile per le valutazioni di sicurezza: enumerazione degli utenti, scoperta del metodo di autenticazione preferito e identificazione degli account con autenticazione tramite password, Remote NGC (ad es. Passwordless Push Notification), FIDO2/passkey o certificato.
Richiede Python 3.10+.
pipx (consigliato):
# 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 ...
Dopo l'installazione, esegui credspy da qualsiasi posizione:
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
| Flag | Descrizione |
|---|---|
target | Indirizzo email o percorso a un file di testo |
--proxy URL | Instrada tutto il traffico attraverso un proxy; disabilita la verifica SSL (Formato: http://127.0.0.1:8080) |
--no-color | Disabilita l'output colorato del terminale |
--csv FILE | Scrive i risultati in CSV |
--save-existing FILE | Salva le email esistenti |
--save-ngc FILE | Salva le email con RemoteNGC (ad es. passwordless push-notification) supportato |
--save-password-preferred FILE | Salva le email esistenti con password come metodo preferito |
--skip-ngc | Disabilita i controlli RemoteNGC (evita le notifiche push quando RemoteNGC è il metodo preferito; questo disabilita anche la scoperta NGC) |
--delay <float> | Attende il numero di secondi fornito tra ogni account. Da usare quando si controlla un numero elevato di account per evitare il throttling |
[!IMPORTANT] Nel raro caso in cui l'utente abbia RemoteNGC impostato come metodo principale, Microsoft attiverà istantaneamente la notifica push RemoteNGC all'app Authenticator durante l'enumerazione. L'unico modo per evitarlo è impostare
isRemoteNGCSupportedsu false nella richiestaGetCredentialType. Questo ha come conseguenza che la risposta non restituirà più se RemoteNGC è supportato. Se vuoi evitare di inviare notifiche automatiche e non hai bisogno della scoperta RemoteNGC, usa il flag--skip-ngc.
Se un file di output esiste già, ti viene chiesto di confermare la sovrascrittura (Y/n).
I risultati vengono mostrati nel terminale man mano che ogni email viene controllata:
[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
Se l'account email esiste, la prima colonna dopo l'indirizzo email mostrerà il metodo di autenticazione preferito per l'utente. L'ultima colonna elencherà gli altri metodi di autenticazione supportati come Password, RemoteNGC, Fido (=PassKeys) e autenticazione con certificato.
Tutte queste informazioni sono molto utili da considerare quando ci si prepara per attacchi di phishing.
Per l'autenticazione Fido, viene mostrato il numero di voci nella AllowList dei FidoParams restituiti da Microsoft. Questo può essere usato come indicatore per sapere quanti metodi di autenticazione Fido l'utente ha registrato. Tuttavia, sembra che questo includa anche le chiavi Fido eliminate che non sono più collegate all'account.
Alla fine viene stampato un riepilogo:
--- 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 quando noto, altrimenti True/FalsesCtx) dalla pagina di autorizzazione OAuth di Microsoftlogin.microsoftonline.com/common/GetCredentialTypeNessuna autenticazione richiesta. Utilizza lo stesso flusso non autenticato dell'interfaccia di login.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e ricerca. Usalo solo contro tenant e account che possiedi o per i quali hai esplicita autorizzazione scritta a testare. Gli autori non sono responsabili per usi impropri.