
Enumera gli account utente e i metodi di autenticazione registrati tramite il portale Microsoft Self-Service Password Reset (SSPR)
Sonda l'endpoint Self-Service Password Reset (SSPR) di Microsoft per enumerare i metodi di verifica registrati e segnalare quelli che mancano di un secondo fattore forte. Fornisce l'enumerazione degli utenti e un'approssimazione della postura MFA sugli account Entra.
[!NOTE] Ad agosto 2026, Microsoft ha rimosso il CAPTCHA legacy dal flusso SSPR e lo ha sostituito con throttling lato backend e rilevamento degli abusi basato sul comportamento (vedi MC1400824). La posizione di Microsoft è che i controlli lato backend sono sufficienti per rilevare e bloccare gli abusi automatizzati.
# Install pipx if needed
apt install pipx && pipx ensurepath
# From a local clone
git clone https://github.com/mlcsec/ResetSpy.git
cd ResetSpy
pipx install .
python3 -m venv .venv
pip install -r requirements.txt
# Single acc
resetspy [email protected]
# Email file (one per line)
resetspy emails.txt
# Proxy
resetspy emails.txt --proxy http://127.0.0.1:8080
# Export to CSV with increased delay
resetspy emails.txt --csv results.csv --delay 4
# Full HTTP debug — request/response headers and bodies printed to stderr
resetspy [email protected] -v
| Flag | Default | Descrizione |
|---|---|---|
--delay SECONDS | 2.0 | Ritardo base tra le richieste; il jitter viene aggiunto automaticamente |
--retries N | 1 | Numero massimo di tentativi per account in caso di errori transitori |
--proxy URL | Proxy; disabilita automaticamente la verifica SSL | |
--csv FILE | Esporta tutti i risultati in CSV | |
-v / --verbose | Stampa gli header e i body completi di richiesta/risposta su stderr |
Un jitter casuale viene aggiunto sopra --delay tra ogni richiesta.
Un back-off esponenziale (fino a --retries tentativi) viene applicato sulle
risposte 429 e sugli errori di rete. Il ritardo predefinito è di 2 secondi; aumentalo a
4-6 secondi per batch di grandi dimensioni. Lo User-Agent viene ruotato da un pool di 16
agent comuni (Windows, macOS, iOS, Android) a ogni richiesta.
L'esperienza di registrazione combinata delle informazioni di sicurezza di Microsoft, abilitata per impostazione predefinita dal 2020, registra i metodi di autenticazione sia per SSPR che per MFA in un unico flusso. In pratica questo significa che sulla maggior parte dei tenant Entra ID moderni, i metodi visibili tramite SSPR sono gli stessi metodi che proteggono l'accesso. Un account senza un metodo SSPR forte registrato è molto probabilmente un account senza un metodo MFA forte registrato.
Riferimenti:
SSPR e MFA sono registri separati. La registrazione combinata li fa sovrapporre nella maggior parte dei casi ma non sono la stessa cosa. Un metodo può esistere per l'MFA senza essere visibile qui se è stato registrato prima che la registrazione combinata fosse abilitata, o se l'amministratore lo ha escluso dalla policy SSPR.
Le chiavi di sicurezza FIDO2 e l'autenticazione basata su certificati non sono supportate da SSPR. Microsoft non ha mai aggiunto questi metodi al flusso SSPR. Un utente il cui unico fattore registrato è una chiave FIDO2 o una smart card apparirà qui come privo di metodi — un falso negativo. In pratica questo è raro per gli utenti standard ma più comune in ambienti ad alta sicurezza o passwordless.
Riferimenti:
Disallineamenti delle policy per metodo. Gli amministratori possono consentire un metodo per l'accesso MFA ma escluderlo dalla policy SSPR, o viceversa. Ad esempio un' organizzazione potrebbe consentire il push dell'autenticatore per l'accesso ma non per il reset della password. Lo strumento vede solo ciò che SSPR è disposto a offrire.
SSPR completamente disabilitato (SSPR_0011). Se SSPR non è concesso in licenza o non è
abilitato per un utente, l'endpoint restituisce ViewSsprNotEnabledInUserPolicy
e nessuna informazione sui metodi è disponibile. L'account esiste e probabilmente ha MFA
configurato, ma questo strumento non può determinare cosa.
Account guest e federati. Gli utenti esterni e i guest B2B si autenticano
tramite il loro tenant di origine. L'endpoint SSPR del tenant della risorsa non ha
visibilità sulla registrazione MFA del loro tenant di origine e restituisce
ViewFeatureNotAvailable. La loro postura MFA è invisibile da questo endpoint.
Restrizioni sui metodi a livello di tenant. Se un amministratore ha disabilitato una classe di metodi nella policy SSPR, questa non verrà offerta a nessun utente indipendentemente dalla registrazione individuale, rendendo impossibile distinguere "metodo non registrato" da "metodo disabilitato".
Gli account amministratore sono sempre abilitati a SSPR. Le impostazioni della policy SSPR di Microsoft si applicano solo agli utenti finali standard. Gli account amministratore sono sempre abilitati al reset della password self-service indipendentemente dalla policy SSPR del tenant, e Microsoft richiede che abbiano due metodi di autenticazione registrati. Questo è imposto a livello di piattaforma e non può essere disabilitato dagli amministratori del tenant.
Riferimento: SSPR policy documentation
[!IMPORTANT] Questo ha un'implicazione utile per la ricognizione. Se SSPR è disabilitato per gli utenti standard in un tenant (restituendo
ViewSsprNotEnabledInUserPolicy), qualsiasi account che raggiunge con successo la schermata di selezione del metodo è probabilmente un membro di un ruolo privilegiato. Gli account che si enumerano correttamente tramite SSPR quando la policy più ampia del tenant è disabilitata si distinguono come probabili account amministratore, e i loro metodi registrati sono visibili anche quando i metodi degli utenti standard non lo sono. Questo consente l'identificazione di target di alto valore e account privilegiati che possono essere individuati per ulteriori attacchi mirati.
| Capacità | Supportata |
|---|---|
| Enumerazione utenti (account esistente o meno) | Sì |
| Enumerazione metodi SSPR | Sì |
| Inferenza metodi MFA (tramite registrazione combinata) | Approssimativa — affidabile per la maggior parte dei tenant standard |
| Rilevamento MFA FIDO2 / basata su certificati | No |
| MFA account guest / federati | No |
| Account con SSPR disabilitato | No (account confermato esistente, metodi sconosciuti) |
| Identificazione account amministratore | Parziale — gli amministratori sono sempre abilitati a SSPR, quindi possono distinguersi quando SSPR del tenant è altrimenti disabilitato |
CurrentViewName nella risposta del server viene usato come verità di base per il risultato — non il matching del body HTMLIl portale SSPR di Microsoft (passwordreset.microsoftonline.com) mostra una
schermata di selezione del metodo di contatto (MultigateAuthenticationControl) dopo
aver accettato un username valido. L'HTML restituito elenca ogni metodo di verifica
registrato come radio button in MultigateAuthenticationControl_RadioTable.
I metodi la cui riga <tr> è display:none non sono registrati per quell'utente
e vengono saltati.
Per ogni target, lo strumento esegue due richieste. Prima, una GET alla landing
page per stabilire una sessione ed estrarre i token del form ASP.NET (__VIEWSTATE,
__EVENTVALIDATION, WorkflowConsistencyCheck) necessari affinché il
server accetti una POST. Questi token sono crittograficamente legati al
cookie di sessione e non possono essere previsti o riutilizzati tra sessioni. Seconda, una
POST che invia l'indirizzo email insieme a quei token, replicando il
postback asincrono dell'UpdatePanel che il browser esegue quando l'utente clicca Avanti.
Il campo nascosto CurrentViewName nella risposta wire ASP.NET viene usato come
segnale autorevole per ciò che il server ha deciso, piuttosto che il matching di sottostringhe
sul body HTML.
| Radio ID | Metodo | Forza |
|---|---|---|
MultigateAuthenticationControl_AltEmailRadio | OTP Email Alternativa | Debole |
MultigateAuthenticationControl_SecurityQuestionsRadio | Domande di Sicurezza | Debole |
MultigateAuthenticationControl_AppCodeRadio | App Authenticator (TOTP) | Adeguato |
MultigateAuthenticationControl_MobileAppNotificationRadio | Notifica Push Authenticator | Adeguato |
MultigateAuthenticationControl_PhoneRadio | Chiamata Telefonica / SMS | Adeguato |
MultigateAuthenticationControl_OfficePhoneRadio | Telefono Ufficio | Adeguato |
L'email alternativa e le domande di sicurezza sono contrassegnate come deboli in quanto sono phishable e non soddisfano l'intento di un secondo fattore. Gli account con soli metodi deboli, o nessun metodo, vengono segnalati.
[!NOTE] Microsoft supporta sia token OATH software che token OATH hardware (anteprima) per SSPR. I token OATH software inseriti tramite l'app authenticator molto probabilmente emergono attraverso lo stesso pulsante
AppCodeRadiodel TOTP — entrambi si presentano come inserimento di un codice a sei cifre — quindi sono probabilmente già coperti senza un radio ID separato. I token OATH hardware (un portachiavi fisico) sono una classe di dispositivo distinta ma producono anch'essi un codice basato sul tempo; potrebbero essere renderizzati attraverso lo stesso pulsante o uno diverso che non è ancora stato osservato durante i test di questo processo.
| Stato | Significato |
|---|---|
MFA OK | Account trovato; almeno un secondo fattore forte registrato in SSPR |
NO MFA | Account trovato; nessun fattore forte (solo deboli o nessun metodo registrato) |
NOT FOUND | L'username non esiste nella directory |
SSPR DISABLED | L'account esiste ma la policy dell'amministratore blocca SSPR (es. SSPR_0011) — metodi sconosciuti |
SSPR N/A | Tipo di account non supportato da SSPR — utenti guest, esterni o federati |
CAPTCHA | Il server ha presentato un CAPTCHA; è richiesto un intervento manuale |
ERROR | Risposta inattesa o errore di rete |