oladimejiaeboyecyber/aws-iam-risk-analyzer
GitHub: oladimejiaeboyecyber/aws-iam-risk-analyzer
一款 Python 编写的 AWS IAM 风险分析工具,通过自动化扫描角色权限与信任策略来发现提权路径和配置错误,并生成按严重程度排序的风险报告。
Stars: 0 | Forks: 0
# AWS IAM 提权与配置错误风险分析器
一款 Python 工具,用于扫描 AWS 账户中的 IAM 角色,排查提权路径和危险的配置错误,随后生成按严重程度排名的风险报告。
## 问题背景
在真实的 AWS 环境中,单个账户可能包含成百上千个 IAM 角色。看似无害的单个权限可能会组合成提权路径——使得低权限身份悄无声息地获得通往完全管理员权限的途径。在大规模环境下,几乎不可能通过人工发现这些路径,而且它们也是导致云安全漏洞的首要原因。
该工具自动化了这一分析过程:它枚举账户中的每个角色,根据已知的提权和配置错误模式对每个角色进行检查,评估风险得分,并生成一份优先级报告,指出应优先修复的问题。
## 工作原理
该工具作为一个三阶段 pipeline 运行:
1. **收集** (`analyzer/collector.py`) — 使用 AWS SDK (boto3) 枚举账户中的每个 IAM 角色,提取每个角色的信任策略、内联策略和附加的托管策略。
2. **检测与评分** (`analyzer/detector.py`) — 通过四条检测规则对每个角色进行排查。每项发现都会根据其影响和可利用性被分配一个严重程度(CRITICAL / HIGH / MEDIUM),并按最严重的优先原则进行排序。
3. **报告** (`analyzer/report.py`) — 输出机器可读的 JSON 报告和人类可读的 Markdown 报告,其中包含严重程度摘要、发现结果表格以及详细信息。
## 检测规则
| # | 规则 | 严重程度 | 捕获目标 |
|---|------|----------|-----------------|
| 1 | PassRole + Lambda | MEDIUM | 可以创建 Lambda *并且* 能向其传递角色的角色——允许其将特权角色附加到受攻击者控制的代码上。 |
| 2 | 自身权限修改 | HIGH | 可以编辑自身权限(例如 `iam:AttachRolePolicy`)的角色,允许其为自己授予管理员权限。 |
| 3 | 通配符管理员 | HIGH | 允许对所有资源 (`*`/`*`) 执行所有操作的内联策略——实际上等同于管理员。 |
| 4 | 过于宽松的信任策略 | CRITICAL | 允许 `Principal: "*"` 的信任策略——意味着*任何人*都可以担任该角色。 |
规则 1–3 检查角色**能做什么**(其权限)。规则 4 检查谁**可以担任**该角色(其信任策略)——这是一个截然不同且经常被忽视的攻击面。
## 运行工具
### 前置条件
- 已配置好凭证的 AWS 账户(`aws configure`)
- Python 3.12+
- Terraform(仅在部署测试实验环境时需要)
### 设置
```
git clone https://github.com/oladimejiaeboyecyber/aws-iam-risk-analyzer.git
cd aws-iam-risk-analyzer
python -m venv venv
.\venv\Scripts\Activate # Windows
# source venv/bin/activate # macOS/Linux
pip install -r requirements.txt
```
### (可选)部署漏洞测试实验环境
`infra/` 目录包含 Terraform 配置,用于配置专门设计的易受攻击的 IAM 角色——每条检测规则对应一个——以便你能看到分析器捕获真实的发现结果。
```
cd infra
terraform init
terraform apply # type 'yes' to confirm
cd ..
```
### 运行分析器
```
python analyzer/report.py
```
这将生成 `reports/risk-report.json` 和 `reports/risk-report.md`。
## 输出示例

## 我的收获
这个项目带我从 IAM 基础知识走向了一款实用的云安全工具:编写信任和权限策略、手动执行一次真实的提权(PassRole + Lambda)、使用 Terraform 定义基础设施即代码,并使用 Python (boto3) 构建了一个能够自动检测 IAM 风险并对其进行优先级排序的分析器。
标签:AWS, DPI, IAM, Python, 协议分析, 无后门, 权限提升, 逆向工具