
O Spray365 facilita o password spraying em contas Microsoft (Office 365 / Azure AD) por meio de sua abordagem personalizável de duas etapas. O plano de execução integrado inclui opções que tentam contornar o Azure Smart Lockout e políticas de acesso condicional inseguras.

O Spray365 é uma ferramenta de password spraying que identifica credenciais válidas para contas da Microsoft (Office 365 / Azure AD). Como o Spray365 é diferente de muitas outras ferramentas de password spraying já disponíveis? O Spray365 permite que as senhas sejam pulverizadas a partir de um "plano de execução". Embora ter um plano de execução pré-gerado que descreva a operação de spraying bem antes de ela ocorrer traga muitos outros benefícios que o Spray365 aproveita, isso também permite que os sprays de senha sejam retomados (opção -R) após um erro de rede ou outra interrupção. Embora seja mais fácil gerar um plano de execução do Spray365 diretamente usando o Spray365, outras ferramentas que produzem uma estrutura JSON compatível facilitam a construção de fluxos de trabalho únicos de password spraying.
O Spray365 expõe algumas opções úteis ao pulverizar credenciais. User agents aleatórios podem ser usados para detectar e contornar políticas de acesso condicional inseguras configuradas para limitar os tipos de dispositivos permitidos. Da mesma forma, o argumento --shuffle_auth_order é uma ótima maneira de pulverizar credenciais de forma menos previsível. Essa opção foi adicionada na tentativa de contornar bloqueios inteligentes de conta (por exemplo, Azure Smart Lockout). Embora não seja perfeito, randomizar a ordem em que as credenciais são testadas também traz outros benefícios, como dificultar ainda mais a detecção dessas operações de spraying. O Spray365 também suporta o proxy de tráfego via HTTP/HTTPS, o que se integra bem com outras ferramentas como Burp Suite para manipular a origem da operação de spraying.



Clone o repositório, instale os pacotes Python necessários e execute o Spray365!
$ git clone https://github.com/MarkoH17/Spray365
$ cd Spray365
~/Spray365$ pip3 install -r requirements.txt -U
~/Spray365$ python3 spray365.py
Um plano de execução é necessário para pulverizar credenciais, então precisamos criar um! O Spray365 pode gerar seu próprio plano de execução executando o comando generate no modo "normal": (spray365.py generate normal). Consulte a ajuda (spray365.py generate -h / spray365.py generate normal -h) para mais detalhes.
$ python3 spray365.py generate normal -ep <execution_plan_filename> -d <domain_name> -u <file_containing_usernames> -pf <file_containing_passwords>
exemplo:
$ python3 spray365.py generate normal -ep ex-plan.s365 -d example.com -u usernames -pf passwords
O Spray365 também pode auditar configurações de autenticação multifator (MFA) e políticas de acesso condicional, pulverizando credenciais válidas. Os planos de execução no estilo auditoria tentam todas as combinações de User-Agent + AAD Client ID + AAD Endpoint ID para um determinado par de credenciais.
O Spray365 pode gerar um plano de execução no estilo auditoria executando o comando generate no modo "audit": (spray365.py generate audit). Consulte a ajuda (spray365.py generate -h / spray365.py generate audit -h) para mais detalhes. Embora seja possível fornecer uma lista de usuários e senhas separadamente (-u e -pf), essas opções são mais adequadas para planos de execução de password spraying (não auditoria), o que provavelmente causaria muitas tentativas de login inválidas. Em vez disso, considere usar -u / --user_file com --passwords_in_userfile, que instruirá o Spray365 a extrair as senhas do "user_file" dividindo cada linha do arquivo de entrada por dois pontos, onde o valor antes dos dois pontos é tratado como nome de usuário e o valor após os dois pontos é tratado como senha (ex: <username>:<password>, jsmith:Password01).
$ python3 spray365.py generate audit -ep <execution_plan_filename> -d <domain_name> -u <file_containing_usernames_and_passwords> --passwords_in_userfile
exemplo:
$ python3 spray365.py generate audit -ep ex-plan.s365 -d example.com -u usernames --passwords_in_userfile
Depois que um plano de execução é criado, o Spray365 pode ser usado para processá-lo. Executar o Spray365 no modo "spray" (spray365.py spray) processará o plano de execução especificado e pulverizará as credenciais apropriadas. Todos os tipos de planos de execução (normal e auditoria) podem ser processados neste modo. Consulte a ajuda (spray365.py spray -h) para mais detalhes.
$ python3 spray365.py spray -ep <execution_plan_filename>
exemplo:
$ python3 spray365.py spray -ep ex-plan.s365
Após pulverizar credenciais a partir de um plano de execução, o Spray365 gera um arquivo JSON com os resultados. Esse arquivo pode ser processado usando outras ferramentas como JQ para obter insights sobre a operação de spraying após sua ocorrência. No entanto, o Spray365 também inclui um comando "review" que pode ser usado para obter informações sobre:
Consulte a ajuda (spray365.py review -h) para mais detalhes.
$ python3 spray365.py review <spray_results_json_filename>
exemplo:
$ python3 spray365.py review spray365_results_2022-05-20_18-58-31.json
Usage: spray365.py generate normal [OPTIONS]
Generate a vanilla (normal) execution plan