EvilMist 是一套旨在支持云渗透测试与红队行动的脚本和实用工具合集。该工具包有助于识别错误配置、评估权限提升路径,并模拟攻击技术。EvilMist 旨在简化以云为重点的红队工作流程,并提升云基础设施的整体安全态势。
EvilMist 是一个脚本和实用工具集合,旨在支持云安全配置审计、云渗透测试和云红队行动。该工具包有助于识别错误配置、评估权限提升路径并模拟攻击技术。EvilMist 旨在简化以云为重点的红队工作流程,并改善云基础设施的整体安全态势。
未经验证的 Azure/Entra ID 枚举和侦察工具。使用公开可用的 API 和 DNS 查询执行被动/半被动枚举,无需任何身份验证令牌。
主要特点:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraEnum-PS1.md | scripts/powershell/Invoke-EntraEnum.ps1 |
全面的 Azure Entra ID (Azure AD) 用户枚举和安全评估工具,提供 PowerShell 和 Python 两种版本。
主要特点:
/users 访问被阻止时也能工作| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraRecon-PS1.md | scripts/powershell/Invoke-EntraRecon.ps1 |
| Python | EntraRecon-PY.md |
专注的安全评估工具,用于识别未启用多因素认证(MFA)的 Azure Entra ID 用户。包括共享邮箱检测和登录活动分析等高级功能。
主要特点:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraMFACheck-PS1.md | scripts/powershell/Invoke-EntraMFACheck.ps1 |
全面的来宾帐户分析工具,用于识别、分析和评估 Azure Entra ID 中外部用户的安全态势。对于来宾访问治理和安全审计至关重要。
主要特点:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraGuestCheck-PS1.md | scripts/powershell/Invoke-EntraGuestCheck.ps1 |
全面的安全评估工具,用于识别可访问 10 个关键管理应用程序(包括 PowerShell 工具、管理门户、核心 Microsoft 365 服务和特权身份管理)的 Azure Entra ID 用户。对于特权访问治理和管理工具审计至关重要。
主要特点:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraAppAccess-PS1.md | scripts/powershell/Invoke-EntraAppAccess.ps1 |
从根目录执行任何脚本,无需导航到子文件夹:```powershell
.\Invoke-EvilMist.ps1
.\Invoke-EvilMist.ps1 -Script EntraRecon -ExportPath "users.csv"
.\Invoke-EvilMist.ps1 -List
.\Invoke-EvilMist.ps1 -Script EntraMFACheck -Matrix -OnlyNoMFA
**可用的脚本:** EntraEnum, EntraRecon, EntraMFACheck, EntraGuestCheck, EntraAppAccess, EntraRoleCheck, EntraServicePrincipalCheck, EntraConditionalAccessCheck, EntraAdminUnitCheck, EntraStaleAccountCheck, EntraDeviceCheck, EntraSSPRCheck, EntraPasswordPolicyCheck, EntraLegacyAuthCheck, EntraLicenseCheck, EntraDirectorySyncCheck, EntraPowerPlatformCheck, EntraGroupCheck, EntraApplicationCheck, EntraAttackPathCheck, EntraAzureRBACCheck, EntraOAuthConsentCheck, EntraSignInRiskCheck, EntraPIMCheck, EntraKeyVaultCheck, EntraStorageAccountCheck, EntraNetworkSecurityCheck, EntraManagedIdentityCheck, EntraExchangeCheck, EntraSharePointCheck, EntraTeamsCheck, EntraAzureAttackPathCheck, EntraReport, EntraComplianceCheck, SharePointEnum
### 未经身份验证的 Entra ID 枚举 (PowerShell)
**要求:** PowerShell 7+(无需额外模块)```powershell
# Basic domain enumeration (TenantInfo, DomainRealm, DNS)
.\Invoke-EvilMist.ps1 -Script EntraEnum -Domain example.com
# Check if email exists
.\Invoke-EvilMist.ps1 -Script EntraEnum -Email [email protected] -UserEnum
# Bulk user enumeration from file
.\Invoke-EvilMist.ps1 -Script EntraEnum -EmailList users.txt -UserEnum -Throttle 1
# Full enumeration with export
.\Invoke-EvilMist.ps1 -Script EntraEnum -Domain example.com -All -ExportPath results.json
# Stealth mode
.\Invoke-EvilMist.ps1 -Script EntraEnum -Domain example.com -All -EnableStealth
📖 完整文档: EntraEnum-PS1.md
要求: PowerShell 7+```powershell
.\Invoke-EvilMist.ps1 -Script EntraRecon
.\Invoke-EvilMist.ps1 -Script EntraRecon -UseAzCliToken
.\Invoke-EvilMist.ps1 -Script EntraRecon -ExportPath "users.csv"
.\Invoke-EvilMist.ps1 -Script EntraRecon -EnableStealth
📖 **完整文档:** [EntraRecon-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraRecon-PS1.md)
### Enumerate-EntraUsers (Python)
**要求:** Python 3.8+, `msal`, `requests````bash
# Install dependencies
pip install -r requirements.txt
# Run directly from subfolder
python scripts\python\entra_recon.py
📖 完整文档: EntraRecon-PY.md
要求: PowerShell 7+, Microsoft.Graph modules```powershell
.\Invoke-EvilMist.ps1 -Script EntraMFACheck
.\Invoke-EvilMist.ps1 -Script EntraMFACheck
.\Invoke-EvilMist.ps1 -Script EntraMFACheck -ExportPath "no-mfa-users.csv"
.\Invoke-EvilMist.ps1 -Script EntraMFACheck -Matrix -IncludeDisabledUsers
.\Invoke-EvilMist.ps1 -Script EntraMFACheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraMFACheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraMFACheck-PS1.md)
### 来宾帐户枚举(PowerShell)
**要求:** PowerShell 7+、Microsoft.Graph 模块```powershell
# Enumerate all guest accounts
.\Invoke-EvilMist.ps1 -Script EntraGuestCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraGuestCheck -ExportPath "guest-accounts.csv"
# Show only guests without MFA in matrix view
.\Invoke-EvilMist.ps1 -Script EntraGuestCheck -Matrix -OnlyNoMFA
# Include disabled guests with stealth mode
.\Invoke-EvilMist.ps1 -Script EntraGuestCheck -IncludeDisabledGuests -EnableStealth -QuietStealth
📖 完整文档: EntraGuestCheck-PS1.md
要求: PowerShell 7+, Microsoft.Graph modules```powershell
.\Invoke-EvilMist.ps1 -Script EntraAppAccess
.\Invoke-EvilMist.ps1 -Script EntraAppAccess -ExportPath "app-access.csv"
.\Invoke-EvilMist.ps1 -Script EntraAppAccess -Matrix -OnlyNoMFA
.\Invoke-EvilMist.ps1 -Script EntraAppAccess -EnableStealth -QuietStealth
📖 **完整文档:** [EntraAppAccess-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraAppAccess-PS1.md)
### 特权角色检查 (PowerShell)
**要求:** PowerShell 7+, Microsoft.Graph modules```powershell
# Check users with privileged directory roles
.\Invoke-EvilMist.ps1 -Script EntraRoleCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraRoleCheck -ExportPath "privileged-roles.csv"
# Show only users without MFA in matrix view
.\Invoke-EvilMist.ps1 -Script EntraRoleCheck -Matrix -OnlyNoMFA
# Show only permanent (non-PIM) assignments
.\Invoke-EvilMist.ps1 -Script EntraRoleCheck -OnlyPermanent -ExportPath "permanent-admins.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraRoleCheck -EnableStealth -QuietStealth
📖 完整文档: EntraRoleCheck-PS1.md
要求: PowerShell 7+, Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraServicePrincipalCheck
.\Invoke-EvilMist.ps1 -Script EntraServicePrincipalCheck -ExportPath "service-principals.csv"
.\Invoke-EvilMist.ps1 -Script EntraServicePrincipalCheck -Matrix -OnlyExpiredCredentials
.\Invoke-EvilMist.ps1 -Script EntraServicePrincipalCheck -OnlyHighPermission -ExportPath "high-perm-sp.csv"
.\Invoke-EvilMist.ps1 -Script EntraServicePrincipalCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraServicePrincipalCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraServicePrincipalCheck-PS1.md)
**主要功能:**
- **全面的角色覆盖** - 枚举所有目录角色,包括关键、高、中、低风险角色
- **PIM 支持** - 识别永久(活动)和 PIM 管理的(合格/活动)角色分配
- **分配追踪** - 显示分配日期、持续时间和过期日期
- **MFA 状态检测** - 识别未启用多因素身份验证的特权用户
- **最后登录追踪** - 显示登录日期/时间和活动模式
- **风险评估** - 根据角色关键性和安全态势对用户进行风险级别分类
- **活动分析** - 登录统计、陈旧账户、不活跃用户
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **过滤选项** - 仅显示未启用 MFA 的用户、仅显示永久分配,或包含已禁用的账户
- **导出选项** - 包含完整角色分配详情的 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免检测
| Version | Documentation | File |
|---------|---------------|------|
| PowerShell | [EntraServicePrincipalCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraServicePrincipalCheck-PS1.md) | `scripts/powershell/Invoke-EntraServicePrincipalCheck.ps1` |
---
### 应用程序注册安全检查 (PowerShell)
**要求:** PowerShell 7+、Microsoft.Graph 模块```powershell
# Check all application registrations and analyze security posture
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck -ExportPath "applications.csv"
# Show only applications with expired credentials in matrix view
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck -Matrix -OnlyExpiredCredentials
# Show only high-permission applications
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck -OnlyHighPermission -ExportPath "high-perm-apps.csv"
# Show only applications with credentials
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck -OnlyWithCredentials -ExportPath "apps-with-creds.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraApplicationCheck -EnableStealth -QuietStealth
📖 完整文档: EntraApplicationCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraApplicationCheck-PS1.md | scripts/powershell/Invoke-EntraApplicationCheck.ps1 |
要求: PowerShell 7+、Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraConditionalAccessCheck
.\Invoke-EvilMist.ps1 -Script EntraConditionalAccessCheck -ExportPath "ca-policies.csv"
.\Invoke-EvilMist.ps1 -Script EntraConditionalAccessCheck -Matrix -OnlyWithExclusions
.\Invoke-EvilMist.ps1 -Script EntraConditionalAccessCheck -OnlyMFAgaps -ExportPath "mfa-gaps.csv"
.\Invoke-EvilMist.ps1 -Script EntraConditionalAccessCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraConditionalAccessCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraConditionalAccessCheck-PS1.md)
### 管理单元安全检查 (PowerShell)
**要求:** PowerShell 7+, Microsoft.Graph modules```powershell
# Analyze all Administrative Units and scoped role assignments
.\Invoke-EvilMist.ps1 -Script EntraAdminUnitCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraAdminUnitCheck -ExportPath "admin-units.csv"
# Show only scoped administrators without MFA in matrix view
.\Invoke-EvilMist.ps1 -Script EntraAdminUnitCheck -Matrix -OnlyNoMFA
# Include disabled accounts
.\Invoke-EvilMist.ps1 -Script EntraAdminUnitCheck -IncludeDisabledUsers -ExportPath "all-admins.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraAdminUnitCheck -EnableStealth -QuietStealth
📖 完整文档: EntraAdminUnitCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraAdminUnitCheck-PS1.md | scripts/powershell/Invoke-EntraAdminUnitCheck.ps1 |
要求: PowerShell 7+, Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraStaleAccountCheck
.\Invoke-EvilMist.ps1 -Script EntraStaleAccountCheck -ExportPath "stale-accounts.csv"
.\Invoke-EvilMist.ps1 -Script EntraStaleAccountCheck -IncludeDisabledUsers -Matrix
.\Invoke-EvilMist.ps1 -Script EntraStaleAccountCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraStaleAccountCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraStaleAccountCheck-PS1.md)
**主要功能:**
- **陈旧账户检测** - 识别最近未登录(超过90天)的账户
- **从未登录检测** - 查找从未使用过的账户
- **许可证浪费检测** - 识别已禁用但仍分配有许可证的账户
- **密码过期跟踪** - 检测密码已过期的账户
- **账户年龄分析** - 计算账户年龄并与非活跃程度关联
- **风险评估** - 按风险级别(CRITICAL/HIGH/MEDIUM/LOW)对账户分类
- **活动分析** - 登录统计、陈旧账户细分
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **筛选选项** - 包含或排除已禁用账户
- **导出选项** - CSV/JSON格式,包含全面的账户详情
- **隐身模式** - 可配置延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraStaleAccountCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraStaleAccountCheck-PS1.md) | `scripts/powershell/Invoke-EntraStaleAccountCheck.ps1` |
---
### 设备信任与合规性检查 (PowerShell)
**要求:** PowerShell 7+, Microsoft.Graph 模块```powershell
# Analyze all registered devices
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck -ExportPath "devices.csv"
# Show only non-compliant devices in matrix view
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck -Matrix -OnlyNonCompliant
# Show only BYOD devices
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck -OnlyBYOD -ExportPath "byod-devices.csv"
# Show only devices with stale sign-ins
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck -OnlyStale -ExportPath "stale-devices.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraDeviceCheck -EnableStealth -QuietStealth
📖 完整文档: EntraDeviceCheck-PS1.md
关键特性:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraDeviceCheck-PS1.md | scripts/powershell/Invoke-EntraDeviceCheck.ps1 |
要求: PowerShell 7+, Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraSSPRCheck
.\Invoke-EvilMist.ps1 -Script EntraSSPRCheck -ExportPath "sspr-users.csv"
.\Invoke-EvilMist.ps1 -Script EntraSSPRCheck -Matrix -OnlyNoBackup
.\Invoke-EvilMist.ps1 -Script EntraSSPRCheck -IncludeDisabledUsers -ExportPath "all-sspr-users.csv"
.\Invoke-EvilMist.ps1 -Script EntraSSPRCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraSSPRCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraSSPRCheck-PS1.md)
**主要功能:**
- **SSPR 状态检测** - 识别已启用、注册或具备 SSPR 能力的用户
- **注册方法分析** - 分析 SSPR 已注册的认证方法
- **备份方法检测** - 识别未配置备份方法的用户
- **强方法检测** - 区分强认证方法与弱认证方法
- **MFA 状态关联** - 将 SSPR 配置与 MFA 状态交叉引用
- **最后登录跟踪** - 显示登录日期/时间和活动模式
- **风险评估** - 根据 SSPR 配置将用户按风险级别 (HIGH/MEDIUM/LOW) 分类
- **活动分析** - 登录统计、长期未登录账户、非活跃用户
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **过滤选项** - 仅显示无备份方法的用户或包含已禁用账户
- **导出选项** - 包含全面 SSPR 详细信息的 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraSSPRCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraSSPRCheck-PS1.md) | `scripts/powershell/Invoke-EntraSSPRCheck.ps1` |
---
### 密码策略安全检查 (PowerShell)
**要求:** PowerShell 7+, Microsoft.Graph 模块```powershell
# Analyze all password policies
.\Invoke-EvilMist.ps1 -Script EntraPasswordPolicyCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraPasswordPolicyCheck -ExportPath "password-policies.csv"
# Show only users with weak password policies in matrix view
.\Invoke-EvilMist.ps1 -Script EntraPasswordPolicyCheck -Matrix -OnlyWeakPolicies
# Show only users with password never expires
.\Invoke-EvilMist.ps1 -Script EntraPasswordPolicyCheck -OnlyNeverExpires -ExportPath "never-expires.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraPasswordPolicyCheck -EnableStealth -QuietStealth
📖 完整文档: EntraPasswordPolicyCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraPasswordPolicyCheck-PS1.md | scripts/powershell/Invoke-EntraPasswordPolicyCheck.ps1 |
要求: PowerShell 7+, Microsoft.Graph modules```powershell
.\Invoke-EvilMist.ps1 -Script EntraLegacyAuthCheck
.\Invoke-EvilMist.ps1 -Script EntraLegacyAuthCheck -ExportPath "legacy-auth.csv"
.\Invoke-EvilMist.ps1 -Script EntraLegacyAuthCheck -Matrix -OnlyRecent
.\Invoke-EvilMist.ps1 -Script EntraLegacyAuthCheck -IncludeDisabledUsers -ExportPath "all-legacy-users.csv"
.\Invoke-EvilMist.ps1 -Script EntraLegacyAuthCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraLegacyAuthCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraLegacyAuthCheck-PS1.md)
**主要功能:**
- **旧版协议检测** - 识别 10 种旧版身份验证协议(IMAP、POP3、SMTP、Exchange ActiveSync 等)
- **登录日志分析** - 查询审核日志中旧版身份验证的使用情况(最近 90 天)
- **最后使用追踪** - 显示上次旧版身份验证的日期和时间
- **协议统计** - 跟踪每个协议的成功/失败登录次数
- **MFA 状态检测** - 识别使用旧版身份验证但未启用多因素身份验证的用户
- **风险评估** - 根据使用模式和最近活跃程度对用户按风险级别(严重/高/中/低)进行归类
- **活动分析** - 登录统计、协议细分、使用频率
- **矩阵视图** - 紧凑的表格格式,便于快速视觉扫描
- **过滤选项** - 仅显示近期使用情况或包含已禁用账户
- **导出选项** - 包含完整旧版身份验证详情 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免被检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraLegacyAuthCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraLegacyAuthCheck-PS1.md) | `scripts/powershell/Invoke-EntraLegacyAuthCheck.ps1` |
---
### 许可证和 SKU 分析 (PowerShell)
**要求:** PowerShell 7+、Microsoft.Graph 模块```powershell
# Analyze all license SKUs and user assignments
.\Invoke-EvilMist.ps1 -Script EntraLicenseCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraLicenseCheck -ExportPath "licenses.csv"
# Show only users with privileged licenses (E5, P2) in matrix view
.\Invoke-EvilMist.ps1 -Script EntraLicenseCheck -Matrix -OnlyPrivilegedLicenses
# Show only unused license assignments
.\Invoke-EvilMist.ps1 -Script EntraLicenseCheck -OnlyUnusedLicenses -ExportPath "unused-licenses.csv"
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraLicenseCheck -EnableStealth -QuietStealth
📖 完整文档: EntraLicenseCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraLicenseCheck-PS1.md | scripts/powershell/Invoke-EntraLicenseCheck.ps1 |
要求: PowerShell 7+, Microsoft.Graph modules```powershell
.\Invoke-EvilMist.ps1 -Script EntraDirectorySyncCheck
.\Invoke-EvilMist.ps1 -Script EntraDirectorySyncCheck -ExportPath "sync-status.csv"
.\Invoke-EvilMist.ps1 -Script EntraDirectorySyncCheck -Matrix -OnlySyncErrors
.\Invoke-EvilMist.ps1 -Script EntraDirectorySyncCheck -OnlyStaleSync -ExportPath "stale-sync.csv"
.\Invoke-EvilMist.ps1 -Script EntraDirectorySyncCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraDirectorySyncCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraDirectorySyncCheck-PS1.md)
**主要特性:**
- **同步状态分析** - 识别已同步与仅云端用户
- **同步错误检测** - 列举所有预配与同步错误
- **陈旧同步检测** - 识别同步超过7天的用户
- **同步冲突识别** - 检测重复属性与冲突
- **同步范围分析** - 检查同步配置与范围
- **风险评估** - 根据同步健康状态将用户按风险等级分类(严重/高/中/低)
- **活动分析** - 同步统计、错误分类、域分析
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **筛选选项** - 仅显示同步错误、陈旧同步或包含禁用账户
- **导出选项** - CSV/JSON格式,包含全面的同步详情
- **隐身模式** - 可配置的延迟与抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraDirectorySyncCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraDirectorySyncCheck-PS1.md) | `scripts/powershell/Invoke-EntraDirectorySyncCheck.ps1` |
---
### Power Platform 枚举 (PowerShell)
**要求:** PowerShell 7+、Microsoft.Graph 模块、Power Platform 管理员或环境创建者权限
**身份验证:** 脚本自动处理 Power Platform API 身份验证:
- **默认**:设备代码流(浏览器提示)——无需配置
- **Azure CLI**:使用 `-UseAzCliToken`——必要时自动运行 `az login`
- **Azure PowerShell**:使用 `-UseAzPowerShellToken`——必要时自动运行 `Connect-AzAccount`(使用与 Graph 身份验证相同的账户)```powershell
# Enumerate all Power Apps and Power Automate flows
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -ExportPath "power-platform.csv"
# Show only high-risk resources (CRITICAL/HIGH) in matrix view
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -Matrix -OnlyHighRisk
# Show only resources with sensitive connectors
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -OnlySensitiveConnectors -ExportPath "sensitive.csv"
# Use Azure CLI (automatically runs 'az login' if needed)
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -UseAzCliToken
# Use Azure PowerShell (automatically runs 'Connect-AzAccount' if needed, uses Graph context account)
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -UseAzPowerShellToken
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraPowerPlatformCheck -EnableStealth -QuietStealth
📖 完整文档: EntraPowerPlatformCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraPowerPlatformCheck-PS1.md | scripts/powershell/Invoke-EntraPowerPlatformCheck.ps1 |
要求: PowerShell 7+、Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraAttackPathCheck
.\Invoke-EvilMist.ps1 -Script EntraAttackPathCheck -ExportPath "attack-paths.csv"
.\Invoke-EvilMist.ps1 -Script EntraAttackPathCheck -Matrix -OnlyHighRisk
.\Invoke-EvilMist.ps1 -Script EntraAttackPathCheck -IncludeDisabledUsers -ExportPath "all-paths.csv"
.\Invoke-EvilMist.ps1 -Script EntraAttackPathCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraAttackPathCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraAttackPathCheck-PS1.md)
**关键特性:**
- **权限提升分析** - 识别通过可赋角色组获取提升权限的路径
- **密码重置委托检测** - 查找可以重置其他用户密码的用户
- **传递组成员资格分析** - 识别对特权组的间接访问
- **共享邮箱访问检测** - 识别可能用于横向移动的共享邮箱
- **风险评估** - 根据路径类型和用户安全态势,将攻击路径按风险级别(关键/高/中)分类
- **路径复杂度分析** - 评估攻击路径复杂度(低/中/高)
- **MFA状态检测** - 识别攻击路径中未启用多因素身份验证的用户
- **上次登录跟踪** - 显示登录日期/时间及活动模式
- **活动分析** - 登录统计、陈旧账户、非活跃用户
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **过滤选项** - 仅显示高风险路径或包含已禁用账户
- **导出选项** - 带有全面攻击路径详情的 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraAttackPathCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraAttackPathCheck-PS1.md) | `scripts/powershell/Invoke-EntraAttackPathCheck.ps1` |
---
### Azure RBAC 角色分配审计与漂移检测(PowerShell)
**要求:** PowerShell 7+、Az.Accounts、Az.Resources、Microsoft.Graph.Authentication 模块```powershell
# Export all Azure RBAC role assignments across ALL tenants and subscriptions to baseline JSON
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export
# Export to specific file
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -ExportPath "rbac-baseline.json"
# Skip tenants with MFA/Conditional Access issues (common in multi-tenant scenarios)
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -SkipFailedTenants
# Show all users with their Azure permissions in matrix format
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -SkipFailedTenants -ShowAllUsersPermissions
# Expand group memberships to show all users who have Azure access via groups
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -SkipFailedTenants -ExpandGroupMembers
# Combined: Show all users including those with access via groups
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -SkipFailedTenants -ExpandGroupMembers -ShowAllUsersPermissions
# Detect drift against baseline across all tenants
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode DriftDetect -BaselinePath "rbac-baseline.json"
# Detect drift with matrix view and export report
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode DriftDetect -BaselinePath "rbac-baseline.json" -Matrix -ExportPath "drift-report.json"
# Export specific tenant only
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -TenantId "tenant-id-123"
# Export specific subscription with Azure CLI auth
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -SubscriptionId "sub-123" -UseAzCliToken
# Stealth mode drift detection
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode DriftDetect -BaselinePath "baseline.json" -EnableStealth -QuietStealth
# Export excluding PIM/JIT time-bounded assignments (focus on permanent assignments only)
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode Export -ExcludePIM
# Detect drift excluding PIM/JIT assignments (ignore temporary elevated access)
.\Invoke-EvilMist.ps1 -Script EntraAzureRBACCheck -Mode DriftDetect -BaselinePath "baseline.json" -ExcludePIM
📖 完整文档: EntraAzureRBACCheck-PS1.md
主要特性:
-SkipFailedTenants)-ShowAllUsersPermissions)-ExpandGroupMembers)-ExcludePIM)| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraAzureRBACCheck-PS1.md | scripts/powershell/Invoke-EntraAzureRBACCheck.ps1 |
要求: PowerShell 7+、Microsoft.Graph 模块```powershell
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck -ExportPath "consent-grants.csv"
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck -Matrix -OnlyHighRisk
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck -OnlyThirdParty -OnlyAdminConsent
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck -StaleDays 60 -OnlyStale
.\Invoke-EvilMist.ps1 -Script EntraOAuthConsentCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraOAuthConsentCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraOAuthConsentCheck-PS1.md)
**主要功能:**
- **OAuth2PermissionGrant 枚举** - 枚举租户中所有委派权限授予
- **管理员与用户同意检测** - 区分租户范围内的管理员同意与单个用户同意
- **危险权限检测** - 识别高风险范围(Mail.ReadWrite、Files.ReadWrite.All、User.ReadWrite.All 等)
- **过期同意检测** - 查找未使用的同意授予(可配置阈值,默认 90 天)
- **第三方应用识别** - 自动识别具有提升权限的非 Microsoft 应用程序
- **登录活动关联** - 与登录活动交叉引用以检测休眠应用
- **风险评估** - 根据同意类型、权限和应用来源将同意授予按风险级别(严重/高/中/低)分类
- **发布者分析** - 跟踪应用程序发布者及已验证发布者状态
- **资源跟踪** - 识别每个应用有权访问的 API/资源
- **矩阵视图** - 紧凑的表格格式,便于快速视觉扫描
- **筛选选项** - 仅显示高风险、第三方、过期或管理员同意授予
- **导出选项** - 带有全面同意授予详细信息的 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraOAuthConsentCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraOAuthConsentCheck-PS1.md) | `scripts/powershell/Invoke-EntraOAuthConsentCheck.ps1` |
---
### 登录风险检查 (PowerShell)
**要求:** PowerShell 7+、Microsoft.Graph 模块、Azure AD Premium P2```powershell
# Enumerate all risky users
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -ExportPath "risky-users.csv"
# Show only high-risk users in matrix view
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -Matrix -OnlyHighRisk
# Show only active (not remediated) risks
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -OnlyActive
# Include risky sign-ins from the last 7 days
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -IncludeRiskySignIns -DaysBack 7
# Full analysis with pattern detection
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -IncludeRiskySignIns -IncludeRiskDetections -Matrix
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraSignInRiskCheck -EnableStealth -QuietStealth
📖 完整文档: EntraSignInRiskCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraSignInRiskCheck-PS1.md | scripts/powershell/Invoke-EntraSignInRiskCheck.ps1 |
要求: PowerShell 7+, Microsoft.Graph 模块, Azure AD Premium P2```powershell
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck -ExportPath "pim-audit.csv"
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck -Matrix -OnlyCritical
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck -OnlyHighPrivilege -MaxActivationHours 2
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck -IncludeGroups -IncludeAccessReviews
.\Invoke-EvilMist.ps1 -Script EntraPIMCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraPIMCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraPIMCheck-PS1.md)
**主要功能:**
- **JIT 访问配置审计** - 分析最大激活持续时间、审批要求、MFA 强制
- **审批工作流分析** - 识别没有审批或缺少审批者的角色
- **合理理由要求** - 检测没有强制激活理由的角色
- **MFA 强制** - 识别不需要 MFA 激活的角色
- **通知配置** - 分析角色激活的管理员通知设置
- **永久分配检测** - 发现绕过 PIM 的常驻特权访问
- **组 PIM** - 分析基于组的特权访问管理
- **访问评审** - 检查定期访问认证配置
- **风险评估** - 根据配置缺陷将角色按风险级别(CRITICAL/HIGH/MEDIUM/LOW)分类
- **资格与活跃分析** - 比较资格分配与活跃/永久分配
- **紧急访问账户检测** - 识别可能为紧急访问账户的永久分配
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **筛选选项** - 仅显示关键角色、高特权角色或错误配置
- **导出选项** - CSV/JSON,包含全面的 PIM 配置详情
- **隐身模式** - 可配置延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraPIMCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraPIMCheck-PS1.md) | `scripts/powershell/Invoke-EntraPIMCheck.ps1` |
---
### Azure Key Vault 安全检查 (PowerShell)
**要求:** PowerShell 7+、Az.Accounts、Az.KeyVault、Az.Resources、Az.Monitor 模块```powershell
# Perform comprehensive Key Vault security audit
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck -ExportPath "keyvault-audit.csv"
# Show only critical findings in matrix view
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck -Matrix -OnlyCritical
# Audit only Key Vaults with public access enabled
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck -OnlyPublicAccess
# Include secret and certificate expiration analysis
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck -IncludeSecrets -IncludeCertificates -ExpirationDays 90
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraKeyVaultCheck -EnableStealth -QuietStealth
📖 完整文档: EntraKeyVaultCheck-PS1.md
主要特性:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraKeyVaultCheck-PS1.md | scripts/powershell/Invoke-EntraKeyVaultCheck.ps1 |
全面的 Azure 存储账户安全审计工具,可检测暴露的存储账户和数据外泄风险。识别公共 blob 容器、网络配置错误和数据保护缺口。```powershell
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck -ExportPath "storage-audit.csv"
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck -Matrix -OnlyCritical
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck -OnlyAnonymousContainers -IncludeContainers
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck -IncludeKeyAge -KeyRotationDays 60
.\Invoke-EvilMist.ps1 -Script EntraStorageAccountCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraStorageAccountCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraStorageAccountCheck-PS1.md)
**主要特性:**
- **公共 Blob 容器检测** - 识别具有匿名访问权限的容器(Blob/Container 级别)
- **HTTPS 强制检查** - 检测允许未加密 HTTP 流量的存储帐户
- **共享密钥访问分析** - 识别使用存储密钥与 Azure AD 身份验证的帐户
- **网络安全审计** - 检查公共访问、防火墙规则、VNet 集成、私有终结点
- **数据保护分析** - Blob 软删除、容器软删除、版本控制状态
- **密钥轮换跟踪** - 识别超出轮换阈值的存储帐户密钥
- **跨租户复制** - 检测向其他租户复制数据(数据泄露风险)
- **TLS 版本验证** - 确保强制执行最低 TLS 1.2
- **基础设施加密** - 检查双重加密配置
- **诊断日志检查** - 验证是否启用了审计日志记录
- **风险评估** - 按风险级别(严重/高/中/低)对存储帐户进行分类
- **矩阵视图** - 紧凑表格格式,便于快速视觉扫描
- **筛选选项** - 仅显示关键、公共访问或匿名容器
- **导出选项** - CSV/JSON 格式,包含全面的存储帐户详细信息
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraStorageAccountCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraStorageAccountCheck-PS1.md) | `scripts/powershell/Invoke-EntraStorageAccountCheck.ps1` |
---
### 网络安全检查 (PowerShell)
**要求:** PowerShell 7+, Azure PowerShell modules```powershell
# Perform comprehensive Network Security audit
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck -ExportPath "network-audit.csv"
# Show only NSGs with open management ports
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck -OnlyOpenPorts -Matrix
# Full scan with VNets, Bastion, and DDoS analysis
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck -IncludeVNets -IncludeBastion -IncludeDDoS -Matrix
# Include NSG flow logs analysis
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck -IncludeFlowLogs -Matrix
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraNetworkSecurityCheck -EnableStealth -QuietStealth
📖 完整文档: EntraNetworkSecurityCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraNetworkSecurityCheck-PS1.md | scripts/powershell/Invoke-EntraNetworkSecurityCheck.ps1 |
全面的 Azure 托管标识安全审计工具,可识别过度权限和安全风险。检测高权限托管标识、跨订阅访问和未使用的标识。```powershell
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck -ExportPath "managed-identity-audit.csv"
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck -OnlyHighPrivilege -Matrix
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck -OnlyCrossSubscription -Matrix
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck -IncludeRoleDetails -Matrix
.\Invoke-EvilMist.ps1 -Script EntraManagedIdentityCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraManagedIdentityCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraManagedIdentityCheck-PS1.md)
**主要功能:**
- **身份清单** - 系统分配与用户分配托管身份的枚举
- **角色分配分析** - 每个托管身份的 Azure RBAC 权限
- **高权限检测** - 识别所有者、参与者、用户访问管理员角色
- **关键角色检测** - 标记具有所有者、用户访问管理员或 RBAC 管理员角色的身份
- **跨订阅访问** - 检测权限超出主订阅的身份
- **未使用身份检测** - 查找没有角色分配的托管身份
- **资源覆盖范围** - 虚拟机、应用服务、函数应用、用户分配身份
- **范围分析** - 订阅范围 vs 资源组 vs 资源级权限
- **风险评估** - 严重/高/中/低分类及发现
- **矩阵视图** - 紧凑表格格式,便于快速查看
- **导出选项** - CSV/JSON 格式,包含全面的身份详细信息
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraManagedIdentityCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraManagedIdentityCheck-PS1.md) | `scripts/powershell/Invoke-EntraManagedIdentityCheck.ps1` |
---
### Exchange Online 安全审计
全面的 Exchange Online 安全审计工具,可检测基于邮件的攻击向量和数据泄露风险。识别转发到外部地址的收件箱规则、可疑传输规则、邮箱委派以及审计日志缺口。```powershell
# Perform comprehensive Exchange Online security audit
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck -ExportPath "exchange-audit.csv"
# Show only mailboxes with external forwarding
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck -OnlyExternalForwarding -Matrix
# Show only suspicious inbox rules
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck -OnlySuspiciousRules -Matrix
# Include transport rules and OWA policies
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck -IncludeTransportRules -IncludeOWAPolicies -Matrix
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraExchangeCheck -EnableStealth -QuietStealth
📖 完整文档: EntraExchangeCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraExchangeCheck-PS1.md | scripts/powershell/Invoke-EntraExchangeCheck.ps1 |
全面的 SharePoint Online 安全评估工具,用于识别过度共享和外部访问风险。审计租户级和站点级共享配置,以检测潜在数据泄露。```powershell
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck -ExportPath "sharepoint-audit.csv"
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck -OnlyAnonymousLinks -Matrix
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck -OnlyPermissiveOverrides -Matrix
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck -IncludeOneDrive -IncludeSensitivityLabels -Matrix
.\Invoke-EvilMist.ps1 -Script EntraSharePointCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraSharePointCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraSharePointCheck-PS1.md)
**主要功能:**
- **租户共享设置** - 组织范围的外部共享策略分析
- **匿名链接检测** - 识别允许“任何人”链接的站点
- **站点级覆盖** - 检测共享权限比租户更宽松的站点
- **来宾访问分析** - 外部用户对敏感站点的访问
- **OneDrive 共享** - 个人存储的外部共享配置
- **敏感度标签覆盖** - 识别缺少数据分类的站点
- **默认链接分析** - 默认链接类型和权限配置
- **链接过期策略** - 匿名链接过期设置
- **域限制** - 允许/阻止列表配置
- **风险评估** - 严重/高/中/低等级分类及发现
- **矩阵视图** - 紧凑的表格格式以便快速审查
- **导出选项** - CSV/JSON 格式,包含全面的站点详情
- **隐身模式** - 可配置延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraSharePointCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraSharePointCheck-PS1.md) | `scripts/powershell/Invoke-EntraSharePointCheck.ps1` |
---
### SharePoint Online 枚举
使用 SharePoint REST API 的经过身份验证的 SharePoint Online 搜索和文件下载工具。使红队操作员能够在授权的渗透测试中发现并窃取敏感文档。是 [ElephantPoint](https://github.com/nettitude/ElephantPoint) (Nettitude) 的 PowerShell 移植版本。```powershell
# Zero-config search — auto-connects, auto-detects SharePoint domain
.\Invoke-EvilMist.ps1 -Script SharePointEnum -Query "password"
# Device code authentication (for headless terminals)
.\Invoke-EvilMist.ps1 -Script SharePointEnum -UseDeviceCode -Query "credentials"
# Direct bearer token from ROADtools/TokenTactics
.\Invoke-EvilMist.ps1 -Script SharePointEnum -SPOUrl example.sharepoint.com -Token $token -Query "confidential"
# Download file as Base64 for C2 exfiltration
.\Invoke-EvilMist.ps1 -Script SharePointEnum -SPOUrl example.sharepoint.com -Token $token -FileUrl "/sites/hr/Shared Documents/salaries.xlsx" -Base64
# Stealth search with matrix output and JSON export
.\Invoke-EvilMist.ps1 -Script SharePointEnum -Query "budget" -EnableStealth -QuietStealth -Matrix -ExportPath "results.json"
📖 完整文档: SharePointEnum-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | SharePointEnum-PS1.md | scripts/powershell/Invoke-SharePointEnum.ps1 |
全面的 Microsoft Teams 安全评估工具,用于审计协作安全设置。识别外部访问风险、来宾策略、会议安全漏洞以及应用权限问题。```powershell
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck -ExportPath "teams-audit.csv"
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck -OnlyMeetingRisks -Matrix
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck -OnlyExternalAccess -Matrix
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck -IncludeTeamsInventory -IncludeAppPolicies -Matrix
.\Invoke-EvilMist.ps1 -Script EntraTeamsCheck -EnableStealth -QuietStealth
📖 **完整文档:** [EntraTeamsCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraTeamsCheck-PS1.md)
**主要功能:**
- **外部访问(联合身份验证)** - 分析哪些组织外人员可以通信
- **来宾访问策略** - 来宾用户的功能和权限设置
- **会议策略** - 匿名加入、大厅绕过、录制设置
- **应用权限策略** - 第三方和自定义应用的访问控制
- **消息策略** - 聊天和消息功能设置
- **Teams 清单** - 可见性、来宾成员身份和治理分析
- **客户端配置** - Teams 客户端安全设置
- **风险评估** - 按严重/高/中/低分类并附带调查结果
- **矩阵视图** - 紧凑表格格式,便于快速审查
- **导出选项** - 带有全面配置详细信息的 CSV/JSON
- **隐身模式** - 可配置的延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraTeamsCheck-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraTeamsCheck-PS1.md) | `scripts/powershell/Invoke-EntraTeamsCheck.ps1` |
---
### Azure 跨服务攻击路径分析
全面的 Azure 跨服务攻击路径分析工具,可识别跨越多个 Azure 服务的多跳攻击路径。揭示对一个资源的访问如何导致跨 Azure 环境中其他资源的受损。```powershell
# Perform comprehensive cross-service attack path analysis
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck
# Export results to CSV
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck -ExportPath "azure-attack-paths.csv"
# Show only critical attack paths in matrix view
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck -OnlyCritical -Matrix
# Show critical and high-risk paths
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck -OnlyHighRisk -Matrix
# Include inherited permission paths with deeper analysis
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck -IncludeInheritedPaths -MaxPathDepth 4
# Stealth mode scan
.\Invoke-EvilMist.ps1 -Script EntraAzureAttackPathCheck -EnableStealth -QuietStealth
📖 完整文档: EntraAzureAttackPathCheck-PS1.md
主要功能:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraAzureAttackPathCheck-PS1.md | scripts/powershell/Invoke-EntraAzureAttackPathCheck.ps1 |
统一的 HTML 安全报告生成器,运行多项 EvilMist 安全检查,并生成包含风险评估、修复优先级和趋势分析的综合性管理层仪表盘。```powershell
.\Invoke-EvilMist.ps1 -Script EntraReport -QuickScan
.\Invoke-EvilMist.ps1 -Script EntraReport -ComprehensiveScan -ExportPath "full-report.html"
.\Invoke-EvilMist.ps1 -Script EntraReport -Checks MFA,Roles,ConditionalAccess,AttackPaths
.\Invoke-EvilMist.ps1 -Script EntraReport -Checks All -ExportPath "security-report.html"
.\Invoke-EvilMist.ps1 -Script EntraReport -ComprehensiveScan -BaselinePath "previous-report.json"
.\Invoke-EvilMist.ps1 -Script EntraReport -QuickScan -EnableStealth -QuietStealth
📖 **完整文档:** [EntraReport-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraReport-PS1.md)
**主要特性:**
- **统一报告** - 使用单个命令运行多个安全检查
- **管理仪表板** - 专业HTML报告,包含安全评分(0-100)
- **风险严重性概览** - 严重、高、中、低发现数量
- **修复优先级矩阵** - 优先操作(P1-P4)及建议时间线
- **趋势分析** - 与基线报告比较,追踪安全改进
- **快速扫描模式** - 核心安全检查(MFA、角色、CA、攻击路径、OAuth、PIM)
- **全面扫描** - 所有可用的安全检查,实现全面覆盖
- **JSON 导出** - 自动基线导出,用于未来比较
- **隐身模式** - 可配置延迟和抖动以避免检测
| 版本 | 文档 | 文件 |
|---------|---------------|------|
| PowerShell | [EntraReport-PS1.md](https://github.com/logisek/evilmist/blob/main/docs/EntraReport-PS1.md) | `scripts/powershell/Invoke-EntraReport.ps1` |
---
### 合规性评估(CIS/NIST/SOC2/ISO27001/GDPR)
全面的合规性评估工具,可针对行业标准框架(包括CIS Microsoft Azure基础基准、NIST 800-53、SOC 2、ISO 27001和GDPR)评估Azure Entra ID安全配置。```powershell
# Comprehensive compliance assessment against all frameworks
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -Matrix
# CIS Azure Benchmark assessment
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -Framework CIS -ExportPath "cis-compliance.csv"
# NIST 800-53 assessment with remediation guidance
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -Framework NIST -IncludeRemediation
# Executive report with compliance score
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -GenerateExecutiveReport -ExportPath "compliance-report.html"
# SOC 2 assessment showing only failed controls
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -Framework SOC2 -OnlyFailed
# Filter by NIST control family (e.g., Access Control)
.\Invoke-EvilMist.ps1 -Script EntraComplianceCheck -Framework NIST -ControlFamily AC
📖 完整文档: EntraComplianceCheck-PS1.md
主要特性:
| 版本 | 文档 | 文件 |
|---|---|---|
| PowerShell | EntraComplianceCheck-PS1.md | scripts/powershell/Invoke-EntraComplianceCheck.ps1 |
两个版本提供相同的核心功能:
|---------|---------------------|-------------------|---------------------------|----------------------------|----------------------|------------------------|--------------------------|--------------------------|------------------------|---------------------|-------------------|-------------|---------------------|-------------------|--------------|---------------------|-------------------|-------------------|-------------------|-------------------|-------------------| | 目的 | 全面用户枚举 | 针对性MFA安全审计 | 来宾访问治理 | 关键管理员访问审计 | 特权角色分配审计 | 服务账户安全审计 | 应用注册安全审计 | 安全策略差距分析 | 作用域管理员访问审计 | 账户卫生审计 | 设备信任与合规审计 | SSPR配置审计 | 密码策略安全审计 | 旧式身份验证安全审计 | 许可证与SKU分析 | 目录同步状态与健康审计 | Power Platform枚举与安全审计 | 组安全分析与治理 | 攻击路径分析 - 权限提升与横向移动 | 多租户Azure RBAC基线导出与漂移检测 | OAuth同意授权审计 - 非法同意检测 | | 用户枚举 | 15+种方法 | 标准方法 | 来宾聚焦 | 基于应用分配 | 基于角色分配 | 服务主体聚焦 | | | | | | 旧式身份验证聚焦 | 同步聚焦 | ❌ | | MFA检测 | 基本检查 | 高级(含方法类型) | 高级(含方法类型) | 高级(含方法类型) | 高级(含方法类型) | 所有者MFA检查 | | | | | | 高级(含方法类型) | ❌ | ❌ | | 共享邮箱检测 | ❌ | ✅ 自动 | ❌(不适用于来宾) | ❌(不适用于应用访问) | ❌(不适用于角色) | ❌(不适用于SP) | | | | | | ❌(不适用于旧式身份验证) | ❌ | ❌ | | 来宾域提取 | ❌ | ❌ | ✅ 自动 | ❌ | ❌ | ❌ | | | | | | ❌ | ❌ | ❌ | | 邀请状态跟踪 | ❌ | ❌ | ✅ 含接受日期 | ❌ | ❌ | ❌ | | | | | | ❌ | ❌ | ❌ | | 应用访问跟踪 | ❌ | ❌ | ❌ | ✅ 多应用覆盖 | ❌ | ❌ | | | | | | ❌ | ❌ | ❌ | | 角色分配跟踪 | ❌ | ❌ | ❌ | ❌ | ✅ 所有目录角色 | ❌ | | | | | | ❌ | ❌ | ✅ 所有Azure RBAC角色 | | PIM分配跟踪 | ❌ | ❌ | ❌ | ❌ | ✅ 合格与活动 | ❌ | | | | | | ❌ | ❌ | ❌ | | 凭证枚举 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 密钥与证书 | ✅ 密钥与证书 | | | | | | ❌ | ❌ | ❌ | | 凭证过期跟踪 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 已过期与即将过期 | ✅ 已过期与即将过期 | | | | | | ❌ | ❌ | ❌ | | 权限分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 高风险与关键 | ✅ 高风险与关键(API权限) | | | | | | ❌ | ❌ | ✅ RBAC角色权限 | | 所有者分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 含MFA状态 | ✅ 含MFA状态 | ❌ | | | | | ❌ | ❌ | ✅ 组所有者含MFA状态 | ❌ | | 应用注册枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面 | | | | | | ❌ | ❌ | ❌ | | API权限分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 委托与应用 | | | | | | ❌ | ❌ | ❌ | | 分配日期跟踪 | ❌ | ❌ | ✅ 邀请日期 | ✅ 分配日期 | ✅ 分配日期与时长 | ❌ | ❌ | | | | | ❌ | ❌ | ✅ 角色分配创建日期 | | 策略排除检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 用户、组、角色、应用 | | | | | ❌ | ❌ | ❌ | | MFA强制差距 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 策略级分析 | | | | | ❌ | ❌ | ❌ | | 关键应用覆盖 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 10个关键应用 | | | | | ❌ | ❌ | ❌ | | 旧式身份验证检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 策略目标 | | | | | ✅ 10种协议 | ❌ | ❌ | | 旧式协议检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | | | | ✅ IMAP/POP3/SMTP/EAS等 | ❌ | ❌ | | 上次旧式身份验证使用 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | | | | ✅ 日期/时间跟踪 | ❌ | ❌ | | 协议统计 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | | | | ✅ 成功/失败计数 | ❌ | ❌ | | 策略冲突检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 冗余/冲突 | ❌ | ❌ | ❌ | | | ❌ | ❌ | ❌ | | 管理单元枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面 | ❌ | ❌ | ❌ | | | ❌ | ❌ | ❌ | | 作用域角色分配分析 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有作用域分配 | ❌ | ❌ | ❌ | | | ❌ | ❌ | ❌ | | AU成员枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 成员与角色 | ❌ | ❌ | ❌ | | | ❌ | ❌ | ❌ | | 陈旧账户检测 | 有限 | 有限 | 有限 | 有限 | 有限 | ❌ | ❌ | 有限 | ✅ >90天不活跃 | ❌ | | | 有限 | ❌ | ❌ | | 从未登录检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 账户年龄分析 | ❌ | | | ❌ | ❌ | ❌ | | 许可证浪费检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 禁用含许可证 | ❌ | | | ❌ | ❌ | ❌ | | 密码过期跟踪 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 已过期密码 | ❌ | ❌ | ✅ 过期分析 | ❌ | ❌ | ❌ | | SSPR状态检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 已启用/已注册/具备能力 | ❌ | ❌ | ❌ | ❌ | | SSPR方法分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 注册方法 | ❌ | ❌ | ❌ | ❌ | | 备份方法检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 无备份方法 | ❌ | ❌ | ❌ | ❌ | | 强方法分类 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 强方法与弱方法 | ❌ | ❌ | ❌ | ❌ | | 设备枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面 | ❌ | ❌ | ❌ | ❌ | ❌ | | 合规状态检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | ✅ 合规/不合规/未知 | | | ❌ | ❌ | ❌ | | BYOD检测 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | ✅ 自动 | | | ❌ | ❌ | ❌ | | 陈旧登录检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | ✅ >90天 | ✅ >90天 | | | 有限 | ❌ | ❌ | | Intune合规策略 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面枚举 | | | ❌ | ❌ | ❌ | | 设备信任分析 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 联接类型 | | | ❌ | ❌ | ❌ | | 管理状态 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 已管理/未管理 | | | ❌ | ❌ | ❌ | | 上次登录跟踪 | ✅ | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | 有限(SP活动) | ❌ | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ✅ 含分析 | ❌ | | 登录能力检查 | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | 同步状态检测 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 同步与仅云 | ❌ | | 同步错误检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有预配错误 | ❌ | | 陈旧同步检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ >7天未同步 | ❌ | | 同步冲突识别 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 重复属性 | ❌ | | 同步范围分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 基本配置 | ❌ | | 租户SKU枚举 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面枚举 | ❌ | ❌ | | 许可证分配跟踪 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有分配 | ❌ | ❌ | | 特权许可证检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ E5, P2等 | ❌ | ❌ | | 未使用许可证检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 禁用含许可证 | ❌ | ❌ | ❌ | ❌ | ✅ 从未登录 | ❌ | ❌ | | 许可证使用分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 消耗统计 | ❌ | ❌ | ❌ | | Power Apps枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面 | ❌ | | Power Automate流程枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面 | ❌ | | 敏感连接器检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 30+连接器 | ❌ | | 高风险操作检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 删除/创建/修改 | ❌ | | 连接器风险分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 严重/高/中/低 | ❌ | ❌ | | 组枚举 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 全面(所有类型) | ❌ | | 无所有者检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 孤立组 | ❌ | | 过多成员检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ >100或>500成员 | ❌ | | 可分配角色组检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 严重风险组 | ❌ | | 组类型分析 | ✅ 基本 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 安全/M365/分发/动态 | ❌ | | OAuth同意授权枚举 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有OAuth2PermissionGrants | | 管理员与用户同意检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 租户范围与个人 | | 危险权限检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 邮件/文件/目录访问 | | 陈旧同意检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 可配置阈值 | | 第三方应用检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Microsoft与第三方 | | 发布者验证 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 已验证发布者状态 | | 多租户扫描 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有可访问租户 | ❌ | | 跳过失败租户 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 继续MFA/CA失败 | ❌ | | Azure RBAC基线导出 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ JSON基线 | ❌ | | Azure RBAC漂移检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 新增/移除/修改分配 | ❌ | | 多订阅支持 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 所有跨租户订阅 | ❌ | | 组成员扩展 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 扩展组以显示用户 | ❌ | | 所有用户权限矩阵 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 以用户为中心的权限视图 | ❌ | | 作用域层次分析 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 子/资源组/资源 | ❌ | | PIM/JIT排除 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 排除时限分配 | ❌ | | ABAC条件检测 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ 条件不匹配漂移 | ❌ | | 修复说明 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ Terraform/CLI/PowerShell | ❌ | | 风险级别评估 | 基础 | 高级(高/中/低) | 高级(高/中/低) | 高级(高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中/低) | 高级(严重/高/中) | 高级(严重/高/中/低) | | 活动分析 | 有限 | 详细(陈旧/近期/从未) | 详细(陈旧/近期/从未) | 详细(陈旧/近期/从未) | 详细(陈旧/近期/从未) | 基本(基于年龄) | 详细(凭证过期/权限分析) | 策略差距分析 | 详细(作用域管理员活动) | 详细(陈旧指标) | 详细(陈旧/近期/从未) | 详细(陈旧/近期/从未) | 详细(密码年龄/策略差距) | 详细(使用近期/协议统计) | 详细(许可证使用/未使用跟踪) | 详细(同步健康/错误统计) | 详细(资源/环境/所有者统计) | 详细(组类型/所有者/成员统计) | 详细(攻击路径类型/复杂度/风险统计) | 详细(漂移类型/角色/租户/订阅统计) | 详细(同意类型/权限/陈旧统计) | | 矩阵视图 | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | 部门分析 | ✅ | ✅ 含统计信息 | ✅ 含统计信息 | ✅ 含统计信息 | ✅ 含统计信息 | ❌ | ❌ | ✅ 含统计信息 | ✅ 含统计信息 | ❌ | ✅ 含统计信息 | ✅ 含统计信息 | ✅ 含统计信息 | ✅ 含统计信息 | ✅ 含统计信息 | ❌ | ❌ | ❌ | ❌ | ❌ | | BloodHound导出 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | HTML报告 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | | CSV/JSON导出 | ✅ | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ 增强字段 | ✅ JSON基线/漂移报告 | ✅ 增强字段 | | 隐身模式 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | | | 红队侦察 | MFA合规审计 | 外部用户安全 | 特权访问审计 | 特权角色治理 | 服务账户安全 | 应用注册安全与凭证管理 | 安全策略差距分析 | 作用域管理员访问治理 | 账户卫生与清理 | 设备信任与合规 | 密码重置安全 | 密码策略合规 | 旧式身份验证迁移与安全 | 许可证治理与成本优化 | 目录同步健康与错误跟踪 | Power Platform安全与连接器治理 | 组安全与治理 | 攻击路径分析与权限提升检测 | 多租户Azure RBAC治理与未授权访问检测 | OAuth同意安全与非法同意授权检测 |
pip install -r requirements.txt
或者手动安装:```bash
pip install msal requests
# Optional: Additional authentication methods
pip install azure-identity
Enumerate-EntraUsers: 脚本将在首次运行时自动安装所需的 Microsoft.Graph.Users 模块。
MFA 安全检查、来宾账户枚举、关键管理员访问检查、特权角色检查、服务主体检查、应用程序注册检查、条件访问检查、管理单元检查、陈旧账户检查、设备信任检查、SSPR 检查、密码策略检查、旧版身份验证检查、许可证检查、目录同步检查、Power Platform 检查和组安全检查: 需要 Microsoft Graph PowerShell SDK:
Azure RBAC 检查: 需要 Azure PowerShell 模块:```powershell Install-Module Az -Scope CurrentUser
或者安装单个模块:```powershell
Install-Module Az.Accounts -Scope CurrentUser
Install-Module Az.Resources -Scope CurrentUser
其他工具:```powershell Install-Module Microsoft.Graph -Scope CurrentUser
或者安装单个模块:```powershell
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser
Install-Module Microsoft.Graph.Users -Scope CurrentUser
Install-Module Microsoft.Graph.Identity.SignIns -Scope CurrentUser
Install-Module Microsoft.Graph.Identity.DirectoryManagement -Scope CurrentUser
Install-Module Microsoft.Graph.Applications -Scope CurrentUser
Install-Module Microsoft.Graph.Groups -Scope CurrentUser
两个脚本均支持多种身份验证方法:
az login 凭据Connect-AzAccount 凭据GRAPH_ACCESS_TOKEN 或 AZURE_ACCESS_TOKENPython 版本还支持:
本节提供了工具包中每个脚本所需的身份验证方法和 API 权限的全面矩阵。
所有脚本都支持相同的核心身份验证方法,根据目标 API 略有不同:
脚本: EntraRecon, EntraMFACheck, EntraGuestCheck, EntraAppAccess, EntraRoleCheck, EntraServicePrincipalCheck, EntraConditionalAccessCheck, EntraAdminUnitCheck, EntraStaleAccountCheck, EntraDeviceCheck, EntraSSPRCheck, EntraPasswordPolicyCheck, EntraLegacyAuthCheck, EntraLicenseCheck, EntraDirectorySyncCheck, EntraPowerPlatformCheck, EntraGroupCheck, EntraApplicationCheck, EntraAttackPathCheck, EntraOAuthConsentCheck, EntraSignInRiskCheck, EntraPIMCheck, EntraComplianceCheck
脚本: EntraAzureRBACCheck, EntraKeyVaultCheck, EntraStorageAccountCheck, EntraManagedIdentityCheck, EntraNetworkSecurityCheck, EntraAzureAttackPathCheck
下表显示了每个基于 Microsoft Graph 的脚本所需的权限范围和回退范围。当用户没有完整所需范围集的权限时,使用回退范围。
这些脚本使用 Azure PowerShell(Az 模块),需要 Azure RBAC 权限而不是 Microsoft Graph 范围:
以下 Microsoft Graph 范围在工具包中最常被需要:
要以完整功能运行所有脚本,建议使用以下合并的权限集:
Microsoft Graph(委托权限):``` Application.Read.All AuditLog.Read.All AdministrativeUnit.Read.All Device.Read.All DeviceManagementConfiguration.Read.All DeviceManagementManagedDevices.Read.All Directory.Read.All Group.Read.All GroupMember.Read.All IdentityRiskDetection.Read.All IdentityRiskySignIn.Read.All IdentityRiskyUser.Read.All Policy.Read.All PrivilegedAccess.Read.AzureAD Reports.Read.All RoleManagement.Read.Directory User.Read.All UserAuthenticationMethod.Read.All
**Azure RBAC:**
- 订阅或管理组级别的 Reader 角色(用于 Azure 资源脚本)
- Key Vault Reader(用于 EntraKeyVaultCheck 及密钥枚举)
- Storage Blob Data Reader(用于 EntraStorageAccountCheck 及容器枚举)
**Microsoft 365 管理角色:**
- Exchange Administrator(用于 EntraExchangeCheck)
- SharePoint Administrator(用于 EntraSharePointCheck)
- Teams Administrator(用于 EntraTeamsCheck)
---
## 法律免责声明
本工具包仅用于授权安全测试和研究目的。用户有责任确保在使用这些工具针对任何系统之前获得适当授权。作者对软件的误用不承担任何责任。
---
## 许可证
GNU 通用公共许可证 v3.0 - 详情请参阅 [LICENSE](https://github.com/logisek/evilmist/blob/main/LICENSE) 文件。
**版权所有 (C) 2025 Logisek**
---
## 贡献
欢迎贡献!请随时提交拉取请求或针对错误和功能请求开启议题。
---
## 致谢
- [Microsoft Graph API](https://docs.microsoft.com/en-us/graph/) - 主要数据源
- [BloodHound](https://github.com/BloodHoundAD/BloodHound) - 攻击路径分析灵感
- [AzureHound](https://github.com/BloodHoundAD/AzureHound) - Azure 数据收集格式
- [microsoft-info](https://github.com/merill/microsoft-info) - Microsoft 第一方应用名称与 Graph 权限
scripts/python/entra_recon.py |
| 文档 | 描述 |
|---|
| EntraRecon-PS1.md | 完整的 PowerShell 脚本文档,包含所有参数、功能和使用示例 |
| EntraRecon-PY.md | 完整的 Python 脚本文档,包含认证方法、隐身配置和示例 |
| EntraMFACheck-PS1.md | MFA 安全检查文档,包含共享邮箱检测、登录跟踪和风险评估 |
| EntraGuestCheck-PS1.md | 访客账号枚举文档,包含访客域提取、邀请跟踪和安全分析 |
| EntraAppAccess-PS1.md | PowerShell & Graph CLI 访问检查文档,包含应用访问跟踪、分配日期和特权访问分析 |
| EntraRoleCheck-PS1.md | 特权角色检查文档,包含角色枚举、PIM 分配跟踪、风险评估和安全分析 |
| EntraServicePrincipalCheck-PS1.md | 服务主体安全检查文档,包含凭据枚举、过期跟踪、权限分析、所有者安全和风险评估 |
| EntraConditionalAccessCheck-PS1.md | 条件访问策略安全检查文档,包含策略枚举、排除检测、MFA 执行缺口、关键应用覆盖范围和风险评估 |
| EntraStaleAccountCheck-PS1.md | 过期账号检查文档,包含过期账号检测、从未登录检测、许可浪费检测、密码过期跟踪和账号卫生分析 |
| EntraDeviceCheck-PS1.md | 设备信任与合规检查文档,包含设备枚举、合规状态检测、BYOD 检测、过时登录跟踪、Intune 合规策略和风险评估 |
| EntraSSPRCheck-PS1.md | 自助密码重置检查文档,包含 SSPR 状态检测、注册方法分析、备份方法检测、强方法分类、MFA 关联和风险评估 |
| EntraPasswordPolicyCheck-PS1.md | 密码策略安全检查文档,包含密码过期分析、永不过期检测、复杂度要求检查、弱策略识别、密码年龄跟踪和风险评估 |
| EntraLegacyAuthCheck-PS1.md | 旧式身份验证检查文档,包含旧式协议检测、登录日志分析、最后使用跟踪、协议统计、MFA 关联和风险评估 |
| EntraLicenseCheck-PS1.md | 许可和 SKU 分析文档,包含租户 SKU 枚举、用户许可分配跟踪、特权许可检测、未使用许可识别和风险评估 |
| EntraAdminUnitCheck-PS1.md | 管理单元安全检查文档,包含 AU 枚举、作用域角色分配分析、成员枚举、MFA 状态检测、风险评估和作用域管理员访问分析 |
| EntraDirectorySyncCheck-PS1.md | 目录同步状态检查文档,包含同步状态分析、同步错误检测、过期同步检测、同步冲突识别、同步作用域分析和风险评估 |
| EntraPowerPlatformCheck-PS1.md | Power Platform 枚举文档,包含 Power Apps 枚举、Power Automate 流枚举、敏感连接器检测、高风险操作识别、连接器分析和风险评估 |
| EntraGroupCheck-PS1.md | 组安全分析文档,包含组枚举、所有者分析(含 MFA 状态)、无所有者检测、过多成员检测、可分配角色组检测和风险评估 |
| EntraApplicationCheck-PS1.md | 应用程序注册安全检查文档,包含应用枚举、凭据分析、过期跟踪、API 权限分析、所有者安全评估和风险评估 |
| EntraAttackPathCheck-PS1.md | 攻击路径分析文档,包含权限提升路径、密码重置委派、传递组成员身份、共享邮箱访问、风险评估和路径复杂度分析 |
| EntraAzureRBACCheck-PS1.md | Azure RBAC 角色分配审计与漂移检测文档,包含基线导出、漂移检测、多订阅支持、多租户支持、跳过失败租户、组成员展开、所有用户权限矩阵、PIM/JIT 排除、ABAC 条件不匹配检测、修复说明(Terraform/CLI/PowerShell)、角色分配跟踪、未授权更改检测和风险评估 |
| EntraOAuthConsentCheck-PS1.md | OAuth 同意授权审计文档,包含 OAuth2PermissionGrant 枚举、管理员与用户同意检测、危险权限识别、过期同意检测、第三方应用分析、登录活动关联和非法同意授权检测的风险评估 |
| EntraSignInRiskCheck-PS1.md | 标识保护分析文档,包含风险用户枚举、风险级别/状态跟踪、风险检测分析、不可能行程检测、匿名 IP 检测、密码喷洒检测、泄露凭据检测、模式分析、时间分析和修复指南 |
| EntraPIMCheck-PS1.md | 特权身份管理 (PIM) 配置审计文档,包含 JIT 访问配置缺口、审批工作流分析、MFA 强制、理由要求、通知配置、永久分配检测、组的 PIM、访问审查和风险评估 |
| EntraKeyVaultCheck-PS1.md | Azure Key Vault 安全审计文档,包含访问模型分析(RBAC vs 访问策略)、软删除和清除保护状态、网络安全审计(公共访问、防火墙、VNet)、私有终结点检测、过度宽松访问检测、诊断日志验证、机密/证书/密钥过期跟踪和风险评估 |
| EntraStorageAccountCheck-PS1.md | Azure 存储帐户安全审计文档,包含公共 Blob 容器检测、HTTPS 强制验证、共享密钥访问分析、网络安全审计(公共访问、防火墙、VNet、私有终结点)、数据保护分析(软删除、版本控制)、密钥轮换跟踪、跨租户复制检测、TLS 版本验证、基础设施加密检查、诊断日志验证和风险评估 |
| EntraNetworkSecurityCheck-PS1.md | Azure 网络安全审计文档,包含 NSG 规则分析、过度宽松规则检测(0.0.0.0/0, Any-Any)、开放管理端口检测(RDP, SSH, WinRM)、Azure Bastion 使用分析、DDoS 保护状态、VNet 对等安全、子网 NSG 覆盖、NSG 流日志配置、VPN/ExpressRoute 网关分析、流量分析状态和风险评估 |
| EntraManagedIdentityCheck-PS1.md | Azure 托管标识安全审计文档,包含系统分配与用户分配标识清单、角色分配分析、高特权标识检测(Owner, Contributor, UAA)、关键角色检测、跨订阅访问检测、未使用标识识别、资源覆盖(VM、App Services、Function Apps)、作用域分析和风险评估 |
| EntraExchangeCheck-PS1.md | Exchange Online 安全审计文档,包含收件箱规则分析、外部转发检测、传输规则审计、邮箱委派分析、审核日志状态、OWA 策略分析、客户端访问规则、BEC 指示器检测、可疑规则检测和风险评估 |
| EntraSharePointCheck-PS1.md | SharePoint Online 安全审计文档,包含租户共享设置、匿名链接检测、站点级覆盖检测、来宾访问分析、OneDrive 共享配置、敏感度标签覆盖、默认链接分析、链接过期策略和风险评估 |
| EntraTeamsCheck-PS1.md | Microsoft Teams 安全审计文档,包含外部访问(联盟)设置、来宾访问策略、会议策略分析(匿名加入、大厅绕过)、应用权限策略、消息策略、Teams 清单分析和风险评估 |
| EntraAzureAttackPathCheck-PS1.md | Azure 跨服务攻击路径分析文档,包含 VM 到 Key Vault 路径、托管标识权限提升、存储横向移动、自定义角色漏洞、跨订阅路径、管理组继承、攻击叙述和风险评估 |
| EntraReport-PS1.md | 整合安全报告生成器文档,包含多检查执行、HTML 执行仪表板、安全评分计算、修复优先级矩阵、带基线比较的趋势分析、快速扫描和全面扫描模式,以及 JSON 基线导出 |
| EntraComplianceCheck-PS1.md | 合规评估文档,包含 CIS Azure 基准映射、NIST 800-53 控制映射、SOC 2 信任服务标准、ISO 27001 控制、GDPR 指示器、合规评分、控制族过滤和执行报告 |
| SharePointEnum-PS1.md | SharePoint Online 枚举文档,包含 REST API 搜索、FQL 查询、细化筛选器、文件下载(磁盘和 Base64)、自动检测、智能认证回退(会话令牌验证、Azure CLI 回退、MSAL 设备代码流)、隐身模式和导出选项 |
| 特性 | PowerShell | Python |
|---|
| 用户枚举(15+ 种方法) | ✅ | ✅ |
| 安全评估 | ✅ | ✅ |
| 凭据攻击面 | ✅ | ✅ |
| 条件访问分析 | ✅ | ✅ |
| 设备/Intune 枚举 | ✅ | ✅ |
| 攻击路径分析 | ✅ | ✅ |
| Power Platform 枚举 | ✅ | ✅ |
| 横向移动分析 | ✅ | ✅ |
| BloodHound 导出 | ✅ | ✅ |
| HTML 报告生成 | ✅ | ✅ |
| 隐身模式 | ✅ | ✅ |
| 交互式菜单 | ✅ | ✅ |
| Azure CLI 令牌 | ✅ | ✅ |
| 设备代码流 | ✅ | ✅ |
| 刷新令牌交换 | ❌ | ✅ |
| 扩展应用 ID 数据库 | ❌ | ✅ |
| 隐身预设 | ❌ | ✅ |
| 参数 | 方法 | 描述 |
|---|
| (默认) | Interactive | 使用交互式 OAuth 浏览器提示的 Connect-MgGraph |
-UseAzCliToken | Azure CLI 令牌 | 使用 az account get-access-token --resource https://graph.microsoft.com |
-UseAzPowerShellToken | Azure PowerShell 令牌 | 使用 Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com" |
| 参数 | 方法 | 描述 |
|---|
| (默认) | Interactive | 使用交互式浏览器提示的 Connect-AzAccount |
-UseAzCliToken | Azure CLI 令牌 | 使用现有的 az login 会话 |
-UseAzPowerShellToken | Azure PowerShell 令牌 | 使用现有的 Connect-AzAccount 会话 |
-UseDeviceCode | 设备代码流 | Connect-AzAccount -UseDeviceAuthentication 用于无头终端 |
| 脚本 | 模块 | 身份验证 |
|---|
| EntraExchangeCheck | ExchangeOnlineManagement | Connect-ExchangeOnline(需要 Exchange 管理员角色) |
| EntraSharePointCheck | Microsoft.Online.SharePoint.PowerShell | Connect-SPOService 到 SharePoint 管理 URL(需要 SharePoint 管理员角色) |
| SharePointEnum | Az.Accounts(可选) | 智能回退:Azure 会话令牌 → Azure CLI → MSAL 设备代码流(Microsoft Office 客户端 ID) |
| EntraTeamsCheck | MicrosoftTeams | Connect-MicrosoftTeams(需要 Teams 管理员角色) |
| 脚本 | 所需范围 | 回退范围 |
|---|
| Invoke-EntraApplicationCheck | Application.Read.All, Directory.Read.All, User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | Application.Read.All, Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraRoleCheck | Directory.Read.All, RoleManagement.Read.Directory, User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | Directory.Read.All, RoleManagement.Read.Directory, User.ReadBasic.All |
| Invoke-EntraMFACheck | User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | User.ReadBasic.All, UserAuthenticationMethod.Read.All |
| Invoke-EntraGroupCheck | Directory.Read.All, Group.Read.All, User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | Directory.Read.All, Group.Read.All, User.ReadBasic.All |
| Invoke-EntraGuestCheck | User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | User.ReadBasic.All, UserAuthenticationMethod.Read.All |
| Invoke-EntraAdminUnitCheck | Directory.Read.All, AdministrativeUnit.Read.All, RoleManagement.Read.Directory, User.Read.All, UserAuthenticationMethod.Read.All | Directory.Read.All, AdministrativeUnit.Read.All, User.ReadBasic.All |
| Invoke-EntraConditionalAccessCheck | Policy.Read.All, Directory.Read.All, Application.Read.All, User.Read.All | Policy.Read.All, Directory.Read.All |
| Invoke-EntraDeviceCheck | Device.Read.All, Directory.Read.All, DeviceManagementManagedDevices.Read.All, DeviceManagementConfiguration.Read.All | Device.Read.All, Directory.Read.All |
| Invoke-EntraDirectorySyncCheck | Directory.Read.All, User.Read.All, AuditLog.Read.All | Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraAttackPathCheck | Directory.Read.All, Group.Read.All, User.Read.All, UserAuthenticationMethod.Read.All, RoleManagement.Read.Directory, AuditLog.Read.All | Directory.Read.All, Group.Read.All, User.ReadBasic.All |
| Invoke-EntraServicePrincipalCheck | Application.Read.All, Directory.Read.All, User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | Application.Read.All, Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraPasswordPolicyCheck | User.Read.All, Directory.Read.All, AuditLog.Read.All | User.ReadBasic.All, Directory.Read.All |
| Invoke-EntraLicenseCheck | Directory.Read.All, User.Read.All | User.ReadBasic.All |
| Invoke-EntraLegacyAuthCheck | AuditLog.Read.All, Directory.Read.All, User.Read.All, UserAuthenticationMethod.Read.All | Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraSSPRCheck | User.Read.All, UserAuthenticationMethod.Read.All, Reports.Read.All, AuditLog.Read.All | User.ReadBasic.All, Reports.Read.All |
| Invoke-EntraStaleAccountCheck | User.Read.All, Directory.Read.All, AuditLog.Read.All | User.ReadBasic.All, Directory.Read.All |
| Invoke-EntraAppAccess | Application.Read.All, Directory.Read.All, User.Read.All, UserAuthenticationMethod.Read.All, AuditLog.Read.All | Application.Read.All, Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraPIMCheck | Directory.Read.All, User.Read.All, RoleManagement.Read.Directory, PrivilegedAccess.Read.AzureAD | Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraOAuthConsentCheck | Application.Read.All, Directory.Read.All, User.Read.All, AuditLog.Read.All | Application.Read.All, Directory.Read.All, User.ReadBasic.All |
| Invoke-EntraSignInRiskCheck | IdentityRiskyUser.Read.All, IdentityRiskySignIn.Read.All, IdentityRiskDetection.Read.All, AuditLog.Read.All, User.Read.All, Directory.Read.All | IdentityRiskyUser.Read.All, IdentityRiskySignIn.Read.All, IdentityRiskDetection.Read.All |
| Invoke-EntraPowerPlatformCheck | User.Read.All, Directory.Read.All, Application.Read.All | (通过用户上下文的 Power Platform API 权限) |
| Invoke-EntraComplianceCheck | Directory.Read.All, Policy.Read.All, User.Read.All, Application.Read.All, AuditLog.Read.All, RoleManagement.Read.Directory, IdentityRiskyUser.Read.All, IdentityRiskEvent.Read.All, UserAuthenticationMethod.Read.All | Directory.Read.All, Policy.Read.All, User.ReadBasic.All |
| 脚本 | Azure RBAC 权限 | 额外的 Graph 范围 |
|---|
| Invoke-EntraAzureRBACCheck | 跨目标订阅的 Reader 角色 | User.Read, Directory.Read.All, GroupMember.Read.All |
| Invoke-EntraKeyVaultCheck | 订阅上的 Reader,用于枚举机密的 Key Vault Reader | - |
| Invoke-EntraStorageAccountCheck | 订阅上的 Reader,用于枚举容器的 Storage Blob Data Reader | - |
| Invoke-EntraManagedIdentityCheck | 订阅上的 Reader | Directory.Read.All 用于 Graph 查询 |
| Invoke-EntraNetworkSecurityCheck | 订阅上的 Reader,用于枚举 NSG/VNet | - |
| Invoke-EntraAzureAttackPathCheck | 订阅上的 Reader,用于枚举访问策略的 Key Vault Reader | - |
| 脚本 | 模块 | 所需角色/权限 |
|---|
| Invoke-EntraExchangeCheck | ExchangeOnlineManagement | Exchange 管理员或同等角色。需要:Get-InboxRule、Get-TransportRule、Get-MailboxPermission、Get-Mailbox |
| Invoke-EntraSharePointCheck | Microsoft.Online.SharePoint.PowerShell | SharePoint 管理员或同等角色。需要:Get-SPOTenant、Get-SPOSite、共享配置 cmdlet |
| Invoke-SharePointEnum | Az.Accounts(可选) | 任何具有 SharePoint 访问权限的用户。通过 Azure 会话、Azure CLI 或 MSAL 设备代码流使用委托权限的 SharePoint REST 搜索 API |
| Invoke-EntraTeamsCheck | MicrosoftTeams | Teams 管理员或同等角色。需要:Get-CsTenantFederationConfiguration、Get-CsTeamsMeetingPolicy、Get-CsTeamsClientConfiguration、Get-Team |
| 范围 | 使用脚本数 | 用途 |
|---|
Directory.Read.All | 21+ 个脚本 | 读取目录对象(用户、组、角色、设置) |
User.Read.All | 19+ 个脚本 | 读取所有用户属性,包括登录活动 |
AuditLog.Read.All | 16+ 个脚本 | 读取登录日志、审核日志、活动报告 |
UserAuthenticationMethod.Read.All | 13+ 个脚本 | 检查 MFA 注册和身份验证方法 |
Application.Read.All | 7 个脚本 | 读取应用注册和服务主体 |
Group.Read.All | 4 个脚本 | 读取组成员资格和属性 |
RoleManagement.Read.Directory | 5 个脚本 | 读取目录角色分配和 PIM 配置 |
Policy.Read.All | 3 个脚本 | 读取条件访问策略和安全默认值 |
Device.Read.All | 1 个脚本 | 读取设备注册 |
AdministrativeUnit.Read.All | 1 个脚本 | 读取管理单元 |
PrivilegedAccess.Read.AzureAD | 1 个脚本 | 读取 PIM 角色设置和分配 |
IdentityRiskyUser.Read.All | 2 个脚本 | 读取 Identity Protection 风险用户 |
IdentityRiskySignIn.Read.All | 1 个脚本 | 读取 Identity Protection 风险登录 |
IdentityRiskEvent.Read.All | 2 个脚本 | 读取 Identity Protection 风险事件和检测 |
Reports.Read.All | 1 个脚本 | 读取使用情况报告(SSPR) |
DeviceManagementManagedDevices.Read.All | 1 个脚本 | 读取 Intune 托管设备 |
DeviceManagementConfiguration.Read.All | 1 个脚本 | 读取 Intune 合规性策略 |