AWS - EC2, EBS, ELB, SSM, VPC & VPN Enum
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
VPC & Networking
了解什么是 VPC 及其组件:
AWS - VPC & Networking Basic Information
EC2
Amazon EC2 用于启动 虚拟服务器。它允许配置 安全性 和 网络 以及管理 存储。Amazon EC2 的灵活性体现在其能够向上和向下扩展资源,有效适应变化的需求或流行度的激增。此功能减少了对精确流量预测的必要性。
在 EC2 中有趣的枚举内容:
- 虚拟机
- SSH 密钥
- 用户数据
- 现有的 EC2/AMI/快照
- 网络
- 网络
- 子网络
- 公共 IP
- 开放端口
- 与 AWS 之外的其他网络的集成连接
实例配置文件
使用 角色 授予在 EC2 实例 上运行的应用程序权限需要额外的配置。运行在 EC2 实例上的应用程序通过虚拟化操作系统与 AWS 隔离。由于这种额外的分离,您需要额外的步骤将 AWS 角色及其相关权限分配给 EC2 实例,并使其对应用程序可用。
这个额外的步骤是 创建一个 实例配置文件 附加到实例。实例配置文件包含角色,并且可以向在实例上运行的应用程序提供角色的临时凭证。这些临时凭证可以在应用程序的 API 调用中使用,以访问资源并限制访问仅限于角色指定的那些资源。请注意,一次只能将一个角色分配给 EC2 实例,并且实例上的所有应用程序共享相同的角色和权限。
元数据端点
AWS EC2 元数据是关于 Amazon Elastic Compute Cloud (EC2) 实例的信息,在运行时可供实例使用。这些元数据用于提供有关实例的信息,例如其实例 ID、它运行的可用区、与实例关联的 IAM 角色以及实例的主机名。
枚举
# Get EC2 instances
aws ec2 describe-instances
aws ec2 describe-instance-status #Get status from running instances
# Get user data from each ec2 instance
for instanceid in $(aws ec2 describe-instances --profile <profile> --region us-west-2 | grep -Eo '"i-[a-zA-Z0-9]+' | tr -d '"'); do
echo "Instance ID: $instanceid"
aws ec2 describe-instance-attribute --profile <profile> --region us-west-2 --instance-id "$instanceid" --attribute userData | jq ".UserData.Value" | tr -d '"' | base64 -d
echo ""
echo "-------------------"
done
# Instance profiles
aws iam list-instance-profiles
aws iam list-instance-profiles-for-role --role-name <name>
# Get tags
aws ec2 describe-tags
# Get volumes
aws ec2 describe-volume-status
aws ec2 describe-volumes
# Get snapshots
aws ec2 describe-snapshots --owner-ids self
# Scheduled instances
aws ec2 describe-scheduled-instances
# Get custom images
aws ec2 describe-images --owners self
# Get Elastic IPs
aws ec2 describe-addresses
# Get current output
aws ec2 get-console-output --instance-id [id]
# Get VPN customer gateways
aws ec2 describe-customer-gateways
aws ec2 describe-vpn-gateways
aws ec2 describe-vpn-connections
# List conversion tasks to upload/download VMs
aws ec2 describe-conversion-tasks
aws ec2 describe-import-image-tasks
# Get Bundle Tasks
aws ec2 describe-bundle-tasks
# Get Classic Instances
aws ec2 describe-classic-link-instances
# Get Dedicated Hosts
aws ec2 describe-hosts
# Get SSH Key Pairs
aws ec2 describe-key-pairs
# Get Internet Gateways
aws ec2 describe-internet-gateways
# Get NAT Gateways
aws ec2 describe-nat-gateways
# Get subnetworks
aws ec2 describe-subnets
# Get FW rules
aws ec2 describe-network-acls
# Get security groups
aws ec2 describe-security-groups
# Get interfaces
aws ec2 describe-network-interfaces
# Get routes table
aws ec2 describe-route-tables
# Get VPCs
aws ec2 describe-vpcs
aws ec2 describe-vpc-peering-connections
未经身份验证的访问
AWS - EC2 Unauthenticated Enum
权限提升
在以下页面中,您可以查看如何滥用EC2权限以提升权限:
后期利用
AWS - EC2, EBS, SSM & VPC Post Exploitation
EBS
亚马逊EBS(弹性块存储)快照基本上是AWS EBS卷的静态备份。换句话说,它们是特定时间点上附加到EC2实例的磁盘的副本。EBS快照可以跨区域和账户复制,甚至可以下载并在本地运行。
快照可能包含敏感信息,例如源代码或API密钥,因此,如果有机会,建议检查它。
AMI与EBS的区别
AMI用于启动EC2实例,而EC2快照用于备份和恢复存储在EBS卷上的数据。虽然EC2快照可以用于创建新的AMI,但它与AMI并不相同,并且不包含运行应用程序所需的操作系统、应用服务器或其他软件的信息。
权限提升
在以下页面中,您可以查看如何滥用EBS权限以提升权限:
SSM
亚马逊简单系统管理器(SSM)允许远程管理EC2实例的浮动,使其管理变得更加简单。这些实例中的每一个都需要运行SSM代理服务,因为该服务将负责从AWS API获取并执行操作。
SSM代理使系统管理器能够更新、管理和配置这些资源。代理处理来自AWS云中系统管理器服务的请求,然后按请求中指定的方式运行它们。
SSM代理在某些AMI中预安装,或者您需要在实例上手动安装它们。此外,实例内部使用的IAM角色需要附加AmazonEC2RoleforSSM策略才能进行通信。
枚举
aws ssm describe-instance-information
aws ssm describe-parameters
aws ssm describe-sessions --state [Active|History]
aws ssm describe-instance-patches --instance-id <id>
aws ssm describe-instance-patch-states --instance-ids <id>
aws ssm describe-instance-associations-status --instance-id <id>
您可以通过执行以下命令检查 EC2 实例中是否正在运行 Systems Manager:
ps aux | grep amazon-ssm
Privesc
在以下页面中,您可以查看如何滥用SSM权限以提升特权:
Perssistence
在以下页面中,您可以查看如何滥用SSM权限以实现持久性:
ELB
弹性负载均衡(ELB)是亚马逊网络服务(AWS)部署的负载均衡服务。ELB自动分配传入的应用程序流量并根据流量需求扩展资源。
Enumeration
# List internet-facing ELBs
aws elb describe-load-balancers
aws elb describe-load-balancers | jq '.LoadBalancerDescriptions[]| select( .Scheme | contains("internet-facing"))|.DNSName'
# DONT FORGET TO CHECK VERSION 2
aws elbv2 describe-load-balancers
aws elbv2 describe-load-balancers | jq '.LoadBalancers[].DNSName'
aws elbv2 describe-listeners --load-balancer-arn <load_balancer_arn>
启动模板与自动扩展组
枚举
# Launch templates
aws ec2 describe-launch-templates
aws ec2 describe-launch-templates --launch-template-id <launch_template_id>
## Get details, like user data
aws ec2 describe-launch-template-versions --launch-template-id <launch_template_id>
# Autoscaling
aws autoscaling describe-auto-scaling-groups
aws autoscaling describe-auto-scaling-instances
aws autoscaling describe-launch-configurations
aws autoscaling describe-load-balancer-target-groups
aws autoscaling describe-load-balancers
Nitro
AWS Nitro 是一套 创新技术,构成了 AWS EC2 实例的基础平台。由亚马逊推出以 增强安全性、性能和可靠性,Nitro 利用定制的 硬件组件和轻量级虚拟机监控器。它将传统虚拟化功能抽象到专用硬件和软件上,最小化攻击面并提高资源效率。通过卸载虚拟化功能,Nitro 使 EC2 实例能够提供 接近裸金属的性能,这对资源密集型应用特别有利。此外,Nitro 安全芯片专门确保 硬件和固件的安全性,进一步巩固其强大的架构。
获取更多信息以及如何枚举它:
VPN
VPN 允许将您的 本地网络(站点到站点 VPN) 或 工作人员的笔记本电脑(客户端 VPN) 连接到 AWS VPC,以便可以在不需要将其暴露于互联网的情况下访问服务。
基本 AWS VPN 组件
- 客户网关:
- 客户网关是您在 AWS 中创建的资源,用于表示您一侧的 VPN 连接。
- 它本质上是您一侧站点到站点 VPN 连接上的物理设备或软件应用程序。
- 您向 AWS 提供路由信息和网络设备的公共 IP 地址(例如路由器或防火墙),以创建客户网关。
- 它作为设置 VPN 连接的参考点,不会产生额外费用。
- 虚拟私有网关:
- 虚拟私有网关(VPG)是站点到站点 VPN 连接中 Amazon 侧的 VPN 集中器。
- 它附加到您的 VPC,并作为您的 VPN 连接的目标。
- VPG 是 VPN 连接的 AWS 侧端点。
- 它处理您的 VPC 和本地网络之间的安全通信。
- 站点到站点 VPN 连接:
- 站点到站点 VPN 连接通过安全的 IPsec VPN 隧道将您的本地网络连接到 VPC。
- 这种类型的连接需要客户网关和虚拟私有网关。
- 它用于您的数据中心或网络与 AWS 环境之间的安全、稳定和一致的通信。
- 通常用于常规的长期连接,并根据通过连接传输的数据量计费。
- 客户端 VPN 端点:
- 客户端 VPN 端点是您在 AWS 中创建的资源,用于启用和管理客户端 VPN 会话。
- 它用于允许单个设备(如笔记本电脑、智能手机等)安全地连接到 AWS 资源或您的本地网络。
- 它与站点到站点 VPN 的不同之处在于,它是为单个客户端设计的,而不是连接整个网络。
- 使用客户端 VPN,每个客户端设备使用 VPN 客户端软件建立安全连接。
您可以 在这里找到有关 AWS VPN 的好处和组件的更多信息。
Enumeration
# VPN endpoints
## Check used subnetwork, authentication, SGs, connected...
aws ec2 describe-client-vpn-endpoints
## Get AWS network info related to the vpn endpoint
aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id <id>
## Get AWS subnet & ip range the VPN iconnected to
aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id <id>
## Check authorization rules
aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id <id>
## Get current connections to the VPN endpoint
aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id <id>
# Get VPN gateways and check with which VPC each is connected
aws ec2 describe-vpn-gateways
# Get VPN site-to-site connections
aws ec2 describe-vpn-connections
本地枚举
本地临时凭证
当使用 AWS VPN 客户端连接到 VPN 时,用户通常会 登录到 AWS 以获取对 VPN 的访问权限。然后,一些 AWS 凭证被创建并存储 在本地以建立 VPN 连接。这些凭证 存储在 $HOME/.config/AWSVPNClient/TemporaryCredentials/<region>/temporary-credentials.txt 中,包含 AccessKey、SecretKey 和 Token。
这些凭证属于用户 arn:aws:sts::<acc-id>:assumed-role/aws-vpn-client-metrics-analytics-access-role/CognitoIdentityCredentials (TODO: 进一步研究这些凭证的权限)。
opvn 配置文件
如果 VPN 连接已建立,您应该在系统中搜索 .opvn 配置文件。此外,您可以在 $HOME/.config/AWSVPNClient/OpenVpnConfigs 中找到 配置。
后期利用
参考
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
HackTricks Cloud

