
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 gli indirizzi email utilizzando l'API pubblica GetCredentialType. Questo è lo stesso endpoint utilizzato dalla pagina di login di Microsoft quando inserisci 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 valutazioni di sicurezza: enumerazione degli utenti, scoperta del metodo di autenticazione preferito e identificazione di account con password, Remote NGC (es. notifica push senza password), FIDO2/passkey o autenticazione tramite certificato.
Richiede Python 3.10+.
pipx (consigliato):
# Installa pipx (salta se già presente)
apt install pipx
pipx ensurepath
# Da PyPI (consigliato)
pipx install credspy
# Oppure da GitHub
pipx install git+https://github.com/RedByte1337/CredSpy.git
# Da una copia locale
git clone https://github.com/RedByte1337/CredSpy.git
cd CredSpy
pipx install .
pip:
pip install .
# oppure esegui senza installare
pip install -r requirements.txt
python credspy.py ...
Dopo l'installazione, esegui credspy da qualsiasi directory:
credspy -h
# Singola email
credspy [email protected]
# File di email (una per riga, # per i commenti)
credspy emails.txt
# Attraverso un proxy (verifica SSL disabilitata per strumenti MITM)
credspy emails.txt --proxy http://127.0.0.1:8080
# Esporta risultati in CSV
credspy emails.txt --csv results.csv
# Salva liste di email filtrate (combinabili)
credspy emails.txt \
--save-existing existing.txt \
--save-ngc ngc.txt \
--save-password-preferred password-preferred.txt
[!IMPORTANT] Nel raro caso in cui l'utente abbia RemoteNGC come metodo primario, Microsoft attiverà immediatamente la notifica push RemoteNGC all'app Authenticator durante l'enumerazione. L'unico modo per evitarlo è impostare
isRemoteNGCSupportedsu false nella richiestaGetCredentialType. Ciò comporta che la risposta non restituirà più se RemoteNGC è supportato. Se desideri evitare di inviare notifiche automatiche e non hai bisogno della scoperta di RemoteNGC, utilizza il flag--skip-ngc.
Se un file di output esiste già, ti viene chiesto di confermare la sovrascrittura (Y/n).
I risultati vengono trasmessi al terminale mentre 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 tramite certificato.
Tutte queste informazioni sono molto utili da considerare quando ci si prepara ad attacchi di phishing.
Per l'autenticazione Fido, viene mostrato il numero di voci nell'AllowList dei FidoParams restituiti da Microsoft. Questo può essere utilizzato come indicatore per sapere quanti metodi di autenticazione Fido l'utente ha registrato. Tuttavia, sembra che includa anche 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/GetCredentialTypeNon è richiesta autenticazione. Utilizza lo stesso flusso non autenticato dell'interfaccia di login.
Questo strumento è destinato esclusivamente a test di sicurezza autorizzati e ricerca. Utilizzalo solo su tenant e account di tua proprietà o per i quali hai esplicita autorizzazione scritta. Gli autori non sono responsabili per un uso improprio.
| Flag | Descrizione |
|---|
target | Indirizzo email o percorso di 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 nel terminale |
--csv FILE | Scrivi i risultati in un file CSV |
--save-existing FILE | Salva le email che esistono |
--save-ngc FILE | Salva le email con RemoteNGC supportato (es. notifica push senza password) |
--save-password-preferred FILE | Salva le email esistenti con la password come metodo preferito |
--skip-ngc | Disabilita i controlli RemoteNGC (evita notifiche push quando RemoteNGC è il metodo preferito; disabilita anche la scoperta di NGC) |