0xj4f/aws-enumerator

GitHub: 0xj4f/aws-enumerator

受 BloodHound 启发的 AWS 攻击图工具,通过枚举资源、分析 IAM 策略和映射信任关系,帮助安全人员发现并可视化云环境中的提权路径。

Stars: 0 | Forks: 0

# AWS 枚举器 一个受 [BloodHound](https://github.com/BloodHoundAD/BloodHound) 启发的 AWS 攻击图工具。枚举 AWS 资源,分析 IAM 策略以寻找提权路径,映射信任关系,并通过交互式图仪表盘可视化攻击面。 专为**进攻性安全**和**假设入侵场景**构建 — 你拥有某个 AWS 账户或一组 AWS 密钥的访问权限,并且你需要了解你能访问什么、能提权到什么,以及高价值目标在哪里。 ## 功能 ### 枚举 - **IAM** — 用户(访问密钥、MFA、控制台访问)、角色(信任策略)、组、托管策略(完整文档内容)、内联策略、权限边界、账户密码策略 - **S3** — 存储桶、策略、ACL、公共访问块、版本控制、加密、标签、日志、CORS、事件通知 - **EC2** — 实例及其元数据、实例配置文件、安全组、网络接口、IMDS 配置 - **VPC** — VPC、子网、路由表、互联网网关、NAT 网关、NACL、VPC 端点、对等连接 - **安全组** — 规则及关联的 ENI/实例资源 - **EKS / Kubernetes** — 集群、节点组、Fargate 配置文件、附加组件 + 每个集群的 K8s API 枚举(命名空间、pods、服务账户、RBAC 角色和绑定、密钥名称、服务、ingresses) - **CloudTrail, CloudFront, WAF, Flow Logs** ### 策略分析 - **20 条提权检测规则** — CreatePolicyVersion, PassRole+Lambda, PassRole+EC2, PassRole+CloudFormation, AttachUserPolicy, CreateAccessKey, UpdateAssumeRolePolicy 等 - **10 条危险权限规则** — 通配符管理员、iam:*、s3:*、不受限制的 PassRole、对 * 的 kms:Decrypt 等 - **信任策略分析** — 跨账户信任、通配符主体、服务信任 - **S3 资源关系** — IAM 到存储桶的访问(CAN_READ, CAN_WRITE, CAN_ADMIN, FULL_ACCESS)、存储桶策略授权、公共访问检测、KMS 加密链接、事件通知目标 - **EC2 计算关系** — 实例到角色的映射、谁可以管理/终止/连接到实例、安全组暴露、IMDS 漏洞检测、SG 到 SG 的引用 - **Kubernetes 关系** — **IRSA 桥接**(ServiceAccount → 通过 `eks.amazonaws.com/role-arn` 注解映射的 IAM 角色)、pod 到 SA 的映射、RBAC 绑定、挂载的密钥、service/ingress 暴露、特权容器发现、cluster-admin 检测 ### 仪表盘 - 由 Cytoscape.js 驱动的**交互式攻击图**,支持 Dijkstra 最短路径算法 - **节点类型** — 用户、角色、组、策略、EC2、S3、安全组、KMS 密钥、Lambda、SQS、SNS、EKS 集群、pods、服务账户、K8s 角色、K8s 密钥、services、ingresses - 用于攻击路径成本建模的**加权边**(直接访问 = 0, PassRole 链 = 2, SSRF = 3, 跨账户 = 4) - **焦点模式** — 点击一个节点以将其及其关系单独隔离出来 - **已控制/已攻陷标记** — 标记你控制的节点并查找从它们出发的路径 - **“发现所有路径”** — 自动查找从每个实体到每个高价值目标的所有最短路径 - **攻击路径回放** — 以可调节的速度自动播放发现的路径 - **可调整大小的面板**、搜索、布局切换、节点/边过滤器 - 通过 `.zip` 文件加载报告(拖放或文件选择器) ### 多区域 - `--all` 标志枚举所有已启用的区域(通过 `ec2:DescribeRegions` 自动发现) - 全局服务(IAM、S3、CloudFront)仅枚举一次;区域服务则按区域枚举 - `--zip` 标志将报告打包以便于传输 ## 快速开始 ### 通过 pipx 安装(推荐) ``` pipx install git+https://github.com/0xj4f/aws-enumerator.git ``` 或者本地安装以进行开发: ``` git clone https://github.com/0xj4f/aws-enumerator.git cd aws-enumerator pip install -e . ``` 然后运行: ``` aws-enumerator --region eu-west-2 aws-enumerator --all --zip ``` ### 使用 Docker 运行 ``` # 使用环境变量 docker run --rm \ -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \ -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \ -v $(pwd)/reports:/app/reports \ 0xj4f/aws-enumerator:latest --region eu-west-2 # 使用 AWS credentials 文件 docker run --rm \ -v ~/.aws:/root/.aws \ -v $(pwd)/reports:/app/reports \ 0xj4f/aws-enumerator:latest --region eu-west-2 --zip ``` ### 直接运行(不安装) ``` git clone https://github.com/0xj4f/aws-enumerator.git cd aws-enumerator pip install boto3 python app/main.py --region eu-west-2 ``` ## 用法 ``` aws-enumerator [--region REGION] [--all] [--zip] ``` | 标志 | 描述 | |------|-------------| | `--region` | 要枚举的 AWS 区域(默认:`eu-west-2`) | | `--all` | 枚举所有已启用的区域 | | `--zip` | 创建报告的 zip 归档文件 | ### 仪表盘 枚举完成后,打开仪表盘并加载你的报告: ``` open dashboard/index.html ``` 将 `.zip` 文件拖放到仪表盘上或点击“加载报告”。 **可视化层级结构** — 查看角色、策略、实例和存储桶如何在整个账户中连接。 ![攻击图层级视图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/fe50c3973b140153.png) **识别高连接性节点** — 找出具有最多关系和暴露面的角色与入口点。 ![节点连接和入口点](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/c46adad370140157.png) **发现攻击路径** — 从任何已攻陷节点到高价值目标的 Dijkstra 最短路径。 ![攻击路径发现](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/07764fd069140201.png) ## 报告结构 ### 单一区域 ``` reports/{date}/{account}/{region}/ iam/ # Users, roles, groups, policies, inline policies, policy documents s3/ # Buckets, policies, ACLs, encryption, notifications ec2/ # Instances vpc/ # VPCs, subnets, route tables, gateways sg/ # Security groups eks/ # Clusters, node groups, Fargate profiles, addons k8s/ # Per-cluster K8s API data (pods, SAs, RBAC, secrets, services, ingresses) cloudtrail/ # Trails cloudfront/ # Distributions waf/ # WebACLs, rule groups, IP sets flowlogs/ # VPC flow logs analysis/ # findings.json, permission_map.json, trust_relationships.json, # s3_relationships.json, ec2_relationships.json, # k8s_relationships.json, summary.json manifest.json ``` ### 所有区域(`--all`) ``` reports/{date}/{account}/ global/ # IAM, S3, CloudFront, analysis us-east-1/ # Regional services eu-west-2/ # Regional services ... manifest.json ``` ## AWS 凭证 此工具需要有效的 AWS 凭证。使用任何标准方法: ``` # Assume a role aws sts assume-role \ --role-arn arn:aws:iam::ACCOUNT:role/ROLE_NAME \ --role-session-name enum-session # 导出凭证 eval "$(aws configure export-credentials --format env)" # 或使用 SSO eval "$(aws-sso eval -S profile-name --profile profile-name)" ``` ## 项目结构 ``` aws-enumerator/ app/ main.py # CLI entry point components/ iam.py # IAM enumeration (enriched) s3.py # S3 enumeration ec2.py # EC2 enumeration vpc.py # VPC enumeration sg.py # Security groups eks.py # EKS clusters, node groups, Fargate, addons k8s.py # Per-cluster Kubernetes API enumeration cloudtrail.py # CloudTrail cloudfront.py # CloudFront waf.py # WAF flowlogs.py # Flow logs policy_parser.py # Policy analysis & relationship engine utils/ aws_utils.py # Boto3 session helpers eks_auth.py # STS-based K8s API token generator regions.json # AWS regions reference dashboard/ index.html # Attack graph dashboard (single file) docs/ attack_paths.md # Attack scenarios & path field guide Dockerfile pyproject.toml requirements.txt LICENSE ``` ## 文档 - **[docs/attack_paths.md](docs/attack_paths.md)** — 攻击场景实战指南。将起始位置(被攻陷的 EC2、pod、泄露的密钥等)映射到可能的提权路径,并提供边缘类型转换和仪表盘使用技巧。
标签:AWS, BloodHound, DPI, EC2, EKS, IaC, IAM分析, Modbus, S3, StruQ, VPC, 云渗透测试, 云环境攻防, 云资产管理, 仪表盘, 信任关系, 协议分析, 反取证, 威胁建模, 子域名变形, 安全评估, 攻击图, 攻击面可视化, 数据展示, 权限提升, 红队, 网络安全, 请求拦截, 进攻性安全, 逆向工具, 隐私保护