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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
nhi-risk-analyzer — 发现、风险评估并修复 AWS、Azure 和 GCP 中的非人类身份,采用离线基于规则的分析、权限提升检测和权限边界遏制。 | Kitploit
工具/GitHubGitHub/likithmanoj/nhi-risk-analyzer
云基础设施安全防御工具权限提升漏洞分析脚本与自动化配置审计云安全秘密检测身份与访问管理 (IAM)错误配置事件响应
73320天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
likithmanoj/nhi-risk-analyzer

nhi-risk-analyzer

发现、风险评估并修复 AWS、Azure 和 GCP 中的非人类身份,采用离线基于规则的分析、权限提升检测和权限边界遏制。

查看仓库

多云非人类身份(NHI)风险分析器与修复器

一个企业级、离线优先的安全自动化平台,可跨 AWS、Azure 和 Google Cloud Platform(GCP) 发现、清点、分析、风险评估并安全修复 非人类身份(NHI)——服务主体、服务账号、机器角色、访问密钥和凭证。

⭐️ 如果您觉得此工具有助于审计和保护跨云的非人类身份,请考虑为仓库加星!


🌐 多云身份覆盖范围

云提供商覆盖的身份类型发现引擎密钥/凭证检查活动规则状态
🟧 AWSIAM 角色、机器用户、组、策略Boto3 + 会话缓存访问密钥(CreateDate、LastUsed)13 条规则(AWS_01–16、TAG_01)✅ 支持
🟦 AzureEntra ID 服务主体、应用注册、托管标识纯 REST(Graph 与 ARM)客户端密钥(passwordCredentials)、证书(keyCredentials)5 条规则(AZURE_01–05)✅ 支持
🟥 GCP服务账号、工作负载身份、IAM 角色纯 REST(IAM 与 Resource Mgr)服务账号密钥(validAfterTime、用户托管)6 条规则(GCP_01–06)✅ 支持

🧪 测试套件状态: 所有提供商和引擎均 102 项通过,4 项子测试通过(100% 全绿)。


📋 概述

NHI 风险分析器 解决了一个关键的多云安全挑战:现代企业云环境会积累数百个机器和非人类身份(服务账号、自动化角色、CI/CD 凭证、跨云信任角色),而对这些身份中哪些权限过高、处于休眠状态或引入权限提升风险,可见性极低。

该平台在三个不同阶段强制执行严格的架构解耦:

  1. 多云状态收集: 通过轻量级云原生机制(AWS 使用 Boto3 会话缓存;Azure 和 GCP 使用零依赖纯 REST)将数据摄取到规范化的 inventory.json 快照中。
  2. 离线风险评估: 在没有实时网络依赖的情况下,针对快照评估安全规则。这意味着风险引擎可以重新运行、测试和迭代,而无需再次接触云提供商,并且每个发现都可针对生成它的确切账户/租户状态复现。
  3. 自动化修复与遏制: 一个故障关闭(fail-closed)的遏制流水线,通过策略边界中和危险的提权攻击路径,并停用陈旧/休眠凭证,同时不会导致运营中的微服务中断。

🎯 为什么存在这个项目

企业多云环境通常包含以下非人类身份:

  • 非标准化: 在不同云中手动创建,没有统一的配置标准。
  • 权限过高: 被授予管理员或通配符权限,远超实际运营需求。
  • 休眠且被遗忘: 在工作负载或集成流水线退役后仍长期保持活动状态。
  • 审计不完整: 携带内联策略、自定义角色定义或直接绑定,绕过标准合规检查。
  • 凭证风险: 使用陈旧(超过 90 天)、即将过期或自创建以来从未使用过的访问密钥、客户端密钥或服务账号密钥。
  • 易被提权: 持有单独或组合后可提升至完全管理员访问权限的云 IAM 权限——这是大多数仅检查策略的扫描器不会检查的已记录攻击路径。

NHI 风险分析器使用云 API 和离线规则处理,跨云提供商自动化发现、安全分析和针对性修复。


🏗️ 架构与工作流

  ┌──────────────┐         ┌──────────────┐         ┌──────────────┐
  │   AWS IAM    │         │  Azure Entra │         │   GCP IAM    │
  │   (Boto3)    │         │  (Pure REST) │         │  (Pure REST) │
  └──────┬───────┘         └──────┬───────┘         └──────┬───────┘
         │                        │                        │
         └────────────────┐       │       ┌────────────────┘
                          ▼       ▼       ▼
                    ┌───────────────────────────┐
                    │       inventory.py        │
                    │ (Multi-Cloud Collector)   │
                    └─────────────┬─────────────┘
                                  ▼
                    ┌───────────────────────────┐
                    │      inventory.json       │
                    │  (Unified State Snapshot) │
                    └─────────────┬─────────────┘
                                  │
                                  ▼
                    ┌───────────────────────────┐
                    │          risk.py          │
                    │    (--cloud Orchestrator) │
                    └─────────────┬─────────────┘
                                  │
         ┌────────────────────────┼────────────────────────┐
         ▼                        ▼                        ▼
  ┌──────────────┐         ┌──────────────┐         ┌──────────────┐
  │  aws.py sub- │         │ azure.py sub-│         │  gcp.py sub- │
  │    runner    │         │    runner    │         │    runner    │
  │ (13 Rules)   │         │  (5 Rules)   │         │  (6 Rules)   │
  └──────┬───────┘         └──────┬───────┘         └──────┬───────┘
         └────────────────────────┼────────────────────────┘
                                  ▼
                    ┌───────────────────────────┐
                    │        dispatch.py        │
                    │ (Containment Dispatcher)  │
                    └─────────────┬─────────────┘
                                  │
         ┌────────────────────────┴────────────────────────┐
         ▼                                                 ▼
┌─────────────────────────┐                     ┌─────────────────────┐
│ policy_surgery.py &     │                     │    credential.py    │
│ policy.py (Boundaries)  │                     │ (Deactivate Key)    │
└─────────────────────────┘                     └─────────────────────┘
  1. 状态收集(nhi/services/inventory.py): 跨 AWS、Azure 和 GCP 查询云 API,丰富凭据元数据(访问密钥最后使用时间、密钥过期时间),并将干净的状态快照序列化到 inventory.json。
  2. 选择性云编排器(nhi/risk/risk.py): 接受 --cloud {aws,azure,gcp,all} 以选择性地针对云提供商,节省不必要的 API 调用并避免跨租户速率限制。
  3. 模块化风险运行器(nhi/risk/runners/): 解耦的执行引擎(aws.py、azure.py、gcp.py)根据模块化安全规则处理提供商清单,并带有针对部分或缺失云负载的防御性保护。
  4. 工件导出与运行间差异比较(nhi/services/export.py、nhi/remediation/diff.py): 针对历史基线扫描计算安全漂移,将执行工件上传到云存储,并将发现结果导出为 CSV 和 OASIS SARIF v2.1.0 以供审计流水线使用。
  5. 修复与策略手术(nhi/remediation/): AST 级策略语句分区(policy_surgery.py)以及非破坏性遏制边界/密钥停用,支持试运行模拟模式和 nhi-ignore.yaml 豁免。

⚡ 工程优化

AWS 会话缓存

为消除清单收集期间冗余的 AWS STS 身份验证调用,已通过身份验证的 boto3.Session 对象会在 Python 进程的生命周期内缓存在 nhi/aws/session.py 中。

  • STS AssumeRole 调用减少: 35 → 1
  • 清单执行时间减少: 79.58s → 45.67s(约 43% 运行时改进)
  • 封装: 身份验证完全封装在 session.py 内部,无需对发现或规则模块进行任何逻辑更改。

纯 REST 多云发现(Azure 与 GCP)

多云发现层没有捆绑笨重且碎片化的云 SDK(azure-mgmt-*、msgraph-sdk、google-cloud-iam + grpcio),而是采用统一的轻量级 纯 HTTP(requests)+ Bearer 令牌设计:

  • 容器占用: 通过消除原生编译的 C/C++ 库(grpcio),将容器镜像大小从 >300MB 减少到 <50MB。
  • 无服务器成本优化: 显著降低内存占用,使其能够在最低容器 RAM 层级(128MB / 256MB)内执行,并大幅削减冷启动延迟。
  • 双平面摄取:
    • 身份平面(Microsoft Graph): 直接查询 https://graph.microsoft.com/v1.0 以获取 Entra ID 用户、安全组、服务主体和应用注册。
    • 资源平面(ARM): 查询 https://management.azure.com 以获取角色分配、角色定义和用户分配的托管标识。

🛡️ 规则覆盖与修复映射

该平台在 AWS、Azure 和 GCP 上强制执行 26 条活跃安全规则,针对权限提升途径、过度宽松的策略和休眠的机器凭据。

🟧 AWS IAM 规则

规则 ID名称类别严重性状态修复 / 影响
AWS_01策略中的通配符操作策略分析HIGH✅ 已实现附加权限边界(nhi-permissions-boundary)
AWS_02策略中的通配符资源策略分析HIGH / LOW✅ 已实现附加权限边界 / AST 语句分区
AWS_03完全管理员访问权限策略分析CRITICAL✅ 已实现附加权限边界(计划在阶段 5 中分离)
AWS_04通过 iam:PassRole 进行权限提升权限提升HIGH✅ 已实现附加权限边界(显式拒绝)
AWS_05通过 iam:CreatePolicyVersion 进行权限提升权限提升CRITICAL✅ 已实现附加权限边界(显式拒绝)
AWS_06通过策略附加(Attach*/Put*)进行直接提升权限提升CRITICAL✅ 已实现附加权限边界(显式拒绝)
AWS_07通过 iam:CreateAccessKey 进行权限提升权限提升CRITICAL✅ 已实现附加权限边界(显式拒绝)
AWS_08控制台访问提升(Create/UpdateLoginProfile)权限提升CRITICAL✅ 已实现附加权限边界(显式拒绝)
AWS_09通过 iam:SetDefaultPolicyVersion 进行权限提升权限提升CRITICAL✅ 已实现附加权限边界(显式拒绝)
AWS_10宽松的角色信任策略(* AssumeRole 主体)信任策略分析CRITICAL✅ 已实现附加权限边界(nhi-permissions-boundary)
AWS_11过期的访问密钥(超过 90 天)凭证安全HIGH / LOW✅ 已实现停用密钥(Status: Inactive)
AWS_12未使用且休眠的访问密钥(超过 30 天)凭证安全HIGH✅ 已实现停用密钥(Status: Inactive)
AWS_14不受限制的 S3 数据外泄(s3:GetObject*、s3:*)数据边界HIGH✅ 已实现附加权限边界(nhi-permissions-boundary)
AWS_15安全防御规避(CloudTrail/GuardDuty/KMS 篡改)资源保护CRITICAL✅ 已实现附加权限边界(nhi-permissions-boundary)
AWS_16不受限制的 KMS 解密(kms:Decrypt、kms:*)数据边界HIGH✅ 已实现附加权限边界(nhi-permissions-boundary)
TAG_01缺少强制性治理标签(Owner、Environment)治理与标签LOW✅ 已实现应用强制性标签

🟦 Azure Entra ID 与 RBAC 规则

下载工具