| name | performing-aws-account-enumeration-with-scout-suite |
| description | 使用 ScoutSuite 对 AWS 账户进行全面的安全态势评估,枚举资源、识别配置错误并生成可操作的安全报告。 |
| domain | cybersecurity |
| subdomain | cloud-security |
| tags | ["aws","scoutsuite","cloud-security","enumeration","misconfiguration","security-audit","cspm","nccgroup"] |
| version | 1.0 |
| author | mahipal |
| license | Apache-2.0 |
使用 ScoutSuite 执行 AWS 账户枚举
概述
ScoutSuite 是由 NCC Group 开发的开源多云安全审计工具,能够对 AWS 环境进行全面的安全态势评估。它通过查询 AWS API 收集所有服务的配置数据,将结果存储在本地,并生成交互式 HTML 报告以突出显示高风险区域。ScoutSuite 是无代理的,通过分析云资源的配置方式、访问方式和监控方式来工作。
前置条件
- 已安装 Python 3.6+
- 配置了适当 IAM 凭据的 AWS CLI
- 目标 AWS 服务的只读 IAM 权限(推荐使用 SecurityAudit 托管策略)
- 用于安装 ScoutSuite 的 pip 包管理器
- 能够访问 AWS API 端点的网络连接
安装与设置
安装 ScoutSuite
pip install scoutsuite
验证安装
scout --version
配置 AWS 凭据
aws configure
export AWS_ACCESS_KEY_ID=<your-key>
export AWS_SECRET_ACCESS_KEY=<your-secret>
export AWS_DEFAULT_REGION=us-east-1
所需 IAM 策略
将 AWS 托管策略 SecurityAudit 和 ViewOnlyAccess 附加到运行 ScoutSuite 的 IAM 用户或角色。如需全面扫描,可能需要自定义策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"acm:Describe*",
"acm:List*",
"cloudformation:Describe*",
"cloudformation:Get*",
"cloudformation:List*",
"cloudtrail:Describe*",
"cloudtrail:Get*",
"cloudtrail:List*",
"cloudwatch:Describe*",
"cloudwatch:Get*",
"cloudwatch:List*",
"config:Describe*",
"config:Get*",
"config:List*",
"dynamodb:Describe*",
"dynamodb:List*",
"ec2:Describe*",
"ec2:Get*",
"elasticloadbalancing:Describe*"
运行 ScoutSuite
完整 AWS 扫描
scout aws
仅扫描特定服务
scout aws --services s3 iam ec2 rds
扫描特定区域
scout aws --regions us-east-1 us-west-2 eu-west-1
使用假定角色进行跨账户扫描
scout aws --profile target-account-profile
排除特定服务
scout aws --skip iam ec2
指定输出目录
scout aws --report-dir /tmp/scoutsuite-reports/
报告分析
ScoutSuite 生成本地存储的交互式 HTML 报告,包含以下内容:
- 仪表板:按严重程度(危险、警告、正常)汇总的发现概览
- 服务级别发现:按 AWS 服务分组(IAM、S3、EC2、RDS 等)
- 基于规则的检查:每个发现对应一个安全最佳实践规则
- 资源清单:已枚举资源的完整列表
报告中需要重点审查的关键领域
| 服务 | 关键检查项 |
|---|
| IAM | 根账户 MFA、密码策略、未使用的凭据、过度授权的策略 |
| S3 | 公开桶、未加密桶、禁用版本控制、禁用日志记录 |
| EC2 | 允许 0.0.0.0/0 的安全组、未加密 EBS 卷、公网 IP |
| RDS | 公开访问性、未加密数据库、备份保留 |
| CloudTrail | 日志记录禁用、日志文件验证、多区域禁用 |
| Lambda | 公开访问、环境变量中的密钥、VPC 配置 |
解读发现结果
严重程度级别
- 危险(红色):需要立即修复的严重安全问题(如 S3 存储桶允许公开写入访问)
- 警告(橙色):应该处理的中等风险发现(如未使用的 IAM 访问密钥)
- 正常(绿色):已正确配置的安全最佳实践
常见高风险发现
- IAM 根账户未启用 MFA:AWS 根账户未启用多因素认证
- S3 存储桶策略允许公开访问:Principal 设置为 "*" 的桶策略
- 安全组允许无限制 SSH 访问:端口 22 允许 0.0.0.0/0 的入站规则
- CloudTrail 未在所有区域启用:审计日志缺口导致 API 活动无法被监控
- RDS 实例可公开访问:数据库端点可从互联网访问
修复工作流
- 运行 ScoutSuite 扫描建立基线
- 导出发现结果并按严重程度排优先级
- 为危险和警告级别发现创建修复工单
- 实施修复(更新安全组、启用加密、限制访问)
- 重新运行 ScoutSuite 验证修复结果
- 安排定期扫描(每周或在基础设施变更后)
与 CI/CD 集成
scout aws --services s3 iam ec2 --no-browser --report-dir ./scout-report/
python -c "
import json
with open('./scout-report/scoutsuite-results/scoutsuite_results.json') as f:
results = json.load(f)
for service in results.get('services', {}):
findings = results['services'][service].get('findings', {})
for finding_id, finding in findings.items():
if finding.get('flagged_items', 0) > 0 and finding.get('level') == 'danger':
print(f'严重: {finding_id} - {finding.get(\"description\", \"\")}')
"
多云能力
ScoutSuite 使用相同框架支持多个云提供商:
scout azure --cli
scout gcp --user-account
scout aws --profile production
参考资料