hellstation/aws-security-scanner
GitHub: hellstation/aws-security-scanner
awscan 是一个轻量级 AWS 安全扫描器,用于检测云资源错误配置并发现潜在攻击链路径。
Stars: 0 | Forks: 0

`awscan` 是一个轻量级的 AWS 安全扫描器。
它执行基于规则的检查,涵盖:
- S3
- IAM
- Security Groups
- VPC / Subnets / Routes / IGW
结果会显示在控制台中,并可以保存为 JSON 文件 (`report.json`)。
## 目前包含的功能
- 基础的云错误配置检查(S3、IAM、SG、VPC、Subnets、Routes、IGW)
- 使用显式启发式算法进行链式利用路径检测:
- 公有 subnet
- 开放的 security group
- EC2 instance profile
- 具有管理员权限的 IAM role
- 高级检查:
- 是否存在 CloudTrail
- Root 账号的 MFA
- 是否存在 IAM Access Analyzer
- EBS 静态加密
- EC2 上的 IMDSv2 强制执行情况
- 风险评分和优先级排序的发现
- 发现质量元数据:
- 置信度分数
- 显式证据
- 误报验证说明
- 映射到安全框架:
- CIS AWS Foundations
- NIST SP 800-53
- MITRE ATT&CK(与云相关的技术)
- 每个发现的修复指导和影响上下文
## 当前设置
- 主要执行方式:**GitHub Actions** (CI/CD)。
- 本地执行:如果存在 `.env` 文件,则通过其加载环境变量。
## 本地运行(用于测试)
1. 设置 `awscan` 所需的 AWS 变量:
- `AWS_ACCESS_KEY_ID`
- `AWS_SECRET_ACCESS_KEY`
- `AWS_DEFAULT_REGION`
2. 运行:
```
./bin/awscan --json-out report.json
```
示例:
```
# 如果存在 HIGH/CRITICAL 发现则以代码 1 退出
./bin/awscan --json-out report.json --fail-on HIGH
# 运行测试
python -m unittest discover -s tests -p "test_*.py"
```
重要提示:`.env` 仅用于本地运行。
在 CI 中,值将从 GitHub `Secrets/Variables` 加载。
## GitHub Actions(主要流程)
工作流:[`.github/workflows/main.yml`](./.github/workflows/main.yml)
触发条件:
- `push` 到 `main` 分支
- 通过 `workflow_dispatch` 手动运行
作业步骤:
1. 安装依赖项
2. 运行单元测试
3. 运行 `awscan`,参数为 `--json-out report.json --fail-on HIGH`
4. 在 GitHub Actions 中发布摘要
5. 将 `report.json` 作为 artifact 上传
6. 如果配置了 bot token/chat ID,则发送状态和报告到 Telegram
## GitHub 配置
### Secrets
- `AWS_ACCESS_KEY_ID`
- `AWS_SECRET_ACCESS_KEY`
- `AWS_DEFAULT_REGION`
- `TELEGRAM_BOT_TOKEN`
- `TELEGRAM_CHAT_ID`
### 变量
- `AWSCAN_AWS_MAX_ATTEMPTS`
- `AWSCAN_AWS_RETRY_MODE`
- `AWSCAN_AWS_CONNECT_TIMEOUT`
- `AWSCAN_AWS_READ_TIMEOUT`
## 在哪里查看结果
工作流运行结束后:
- **Actions** 标签页 → 具体运行记录:日志和摘要
- **Artifacts** 部分:`awscan-report` (`report.json`)
- Telegram:状态消息 + 报告文件
标签:AWS, DevSecOps, DPI, GraphQL安全矩阵, Python, 上游代理, 安全扫描器, 无后门, 漏洞利用检测, 足迹分析, 逆向工具