o365spray 是一款针对 Microsoft Office 365 (O365) 的用户名枚举和密码喷洒工具。此工具重新实现了由致谢中提及的人员研究和识别的一系列枚举和喷洒技术。
仅用于教育、授权和/或研究目的。
警告:Autologon、oAuth2 和 RST 用户枚举模块通过每个用户提交一次身份验证尝试来工作。如果在单次执行中将这些模块与密码喷洒一起运行,o365spray 会在执行密码喷洒之前自动重置锁定计时器——如果仅单独运行枚举,用户应了解每次身份验证尝试的次数和时间,并在执行任何密码喷洒之前手动重置锁定计时器。
验证域名是否使用 O365:
o365spray --validate --domain test.com
对指定域名执行用户名枚举:
o365spray --enum -U usernames.txt --domain test.com
对指定域名执行密码喷洒:
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
选项:
-h, --help 显示此帮助信息并退出
目标:
-d DOMAIN, --domain DOMAIN
用于验证、用户枚举和/或密码喷洒的目标域名。
操作:
--validate 仅运行域名验证。
--enum 运行用户名枚举。
--spray 运行密码喷洒。
凭据:
-u USERNAME, --username USERNAME
用逗号分隔的用户名。
-p PASSWORD, --password PASSWORD
用逗号分隔的密码。
-U USERFILE, --userfile USERFILE
包含用户名列表的文件。
-P PASSFILE, --passfile PASSFILE
包含密码列表的文件。
--paired PAIRED 包含 username:password 格式凭据列表的文件。
密码喷洒配置:
-c COUNT, --count COUNT
在重置锁定账户计时器之前,每个用户尝试的密码次数。
默认值:1
-l LOCKOUT, --lockout LOCKOUT
锁定策略的重置时间(分钟)。
默认值:15 分钟
模块配置:
--validate-module VALIDATE_MODULE
指定要运行的验证模块。
默认值:getuserrealm
--enum-module ENUM_MODULE
指定要运行的枚举模块。
默认值:office
--spray-module SPRAY_MODULE
指定要运行的密码喷洒模块。
默认值:oauth2
--adfs-url ADFS_URL 目标域 ADFS 登录页面的 AuthURL,用于密码喷洒。
扫描配置:
--sleep [-1, 0-120] 每 `N` 秒限制 HTTP 请求。可以通过传递值 `-1`(介于 1 秒到 2 分钟之间)来随机化。
默认值:0
--jitter [0-100] Jitter 按给定百分比(0-100)延长 --sleep 时期。
默认值:0
--rate RATE 枚举和喷洒期间的并发连接(尝试)数。
默认值:10
--poolsize POOLSIZE ThreadPoolExecutor 的最大大小。
默认值:10000
--safe SAFE 如果观察到 `N` 个锁定账户,则终止密码喷洒运行。
默认值:10
HTTP 配置:
--useragents USERAGENTS
包含用于随机化的用户代理列表的文件。
--timeout TIMEOUT HTTP 请求超时时间(秒)。默认值:25
--proxy PROXY 用于传递流量的 HTTP/S 代理
(例如 http://127.0.0.1:8080)。
--proxy-url PROXY_URL
FireProx API URL。
输出配置:
--output OUTPUT 结果和测试用例文件的输出目录。
默认值:当前目录
调试:
-v, --version 打印工具版本。
--debug 启用调试输出。
onedrive 模块依赖于目标用户先前已登录 OneDrive。如果有效用户尚未使用 OneDrive,其账户将显示为“无效”。
oAuth2 模块可用于联合喷洒,但应注意,这仅在目标租户已启用密码同步时才有效——否则身份验证将始终失败。默认机制是在识别到联合时默认使用“adfs”模块。
Microsoft 已使执行密码喷洒变得更加困难,因此使用 FireProx 等工具有助于绕过基于 IP 地址的频率限制。
要配合 o365spray 使用 FireProx,请根据下面的基础 URL 表为给定的 o365spray 模块创建一个代理 URL。然后可以通过 --proxy-url 传入该代理 URL。
注意:请确保使用与创建 FireProx URL 时使用的基础 URL 相对应的
--enum-module或--spray-module标志。
OneDrive URL 中的“tenant”值是通过
--domain标志提供的域名值。
现在支持用户代理随机化,可以通过提供用户代理文件给 --useragents 标志来实现。o365spray 包含一个示例文件,其中包含 4,800 多个代理,位于 resc/user-agents.txt。
示例数据集中的代理收集自以下来源:
o365spray 框架已移植到一个新工具:Omnispray。该工具旨在将原始枚举和喷洒框架模块化,以实现通用目标而非仅限 O365。Omnispray 包含枚举和喷洒的模板模块,可以修改并用于任何目标。
如果遇到任何错误/问题,请提交包含详细信息的 Issue(或带有建议修复的 Pull Request)。有关使用先前版本的更多信息,请参阅下面的部分。
如果遇到问题,请尝试在代码重写之前检出先前版本:
# v1.3.7
git checkout e235abdcebad61dbd2cde80974aca21ddb188704
# v2.0.4
git checkout a585432f269a8f527d61f064822bb08880c887ef
| 模块 | 基础 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/ |
| 模块 | 基础 URL |
|---|
| activesync | https://outlook.office365.com/ |
| adfs | 当前尚未实现 |
| 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/ |
| 作者 | 工具/研究 | 链接 |
|---|
| gremwell | o365enum:通过 office.com 进行无认证的用户枚举 | o365enum |
| grimhacker | office365userenum:ActiveSync 用户枚举研究与发现。 | office365userenum / 博文 |
| Raikia | UhOh365:通过 Autodiscover 进行无认证的用户枚举。 | UhOh365 |
| dafthack | MSOLSpray:通过 MSOL 进行密码喷洒 | MSOLSpray |
| byt3bl33d3r | MSOLSpray:Python 重新实现 | Gist |
| nyxgeek | onedrive_user_enum:OneDrive 用户枚举 | onedrive_user_enum / 博文 |
| Mr-Un1k0d3r | adfs-spray:ADFS 密码喷洒 | adfs-spray |
| Nestori Syynimaa | AADInternals:oAuth2 和 autologon 模块 | AADInternals |
| Daniel Chronlund / xFreed0m | Invoke-AzureAdPasswordSprayAttack / ADFSpray:Office 365 报告 API 密码喷洒 | Invoke-AzureAdPasswordSprayAttack / ADFSpray |
| Optiv (多位作者) | Go365:RST 用户枚举和密码喷洒模块 | Go365 |
| byt3bl33d3r | SprayingToolkit:代码参考 | SprayingToolkit |
| sensepost | ruler:代码参考 | Ruler |