
Ferramenta de enumeração de nomes de usuário e pulverização de senhas voltada para o Microsoft O365.
o365spray é uma ferramenta de enumeração de nomes de usuário e pulverização de senhas voltada para o Microsoft Office 365 (O365). Esta ferramenta reimplementa uma coleção de técnicas de enumeração e pulverização pesquisadas e identificadas por aqueles mencionados em Agradecimentos.
Apenas para fins educacionais, autorizados e/ou de pesquisa.
AVISO: Os módulos de enumeração de usuários Autologon, oAuth2 e RST funcionam enviando uma única tentativa de autenticação por usuário. Se os módulos forem executados em conjunto com a pulverização de senhas em uma única execução, o o365spray redefinirá automaticamente o temporizador de bloqueio antes de realizar a pulverização de senhas – se a enumeração for executada sozinha, o usuário deve estar ciente de quantas e quando cada tentativa de autenticação foi feita e redefinir manualmente o temporizador de bloqueio antes de realizar qualquer pulverização de senhas.
Validar se um domínio usa O365:
o365spray --validate --domain test.com
Realizar enumeração de nomes de usuário contra um domínio específico:
o365spray --enum -U usernames.txt --domain test.com
Realizar pulverização de senhas contra um domínio específico:
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.
O módulo onedrive depende de o(s) usuário(s) alvo já terem feito login no OneDrive. Se um usuário válido ainda não usou o OneDrive, sua conta será exibida como 'inválida'.
O módulo oAuth2 pode ser usado para pulverização federada, mas deve-se observar que isso só funcionará quando o locatário alvo tiver a sincronização de senhas habilitada – caso contrário, a autenticação sempre falhará. O mecanismo padrão é usar o módulo 'adfs' quando a federação for identificada.
A Microsoft tornou mais difícil realizar pulverização de senhas, portanto, o uso de ferramentas como FireProx ajuda a contornar a limitação de taxa baseada em endereços IP.
Para usar o FireProx com o o365spray, crie uma URL de proxy para o módulo o365spray específico com base nas tabelas de URL base abaixo. A URL do proxy pode então ser passada via --proxy-url.
NOTA: Certifique-se de usar a flag correta
--enum-moduleou--spray-modulecom a URL base usada para criar a URL do FireProx.
O valor 'tenant' na URL do OneDrive é o valor do nome de domínio fornecido via a flag
--domain.
A randomização de User-Agent agora é suportada e pode ser realizada fornecendo um arquivo de User-Agent para a flag --useragents. O o365spray inclui um arquivo de exemplo com mais de 4.800 agentes via resc/user-agents.txt.
Os agentes no conjunto de dados de exemplo foram coletados dos seguintes:
O framework do o365spray foi portado para uma nova ferramenta: Omnispray. Esta ferramenta visa modularizar o framework original de enumeração e pulverização para permitir alvos genéricos, não apenas O365. O Omnispray inclui módulos de modelo para enumeração e pulverização que podem ser modificados e utilizados para qualquer alvo.
Se algum bug/erro for encontrado, por favor, abra uma Issue com os detalhes (ou um Pull Request com a correção proposta). Veja a seção abaixo para mais informações sobre como usar versões anteriores.
Se problemas forem encontrados, tente verificar versões anteriores antes das reescritas de código:
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| Módulo | URL 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/ |
| Módulo | URL Base |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | Atualmente não implementado |
| 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/ |
| Autor | Ferramenta/Pesquisa | Link |
|---|
| gremwell | o365enum: Enumeração de usuários via office.com sem autenticação | o365enum |
| grimhacker | office365userenum: Pesquisa e descoberta de enumeração de usuários via ActiveSync. | office365userenum / post no blog |
| Raikia | UhOh365: Enumeração de usuários via Autodiscover sem autenticação. | UhOh365 |
| dafthack | MSOLSpray: Pulverização de senhas via MSOL | MSOLSpray |
| byt3bl33d3r | MSOLSpray: Reimplementação em Python | Gist |
| nyxgeek | onedrive_user_enum: Enumeração de usuários do OneDrive | onedrive_user_enum / post no blog |
| Mr-Un1k0d3r | adfs-spray: Pulverização de senhas ADFS | adfs-spray |
| Nestori Syynimaa | AADInternals: Módulos oAuth2 e autologon | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray: Pulverização de senhas via API de relatórios do Office 365 | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (Vários Autores) | Go365: Módulo de enumeração de usuários e pulverização de senhas RST | Go365 |
| byt3bl33d3r | SprayingToolkit: Referências de código | SprayingToolkit |
| sensepost | ruler: Referências de código | Ruler |