mwaski/Microsoft-Extractor-GUI
GitHub: mwaski/Microsoft-Extractor-GUI
一个为 Microsoft 365 / Entra ID 取证日志收集提供点击式命令构建与租户自动化配置的 Windows GUI 前端。
Stars: 0 | Forks: 0
# M.E.G. — Microsoft Extractor GUI
这是一个用于 Microsoft 365 / Entra ID 取证日志收集的 Windows GUI 前端。M.E.G. 会在租户中配置一个经过强化的、基于证书身份验证的 Entra app registration,然后为您提供一个用于 [Invictus-IR Microsoft-Extractor-Suite](https://github.com/invictus-ir/Microsoft-Extractor-Suite) 的点击式命令构建器——这样您就可以在不手写 PowerShell 的情况下,确定范围、预览并运行事件响应收集任务。
## 它的功能
- **租户接入** — 创建一个带有自签名证书的 Entra ID app registration(`Microsoft Extractor GUI`),分配收集所需的 Microsoft Graph + Exchange Online application 权限,并以编程方式授予管理员同意。
- **命令构建器** — 一个分类的收集 cmdlet 清单(Exchange Online、Graph 身份/设备/策略、审计日志、统一审计日志),可生成随时可运行且引号正确的 PowerShell 命令。
- **全局及单 cmdlet 选项** — 从 UI 中配置输出目录、编码、日期范围、用户过滤器以及特定于 cmdlet 的参数。
- **统一审计日志辅助工具** — 通过 Graph(`Get-UALGraph`)按最近 N 天、明确日期范围或“全部拉取”来提取 UAL,并带有可选的 **Triage 模式**,该模式可过滤至精选的操作列表。
- **安装 / 更新 / 卸载** — 安装所需的 PowerShell 模块(Microsoft-Extractor-Suite、Microsoft.Graph、ExchangeOnlineManagement),更新它们,或者彻底卸载 app registration。
- **预检** — 一个“测试 UAL”操作,可在您构建收集任务之前确认租户中是否确实启用了统一审计日志记录。
## 工作原理
GUI 在 `ConfigRoot`(默认为 `C:\Microsoft_Extractor_GUI`)下管理租户配置,每个配置都包含租户的 app ID、tenant ID、证书指纹、主域名和输出路径。收集任务使用 app 的证书向 Graph 和 Exchange Online 进行身份验证——每次运行无需交互式登录或存储密钥。
安装程序逻辑嵌入在同一个脚本中(作为唯一事实来源),并在您点击 **安装 / 设置租户** 时在其单独的提升权限 PowerShell 窗口中启动。
## 系统要求
- 安装了 PowerShell 的 **Windows** 系统。
- **强烈建议使用 PowerShell 7 (`pwsh`)。** 已知 `Get-UALGraph` 在 Windows PowerShell 5.1 下会因 `BadRequest` 而失败(一个 JSON 日期序列化 bug)。当 GUI 回退到 `powershell.exe` 时会向您发出警告。
- 拥有足够权限的租户账户,能够在设置期间创建 app registration 并授予管理员同意(Global Administrator 或同等权限)。
- 以下模块(**M.E.G 设置**选项卡可以为您安装它们):
- `Microsoft-Extractor-Suite`
- `Microsoft.Graph`
- `ExchangeOnlineManagement`
## 用法
```
# 正常启动 (Commercial cloud)
.\Microsoft_Extractor_GUI.ps1
# 轮换现有 app registration 上的 certificate
.\Microsoft_Extractor_GUI.ps1 -NewCert
# 在 GUI 后方保持 console 窗口可见(用于 debugging)
.\Microsoft_Extractor_GUI.ps1 -ShowConsole
# 使用自定义 config/output 根目录
.\Microsoft_Extractor_GUI.ps1 -ConfigRoot "D:\Cases\Contoso"
# 显示帮助
.\Microsoft_Extractor_GUI.ps1 -Help
```
### 典型工作流
1. **安装 / 设置租户** — 配置 app registration 和证书,授予同意。
2. **测试 UAL** — 确认已启用统一审计日志。
3. **M365 命令构建器** — 勾选您需要的日志收集项。
4. **全局 / 单 Cmdlet 选项** — 设置输出目录、日期范围及任何参数。
5. **构建命令** — 预览生成的 PowerShell。
6. **执行** — 运行收集任务(在可用时使用 PowerShell 7)。
## 请求的权限
设置过程会分配以下 **application**(仅限 app)权限并授予管理员同意。
**Microsoft Graph**
| 权限 | 用途 |
| --- | --- |
| `Application.ReadWrite.All`, `Application.Read.All` | 管理 app registration |
| `AuditLog.Read.All`, `AuditLogsQuery.Read.All` | Entra 审计和登录日志,通过 Graph 获取 UAL |
| `Directory.Read.All` | 目录对象 |
| `IdentityRiskEvent.Read.All`, `IdentityRiskyUser.Read.All` | 风险检测 / 风险用户 |
| `Mail.ReadBasic.All`, `Mail.ReadWrite` | 邮件收集 |
| `MailboxSettings.Read` | 邮箱规则 / 设置 |
| `Policy.Read.All` | Conditional Access 和策略安全态势 |
| `UserAuthenticationMethod.Read.All` | MFA / 身份验证方法 |
| `User.Read.All`, `Group.Read.All`, `Device.Read.All` | 用户、组、设备 |
| `RoleManagement.Read.Directory`, `RoleEligibilitySchedule.Read.Directory`, `RoleAssignmentSchedule.Read.Directory` | 角色活动 / PIM |
| `SecurityEvents.Read.All` | 安全警报 / 安全分数 |
**Office 365 Exchange Online**
| 权限 | 用途 |
| --- | --- |
| `Exchange.ManageAsApp` | 仅限 app 的 Exchange Online 连接 |
| `Mail.ReadWrite` | 邮件项目访问 |
## 可用的收集项
- **Exchange Online — 邮箱:** 审计状态、权限、收件箱规则(`Get-MailboxRules` / `Show-MailboxRules`)
- **Exchange Online — 审计日志:** `Get-AdminAuditLog`、`Get-MailboxAuditLog`、经典统一审计日志(`Get-UAL`)
- **Exchange Online — 电子邮件:** `Get-Email`、`Get-Attachment`、`Show-Email`
- **Exchange Online — 访问过的邮件项目:** `Get-Sessions`、`Get-MessageIDs`
- **Exchange Online — 传输:** 传输规则、90 天邮件追踪
- **Graph — 身份:** 用户、管理员、MFA、风险检测/用户、OAuth 权限
- **Graph — 设备与组:** 设备、组、组成员、动态组
- **Graph — 策略与态势:** Conditional Access、安全默认值、安全分数、安全警报
- **Graph — 角色与许可证:** 角色活动、PIM 分配、许可证
- **Graph — 日志:** Entra 审计日志、Entra 登录日志、通过 Graph 获取的邮箱规则
- **统一审计日志 (Graph):** 日期范围 / 最近 N 天 / 全部拉取,带有可选的 Triage 模式
标签:AI合规, Entra ID, GUI工具, IPv6, Libemu, Microsoft 365, PowerShell, 库, 应急响应, 数字取证, 日志收集, 自动化脚本