
代号为 OtterHacker 的红队研究人员公开发布了 M365Pwned,这是一套 WinForms 图形界面工具,专为通过应用级 OAuth 令牌(无需用户交互)枚举、搜索和窃取 Microsoft 365 环境数据而设计。
工具架构与认证机制
该工具包完全基于 PowerShell 5.1 构建,利用 Microsoft Graph API,为针对企业 M365 租户的渗透测试人员和攻击模拟操作人员提供了强大的入侵后攻击能力。
工具包包含两个组件:
- MailPwned-GUI.ps1:针对 Exchange Online 和 Outlook
- SharePwned-GUI.ps1:针对 SharePoint 和 OneDrive
两款工具均通过注册的 Azure AD 应用程序运行(需管理员同意的应用程序权限),支持三种认证方式:客户端密钥、证书指纹和原始访问令牌(pass-the-token)。
| 工具 | 目标 | 功能 |
|---|---|---|
| MailPwned-GUI.ps1 | Exchange Online/Outlook | 浏览邮箱、搜索邮件、下载附件、发送仿冒邮件 |
| SharePwned-GUI.ps1 | SharePoint/OneDrive | 浏览站点和驱动器、搜索文件、预览和下载文档 |
MailPwned 核心功能
MailPwned 提供全功能 WinForms 界面,支持大规模操作 Exchange Online。认证后,操作人员可以:
- 使用
User.Read.All枚举所有租户邮箱 - 在所有邮箱中执行全局关键词搜索
- 阅读完整 HTML 渲染的电子邮件(支持内联图片预览,无需外部请求)

该工具原生支持批量附件下载、仿冒攻击邮件撰写和 CSV 导出功能,并突破了 Graph API 的关键限制:使用message实体类型的/v1.0/search/query接口不支持应用程序权限。
技术实现与红队应用场景
MailPwned 通过逐用户邮箱枚举和限定范围的单邮箱搜索技术实现突破,这种技术不仅功能完善,当从 OSINT 预加载 UPN 列表时还能产生更低的审计足迹。
所需关键权限包括:
Mail.ReadUser.Read.All- (可选)
Mail.ReadWrite(用于发送和删除操作)
作者强调的红队应用场景包括:
- 凭证收集(搜索_password_、VPN、_secret_等关键词)
- 通过线程劫持进行横向钓鱼
- HR 和投资者情报收集
- 批量附件窃取
SharePwned 文件存储渗透能力
SharePwned 采用与 MailPwned 类似的方法针对文件存储环境。操作人员可以:
- 枚举租户内所有 SharePoint 站点
- 浏览文档库
- 通过
/v1.0/search/query接口(使用driveItem实体)执行全文文件搜索
当Sites.Read.All不可用时,工具会回退到使用Files.Read.All权限执行单驱动器搜索模式。
| 权限 | 用途 |
|---|---|
| Sites.Read.All | 枚举所有 SharePoint 站点和驱动器 |
| Files.Read.All | 从任意驱动器读取和下载文件 |
| User.Read.All | (可选)按用户枚举 OneDrive 驱动器 |
文件预览支持内联文本提取,工具还包含扩展名感知图标和实时彩色编码的 API 日志面板用于操作调试。
多区域支持与安全防护建议
两款工具均支持通过Prefer: exchange.region=<region>标头选择欧洲、北美、亚太等主权云和 GCC 云区域,确保非默认租户的数据中心路由正确。
从操作安全(OPSEC)角度看:
- 所有请求直接路由至
https://graph.microsoft.com - Graph 审计日志会记录在注册应用程序身份下的访问
安全团队应采取以下防护措施:
- 审计 Azure AD 应用程序权限
- 监控异常的
Mail.Read或Sites.Read.All应用级访问 - 审查非用户交互式服务主体的授权许可
注:Ethical-Kaizoku 开发的 SharePwned CLI 版本已在 GitHub 上单独发布。