SudoXploit7/PRISM

GitHub: SudoXploit7/PRISM

一个进攻性多云 IAM 安全评估框架,通过攻击图与实时仪表板揭示身份权限风险与最短提权路径。

Stars: 0 | Forks: 0

``` ██████╗ ██████╗ ██╗███████╗███╗ ███╗ ██╔══██╗██╔══██╗██║██╔════╝████╗ ████║ ██████╔╝██████╔╝██║███████╗██╔████╔██║ ██╔═══╝ ██╔══██╗██║╚════██║██║╚██╔╝██║ ██║ ██║ ██║██║███████║██║ ╚═╝ ██║ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝╚═╝ ╚═╝ ``` **Privilege Risk IAM Security Mapper** *The offensive multi-cloud security framework that thinks like an attacker.* [![Python](https://img.shields.io/badge/Python-3.11%2B-blue?style=flat-square&logo=python)](https://python.org) [![Flask](https://img.shields.io/badge/Flask-3.0-black?style=flat-square&logo=flask)](https://flask.palletsprojects.com) [![AWS](https://img.shields.io/badge/AWS-Supported-orange?style=flat-square&logo=amazon-aws)](https://aws.amazon.com) [![Azure](https://img.shields.io/badge/Azure-Supported-blue?style=flat-square&logo=microsoft-azure)](https://azure.microsoft.com) [![GCP](https://img.shields.io/badge/GCP-Supported-red?style=flat-square&logo=google-cloud)](https://cloud.google.com) [![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE) [![Free](https://img.shields.io/badge/Cost-100%25%20Free%20%26%20Open%20Source-brightgreen?style=flat-square)]()
## 什么是 PRISM? PRISM 是一个**具有实时 Web 仪表板的进攻性多云 IAM 安全评估框架**。它使用只读凭证连接 AWS、Azure 和 GCP,运行全面的自动化威胁评估,并提供攻击者视角的整个 IAM 攻击面视图——包含 MITRE ATT&CK 映射、CVSS v3.1 评分以及一键式 PDF 报告。 大多数云安全工具问的是 *“什么配置错误?”* PRISM 问的是 *“攻击者多快能控制这个账户,以及哪个身份会最先带他们到达那里?”* ## 架构 ``` PRISM/ ├── main.py # Entry point — launches Flask-SocketIO dashboard ├── requirements.txt ├── tests/ # pytest unit test suite (12+ validations) │ ├── test_attack_graph.py # Graph native build edge testing │ ├── test_cvss.py # CVSS calculation accuracy │ ├── test_entropy.py # Permission boundary testing │ └── test_privilege_escalation.py # IAM action dict evaluation └── src/ ├── collectors/ │ ├── aws_collector.py # IAM, EC2, S3, Lambda, Secrets Manager, CloudTrail, VPC │ ├── azure_collector.py # RBAC, service principals, managed identities │ └── gcp_collector.py # Service accounts, SA keys, IAM policy bindings ├── analysis/ │ ├── iam_shadow_admin_detector.py # Indirect admin access via 15+ escalation vectors │ ├── privilege_escalation_paths.py # 21 privesc vectors per identity │ ├── azure_rbac_analyzer.py # Azure RBAC over-privilege and escalation paths │ ├── gcp_sa_analyzer.py # GCP SA key abuse and impersonation chains │ ├── network_exposure_analyzer.py # Security groups, dangerous ports, public S3 │ ├── cloudtrail_evasion_analyzer.py # Identities that can blind the audit trail │ ├── lambda_backdoor_detector.py # Lambda-based privilege escalation │ ├── secrets_exfil_detector.py # Secrets Manager and SSM read access │ ├── cross_account_analyzer.py # Cross-account trust relationship risks │ ├── credential_age_analyzer.py # Key age, rotation status, MFA enrollment │ ├── risk_engine.py # NIST CSF 2.0 aligned aggregate risk score │ └── remediation_engine.py # Prioritized CLI-ready remediation steps ├── offensive/ │ └── mvc_engine.py # NetworkX shortest path to admin ├── unique/ │ ├── compliance_weaponizer.py # 6-framework compliance gap weaponizer │ ├── attack_path_reasoner.py # Adversary psychology scoring per path hop │ └── threat_sandbox.py # Interactive remediation dry-run engine ├── graph/ │ └── attack_graph.py # NetworkX multi-cloud IAM directed graph (Unified with MVC) ├── scoring/ │ └── cvss.py # CVSS v3.1 base score calculator (FIRST spec) ├── report/ │ └── pdf_engine.py # ReportLab professional PDF report generator └── dashboard/ ├── app.py # Flask routes + WebSocket scan orchestrator ├── demo_data.py # Full demo mode — no credentials required ├── templates/index.html └── static/ ├── css/prism.css └── js/dashboard.js ``` ## 功能特性 ### 数据收集 | 模块 | 云平台 | 收集内容 | |--------|-------|---------| | `aws_collector.py` | AWS | IAM 用户、角色、策略、组、EC2 安全组、S3 存储桶、Lambda 函数、Secrets Manager、SSM 参数、CloudTrail 跟踪、VPC 配置、凭证报告 | | `azure_collector.py` | Azure | 角色定义、角色分配、服务主体、托管身份 | | `gcp_collector.py` | GCP | 服务账户、服务账户密钥、IAM 策略绑定、模拟授权 | ### 核心分析引擎 | 模块 | 功能 | |--------|-------------| | **Shadow Admin Detector** | 识别通过 15+ 种提升路径获得间接管理员权限的身份,而不仅仅是直接的 `AdministratorAccess` 附加 | | **Privilege Escalation Mapper** | 为每个身份映射 21 种不同的权限提升路径:策略注入、PassRole 滥用、Lambda 后门、SetDefaultPolicyVersion 等 | | **Azure RBAC Analyzer** | 检测 Owner/Contributor/UAA 分配过多、托管身份权限提升、自定义通配角色滥用 | | **GCP Service Account Analyzer** | 检测服务账户密钥暴露、模拟链、权限过大的默认服务账户、工作负载身份联合配置错误 | | **Network Exposure Analyzer** | 枚举对危险端口(SSH、RDP、MySQL、PostgreSQL、Redis、MongoDB)无限制入站的安全组以及公开 S3 存储桶 | | **CloudTrail Evasion Analyzer** | 检测能够停止、删除或修改 CloudTrail 的身份——这是利用前的第一步 | | **Lambda Backdoor Detector** | 识别可部署或修改代码的 Lambda 函数及身份,并在提升的执行角色下运行 | | **Secrets Exfiltration Detector** | 映射每个可以读取 Secrets Manager 和 SSM Parameter Store 的身份 | | **Cross-Account Analyzer** | 审核角色信任关系,检测外部账户访问和混乱委派风险 | | **Credential Age Analyzer** | 报告过期访问密钥(90/180/365 天阈值)、缺少 MFA 及凭证健康状况 | | **Risk Engine** | 将所有发现汇总为符合 NIST CSF 2.0 的风险评分,涵盖 6 个功能(识别、保护、检测、响应、恢复、治理) | | **Remediation Engine** | 为每个发现生成优先级、耗时标签、可通过 CLI 执行的修复步骤 | ### 进攻操作 | 模块 | 功能 | |--------|-------------| | **Minimum Viable Compromise (MVC) Engine** | 原生基于 NetworkX (`nx.shortest_path`),在 `AttackGraph` 中探索从任何身份到完全管理员的最短路径。输出跳数、每跳的实际命令生成、MITRE 技术,并通过计算节点权重总和估算物理到达时间 | ### 独特模块 | 模块 | 创新点 | |--------|-----------| | **Compliance Gap Weaponizer** | 将每个发现同时映射到 6 个合规框架(CIS AWS、NIST 800-53、SOC 2、PCI DSS、HIPAA、ISO 27001),并按**武器化指数**对违规进行排序——哪些合规差距产生最可利用的攻击面 | | **Attack Path Reasoner** | 使用真实红队决策权重对每条攻击路径跳数评分:隐蔽性(35%)、速度(30%)、持久性(20%)、影响范围(15%)。解释攻击者为何选择每一步——这是云安全工具中的首个攻击者心理引擎 | | **Threat Simulation Sandbox** | 交互式“假设”引擎:模拟权限变更并观察风险评分、攻击路径和影响范围的变化——这是云安全工具中的首个修复预演引擎 | ### 评分与报告 - **CVSS v3.1** — 每个发现的基准分数,符合 FIRST 规范,包含所有发现类型的预计算向量 - **交互式攻击图** — 基于 NetworkX 的有向图,使用 vis.js 可视化,多云平台感知,节点按风险级别着色 - **一键式 PDF 报告** — 使用 ReportLab 生成的面向客户交付或组合提交的专业报告 - **实时 WebSocket 终端** — 通过 Flask-SocketIO 按阶段流式传输实时扫描进度 ## 仪表板分区 | 分区 | 描述 | |---------|-------------| | **Overview** | 风险评分、严重性分布、发现 KPI | | **Scan Terminal** | WebSocket 实时终端 — 凭证输入与实时扫描输出 | | **Attack Graph** | IAM 信任关系与攻击路径的交互式 vis.js 图 | | **Shadow Admins** | 具有间接管理员权限的身份及提升路径详情 | | **Privilege Escalation** | 每个身份的 21 种提升路径及攻击命令 | | **Attack Path Reasoning** | 每跳对手心理评分——隐蔽性、速度、持久性、影响范围 | | **Threat Sandbox** | 交互式修复预演 — 模拟权限变更前先观察影响 | | **Compliance Weaponizer** | 6 框架映射按武器化指数排序 | ## 安装 ``` git clone https://github.com/yourusername/PRISM.git cd PRISM python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows pip install -r requirements.txt python main.py ``` 仪表板将在 `http://127.0.0.1:5000` 自动打开。 ## 使用方法 **1. 启动** ``` python main.py ``` **2. 输入凭证** 点击 **Launch Assessment**。选择目标云平台并输入凭证。所有三个云平台均为可选,可扫描任意组合。 | 云平台 | 所需凭证 | |-------|---------------------| | AWS | 访问密钥 ID + 秘密访问密钥 + 区域 | | Azure | 租户 ID + 客户端 ID + 客户端密钥 + 订阅 ID | | GCP | 服务账户 JSON 密钥路径 + 项目 ID | **3. 扫描** 终端会跨所有扫描阶段流式输出实时日志。完整的 AWS 扫描通常需要 2–5 分钟。 **4. 导出** 点击 **Export PDF** 生成完整的格式化报告。 **演示模式** 没有凭证?点击 **Load Demo** 使用预加载的合成数据探索所有功能。 ## 所需权限 PRISM 是**只读**的。它永远不会创建、修改或删除任何资源。 **AWS** — `SecurityAudit` + `ReadOnlyAccess` 托管策略,或以下最小自定义策略: ``` { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:Get*", "iam:List*", "iam:SimulatePrincipalPolicy", "ec2:Describe*", "s3:GetBucket*", "s3:ListAllMyBuckets", "lambda:List*", "lambda:Get*", "secretsmanager:ListSecrets", "ssm:DescribeParameters", "cloudtrail:GetTrailStatus", "cloudtrail:DescribeTrails", "logs:DescribeLogGroups", "guardduty:ListDetectors", "sts:GetCallerIdentity" ], "Resource": "*" }] } ``` **Azure** — 订阅范围内的 `Security Reader` 内置角色。 **GCP** — 项目级别的 `Security Reviewer` IAM 角色。 ## 安全与凭证处理 - 凭证仅通过 `localhost` 传输——永不离开您的机器 - 仅在扫描期间驻留内存,随后通过 `gc.collect()` 显式清除 - 结果缓存强制执行 `_UNSAFE_KEYS` 黑名单——凭证绝不会写入磁盘 - 任何日志级别都不会记录凭证 ## MITRE ATT&CK 覆盖范围 | 技术 | 名称 | 战术 | |-----------|------|--------| | T1078.004 | 有效账户:云账户 | 初始访问 | | T1098 | 账户操纵 | 持久性 | | T1098.001 | 附加云凭证 | 持久性 | | T1136.003 | 创建云账户 | 持久性 | | T1562.008 | 禁用云日志 | 防御规避 | | T1562.001 | 禁用或修改工具 | 防御规避 | | T1552 | 未受保护的凭证 | 凭证访问 | | T1606.002 | 伪造 Web 凭证:SAML | 凭证访问 | | T1580 | 云基础设施发现 | 侦察 | | T1087.004 | 云账户发现 | 侦察 | | T1530 | 从云存储对象获取数据 | 收集 | | T1537 | 将数据传输到云账户 | 渗出 | | T1485 | 数据销毁 | 影响 | | T1486 | 数据加密以影响 | 影响 | | T1529 | 系统关机/重启 | 影响 | | T1195.002 | 供应链妥协软件 | 初始访问 | | T1648 | 服务器端执行 | 执行 | ## 与现有工具的对比 | 能力 | PRISM | ScoutSuite | Prowler | CloudMapper | Pacu | PMapper | |-----------|:-----:|:----------:|:-------:|:-----------:|:----:|:-------:| | 多云平台(AWS + Azure + GCP) | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | | 实时 Web 仪表板 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 最短攻击路径(NetworkX) | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | | 攻击者心理评分 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 合规武器化器 | ✅ | ❌ | 部分 | ❌ | ❌ | ❌ | | 修复预演沙箱 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 每个发现的 CVSS v3.1 | ✅ | ❌ | 部分 | ❌ | ❌ | ❌ | | 交互式攻击图 | ✅ | ❌ | ❌ | 部分 | ❌ | 部分 | | PDF 报告导出 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | | 演示模式(无需凭证) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 完整的单元测试 | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | | 100% 免费,无 SaaS | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ## 依赖项 全部免费且开源: | 包 | 用途 | |---------|---------| | `flask` + `flask-socketio` | Web 服务器与实时 WebSocket 流 | | `boto3` | AWS SDK | | `azure-identity` + `azure-mgmt-authorization` + `azure-mgmt-resource` + `azure-mgmt-msi` | Azure SDK | | `google-auth` + `google-api-python-client` + `google-cloud-iam` | GCP SDK | | `networkx` | 攻击图构建 | | `reportlab` + `Pillow` | PDF 报告生成 | | `loguru` | 结构化日志 | ## 截图 ## 免责声明 PRISM 仅供**授权的安全评估**使用。仅用于您拥有或已获得明确书面许可测试的云账户。未经授权访问计算机系统违反《计算机欺诈与滥用法案》(CFAA)、《英国计算机滥用法案》、印度《信息技术法》第 66 条以及大多数司法管辖区的类似法律。 PRISM 永远不会修改、创建或删除任何云资源。所有操作均为只读 API 调用。 ## 许可证 MIT 许可证 — 详见 [LICENSE](LICENSE)。
专为像攻击者一样思考的安全工程师而构建。 *每个云账户都有通往管理员的捷径。PRISM 先找到它。*
标签:AWS, Azure, Cloudflare, CVSS v3.1, DPI, Flask, GCP, IAM安全评估, MITRE ATT&CK, PDF报告, PRISM框架, Python, Web仪表盘, 云安全评估, 协议分析, 只读凭证, 威胁评估, 安全测评, 实时仪表盘, 开源框架, 持续集成, 攻击路径分析, 无后门, 权限提升, 特权检测, 进攻性安全评估, 逆向工具