Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
caOptics — CA Optics - Azure AD 条件访问差距分析器 | Kitploit
工具/GitHubGitHub/jsa2/caoptics
防御工具配置审计云安全身份与访问管理 (IAM)身份验证错误配置Archived
GitHubjsa2/caoptics

caOptics

CA Optics - Azure AD 条件访问差距分析器

查看仓库
33726212年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

注意

项目已归档,原因是开发优先级发生变化,且我将社区工作重心转移到其他领域(PoC、其他工具和演示/展示),因此该项目已设为只读。


  • CA Optics - Azure AD 条件访问差距分析器
    • 什么是条件访问?
    • 给早期测试者的说明
  • 发布说明
  • 文档
    • 差距示例
    • 排列生成
    • 先决条件
    • 重要事项
    • 描述 - 条件访问差距分析器
      • 与现有工具的比较
    • 范围
    • 偏好性设计
      • 设计决策
        • 平台查找
        • 查找差异
        • 组嵌套
    • 参数
      • 从 launch.json 提供参数(在 VSCode 中调试)?
    • 运行工具
    • 查看报告
    • 故障排除
  • 贡献

CA Optics - Azure AD 条件访问差距分析器

Azure AD 条件访问差距分析器是一种解决方案,用于扫描复杂的 Azure Active Directory 条件访问策略设置中可能存在的差距。

什么是条件访问?

如果您是条件访问的新手,我们建议您阅读以下 Microsoft 文章:https://docs.microsoft.com/en-us/azure/active-directory/conditional-access/overview


给早期测试者的说明


运行此工具的一行命令:(如果您只打算阅读这一部分,并且已完成安装)

node ./ca/main.js --mapping --skipObjectId=259fcf40-ff7c-4625-9b78-cd11793f161f --clearPolicyCache --clearTokenCache --clearMappingCache


完成先决条件并阅读本自述文件后,请考虑以下事项:

  1. reportOnly 策略不被视为终止策略: 阅读:scope

  2. 每次扫描都使用 --clearPolicyCache 运行

  3. 如果对与策略相关的组/用户进行了更改,每次扫描都使用 --clearMappingCache 运行

  4. 仅针对用户和应用的策略在范围内(这是最常见的范围,但例如,这意味着安全注册策略不会被评估) 阅读:scope

  5. 从测试环境开始,这样您可以积累一些经验,并对工具机制有所预期

  6. 如果您有已知被策略排除的组或用户,请使用 --skipObjectIds 定义要从扫描中排除的对象,除非您想确认这些排除项

  7. 如果您在多个环境中运行扫描,请确保:在运行新扫描之前清除登录信息和缓存

    阅读:参数

    • 如果您安装了 AZ CLI,请在使用 az account clear 继续之前清除 AZ CLI 缓存,然后使用 az login 对您计划扫描的环境重新执行登录

阅读 其他重要说明


发布说明

发布说明:0.7.1
- 更新了依赖项和报告文本输出 
发布说明:0.7
- 现在默认使用 beta 端点,--expand 选项现在会将结果扩展到报告中,无论是否使用 --allTerminations
发布说明:0.6.9
- 使用 --expand=9c06d103-f5b0-4404-bb25-aec4636912cd,47087cd3-64e9-470b-980a-5662f498e016 并展开 10 个组成员以进行单独检查。
发布说明:0.6.8
- 当您在 GUI 中使用任何来宾条件更新策略时,该策略在更新后将只能从 beta 端点获取(预览期间)。 
- 此更新为因该行为而转移到 beta 端点的策略带来了规范化。 
- 只要包含以下条件 "internalGuest,b2bCollaborationGuest,b2bCollaborationMember" 且策略中未排除任何租户,该策略将像之前的来宾条件一样被评估。为了评估已转移的策略,
- 在运行 CaOptics 时使用 '--allowPreviewPolicies' 以考虑此行为

发布说明:0.6.6-7 beta
- 允许通过参数 --altLogin --altGraph 为登录和 graph 使用不同的登录端点
- 允许对策略使用自定义过滤(仅当策略不符合预期架构时才建议使用)

发布说明:0.6.5 beta
- 当报告中也添加了大量排列时,为报告增加了计数器(默认仅添加未终止的排列)
- 小代码修复,将 <var> 改为 <let> 
- 报告文件名现在包含日、月、年和 tenantId,例如 report_day_4_month_9_year_2022-tenant_48f55450-183a-45d6-a9ce-68f3cbc68947.csv

发布说明:0.6.4 beta
- 每次调用获取更多组(减少批处理)
- 修复了通常使用 for await 循环时检测到的竞态条件 
- 在分隔符之间用 "" 将值括起来(CSV)

发布说明:0.6.3 beta
- 对映射对象的处理方式进行了优化。 
  - 映射对象会被缓存。您可以通过使用参数 'clearMappingCache' 重新创建对象映射
  - 查找键将始终首先从 'user/group/role' 条件开始
  - 增加了使用随机 UUID 填充用户映射以测试性能影响的可能性(这仅是调试选项,并不是非 beta 版本中真正会有的功能)

发布说明:0.6.2 beta
- 将缓存参数拆分为单独的函数 -> (clearTokenCache 和 ClearPolicyCache)
- 增加了使用参数 --aggressive 对排列运行预优化算法的可能性(高内存消耗,仅用于 A/B 测试)
- 合并已完成。

发布说明:0.6.1 beta 
- 添加了 CSV 报告的基本版本
- 简化了排列生成,以确保生成必要的排列,并且某些排列会在查找时提前终止

发布说明:0.6 beta(首个非“静默”发布)
- 将应用显示名称添加到 MD 报告中。将对象类型添加到用户类型中

发布说明:0.5.2,0.5.1,0.5 beta(有关发布说明,请参阅早期分支)


文档

差距示例

跨策略检测示例

❌ 任何值为 0 的排列意味着对于该特定条件组合,没有策略被终止。

策略终止数查找
All0Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:GuestsOrExternalUsers
All0Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:Jane Doe
All0Applications:88cc92be-d474-4d95-a57d-7b3ef701f510 -> Locations:finland -> users:John Doe

✅ 在 docs/example.md 中阅读检测的详细描述


排列生成

排列由 getPol2.js 生成

  • 工作原理?对所有条件执行递归搜索,然后将条件放到唯一的排列下

排列可以通过 JSON Crack 服务可视化:

(可视化由 https://jsoncrack.com/ 提供)

先决条件

运行时

  • Node.JS 14 LTS(Linux)(在 Linux 中安装)
  • Node.JS 16 LTS(Windows)(在 Windows 中安装)

如果您不希望使用 fire & forget 版本```bash nvm use 16 git clone https://github.com/jsa2/caOptics; cd caOptics; npm install;

**适用于 Azure Cloud Shell (Bash) 的即发即弃运行设置**```bash
curl -o- https://raw.githubusercontent.com/jsa2/caOptics/main/init.sh | bash;
# Force reload of NVM
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" 
# This loads nvm

未提供输入内容,请发送需要翻译的文本。```bash cd caOptics

Force fresh login (AZ CLI can't use the built-in token for the scope we are looking in here)

az login

**Azure AD 相关**
- 已启用 Azure AD Security Reader 角色
- 如果安装了 Azure CLI 且已有 CLI 会话,此工具将使用该[会话](https://github.com/jsa2/caoptics/blob/main/tokenHandler/getCode.js)。 
   - 如果你没有安装 Azure CLI,则仅使用 Azure CLI clientID 通过 Node.js http 客户端发起的 device_code 流来获取令牌

      >![](https://assets.kitploit.com/production/public/readmes/47865/74e5e9fa7f505e20aecbe9ab86620b749fbecbd246cf233c4826991cda9a493b.png)  

**以下为所使用的开源软件包**

为减少代码量,我们使用以下依赖项来实现操作和美观(向这些优秀软件包的维护者致敬。每个软件包的许可证链接均已在许可证列中提供)
  
  软件包 | 美观|操作|许可证
  -|-|-|-
  [axios](https://www.npmjs.com/package/axios)||✅ | [MIT](https://github.com/axios/axios/blob/v1.x/LICENSE)
  [yargs](https://www.npmjs.com/package/yargs)||✅ | [MIT](https://github.com/yargs/yargs/blob/main/LICENSE)
  [jsonwebtoken](https://www.npmjs.com/package/jsonwebtoken) | |✅|[MIT](https://github.com/auth0/node-jsonwebtoken/blob/master/LICENSE)
  [chalk](https://www.npmjs.com/package/chalk)| ✅ | |[MIT](https://github.com/chalk/chalk/blob/main/license)
   [js-beautify ](https://www.npmjs.com/package/js-beautify) | ✅ | |[MIT](https://github.com/beautify-web/js-beautify/blob/main/LICENSE)

**此工具工作需要哪些网络访问权限?**

1. 操作需要以下主机  ```sh
  graph.microsoft.com
  login.microsoftonline.com
  1. 操作前需要访问 github 和 npmjs 以下载依赖。

    如果你计划在网络受限环境中运行此工具,请先在允许访问软件包安装和 github.com 的环境中下载依赖。然后你可以将整个安装目录打包成 zip 传输到网络受限环境中。

以下是我在 Node.js 应用上运行任何第三方包时进行的典型跟踪。它显示了运行时被调用的 URL


重要

  1. 阅读 许可证
下载工具