
Outil d'énumération de noms d'utilisateur et de pulvérisation de mots de passe ciblant Microsoft O365.
o365spray est un outil d'énumération d'utilisateurs et de pulvérisation de mots de passe ciblant Microsoft Office 365 (O365). Cet outil réimplémente une série de techniques d'énumération et de pulvérisation recherchées et identifiées par les personnes mentionnées dans Remerciements.
À des fins éducatives, autorisées et/ou de recherche uniquement.
ATTENTION : Les modules d'énumération d'utilisateurs Autologon, oAuth2 et RST fonctionnent en soumettant une seule tentative d'authentification par utilisateur. Si les modules sont exécutés conjointement avec la pulvérisation de mots de passe en une seule exécution, o365spray réinitialisera automatiquement le minuteur de verrouillage avant d'effectuer la pulvérisation -- si l'énumération est exécutée seule, l'utilisateur doit être conscient du nombre et du moment de chaque tentative d'authentification et réinitialiser manuellement le minuteur de verrouillage avant d'effectuer toute pulvérisation de mots de passe.
Valider qu'un domaine utilise O365 :
o365spray --validate --domain test.com
Effectuer une énumération d'utilisateurs pour un domaine donné :
o365spray --enum -U usernames.txt --domain test.com
Effectuer une pulvérisation de mots de passe pour un domaine donné :
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 validation 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.
Le module onedrive dépend du fait que le(s) utilisateur(s) cible(s) se sont déjà connectés à OneDrive. Si un utilisateur valide n'a pas encore utilisé OneDrive, son compte sera considéré comme 'invalide'.
Le module oAuth2 peut être utilisé pour la pulvérisation fédérée, mais il convient de noter que cela fonctionnera UNIQUEMENT si le locataire cible a activé la synchronisation des mots de passe - sinon l'authentification échouera toujours. Le mécanisme par défaut consiste à utiliser le module 'adfs' lorsque la fédération est identifiée.
Microsoft a rendu plus difficile la pulvérisation de mots de passe, donc l'utilisation d'outils comme FireProx aide à contourner les limitations de débit basées sur les adresses IP.
Pour utiliser FireProx avec o365spray, créez une URL proxy pour le module o365spray donné en vous basant sur les tableaux d'URL de base ci-dessous. L'URL proxy peut ensuite être transmise via --proxy-url.
REMARQUE : Assurez-vous d'utiliser le bon indicateur
--enum-moduleou--spray-moduleavec l'URL de base utilisée pour créer l'URL FireProx.
La valeur 'tenant' dans l'URL OneDrive est la valeur du nom de domaine fournie via l'indicateur
--domain.
La randomisation de l'User-Agent est maintenant prise en charge et peut être réalisée en fournissant un fichier d'User-Agents à l'indicateur --useragents. o365spray inclut un fichier d'exemple avec plus de 4 800 agents via resc/user-agents.txt.
Les agents dans l'ensemble de données d'exemple ont été collectés à partir des sources suivantes :
Le cadre o365spray a été porté vers un nouvel outil : Omnispray. Cet outil vise à modulariser le cadre d'énumération et de pulvérisation original pour permettre un ciblage générique, pas seulement O365. Omnispray inclut des modules modèles pour l'énumération et la pulvérisation qui peuvent être modifiés et utilisés pour n'importe quelle cible.
Si des bugs/erreurs sont rencontrés, veuillez ouvrir un Issue avec les détails (ou une Pull Request avec la correction proposée). Voir la section ci-dessous pour plus d'informations sur l'utilisation des versions précédentes.
Si des problèmes surviennent, essayez de revenir aux versions antérieures avant les réécritures de code :
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| Module | URL de base |
|---|
| 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/ |
| Module | URL de base |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | Actuellement non implémenté |
| 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/ |
| Auteur | Outil/Recherche | Lien |
|---|
| gremwell | o365enum : Énumération d'utilisateurs via office.com sans authentification | o365enum |
| grimhacker | office365userenum : Recherche et découverte d'énumération d'utilisateurs ActiveSync. | office365userenum / article de blog |
| Raikia | UhOh365 : Énumération d'utilisateurs via Autodiscover sans authentification. | UhOh365 |
| dafthack | MSOLSpray : Pulvérisation de mots de passe via MSOL | MSOLSpray |
| byt3bl33d3r | MSOLSpray : Réimplémentation en Python | Gist |
| nyxgeek | onedrive_user_enum : Énumération d'utilisateurs OneDrive | onedrive_user_enum / article de blog |
| Mr-Un1k0d3r | adfs-spray : Pulvérisation de mots de passe ADFS | adfs-spray |
| Nestori Syynimaa | AADInternals : Modules oAuth2 et autologon | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray : Pulvérisation de mots de passe via l'API de reporting Office 365 | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (Plusieurs auteurs) | Go365 : Module d'énumération d'utilisateurs RST et de pulvérisation de mots de passe | Go365 |
| byt3bl33d3r | SprayingToolkit : Références de code | SprayingToolkit |
| sensepost | ruler : Références de code | Ruler |