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 中是否存在可疑的外部转发规则? ## 示例报告预览 ![EntraShield 示例仪表板](https://static.pigsec.cn/wp-content/uploads/repos/cas/fb/fb8116f7daa0c457f6a7b61dc71540d90cbbc72834de95f1c018b369a3d5b3e4.svg) 打开完整的示例输出: - [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, 身份与访问管理, 零信任