
Benutzernamen-Enumeration und Password-Spraying-Tool für Microsoft O365.
o365spray ist ein Tool zur Benutzernamenerkennung und zum Passwort-Spraying, das auf Microsoft Office 365 (O365) abzielt. Dieses Tool implementiert eine Sammlung von Enumeration- und Spray-Techniken, die von den in Danksagungen genannten Personen erforscht und identifiziert wurden.
Nur für Bildungszwecke, autorisierte und/oder Forschungszwecke.
WARNUNG: Die Module Autologon, oAuth2 und RST zur Benutzernamenerkennung funktionieren, indem sie einen einzelnen Authentifizierungsversuch pro Benutzer durchführen. Wenn die Module zusammen mit dem Passwort-Spraying in einer einzigen Ausführung verwendet werden, setzt o365spray automatisch den Lockout-Timer zurück, bevor das Passwort-Spraying durchgeführt wird – wenn die Enumeration allein ausgeführt wird, sollte sich der Benutzer darüber im Klaren sein, wie viele und wann jeder Authentifizierungsversuch durchgeführt wurde, und den Lockout-Timer manuell zurücksetzen, bevor er ein Passwort-Spraying durchführt.
Bestätigen, dass eine Domain O365 verwendet:
o365spray --validate --domain test.com
Benutzernamenerkennung gegen eine angegebene Domain durchführen:
o365spray --enum -U usernames.txt --domain test.com
Passwort-Spraying gegen eine angegebene Domain durchführen:
o365spray --spray -U usernames.txt -P passwords.txt --count 2 --lockout 5 --domain test.com
usage: o365spray [flags]
o365spray | Microsoft O365 User Enumerator and Password Sprayer -- v3.0.4
options:
-h, --help show this help message and exit
Target:
-d DOMAIN, --domain DOMAIN
Target domain for validation, user enumeration, and/or
password spraying.
Actions:
--validate Run domain validation only.
--enum Run username enumeration.
--spray Run password spraying.
Credentials:
-u USERNAME, --username USERNAME
Username(s) delimited using commas.
-p PASSWORD, --password PASSWORD
Password(s) delimited using commas.
-U USERFILE, --userfile USERFILE
File containing list of usernames.
-P PASSFILE, --passfile PASSFILE
File containing list of passwords.
--paired PAIRED File containing list of credentials in username:password
format.
Password Spraying Configuration:
-c COUNT, --count COUNT
Number of password attempts to run per user before resetting
the lockout account timer.
Default: 1
-l LOCKOUT, --lockout LOCKOUT
Lockout policy's reset time (in minutes).
Default: 15 minutes
Module Configuration:
--validate-module VALIDATE_MODULE
Specify which valiadtion module to run.
Default: getuserrealm
--enum-module ENUM_MODULE
Specify which enumeration module to run.
Default: office
--spray-module SPRAY_MODULE
Specify which password spraying module to run.
Default: oauth2
--adfs-url ADFS_URL AuthURL of the target domain's ADFS login page for password
spraying.
Scan Configuration:
--sleep [-1, 0-120] Throttle HTTP requests every `N` seconds. This can be randomized
by passing the value `-1` (between 1 sec and 2 mins).
Default: 0
--jitter [0-100] Jitter extends --sleep period by percentage given (0-100).
Default: 0
--rate RATE Number of concurrent connections (attempts) during
enumeration and spraying.
Default: 10
--poolsize POOLSIZE Maximum size of the ThreadPoolExecutor.
Default: 10000
--safe SAFE Terminate password spraying run if `N` locked accounts
are observed.
Default: 10
HTTP Configuration:
--useragents USERAGENTS
File containing list of user agents for randomization.
--timeout TIMEOUT HTTP request timeout in seconds. Default: 25
--proxy PROXY HTTP/S proxy to pass traffic through
(e.g. http://127.0.0.1:8080).
--proxy-url PROXY_URL
FireProx API URL.
Output Configuration:
--output OUTPUT Output directory for results and test case files.
Default: current directory
Debug:
-v, --version Print the tool version.
--debug Enable debug output.
Das OneDrive-Modul ist darauf angewiesen, dass der/die Zielbenutzer sich zuvor bei OneDrive angemeldet haben. Wenn ein gültiger Benutzer OneDrive noch nicht genutzt hat, wird sein Konto als 'ungültig' angezeigt.
Das oAuth2-Modul kann für föderiertes Spraying verwendet werden, aber es ist zu beachten, dass dies NUR funktioniert, wenn der Ziel-Mandant die Kennwortsynchronisation aktiviert hat – andernfalls schlägt die Authentifizierung immer fehl. Der Standardmechanismus besteht darin, auf das 'adfs'-Modul zurückzugreifen, wenn eine Föderation identifiziert wird.
Microsoft hat es schwieriger gemacht, Passwort-Spraying durchzuführen, daher helfen Tools wie FireProx dabei, die Ratenbegrenzung basierend auf IP-Adressen zu umgehen.
Um FireProx mit o365spray zu verwenden, erstellen Sie eine Proxy-URL für das angegebene o365spray-Modul basierend auf den Basistabellen unten. Die Proxy-URL kann dann über --proxy-url übergeben werden.
HINWEIS: Stellen Sie sicher, dass Sie das korrekte Flag
--enum-moduleoder--spray-modulemit der Basis-URL verwenden, die zur Erstellung der FireProx-URL verwendet wurde.
Der 'tenant'-Wert in der OneDrive-URL ist der Domainname, der über das Flag
--domainbereitgestellt wird.
Die User-Agent-Randomisierung wird jetzt unterstützt und kann durch die Bereitstellung einer User-Agent-Datei mit dem Flag --useragents erfolgen. o365spray enthält eine Beispieldatei mit über 4.800 Agents über resc/user-agents.txt.
Die Agents im Beispieldatensatz wurden von den folgenden Quellen gesammelt:
Das o365spray-Framework wurde in ein neues Tool portiert: Omnispray. Dieses Tool soll das ursprüngliche Enumeration- und Spraying-Framework modularisieren, um ein generisches Targeting zu ermöglichen, nicht nur O365. Omnispray enthält Vorlagenmodule für Enumeration und Spraying, die für jedes Ziel modifiziert und verwendet werden können.
Wenn Fehler/Probleme auftreten, öffnen Sie bitte ein Issue mit den Details (oder einen Pull Request mit dem vorgeschlagenen Fix). Siehe den Abschnitt unten für weitere Informationen zur Verwendung früherer Versionen.
Wenn Probleme auftreten, versuchen Sie, frühere Versionen vor Code-Umschreibungen auszuchecken:
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| Modul | Basis-URL |
|---|
| autodiscover | https://outlook.office365.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| office | https://login.microsoftonline.com/ |
| rst | https://login.microsoftonline.com/ |
| onedrive | https://<tenant>-my.sharepoint.com/ |
| Modul | Basis-URL |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | Derzeit nicht implementiert |
| autodiscover | https://autodiscover-s.outlook.com/ |
| autologon | https://autologon.microsoftazuread-sso.com/ |
| oauth2 | https://login.microsoftonline.com/ |
| reporting | https://reports.office365.com/ |
| rst | https://login.microsoftonline.com/ |
| Autor | Tool/Forschung | Link |
|---|
| gremwell | o365enum: Benutzernamenerkennung über office.com ohne Authentifizierung | o365enum |
| grimhacker | office365userenum: ActiveSync-Benutzernamenerkennung (Forschung und Entdeckung) | office365userenum / Blogbeitrag |
| Raikia | UhOh365: Benutzernamenerkennung über Autodiscover ohne Authentifizierung | UhOh365 |
| dafthack | MSOLSpray: Passwort-Spraying über MSOL | MSOLSpray |
| byt3bl33d3r | MSOLSpray: Python-Neuumsetzung | Gist |
| nyxgeek | onedrive_user_enum: OneDrive-Benutzernamenerkennung | onedrive_user_enum / Blogbeitrag |
| Mr-Un1k0d3r | adfs-spray: ADFS-Passwort-Spraying | adfs-spray |
| Nestori Syynimaa | AADInternals: oAuth2- und Autologon-Module | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray: Passwort-Spraying über die Office 365 Reporting-API | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (Mehrere Autoren) | Go365: RST-Benutzernamenerkennungs- und Passwort-Spraying-Modul | Go365 |
| byt3bl33d3r | SprayingToolkit: Code-Referenzen | SprayingToolkit |
| sensepost | ruler: Code-Referenzen | Ruler |