mirzamohamadi/EntraShield-M365-Security-Audit
GitHub: mirzamohamadi/EntraShield-M365-Security-Audit
一款开源的 Microsoft 365 和 Entra ID 零信任安全审计工具包,帮助管理员在攻击者之前发现身份与邮件配置中的安全隐患。
Stars: 0 | Forks: 0
# EntraShield
**在攻击者之前发现身份安全漏洞。**
EntraShield 是一个开源的 Microsoft 365 和 Microsoft Entra ID 安全审计工具包,专注于 Zero Trust、MFA、防钓鱼身份验证、特权访问、Conditional Access、Exchange Online 暴露风险、来宾访问以及域名邮件安全。
该项目专为 Microsoft 365 管理员、云工程师、安全分析师和 MSP 团队设计,旨在提供一种实用的方式来审查常见的身份安全弱点,并生成清晰的高管风格报告。
## 为什么选择 EntraShield?
身份已成为企业环境中受攻击最频繁的层面之一。许多数据泄露事件都始于一个被盗用的邮箱、一个被网络钓鱼欺骗的 MFA 提示、一个权限过高的管理员账户、薄弱的恢复流程、陈旧的身份验证方式,或者一个被遗忘的来宾用户。
EntraShield 可帮助回答以下问题:
- 特权用户是否受到防钓鱼 MFA 的保护?
- SMS 是否仍被用作主要或备用的身份验证方法?
- FIDO2/passkeys 是否已启用并被广泛采用?
- Conditional Access 策略是否符合 Zero Trust 基线?
- 是否存在过多的 Global Administrators?
- 来宾账户是否处于陈旧或无人管理的状态?
- SPF、DKIM 和 DMARC 是否配置正确?
- Exchange Online 中是否存在可疑的外部转发规则?
## 示例报告预览

打开完整的示例输出:
- [HTML 示例报告](reports/sample-report.html)
- [Markdown 示例报告](reports/sample-report.md)
## 核心功能
- MFA 和身份验证方法审计
- FIDO2 / passkey 就绪程度评估
- 特权角色审查
- Conditional Access 基线验证
- 陈旧身份验证暴露风险检查
- Exchange Online 转发和收件箱规则审查
- 来宾用户和外部访问审查
- SPF、DKIM 和 DMARC 域名安全检查
- 基于风险的评分模型
- HTML、Markdown 和 JSON 报告
- 包含示例数据的演示模式
- 以只读优先的安全审计方法
## 当前审计类别
| 类别 | 检查内容 |
|---|---|
| 身份验证 | MFA 注册、SMS 使用情况、薄弱方法、防钓鱼方法 |
| FIDO2 就绪程度 | FIDO2/passkey 策略、管理员采用情况、Temporary Access Pass 就绪程度、身份验证强度 |
| 特权访问 | Global Admin 数量、非活跃管理员、紧急账户、过多的常驻权限 |
| Conditional Access | 阻断陈旧身份验证、管理员 MFA、防钓鱼 MFA、高风险登录、合规设备 |
| Exchange 安全 | 外部转发、可疑的收件箱规则、邮箱暴露指标 |
| 来宾访问 | 陈旧来宾用户、过期的外部账户、无人管理的协作风险 |
| 域名邮件安全 | SPF、DKIM 和 DMARC 安全态势 |
## 快速开始:演示模式
演示模式不需要 Microsoft 租户。它使用存储在 `tests/sample-data` 中的示例 JSON 数据。
```
Import-Module ./src/EntraShield.psm1 -Force
Invoke-EntraShieldAudit -DemoMode -OutputPath ./reports
```
这将生成:
```
reports/entra-shield-report.html
reports/entra-shield-report.md
reports/entra-shield-findings.json
```
## 实时租户模式:已规划 / 只读
实时租户模式旨在以只读方式使用 Microsoft Graph 和 Exchange Online PowerShell。
为未来的实时数据收集推荐的 Microsoft Graph 权限:
```
User.Read.All
Directory.Read.All
RoleManagement.Read.Directory
Policy.Read.All
Domain.Read.All
Reports.Read.All
AuditLog.Read.All
```
示例:
```
Install-Module Microsoft.Graph -Scope CurrentUser
Install-Module ExchangeOnlineManagement -Scope CurrentUser
Import-Module ./src/EntraShield.psm1 -Force
Connect-EntraShield
Invoke-EntraShieldAudit -OutputPath ./reports
```
## 示例发现
```
Finding ID: ES-MFA-001
Title: Privileged users without phishing-resistant MFA
Severity: Critical
Category: Authentication
Impact: A compromised privileged account may lead to full tenant takeover.
Recommendation: Require FIDO2 security keys, passkeys, certificate-based authentication, or Windows Hello for Business for privileged roles.
```
## 评分模型
EntraShield 会计算一个 0 到 100 之间的分数。
| 分数 | 评级 |
|---|---|
| 85-100 | 强 |
| 70-84 | 良好 |
| 50-69 | 需要改进 |
| 0-49 | 高风险 |
当前评分类别:
```
Authentication Security: 25 points
Privileged Access: 20 points
Conditional Access: 20 points
Exchange Security: 15 points
Guest Access: 10 points
Domain Email Security: 10 points
```
## 建议的部署路线图
1. 从演示模式开始,查看示例报告。
2. 添加 Microsoft Graph 实时收集器。
3. 在非生产环境的 Microsoft 365 租户中进行测试。
4. 手动验证发现结果。
5. 添加 MSP 风格的报告和客户品牌定制。
6. 添加仅限 `-WhatIf` 模式的修复模板。
## 安全理念
EntraShield 遵循 **只读优先** 模型。
该项目默认绝不应修改租户配置。任何未来的修复功能都应要求明确的标志,例如:
```
Invoke-EntraShieldRemediation -Finding ES-MFA-001 -WhatIf
```
不应将任何密钥、令牌、租户 ID 或客户数据提交到代码库中。
## 参考资料
- NIST Digital Identity Guidelines SP 800-63B: https://pages.nist.gov/800-63-4/sp800-63b.html
- CISA: Implementing Phishing-Resistant MFA: https://www.cisa.gov/sites/default/files/publications/fact-sheet-implementing-phishing-resistant-mfa-508c.pdf
- FIDO Alliance FIDO2: https://fidoalliance.org/fido2/
- FIDO Alliance Passkeys: https://fidoalliance.org/passkeys/
- Microsoft Entra passwordless deployment planning: https://learn.microsoft.com/en-us/entra/identity/authentication/how-to-deploy-phishing-resistant-passwordless-authentication
- Microsoft Conditional Access: https://learn.microsoft.com/en-us/entra/identity/conditional-access/overview
- OWASP Authentication Cheat Sheet: https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html
## 路线图
### v0.1.0
- [x] 仓库结构
- [x] 演示模式数据模型
- [x] 示例发现结果
- [x] HTML 和 Markdown 示例报告
- [x] PowerShell 模块骨架
- [x] 文档基线
### v0.2.0
- [ ] Microsoft Graph 用户收集器
- [ ] 身份验证方法收集器
- [ ] 目录角色收集器
- [ ] Conditional Access 收集器
- [ ] 改进的错误处理
### v0.3.0
- [ ] Exchange Online 实时收集器
- [ ] SPF/DKIM/DMARC DNS 解析器
- [ ] 扩展的 FIDO2/passkey 就绪程度检查
- [ ] Pester 测试
### v1.0.0
- [ ] 生产就绪的只读审计
- [ ] MSP 报告模式
- [ ] GitHub Pages 演示
- [ ] 安装脚本
- [ ] 完整文档
## 标签 / 主题
`Microsoft365` `MicrosoftEntra` `CyberSecurity` `ZeroTrust` `PowerShell` `FIDO2` `Passkeys` `Passwordless` `MFA` `CloudSecurity` `IAM` `IdentitySecurity`
## 许可证
MIT 许可证。详情见 [LICENSE](LICENSE)。
标签:AI合规, Entra ID, JSONLines, Microsoft 365, 身份与访问管理, 零信任