OtterHacker/M365Pwned

GitHub: OtterHacker/M365Pwned

一套基于PowerShell WinForms的M365后渗透工具,通过应用级OAuth令牌实现无用户交互的Exchange邮箱和SharePoint/OneDrive文件枚举、搜索与窃取。

Stars: 89 | Forks: 3

# M365Pwned ![截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/69bc0a55c2192525.png) 两款 WinForms GUI 工具,用于通过应用级 OAuth Token 对 M365 环境进行枚举、搜索和数据窃取 —— 无需用户交互。 | 工具 | 目标 | 功能 | |---|---|---| | `MailPwned-GUI.ps1` | Exchange Online / Outlook | 浏览邮箱、搜索邮件、下载附件、发送冒充邮件 | | `SharePwned-GUI.ps1` | SharePoint / OneDrive | 浏览站点和驱动器、搜索文件、预览和下载文档 | ## ⚠️ 免责声明 ## 系统要求 - **PowerShell 5.1** (Windows PowerShell — 不需要 PS7) - 一个已注册的 **Azure AD application**,具有管理员同意的 **Application permissions**(参见下方各工具部分) ## 身份验证 两种工具均支持三种身份验证方法: ### 客户端密钥 ``` -TenantId -ClientId -ClientSecret ``` ### 证书 ### 原始访问令牌 ``` -AccessToken ``` ## MailPwned-GUI.ps1 ### 概述 用于枚举、搜索、读取和窃取 M365/Exchange Online 环境中电子邮件的 WinForms GUI。 ### 权限 | 权限 | 用途 | |---|---| | `Mail.Read` | 读取所有邮箱中的邮件 | | `Mail.ReadWrite` | 发送/回复/转发/删除(可选) | | `User.Read.All` | 枚举所有邮箱(全局搜索) | ### 用法 ``` powershell.exe -STA -File .\MailPwned-GUI.ps1 ``` ### 功能 - 使用 Tenant ID + Client ID + 密钥、证书指纹或原始令牌进行**连接** - 针对主权/GCC云的**区域选择器** (EUR, FRA, NAM, GBR, APC, AUS, CAN, IND, JPN) - **加载邮箱** — 浏览文件夹树,读取带有完整 HTML 渲染的电子邮件 - **全局搜索** — 无需加载特定邮箱即可跨租户所有邮箱搜索 - **范围搜索** — 在已加载的邮箱内搜索 - **HTML 邮件预览** — 完整渲染并支持内联图片(无外部请求) - **附件下载** — 单个或批量 - **撰写 / 回复 / 全部回复 / 转发** — 发送冒充邮件 - **标记已读/未读,删除** - **导出为 CSV** - **API 日志面板** — 用于调试的实时彩色请求/响应日志 ### 红队用例 - **凭证狩猎** — 搜索所有邮箱中的 `password`、`credentials`、`VPN`、`secret` 等 - **横向钓鱼** — 阅读正在进行的邮件线程,并冒充受损账户发送令人信服的回复 - **情报收集** — 枚举谁在给谁发邮件,查找敏感项目、HR 数据、投资者通信 - **数据窃取** — 批量下载匹配搜索查询的附件 - **持久性发现** — 搜索 MFA 码、密码重置邮件、令牌确认 ## SharePwned-GUI.ps1 ## CLI 版本 由 **Ethical-Kaizoku** 开发的 CLI 版本可以在[这里](https://github.com/Ethical-Kaizoku/SharePwned)找到 ### 概述 用于枚举、浏览、搜索、预览和下载租户中 SharePoint 站点和 OneDrive 驱动器文件的 WinForms GUI。 ### 权限 | 权限 | 用途 | |---|---| | `Sites.Read.All` | 枚举所有 SharePoint 站点并浏览驱动器 | | `Files.Read.All` | 读取并下载任何驱动器中的文件 | | `User.Read.All` | 枚举所有用户的 OneDrive 驱动器(可选) | ### 用法 ``` powershell.exe -STA -File .\SharePwned-GUI.ps1 ``` ### 功能 - 使用 Tenant ID + Client ID + 密钥、证书指纹或原始令牌进行**连接** - 针对主权/GCC云的**区域选择器** - 跨租户**枚举所有 SharePoint 站点** - **浏览驱动器树** — 导航站点文档库和 OneDrive 文件夹 - **全文搜索** — 跨所有驱动器进行关键字搜索(使用 `driveItem` 实体的 `/v1.0/search/query`) - **回退搜索** — 当缺少 `Sites.Read.All` 时,按驱动器进行搜索 - **文件预览** — 文档文本提取,内联预览面板 - **下载文件** — 带进度的单文件下载 - **文件类型图标** — 文件浏览器中根据扩展名显示图标 - **API 日志面板** — 用于调试的实时彩色请求/响应日志 ### 红队用例 - **凭证狩猎** — 搜索所有 SharePoint/OneDrive 中的 `password`、`secret`、`private key`、配置文件、`.env` 等 - **情报收集** — 枚举项目站点、HR 驱动器、财务文档库 - **数据窃取** — 下载感兴趣的文件而不留下大量审计痕迹 - **访问映射** — 枚举受损应用可以到达的所有站点,以了解影响范围 ## 区域标头 `Prefer: exchange.region=` 标头将请求路由到正确的数据中心。在针对非默认区域的租户时是必需的。 | 代码 | 区域 | |---|---| | EUR | 欧洲 | | FRA | 法国 (主权) | | NAM | 北美 | | GBR | 英国 | | APC | 亚太地区 | | AUS | 澳大利亚 | | CAN | 加拿大 | | IND | 印度 | | JPN | 日本 | ## OPSEC 注意事项 - 所有请求直接发送到 `https://graph.microsoft.com` — 无代理或中继 - 应用令牌包含 `roles` 声明;Graph 日志将显示注册应用身份下的应用级访问 - 从文件加载邮箱 (`MailPwned`) 避免了调用 `GET /users` — 当 UPN 列表已通过 OSINT 或先前访问获得时,足迹更小 - 下载的 HTML 电子邮件将内联图片嵌入为 `data:` URI — 打开时无出站请求 - 两种工具都抑制脚本错误,并在获取令牌后完全离线运行 ## 许可证 仅供教育和授权安全测试使用。
标签:AD安全, Azuer AD, Exchange Online, Graph API, Grayware, GUI工具, IPv6, Libemu, M365, Microsoft 365, OAuth令牌, OneDrive, PowerShell, SharePoint Online, WinForms, 凭证利用, 数据展示, 数据泄露, 数据窃取, 横向移动, 红队, 编程规范, 越权访问, 邮件安全