Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
EntraFalcon — 一个轻量级 PowerShell 工具,用于评估 Microsoft Entra ID 环境的安全态势。它有助于识别特权对象、风险分配和潜在的错误配置。 | Kitploit
工具/GitHubGitHub/compasssecurity/entrafalcon
漏洞扫描器信息收集渗透测试云安全身份与访问管理 (IAM)错误配置
GitHubcompasssecurity/entrafalcon

EntraFalcon

一个轻量级 PowerShell 工具,用于评估 Microsoft Entra ID 环境的安全态势。它有助于识别特权对象、风险分配和潜在的错误配置。

查看仓库
458472个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

EntraFalcon

alt text

EntraFalcon 是一款基于 PowerShell 的评估工具,专为渗透测试人员、安全分析师和系统管理员设计,用于评估 Microsoft Entra ID 环境的安全态势。

该工具易于使用,可在 PowerShell 5.1 和 7 上运行,支持 Windows 和 Linux,且无需额外的 PowerShell 模块、额外安装或 Microsoft Graph API 同意。

该工具有助于发现特权对象、潜在风险分配以及常被忽视的条件访问错误配置,例如:

  • 控制高特权组或应用程序的用户
  • 具有过度权限(如 Microsoft Graph API、Azure 角色)的外部或内部企业应用程序
  • 直接在资源上分配了 Azure IAM 角色的用户
  • 从本地同步的特权帐户
  • 非活跃用户或没有 MFA 功能的用户
  • 用于敏感分配(如条件访问排除、订阅所有者或特权组的合格成员)的无保护组

调查结果以交互式 HTML 报告呈现,支持高效的探索和分析。

🚀 功能

  • 简单的 PowerShell 脚本,兼容 PowerShell 5.1 和 7,适用于 Windows 和 Linux
  • 内置身份验证,支持多种方法
  • 使用预先同意的第一方 Microsoft 应用程序,绕过 Graph API 同意提示
  • 生成可导航的 HTML 报告,支持过滤、排序、数据导出等
  • 执行超过 80 项自动检查,并将结果汇总到安全发现报告中
    • 包括对弱租户配置和有风险的对象属性或权限的检查
    • 提供严重性评级以及问题描述、潜在威胁和修复指导
    • 列出受影响的对象,并直接链接到其详细报告以供进一步调查
  • 执行基本的影响、可能性和风险评分,以突出弱保护的高特权对象并对数据进行排序
  • 显示风险配置和提升权限的警告
  • 枚举 Entra ID 对象,包括:
    • 用户(包括代理用户)
    • 组
    • 企业应用程序
    • 应用注册
    • 托管标识
    • 代理标识(BETA)
    • 代理标识蓝图主体(BETA)
    • 代理标识蓝图(BETA)
    • PIM 分配:
      • PIM for Entra Roles
      • PIM for Entra Groups
      • PIM for Azure Roles
    • Entra 角色分配
    • Azure 角色分配
    • 条件访问策略
    • 管理单元
    • PIM 设置:
      • PIM for Entra Roles
      • PIM for Groups(仅限 BroCi 身份验证)

✅ 要求

类型权限必需缺少时的影响
Entra ID 角色Global Reader是无法运行脚本
Azure 角色Reader: 在每个管理组或订阅上否无法评估 Azure IAM 分配

此外,您必须能够从运行该工具的设备通过 Microsoft Graph API 进行身份验证,并可选地通过 Azure ARM API 进行身份验证。 确保条件访问策略不会阻止您的身份验证。

▶️ 使用

下载 EntraFalcon

首先,克隆仓库并导航到项目目录:```powershell git clone https://github.com/CompassSecurity/EntraFalcon cd EntraFalcon

root@kitploit:~
注意:您可能需要临时更改 PowerShell 执行策略才能运行该脚本。
仅对受信任的脚本执行此操作!```
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process

运行 EntraFalcon

EntraFalcon 内置了对 Entra ID 身份验证的支持。
提供多种身份验证流程,以适应不同的环境和限制。
根据所选流程,可能需要多次交互式身份验证。

使用 -AuthFlow 选择身份验证流程。

使用 BroCi 流程(默认 / 仅限 Windows)

BroCi 使用备用第一方应用程序,仅需一次交互式登录。
当 Azure Active Directory PowerShell 客户端需要分配且必须避免使用时,该流程尤为有用。```powershell .\run_EntraFalcon.ps1

root@kitploit:~
显式 BroCi 选择:```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCi

授权码流程(仅限 Windows)```powershell

.\run_EntraFalcon.ps1 -AuthFlow AuthCode

root@kitploit:~
#### 设备码流程
在强化环境中,设备码流程通常受条件访问限制。  
使用 `DeviceCode` 时,会以降低深度运行两个安全发现检查(`CAP-004` 和 `CAP-005`)。```powershell
.\run_EntraFalcon.ps1 -AuthFlow DeviceCode

使用授权码 + 手动代码流认证```powershell

.\run_EntraFalcon.ps1 -AuthFlow ManualCode

root@kitploit:~
1. 脚本将认证 URL 复制到剪贴板。
2. 将 URL 粘贴到浏览器中(可选地在其他设备上以支持 SSO)。
3. 完成认证。
4. 从浏览器地址栏复制最终的重定向 URL(包含授权码)到剪贴板。
5. 按 Enter 继续;脚本从剪贴板读取代码并完成令牌获取。

#### BroCi + 手动代码流```powershell
.\run_EntraFalcon.ps1 -AuthFlow BroCiManualCode
  1. 脚本将身份验证 URL 复制到剪贴板。
  2. 将 URL 粘贴到浏览器中(可选地在另一台设备上以支持 SSO)。
  3. 打开浏览器开发者工具,在 Network 选项卡中启用 Preserve log。
  4. 完成身份验证。
  5. 在网络日志中搜索 code=1. 并将包含该 code 的请求 URL 复制到剪贴板。
  6. 按 Enter 继续;脚本从剪贴板读取 code 并完成令牌获取。

使用令牌的 BroCi

如果已经有一个有效的 Azure 门户刷新令牌(客户端 c44b4083-3bb0-49c1-b47d-974e53cbdf3c),则可以直接使用它。 示例:从浏览器获取刷新令牌

  1. 打开浏览器开发者工具,在 Network 选项卡中启用 Preserve log。
  2. 在 https://entra.microsoft.com 进行身份验证。
  3. 在网络日志中搜索 brk_client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c,并从响应中提取刷新令牌。```powershell .\run_EntraFalcon.ps1 -AuthFlow BroCiToken -BroCiToken "1.XXXXXXXXXXX"
root@kitploit:~
#### 服务主体
使用 OAuth2 客户端凭据授予验证已注册的应用程序身份——无需用户交互。
适用于自动化执行。  
需要具有 `应用程序` 类型 Graph API 权限的自定义 Entra 应用注册(见下文)。

**使用客户端密钥:**```powershell
.\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "<AppId>" -SPClientSecret "<Secret>"

使用 PFX 证书:```powershell .\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "" -SPCertificatePath "C:\certs\app.pfx"

root@kitploit:~
对于受密码保护的PFX,添加 `-SPCertificatePassword (Read-Host -Prompt "Certificate password" -AsSecureString)`。

**使用PEM证书 + 私钥(仅PowerShell 7+):**```powershell
.\run_EntraFalcon.ps1 -AuthFlow ServicePrincipal -Tenant "mysecuretenant.ch" -SPClientId "<AppId>" -SPCertificatePemPath "C:\certs\cert.pem" -SPPrivateKeyPemPath "C:\certs\key.pem"

对于加密私钥,添加 -SPPrivateKeyPemPassword (Read-Host -Prompt "Private key password" -AsSecureString)。

所需的应用注册权限

在应用注册中授予以下 应用程序 权限(非委派权限)并同意管理员权限:

此外,在根管理组(或每个相关订阅)上为服务主体分配 Azure Reader 角色,并根据需要分配 Global Reader 角色(用于每个用户的 MFA 状态)。

其他参数

包括微软拥有的企业应用

默认情况下,官方微软企业应用会被排除在评估之外以减少噪音。要将其纳入枚举和分析,请使用 -IncludeMsApps 开关:```powershell .\run_EntraFalcon.ps1 -IncludeMsApps

root@kitploit:~
#### 跳过 PIM-for-Groups 评估
使用 `-SkipPimForGroups` 开关跳过 PIM-for-Groups 的预收集和富集。  
这也跳过了独立的 `PIM (Groups)` 设置报告。```powershell
.\run_EntraFalcon.ps1 -SkipPimForGroups

📊 示例报告

安全发现报告

alt text alt text

用户

alt text

用户(详细信息部分)

alt text

Entra ID 角色

alt text

Azure 角色

alt text

企业应用程序(详细信息部分)

alt text

条件访问策略

alt text

条件访问策略(详细信息部分)

alt text

PIM 角色设置(Entra)

alt text

代理标识

alt text

枚举摘要

alt text

📑 HTML 报告

通用

  • 点击 ⚙️ 列 按钮显示或隐藏特定列。
  • 点击 💾 导出 CSV 将当前可见数据下载为 CSV 文件。
  • 点击 👁 共享视图 将筛选、排序和列选择复制为可共享链接。
  • 点击 🧰 预设视图 应用预配置的筛选和列选择。
  • 点击 🔄 重置视图 将视图重置为默认状态。
  • 点击对象名称跳转到详细信息,甚至在其他报告中也可以。
  • 使用内部导航时,按浏览器的返回按钮返回。
  • 某些表头字段在鼠标悬停时显示帮助文本。
  • 点击表头可对数据进行排序。

筛选

  • 如果未指定运算符,筛选默认使用包含。
  • 使用 = 进行精确匹配。
  • 使用 ^ 表示开头是(例如 ^Mallory)。
  • 使用 $ 表示结尾是(例如 $domain.ch)。
  • 比较运算符如 >、<、>=、<= 也支持(仅数值)。
  • 通过在开头添加 ! 可以否定筛选(数值比较除外)。示例:!Mallory、!=Mallory、!^Mallory 或 !$domain.ch。
  • 使用 =empty 匹配空单元格,使用 匹配非空单元格。

使用 GET 参数进行控制

  • 筛选:使用字段名称作为 HTTP GET 参数应用筛选,例如 ?EntraRoles=>1&Enabled=true。
    要跨列应用 OR 逻辑,使用 or_ 或 group1_ 前缀(例如 ?or_EntraRoles=>0&or_GrpMem=>0)。
  • 列选择:使用 columns 参数选择要显示的列。示例:?columns=DisplayName,Owner。
  • 排序:使用 sort 和 sortDir 参数对数据进行排序。示例:?sort=Impact&sortDir=desc 或 ?sort=OwnerCount&sortDir=asc。
  • 对象详细信息:使用锚点(#)和对象 ID 直接跳转到报告中的特定对象,例如 #%ObjectID%。

评级

  • 影响:表示对象所具有的权限数量或严重程度。
  • 可能性:表示对象受影响的容易程度或受到保护的程度。
  • 风险:计算得分:影响 × 可能性 = 风险。
  • 重要:
    • 此评分旨在作为基本评估,帮助对表中的条目进行排序和优先级排序。
    • 不同对象类型或报告之间的风险分数不能直接比较。
    • 它不旨在替代完整的风险评估。

🔧 幕后机制

角色分类

Entra ID 和 Azure 角色大致分为不同的层级级别。此分类会影响分配给这些角色的对象的影响分数。 目标是为具有更强角色的用户(例如全局管理员)分配比具有较不关键角色的用户(例如全局读取者)更高的影响分数,即使 Microsoft 将两者都视为特权角色。

注意: 对于 Azure 角色,这种分类不太精确,因为实际影响在很大程度上取决于角色分配的范围。例如,单个虚拟机上的所有者角色的影响远小于将相同角色应用于整个订阅的影响。它也可能是一个没有任何资源的测试订阅。

Entra ID 角色
Azure 角色

API 权限分类

某些 API 权限允许应用程序直接提升为全局管理员权限。因此,几个 API 权限被分类为不同的严重性级别。此分类影响具有这些权限的应用程序的影响分数——无论是作为应用程序权限还是针对用户的委托权限。

应用程序权限| 权限 | 严重级别 | GUID | |-------------------------------------------------------------|------------|----------------------------------------| | RoleManagement.ReadWrite.Directory | 危险 | 9e3f62cf-ca93-4989-b6ce-bf83c28f9fe8 | | AppRoleAssignment.ReadWrite.All | 危险 | 06b708a9-e830-4db3-a914-8e69da51d44f | | Application.ReadWrite.All | 危险 | 1bfefb4e-e0b5-418b-a88f-73c46d2cc8e9 | | RoleAssignmentSchedule.ReadWrite.Directory | 危险 | dd199f4a-f148-40a4-a2ec-f0069cc799ec | | PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup | 危险 | 41202f2c-f7ab-45be-b001-85c9728b9d69 | | PrivilegedAccess.ReadWrite.AzureADGroup | 危险 | 2f6817f8-7b12-4f0f-bc18-eeaf60705a9e | | RoleEligibilitySchedule.ReadWrite.Directory | 危险 | fee28b28-e1f3-4841-818e-2704dc62245f | | PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup | 危险 | 618b6020-bca8-4de6-99f6-ef445fa4d857 | | Domain.ReadWrite.All | 危险 | 7e05723c-0bb0-42da-be95-ae9f08a6e53c | | Application.ReadUpdate.All | 危险 | fc023787-fd04-4e44-9bc7-d454f00c0f0a | | AgentIdentityBlueprint.ReadWrite.All | 高 | 7fddd33b-d884-4ec0-8696-72cff90ff825 | | AgentIdentityBlueprint.AddRemoveCreds.All | 高 | 0510736e-bdfb-4b37-9a1f-89b4a074763a | | ADSynchronization.ReadWrite.All | 高 | ab43b826-2c7a-4aff-9ecd-d0629d0ca6a9 | | EntitlementManagement.ReadWrite.All | 高 | 9acd699f-1e81-4958-b001-93b1d2506e19 | | Organization.ReadWrite.All | 高 | 292d869f-3427-49a8-9dab-8c70152b74e9 | | Policy.ReadWrite.PermissionGrant | 高 | a402ca1c-2696-4531-972d-6e5ee4aa11ea | | RoleManagementPolicy.ReadWrite.AzureADGroup | 高 | b38dcc4d-a239-4ed6-aa84-6c65b284f97c | | RoleManagementPolicy.ReadWrite.Directory | 高 | 31e08e0a-d3f7-4ca2-ac39-7343fb83e8ad | | Policy.ReadWrite.AuthenticationMethod | 高 | 29c18626-4985-4dcd-85c0-193eef327366 | | User.DeleteRestore.All | 高 | eccc023d-eccf-4e7b-9683-8813ab36cecc | | User.EnableDisableAccount.All | 高 | 3011c876-62b7-4ada-afa2-506cbbecc68c | | DelegatedPermissionGrant.ReadWrite.All | 高 | 8e8e4742-1d95-4f68-9d56-6ee75648c72a | | Policy.ReadWrite.ConditionalAccess | 高 | 01c0a623-fc9b-48e9-b794-0756f8e8f067 | | DeviceManagementConfiguration.ReadWrite.All | 高 | 9241abd9-d0e6-425a-bd4f-47ba86e767a4 | | DeviceManagementRBAC.ReadWrite.All | 高 | e330c4f0-4170-414e-a55a-2f022ec2b57b | | Directory.ReadWrite.All | 高 | 19dbc75e-c2e2-444c-a770-ec69d8559fc7 | | Group.ReadWrite.All | 高 | 62a82d76-70ea-41e2-9197-370581804d09 | | GroupMember.ReadWrite.All | 高 | dbaae8cf-10b5-4b86-a4a1-f871c94c6695 | | UserAuthenticationMethod.ReadWrite.All | 高 | 50483e42-d915-4231-9639-7fdb7fd190e5 | | User-PasswordProfile.ReadWrite.All | 高 | 56760768-b641-451f-8906-e1b8ab31bca7 | | Sites.FullControl.All | 高 | a82116e5-55eb-4c41-a434-62fe8a61c773 | | Sites.FullControl.All SharePointAPI | 高 | 678536fe-1083-478a-9c59-b99265e6b0d3 | | Sites.Manage.All SharePointAPI | 高 | 9bff6588-13f2-4c48-bbf2-ddab62256b36 | | Sites.Read.All SharePointAPI | 高 | d13f72ca-a275-4b96-b789-48ebcc4da984 | | Sites.ReadWrite.All SharePointAPI | 高 | fbcd29d2-fcca-4405-aded-518d457caae4 | | Sites.Manage.All | 高 | 0c0bf378-bf22-4481-8f81-9e89a9b4960a | | Sites.Read.All | 高 | 332a536c-c7ef-4017-ab91-336970924f0d | | Sites.ReadWrite.All | 高 | 9492366f-7969-46a4-8d15-ed1a20078fff | | Files.Read.All | 高 | 01d4889c-1287-42c6-ac1f-5d1e02578ef6 | | Files.ReadWrite.All | 高 | 75359482-378d-4052-8f01-80520e7db3cd | | DeviceLocalCredential.Read.All | 高 | db51be59-e728-414b-b800-e0f010df1a79 | | AdministrativeUnit.ReadWrite.All | 高 | 5eb59dd3-1da2-4329-8733-9dabdc435916 | | UserAuthMethod-HardwareOATH.ReadWrite.All | 高 | 7e9ebcc1-90aa-4471-8051-e68d6b4e9c89 | | UserAuthMethod-Phone.ReadWrite.All | 高 | 6e85d483-7092-4375-babe-0a94a8213a58 | | UserAuthMethod-QR.ReadWrite.All | 高 | 4869299f-18c3-40c8-98f2-222657e67db1 | | UserAuthMethod-TAP.ReadWrite.All | 高 | 627169a8-8c15-451c-861a-5b80e383de5c | | User.ReadWrite.All | 中 | 741f803b-c850-494e-b5df-cde7c675a1ca | | Chat.Read.All | 中 | 6b7d71aa-70aa-4810-a8d9-5d9fb2830017 | | Chat.ReadWrite.All | 中 | 294ce7c9-31ba-490a-ad7d-97a7d075e4ed | | Calendars.Read | 中 | 798ee544-9d2d-430c-a058-570e29e34338 | | Calendars.ReadWrite | 中 | ef54d2bf-783f-4e0f-bca1-3210c0444d99 | | Mail.Read | 中 | 810c84a8-4a9e-49e6-bf7d-12d183f40d01 | | Mail.ReadWrite | 中 | e2a3a72e-5f79-4c64-b1b1-878b674786c9 | | BitlockerKey.Read.All | 中 | 57f1cf28-c0c4-4ec3-9a30-19a2eaaf2f6e | | Mail.Send | 中 | b633e1c5-b582-4048-a93e-9f11b44c7e96 | | OnlineMeetings.ReadWrite.All | 中 | b8bb2037-6e08-44ac-a4ea-4674e010e2a4 | | CustomSecAttributeAssignment.ReadWrite.All | 中 | de89b5e4-5b8f-48eb-8925-29c2b33bd8bd | | ServicePrincipalEndpoint.ReadWrite.All | 中 | 89c8469c-83ad-45f7-8ff2-6e3d4285709e | | AgentIdentity.CreateAsManager | 低 | 4c390976-b2b7-42e0-9187-c6be3bead001 |
委派权限

Microsoft 第一方企业应用程序

默认情况下,Microsoft 应用程序会被过滤掉,以简化企业应用程序的审查。使用 -IncludeMsApps 开关可将其包含在内。以下租户中的应用程序被视为 Microsoft 所有:

  • f8cdef31-a31e-4b4a-93e4-5f571e91255a
  • 72f988bf-86f1-41af-91ab-2d7cd011db47
  • 33e01921-4d64-4f8c-a055-5bdaffd5e33d
  • cdc5aeea-15c5-4db6-b079-fcadd2505dc2

执行的检查

下表大致总结了执行的检查,以及它们对评分的影响以及是否显示警告。

执行的检查|区域|检查项|影响分数|显示警告| |-|-|-|-| |组|是否为公共M365组|是|是| |组|是否为动态组 / 是否为动态且潜在危险的查询|是|是| |组|Entra角色(活跃和符合条件)|是|是| |组|Azure角色(活跃和符合条件)|是|是| |组|用于AppRole|是|是| |组|内部/外部服务主体作为所有者|是|是| |组|位于受限管理单元中|是|是| |组|嵌套在特权组中|是|是| |组|用于条件访问策略|是|是| |组|组类型|是|否| |组|安全启用|是|否| |组|嵌套成员活跃|是|否| |组|所有者|是|否| |组|嵌套所有者|是|否| |组|来宾作为所有者|是|是| |组|本地同步|是|否| |组|成员(传递性)|是|否| |组|角色可分配|是|否| |组|PIM for Groups:已加入|否|否| |组|PIM for Groups:特权组的合格成员|是|是| |组|PIM for Groups:特权组的合格所有者|是|是| |组|PIM for Groups:嵌套在受保护组中的未保护组|否|是| |企业应用|Entra角色|是|是| |企业应用|Azure角色|是|是| |企业应用|外部|是|否| |企业应用|API权限(应用程序)|是|是| |企业应用|API权限(委托)|是|是| |企业应用|凭据|是|是| |企业应用|所有者|是|是| |企业应用|对应用注册的所有权|是|是| |企业应用|对其他服务主体的所有权|是|是| |企业应用|AppLock|(是)|否| |企业应用|应用拥有应用注册|是|是| |企业应用|组的成员/所有者|是|(是)| |企业应用|AppRoles|是|否| |企业应用|AppRole要求|是|否| |企业应用|不活跃|否|否| |企业应用|上次成功登录(天数)|否|否| |应用注册|凭据|是|是| |应用注册|带凭据的Entra Connect应用|是|是| |应用注册|带多个证书的Entra Connect应用|是|是| |应用注册|AppRoles|是|否| |应用注册|AppRedirectURL|否|否| |应用注册|AppLock|是|否| |应用注册|所有者|是|是| |应用注册|(云)应用管理员范围限定|否|否| |应用注册|对应服务主体的权限|是|否| |应用注册|登录受众|否|否| |托管标识|所有者|是|是| |托管标识|Entra角色|是|是| |托管标识|Azure角色|是|是| |托管标识|API(应用)|是|是| |托管标识|对应用注册的所有权|是|是| |托管标识|对其他服务主体的所有权|是|是| |托管标识|组的成员/所有者|是|(是)| |用户|Entra角色(活跃和符合条件)|是|是| |用户|Azure角色(活跃和符合条件)|是|是| |用户|特权组成员身份(活跃和符合条件)|是|是| |用户|特权组所有权(活跃和符合条件)|是|是| |用户|Entra Connect同步用户|是|是| |用户|Entra Connect云同步用户|是|是| |用户|应用注册所有权|是|是| |用户|企业应用程序所有权|是|是| |用户|未注册MFA因素|是|是| |用户|是否受保护|是|否| |用户|不活跃|否|否| |用户|组的成员/所有者|是|(是)| |用户|从本地同步|是|否| |代理标识|关联的代理用户|是|否| |代理标识|外部蓝图主体来源|是|是| |代理标识|有效API权限(应用程序)|是|是| |代理标识|有效API权限(委托)|是|是| |代理标识|Entra角色|是|是| |代理标识|Azure角色|是|是| |代理标识|对应用注册的所有权|是|是| |代理标识|对其他服务主体的所有权|是|是| |代理标识|组的成员/所有者|是|(是)| |代理标识蓝图主体|关联的代理标识|是|否| |代理标识蓝图主体|关联的代理用户|是|否| |代理标识蓝图主体|已配置的API权限(应用程序)|否|否| |代理标识蓝图主体|已配置的API权限(委托)|否|否| |代理标识蓝图主体|外部父蓝图来源|是|否| |代理标识蓝图主体|Entra角色|否|否| |代理标识蓝图主体|Azure角色|否|否| |代理标识蓝图|蓝图主体|是|否| |代理标识蓝图|关联的代理标识|是|否| |代理标识蓝图|关联的代理用户|是|否| |代理标识蓝图|可继承的API权限|是|否| |代理标识蓝图|联合凭据|是|否| |代理标识蓝图|密钥/证书|是|是| |代理标识蓝图|所有者/赞助者|是|(是)| |条件访问策略|缺少或未正确配置旧版身份验证策略|-|是| |条件访问策略|缺少或未正确配置阻止设备代码流的策略|-|是| |条件访问策略|缺少或未正确配置限制安全信息注册的策略|-|是| |条件访问策略|缺少或未正确配置针对风险登录的策略|-|是| |条件访问策略|缺少或未正确配置针对用户风险的策略|-|是| |条件访问策略|缺少或未正确配置强制MFA的策略|-|是| |条件访问策略|缺少强制身份验证强度的策略|-|是| |条件访问策略|包含具有范围分配的角色|-|是| |PIM设置|身份验证上下文|-|是| |PIM设置|身份验证上下文关联的条件访问策略:登录频率|-|是| |PIM设置|身份验证上下文关联的条件访问策略:MFA或身份验证强度|-|是| |PIM设置|身份验证上下文关联的条件访问策略:已启用|-|是| |PIM设置|身份验证上下文关联的条件访问策略:包含/排除的用户/组/网络|-|是| |PIM设置|身份验证上下文关联的条件访问策略:条件|-|是| |PIM设置|激活MFA|-|否| |PIM设置|激活理由或工单|-|是| |PIM设置|激活持续时间|-|是| |PIM设置|激活审批|-|是| |PIM设置|合格分配过期时间|-|否| |PIM设置|活跃分配过期时间|-|是| |PIM设置|活跃分配MFA|-|否| |PIM设置|通知角色激活|-|否| |PIM设置|通知角色分配(活跃)|-|否| |PIM设置|通知角色分配(合格)|-|否|

🛡️ 检测

EntraFalcon并非隐蔽工具,在已记录并监控Microsoft Graph API和Azure登录活动的环境中可被检测到。

使用默认身份验证

当使用非BroCi流程执行完整枚举时,该工具通常会发起四次交互式登录和一次非交互式登录。根据流程和端点支持情况,安全发现策略端点可能还会有一次额外的交互式登录。

使用BroCi身份验证

当使用BroCi身份验证时,仅发生一次交互式登录。

当启用BroCi时,EntraFalcon还会查询api.azrbac.mspim.azure.com以获取PIM for Groups数据。

详细说明

为收集数据,该工具向Microsoft Graph API发送多个请求,并可选地向Azure ARM API发送请求,每个对象对应一个或多个请求。在可能的情况下,它利用Graph批处理端点减少单个请求的数量,提高效率。

交互式登录使用浏览器的User-Agent。所有非交互式登录和API请求(Graph和ARM)均使用EntraFalcon作为User-Agent,除非通过-UserAgent参数更改。

为检测EntraFalcon的使用,蓝队可监控登录日志中列出的应用程序ID,留意异常的Graph API流量量,或分析令牌刷新和批处理请求行为。

🕳️ 已知限制

  • M365 RBAC:未评估
  • Defender for Endpoint RBAC:未评估
  • Intune RBAC:未评估
  • 条件访问用户覆盖范围:有效的用户覆盖范围和-ExportCapUncoveredUsers参数是基于枚举用户、组成员、角色分配和可解析的外部用户类别进行的尽力计算。外部用户选择器仅对匹配b2bCollaborationGuest的租户来宾用户解析。其他外部用户类型或具有指定外部租户的外部用户可能导致覆盖值近似。符合条件的PIM路径被报告为潜在覆盖,但不计入当前覆盖范围。CSV导出仅限启用策略和启用用户。
  • 云环境:云平台发展迅速。因此,某些评估或检测可能随着时间的推移而过时或不准确。此外,租户日益复杂,特定配置或设置组合可能导致不准确的结果。尽管我们努力保持EntraFalcon的最新性,但始终建议独立验证发现结果,不要仅依赖该工具做出关键决策。
  • HTML报告:生成的HTML报告未实现跨站脚本(XSS)防护机制。

📦 集成的外部工具

以下子模块已从上游分叉并集成到EntraFalcon中,以支持身份验证、Microsoft Graph交互和报告图表:

  • EntraTokenAid
  • GraphRequest
  • Send-ApiRequest
  • GraphBatchRequest
  • Chart.js
下载工具
验证流程WindowsLinux/macOS交互式登录次数便捷性参数备注
BroCi是否1高-AuthFlow BroCi (默认)避免依赖旧版客户端(如 Azure Active Directory PowerShell)。支持所有枚举。
授权码流程是否4普通-AuthFlow AuthCode标准非 BroCi 授权码流程。不会生成独立的 PIM (Groups) 设置报告。
设备代码流程是是3普通-AuthFlow DeviceCode身份验证可在另一台设备上完成,但两个安全发现检查会以较低深度运行。不会生成独立的 PIM (Groups) 设置报告。
授权码 + 手动代码流程是是4低-普通-AuthFlow ManualCode身份验证可在不同设备或浏览器会话中完成。不会生成独立的 PIM (Groups) 设置报告。
BroCi + 手动代码流程是是1低-AuthFlow BroCiManualCode授权码必须从浏览器开发者工具中手动提取。支持所有枚举。
BroCi 带令牌是是0低-AuthFlow BroCiToken -BroCiToken "<refresh_token>"刷新令牌必须手动获取(例如,从浏览器开发者工具或其他认证工具)。支持所有枚举。
服务主体是是0低-AuthFlow ServicePrincipal -SPClientId "<appId>" -Tenant "<tenantId>" ...仅应用 OAuth2 客户端凭据流程。需要具有足够 Graph API 权限的自定义应用注册。支持所有枚举。
权限类型
AdministrativeUnit.Read.All应用程序
AgentIdentity.Read.All应用程序
AgentIdentityBlueprint.Read.All应用程序
AgentIdentityBlueprintPrincipal.Read.All应用程序
Application.Read.All应用程序
AuditLog.Read.All应用程序
Device.Read.All应用程序
Group.Read.All应用程序
Organization.Read.All应用程序
Policy.Read.All应用程序
PrivilegedAccess.Read.AzureADGroup应用程序
RoleManagement.Read.Directory应用程序
RoleManagementPolicy.Read.AzureADGroup应用程序
User.Read.All应用程序
参数描述默认值
UserAgent用于令牌端点请求和 API 调用的用户代理。EntraFalcon
DisableCAE禁用请求连续访问评估(CAE)令牌。false
Tenant指定要向其进行身份验证的租户(ID 或域)。在评估非账户主租户时有用。账户的主租户
OutputFolder存储报告的输出文件夹。Results_%TenantName%_YYYYMMDD_HHMM
LimitResults限制报告中组和用户的数量(按风险排序后)。对大型租户很有用。-
LogLevel控制运行时 CLI 日志详细级别。支持的值:Off(默认)、Verbose、Debug、Trace。Off
ApiTop设置 API 返回的最大对象数量。较低的值可降低超时风险(HTTP 504),但会增加请求次数。999(有效范围:5–999)
AuthFlow首选身份验证流选择器。值:BroCi(默认)、AuthCode、DeviceCode、ManualCode、BroCiManualCode、BroCiToken、ServicePrincipal。BroCi
BroCiToken用于 AuthFlow BroCiToken 的 Azure 门户刷新令牌。-
SPClientId服务主体的应用程序(客户端)ID。-AuthFlow ServicePrincipal 必需。-
SPClientSecret服务主体的客户端机密。与 -AuthFlow ServicePrincipal 一起使用。-
SPCertificatePath用于服务主体身份验证的 PFX/P12 证书文件的路径。-
**SPCertificatePassword`由 -SPCertificatePath 指定的 PFX 证书的密码(SecureString)。-
**SPCertificatePemPath`PEM 证书文件的路径。与 -SPPrivateKeyPemPath 一起使用。-
**SPPrivateKeyPemPath`与 -SPCertificatePemPath 匹配的 PEM 私钥文件的路径。-
**SPPrivateKeyPemPassword`由 -SPPrivateKeyPemPath 指定的 PEM 私钥的密码(SecureString)。-
Csv除了 TXT/HTML 报告文件外,启用写入 CSV 报告文件。false
**ExportCapUncoveredUsers`对于每个启用了用户定位的条件访问策略,导出一个 CSV 文件,列出未被该策略覆盖的用户。文件写入输出目录中的 ConditionalAccessPolicies_UncoveredUsers 子文件夹。false
**ExportFindingsJson`在运行结束时将所有安全发现结果导出为 JSON。false
**DebugObjectDump`将最终内存中的报告对象导出为 CLIXML 到 Debug_ObjectDump,用于故障排除和测试。false
!=empty
  • 使用 || 在同一列中匹配多个值中的任意一个(例如 Admin || Guest)。
  • 使用 && 在同一列中要求满足多个匹配(例如 !adm && !svc && !sql)。
  • 要跨列应用 OR 逻辑,直接在筛选字段中使用 or_、group1_、group2_...。示例:在第 1 列中输入 or_>1,在第 2 列中输入 or_!Mallory。
  • 注意: DisplayName 列还包含对象的 ID(不可见),因此也可以通过 ID 进行筛选。
  • 角色名称层级级别GUID
    全局管理员062e90394-69f5-4237-9190-012177145e10
    合作伙伴 Tier2 支持0e00e864a-17c5-4a4b-9c06-f5b95a8d5bd8
    特权身份验证管理员07be44c8a-adaf-4e2a-84d6-ab2649e08a13
    特权角色管理员0e8611ab8-c189-46e8-94e1-60213ab1f814
    域名管理员08329153b-31d0-4727-b945-745eb3bc5f31
    外部身份提供者管理员0be2f45a1-457d-42af-a067-6ec1fa63bc45
    混合身份管理员08ac3fc64-6eca-42ea-9e69-59f4c7b60eb2
    应用程序管理员09b895d92-2cd3-44c7-9d02-a6ac2d5ea5c3
    云应用程序管理员0158c047a-c907-4556-b7ef-446551a6b5f7
    安全管理员0194ae4cb-b126-40b2-bd5b-6091b380977d
    代理 ID 管理员1db506228-d27e-4b7d-95e5-295956d6615f
    AI 管理员1d2562ede-74db-457e-a7b6-544e236ebb61
    条件访问管理员1b1be1c3e-b65d-4f19-8427-f6fa0d97feb9
    身份验证管理员1c4e39bd9-1100-46d3-8c65-fb160da0071f
    Azure DevOps 管理员1e3973bdf-4987-49ae-837a-ba8e231c7286
    目录写入者19360feb5-f418-4baa-8175-e2a00bac4301
    Exchange 管理员129232cdf-9323-42fd-ade2-1d097af3e4de
    组管理员1fdd7a751-b60b-444a-984c-02652fe8fa1c
    支持人员管理员1729827e3-9c14-49f7-bb1b-9608f156bbb8
    身份治理管理员145d8d3c5-c802-45c6-b32a-1d70b5e1e86e
    Intune 管理员13a2c62db-5318-420d-8d74-23affee5d9d5
    知识管理员1b5a8dcf3-09d5-43a9-a639-8e29ef291470
    知识经理1744ec460-397e-42ad-a462-8b3f9747a02c
    生命周期工作流管理员159d46f88-662b-457b-bceb-5c3809e5908f
    目录同步帐户1d29b2b05-8046-44ba-8758-1e26182fcf32
    本地目录同步帐户1a92aed5d-d78a-4d16-b381-09adb37eb3b0
    合作伙伴 Tier1 支持14ba39ca4-527c-499a-b93d-d9b492c50246
    密码管理员1966707d0-3269-4727-9be2-8c3a10f19b9d
    SharePoint 管理员1f28a1f50-f6e7-4571-818b-6a12f2af6b6c
    Teams 管理员169091246-20e8-4a56-aa4d-066075b2a7a8
    用户管理员1fe930be7-5e62-47db-91af-98c3a49a38b1
    Windows 365 管理员111451d60-acb2-45eb-a7d6-43d0f0125c13
    Yammer 管理员1810a2642-a034-447f-a5e8-41beaa378541
    身份验证策略管理员20526716b-113d-4c15-b2c8-68e3c22b9f80
    Azure AD 已加入设备的本地管理员29f06204d-73c1-4d4c-880a-6edb90606fd8
    云设备管理员27698a772-787b-4ac8-901f-60d6b08affd2
    全局读取者2f2ef992c-3afb-46b9-b7cf-a126ee74c451
    来宾邀请者295e79109-95c0-4d8e-aee3-d01accf2d47b
    角色名称层级级别GUID
    所有者08e3af657-a8ff-443c-a75c-2fe8c4bcb635
    用户访问管理员018d7d88d-d35e-4fb5-a5c3-7773c20a72d9
    参与者0b24988ac-6180-42a0-ab88-20f7382dd24c
    基于角色的访问控制管理员0f58310d9-a9f6-439a-9e8d-f62e7b41a168
    预留管理员0a8889054-8d42-49c9-bc1c-52486c10e7cd
    安全管理1fb1c8493-542b-48eb-b624-b4c8fea62acd
    虚拟机参与者19980e02c-c2be-4d73-94e8-173b1dc7cf3c
    虚拟机数据访问管理员166f75aeb-eabe-4b70-9f1e-c350c4c9ad04
    虚拟机管理员登录11c0163c0-47e6-4577-8991-ea5c82e286e4
    Windows Admin Center 管理员登录1a6333a3e-0164-44c3-b281-7a577aff287f
    容器注册表参与者和数据访问配置管理员13bc748fc-213d-45c1-8d91-9da5725539b9
    密钥保管库管理员100482a5a-887f-4fb3-b363-3b7fe8e74483
    密钥保管库数据访问管理员18b54135c-b56d-4d72-a534-26097cfdc8d8
    密钥保管库机密官员1b86a8fe4-44ce-4948-aee5-eccb2c155cd7
    密钥保管库机密用户14633458b-17de-408a-b874-0445c86b69e6
    Azure Kubernetes 服务 RBAC 管理员13498e952-d568-435e-9b2c-8d77e338d7f7
    Azure Kubernetes 服务 RBAC 集群管理员1b1ff04bb-8a4e-4dc4-8eb5-8693973ce19b
    Azure Arc Kubernetes 管理员1dffb1e0c-446f-4dde-a09f-99eb5cc68b96
    Azure Arc Kubernetes 集群管理员18393591c-06b9-48a2-a542-1bd6b377f6a2
    Azure Arc VMware VM 参与者1b748a06d-6150-4f8a-aaa9-ce3940cd96cb
    存储帐户参与者117d1049b-9a84-46fb-8f53-869881c3d3ab
    读取者2acdd72a7-3385-48ef-bd42-f606fba81ae7
    安全读取者239bc4728-0917-49c7-9d2c-d95423bc2eb4
    虚拟机用户登录3fb879df8-f326-4884-b1cf-06f3ad86be52
    桌面虚拟化用户31d18fff3-a72a-46b5-b4a9-0b38a3cd7e63
    权限严重级别GUID
    RoleManagement.ReadWrite.Directory危险d01b97e9-cbc0-49fe-810a-750afd5527a3
    AppRoleAssignment.ReadWrite.All危险84bccea3-f856-4a8a-967b-dbe0a3d53a64
    Application.ReadWrite.All危险bdfbf15f-ee85-4955-8675-146e8e5296b5
    RoleAssignmentSchedule.ReadWrite.Directory危险8c026be3-8e26-4774-9372-8d5d6f21daff
    PrivilegedAssignmentSchedule.ReadWrite.AzureADGroup危险06dbc45d-6708-4ef0-a797-f797ee68bf4b
    PrivilegedAccess.ReadWrite.AzureADGroup危险32531c59-1f32-461f-b8df-6f8a3b89f73b
    RoleEligibilitySchedule.ReadWrite.Directory危险62ade113-f8e0-4bf9-a6ba-5acb31db32fd
    PrivilegedEligibilitySchedule.ReadWrite.AzureADGroup危险ba974594-d163-484e-ba39-c330d5897667
    Domain.ReadWrite.All危险0b5d694c-a244-4bde-86e6-eb5cd07730fe
    Application.ReadUpdate.All危险0586a906-4d89-4de8-b3c8-1aacdcc0c679
    AgentIdentityBlueprint.AddRemoveCreds.All高75b5feb2-bfe7-423f-907d-cc505186f246
    AgentIdentityBlueprint.ReadWrite.All高4fd490fc-1467-48eb-8a4c-421597ab0402
    EntitlementManagement.ReadWrite.All高ae7a573d-81d7-432b-ad44-4ed5c9d89038
    Organization.ReadWrite.All高46ca0847-7e6b-426e-9775-ea810a948356
    Policy.ReadWrite.PermissionGrant高2672f8bb-fd5e-42e0-85e1-ec764dd2614e
    RoleManagementPolicy.ReadWrite.AzureADGroup高0da165c7-3f15-4236-b733-c0b0f6abe41d
    RoleManagementPolicy.ReadWrite.Directory高1ff1be21-34eb-448c-9ac9-ce1f506b2a68
    Policy.ReadWrite.AuthenticationMethod高7e823077-d88e-468f-a337-e18f1f0e6c7c
    User.DeleteRestore.All高4bb440cd-2cf2-4f90-8004-aa2acd2537c5
    User.EnableDisableAccount.All高f92e74e7-2563-467f-9dd0-902688cb5863
    DelegatedPermissionGrant.ReadWrite.All高41ce6ca6-6826-4807-84f1-1c82854f7ee5
    Policy.ReadWrite.ConditionalAccess高ad902697-1014-4ef5-81ef-2b4301988e8c
    DeviceManagementConfiguration.ReadWrite.All高0883f392-0a7a-443d-8c76-16a6d39c7b63
    DeviceManagementRBAC.ReadWrite.All高0c5e8a55-87a6-4556-93ab-adc52c4d862d
    Directory.ReadWrite.All高c5366453-9fb0-48a5-a156-24f0c49a4b84
    Group.ReadWrite.All高4e46008b-f24c-477d-8fff-7bb4ec7aafe0
    GroupMember.ReadWrite.All高f81125ac-d3b7-4573-a3b2-7099cc39df9e
    UserAuthenticationMethod.ReadWrite.All高b7887744-6746-4312-813d-72daeaee7e2d
    Sites.FullControl.All高5a54b8b3-347c-476d-8f8e-42d5c7424d29
    Sites.Manage.All高65e50fdc-43b7-4915-933e-e8138f11f40a
    User-PasswordProfile.ReadWrite.All高56760768-b641-451f-8906-e1b8ab31bca7
    Sites.Read.All高205e70e5-aba6-4c52-a976-6d2d46c48043
    Sites.ReadWrite.All高89fe6a52-be36-487e-b7d8-d061c450a026
    Files.Read.All高df85f4d6-205c-4ac5-a5ea-6bf408dba283
    Files.ReadWrite.All高863451e7-0667-486c-a5d6-d135439485f0
    DeviceLocalCredential.Read.All高9917900e-410b-4d15-846e-42a357488545
    AdministrativeUnit.ReadWrite.All高7b8a2d34-6b3f-4542-a343-54651608ad81
    User.ReadWrite.All中204e0828-b5ca-4ad8-b9f3-f32a958e7cc4
    Chat.ReadWrite.All中7e9a077b-3711-42b9-b7cb-5fa5f3f7fea7
    Mail.Read中570282fd-fa5c-430d-a7fd-fc8dc98a9dca
    Mail.ReadWrite中024d486e-b451-40bb-833d-3e66d98c5c73
    Mail.Send中e383f46e-2787-4529-855e-0e479a3ffac0
    CustomSecAttributeAssignment.ReadWrite.All中ca46335e-8453-47cd-a001-8459884efeae
    ServicePrincipalEndpoint.ReadWrite.All中7297d82c-9546-4aed-91df-3d4f0a9b3ff0
    BitlockerKey.Read.All中b27a61ec-b99c-4d6a-b126-c4375d08ae30
    AiEnterpriseInteraction.Read中859cceb9-2ec2-4e48-bcd7-b8490b5248a5
    Calendars.Read中465a38f9-76ea-45b9-9f34-9e8b0d4b0b42
    Calendars.Read.Shared中2b9c4092-424d-4249-948d-b43879977640
    Calendars.ReadWrite中1ec239c2-d7c9-4623-a91a-a9775856bb36
    Calendars.ReadWrite.Shared中12466101-c9b8-439a-8589-dd09ee67e8e9
    ChannelMessage.Edit中2b61aa8a-6d36-4b2f-ac7b-f29867937c53
    ChannelMessage.ReadWrite中5922d31f-46c8-4404-9eaf-2117e390a8a4
    ChannelMessage.Send中ebf0f66e-9fb1-49e4-a278-222f76911cf4
    ChatMessage.Send中116b7235-7cc6-461e-b163-8e55691d839e
    Chat.ReadWrite中9ff7295e-131b-4d94-90e1-69fde507ac11
    Contacts.ReadWrite中d56682ec-c09e-4743-aaf4-1a3aac4caa21
    Directory.AccessAsUser.All中0e263e50-5827-48a4-b97c-d940288653c7
    Directory.Read.All中06da0dbc-49e2-44d2-8312-53f166ab848a
    EAS.AccessAsUser.All中ff91d191-45a0-43fd-b837-bd682c4a0b0f
    EntitlementMgmt-SubjectAccess.ReadWrite中e9fdcbbb-8807-410f-b9ec-8d5468c7c2ac
    EWS.AccessAsUser.All中9769c687-087d-48ac-9cb3-c37dde652038
    Files.ReadWrite中5c28f0bf-8a70-41f1-8ab2-9032436ddb65
    IMAP.AccessAsUser.All中652390e4-393a-48de-9484-05f9b1212954
    MailboxItem.ImportExport中df96e8a0-f4e1-4ecf-8d83-a429f822cbd6
    MailboxFolder.Read中52dc2051-4958-4636-8f2a-281d39c6981c
    MailboxFolder.ReadWrite中077fde41-7e0b-4c5b-bcd1-e9d743a30c80
    MailboxItem.Read中82305458-296d-4edd-8b0b-74dd74c34526
    MailboxSettings.ReadWrite中818c620a-27a9-40bd-a6a5-d96f7d610b4b
    Notes.Read中371361e4-b9e2-4a3f-8315-2a301a3b0a3d
    Notes.Read.All中dfabfca6-ee36-4db2-8208-7a28381419b3
    Notes.ReadWrite中615e26af-c38a-4150-ae3e-c3b0d4cb1d6a
    Notes.ReadWrite.All中64ac0503-b4fa-45d9-b544-71a463f05da0
    POP.AccessAsUser.All中d7b7f2d9-0f45-4ea1-9d42-e50810c06991
    offline_access低7427e0e9-2fba-42fe-b0c0-848c9e6a8182
    openid低37f7f235-527c-4136-accd-4a02d197296e
    email低64a6cdd6-aab1-4aaf-94b8-3cc8405e90d0
    profile低14dad69e-099b-42c9-810b-d002981feec1
    User.Read低14dad69e-099b-42c9-810b-d002981feec1
    应用程序ID类型资源ID目的
    1b730954-1685-4b74-9bfd-dac224a7b894交互式00000003-0000-0000-c000-000000000000检索PIM for Groups数据
    04b07795-8ddb-461a-bbee-02f9e1bf7b46交互式00000003-0000-0000-c000-000000000000检索常规租户对象数据
    51f81489-12ee-4a9e-aaae-a2591f45987d交互式00000003-0000-0000-c000-000000000000检索PIM for Entra / Azure角色
    80ccca67-54bd-44ab-8625-4b79c4dc7775交互式00000003-0000-0000-c000-000000000000检索安全发现策略上下文
    04b07795-8ddb-461a-bbee-02f9e1bf7b46非交互式797f4846-ba00-4fd7-ba43-dac1f8f63013检索Azure IAM角色分配数据
    应用程序ID类型资源ID目的
    c44b4083-3bb0-49c1-b47d-974e53cbdf3c交互式00000003-0000-0000-c000-000000000000初始身份验证,用于获取刷新令牌以支持BroCi
    50aaa389-5a33-4f1a-91d7-2c45ecd8dac8非交互式00000003-0000-0000-c000-000000000000检索PIM for Groups数据
    50aaa389-5a33-4f1a-91d7-2c45ecd8dac8非交互式01fc33a7-78ba-4d2f-a4b7-768e336e890e检索PIM for Groups数据
    74658136-14ec-4630-ad9b-26e160ff0fc6非交互式00000003-0000-0000-c000-000000000000检索常规租户对象数据
    74658136-14ec-4630-ad9b-26e160ff0fc6非交互式797f4846-ba00-4fd7-ba43-dac1f8f63013检索Azure IAM角色分配数据