
Strumento per l'enumerazione degli username e il password spraying mirato a Microsoft O365.
o365spray è uno strumento per l'enumerazione degli username e lo spraying delle password, mirato a Microsoft Office 365 (O365). Questo strumento reimplementa una raccolta di tecniche di enumerazione e spraying ricercate e identificate da coloro che sono menzionati in Riconoscimenti.
Solo per scopi educativi, autorizzati e/o di ricerca.
ATTENZIONE: I moduli di enumerazione utente Autologon, oAuth2 e RST funzionano inviando un singolo tentativo di autenticazione per utente. Se i moduli vengono eseguiti in combinazione con lo spraying delle password in una singola esecuzione, o365spray reimposta automaticamente il timer di blocco prima di eseguire lo spraying delle password — se l'enumerazione viene eseguita da sola, l'utente dovrebbe essere consapevole di quanti e quando è stato effettuato ogni tentativo di autenticazione e reimpostare manualmente il timer di blocco prima di eseguire qualsiasi spraying delle password.
Valida se un dominio utilizza O365:
o365spray --validate --domain test.com
Esegue l'enumerazione degli username per un dato dominio:
o365spray --enum -U usernames.txt --domain test.com
Esegue lo spraying delle password per un dato dominio:
o365spray --spray -U usernames.txt -P passwords.txt --count 2 --lockout 5 --domain test.com
usage: o365spray [flags]
o365spray | Microsoft O365 User Enumerator and Password Sprayer -- v3.0.4
options:
-h, --help show this help message and exit
Target:
-d DOMAIN, --domain DOMAIN
Target domain for validation, user enumeration, and/or
password spraying.
Actions:
--validate Run domain validation only.
--enum Run username enumeration.
--spray Run password spraying.
Credentials:
-u USERNAME, --username USERNAME
Username(s) delimited using commas.
-p PASSWORD, --password PASSWORD
Password(s) delimited using commas.
-U USERFILE, --userfile USERFILE
File containing list of usernames.
-P PASSFILE, --passfile PASSFILE
File containing list of passwords.
--paired PAIRED File containing list of credentials in username:password
format.
Password Spraying Configuration:
-c COUNT, --count COUNT
Number of password attempts to run per user before resetting
the lockout account timer.
Default: 1
-l LOCKOUT, --lockout LOCKOUT
Lockout policy's reset time (in minutes).
Default: 15 minutes
Module Configuration:
--validate-module VALIDATE_MODULE
Specify which valiadtion module to run.
Default: getuserrealm
--enum-module ENUM_MODULE
Specify which enumeration module to run.
Default: office
--spray-module SPRAY_MODULE
Specify which password spraying module to run.
Default: oauth2
--adfs-url ADFS_URL AuthURL of the target domain's ADFS login page for password
spraying.
Scan Configuration:
--sleep [-1, 0-120] Throttle HTTP requests every `N` seconds. This can be randomized
by passing the value `-1` (between 1 sec and 2 mins).
Default: 0
--jitter [0-100] Jitter extends --sleep period by percentage given (0-100).
Default: 0
--rate RATE Number of concurrent connections (attempts) during
enumeration and spraying.
Default: 10
--poolsize POOLSIZE Maximum size of the ThreadPoolExecutor.
Default: 10000
--safe SAFE Terminate password spraying run if `N` locked accounts
are observed.
Default: 10
HTTP Configuration:
--useragents USERAGENTS
File containing list of user agents for randomization.
--timeout TIMEOUT HTTP request timeout in seconds. Default: 25
--proxy PROXY HTTP/S proxy to pass traffic through
(e.g. http://127.0.0.1:8080).
--proxy-url PROXY_URL
FireProx API URL.
Output Configuration:
--output OUTPUT Output directory for results and test case files.
Default: current directory
Debug:
-v, --version Print the tool version.
--debug Enable debug output.
Il modulo onedrive si basa sul fatto che gli utenti target abbiano precedentemente effettuato l'accesso a OneDrive. Se un utente valido non ha ancora utilizzato OneDrive, il suo account risulterà 'non valido'.
Il modulo oAuth2 può essere utilizzato per lo spraying federato, ma va notato che funzionerà SOLO quando il tenant target ha abilitato la sincronizzazione delle password - altrimenti l'autenticazione fallirà sempre. Il meccanismo predefinito è quello di utilizzare il modulo 'adfs' quando viene identificata la federazione.
Microsoft ha reso più difficile eseguire lo spraying delle password, quindi l'utilizzo di strumenti come FireProx aiuta a bypassare il rate-limiting basato sugli indirizzi IP.
Per utilizzare FireProx con o365spray, crea un URL proxy per il modulo o365spray specificato in base alle tabelle degli URL di base sottostanti. L'URL proxy può poi essere passato tramite --proxy-url.
NOTA: Assicurati di utilizzare i flag
--enum-moduleo--spray-modulecorretti con l'URL di base utilizzato per creare l'URL FireProx.
Il valore 'tenant' nell'URL di OneDrive è il valore del nome di dominio fornito tramite il flag
--domain.
La randomizzazione dello User-Agent è ora supportata e può essere ottenuta fornendo un file di User-Agent al flag --useragents. o365spray include un file di esempio con oltre 4.800 agenti tramite resc/user-agents.txt.
Gli agenti nel set di dati di esempio sono stati raccolti da:
Il framework o365spray è stato portato su un nuovo strumento: Omnispray. Questo strumento è pensato per modularizzare il framework originale di enumerazione e spraying, consentendo un targeting generico, non solo O365. Omnispray include modelli di modulo per enumerazione e spraying che possono essere modificati e sfruttati per qualsiasi target.
Se vengono riscontrati bug/errori, apri un Issue con i dettagli (o una Pull Request con la correzione proposta). Vedi la sezione sottostante per maggiori informazioni sull'uso di versioni precedenti.
Se si incontrano problemi, prova a effettuare il checkout delle versioni precedenti ai refactoring del codice:
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| Modulo | URL di base |
|---|
| autodiscover | https://outlook.office365.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| office | https://login.microsoftonline.com/ |
| rst | https://login.microsoftonline.com/ |
| onedrive | https://<tenant>-my.sharepoint.com/ |
| Modulo | URL di base |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | Attualmente non implementato |
| autodiscover | https://autodiscover-s.outlook.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| reporting | https://reports.office365.com/ |
| rst | https://login.microsoftonline.com/ |
| Autore | Strumento/Ricerca | Link |
|---|
| gremwell | o365enum: Enumerazione utenti tramite office.com senza autenticazione | o365enum |
| grimhacker | office365userenum: Ricerca e scoperta dell'enumerazione utenti tramite ActiveSync. | office365userenum / post sul blog |
| Raikia | UhOh365: Enumerazione utenti tramite Autodiscover senza autenticazione. | UhOh365 |
| dafthack | MSOLSpray: Spraying delle password tramite MSOL | MSOLSpray |
| byt3bl33d3r | MSOLSpray: Reimplementazione in Python | Gist |
| nyxgeek | onedrive_user_enum: Enumerazione utenti OneDrive | onedrive_user_enum / post sul blog |
| Mr-Un1k0d3r | adfs-spray: Spraying delle password ADFS | adfs-spray |
| Nestori Syynimaa | AADInternals: Moduli oAuth2 e autologon | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray: Spraying delle password tramite API di reporting di Office 365 | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (Diversi autori) | Go365: Modulo di enumerazione utenti RST e spraying delle password | Go365 |
| byt3bl33d3r | SprayingToolkit: Riferimenti al codice | SprayingToolkit |
| sensepost | ruler: Riferimenti al codice | Ruler |