AWS - EBS Snapshot Dump
Reading time: 6 minutes
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.
Controllare uno snapshot localmente
# Install dependencies
pip install 'dsnap[cli]'
brew install vagrant
brew install virtualbox
# Get snapshot from image
mkdir snap_wordir; cd snap_workdir
dsnap init
## Download a snapshot of the volume of that instance
## If no snapshot existed it will try to create one
dsnap get <instance-id>
dsnap --profile default --region eu-west-1 get i-0d706e33814c1ef9a
## Other way to get a snapshot
dsnap list #List snapshots
dsnap get snap-0dbb0347f47e38b96 #Download snapshot directly
# Run with vagrant
IMAGE="<download_file>.img" vagrant up #Run image with vagrant+virtuabox
IMAGE="<download_file>.img" vagrant ssh #Access the VM
vagrant destroy #To destoy
# Run with docker
git clone https://github.com/RhinoSecurityLabs/dsnap.git
cd dsnap
make docker/build
IMAGE="<download_file>.img" make docker/run #With the snapshot downloaded
caution
Nota che dsnap
non ti permetterà di scaricare snapshot pubblici. Per aggirare questo, puoi fare una copia dello snapshot nel tuo account personale e scaricare quello:
# Copy the snapshot
aws ec2 copy-snapshot --source-region us-east-2 --source-snapshot-id snap-09cf5d9801f231c57 --destination-region us-east-2 --description "copy of snap-09cf5d9801f231c57"
# View the snapshot info
aws ec2 describe-snapshots --owner-ids self --region us-east-2
# Download the snapshot. The ID is the copy from your account
dsnap --region us-east-2 get snap-027da41be451109da
# Delete the snapshot after downloading
aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2
Per ulteriori informazioni su questa tecnica, controlla la ricerca originale in https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/
Puoi farlo con Pacu utilizzando il modulo ebs__download_snapshots
Controllare uno snapshot in AWS
aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snapshot-id snap-0b49342abd1bdcb89
Montalo in una VM EC2 sotto il tuo controllo (deve essere nella stessa regione della copia del backup):
Passo 1: Deve essere creato un nuovo volume della dimensione e tipo preferiti andando su EC2 –> Volumi.
Per poter eseguire questa azione, segui questi comandi:
- Crea un volume EBS da allegare all'istanza EC2.
- Assicurati che il volume EBS e l'istanza siano nella stessa zona.
Passo 2: L'opzione "allega volume" deve essere selezionata facendo clic con il tasto destro sul volume creato.
Passo 3: L'istanza dalla casella di testo dell'istanza deve essere selezionata.
Per poter eseguire questa azione, usa il seguente comando:
- Allegare il volume EBS.
Passo 4: Accedi all'istanza EC2 e elenca i dischi disponibili usando il comando lsblk
.
Passo 5: Controlla se il volume ha dati utilizzando il comando sudo file -s /dev/xvdf
.
Se l'output del comando sopra mostra "/dev/xvdf: data", significa che il volume è vuoto.
Passo 6: Format il volume nel filesystem ext4 usando il comando sudo mkfs -t ext4 /dev/xvdf
. In alternativa, puoi anche usare il formato xfs utilizzando il comando sudo mkfs -t xfs /dev/xvdf
. Si prega di notare che dovresti usare o ext4 o xfs.
Passo 7: Crea una directory a tua scelta per montare il nuovo volume ext4. Ad esempio, puoi usare il nome "newvolume".
Per poter eseguire questa azione, usa il comando sudo mkdir /newvolume
.
Passo 8: Monta il volume nella directory "newvolume" usando il comando sudo mount /dev/xvdf /newvolume/
.
Passo 9: Cambia directory nella directory "newvolume" e controlla lo spazio su disco per convalidare il montaggio del volume.
Per poter eseguire questa azione, usa i seguenti comandi:
- Cambia directory in
/newvolume
. - Controlla lo spazio su disco usando il comando
df -h .
. L'output di questo comando dovrebbe mostrare lo spazio libero nella directory "newvolume".
Puoi farlo con Pacu utilizzando il modulo ebs__explore_snapshots
.
Controllare uno snapshot in AWS (utilizzando cli)
aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snapshot-id <snap-0b49342abd1bdcb89>
# Attach new volume to instance
aws ec2 attach-volume --device /dev/sdh --instance-id <INSTANCE-ID> --volume-id <VOLUME-ID>
# mount the snapshot from within the VM
sudo file -s /dev/sdh
/dev/sdh: symbolic link to `xvdh'
sudo file -s /dev/xvdh
/dev/xvdh: x86 boot sector; partition 1: ID=0xee, starthead 0, startsector 1, 16777215 sectors, extended partition table (last)\011, code offset 0x63
lsblk /dev/xvdh
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvdh 202:112 0 8G 0 disk
├─xvdh1 202:113 0 7.9G 0 part
├─xvdh14 202:126 0 4M 0 part
└─xvdh15 202:127 0 106M 0 part
sudo mount /dev/xvdh1 /mnt
ls /mnt
Shadow Copy
Qualsiasi utente AWS in possesso del permesso EC2:CreateSnapshot
può rubare gli hash di tutti gli utenti del dominio creando un snapshot del Domain Controller, montandolo su un'istanza che controllano e esportando il file NTDS.dit e il registro SYSTEM per l'uso con il progetto secretsdump di Impacket.
Puoi utilizzare questo strumento per automatizzare l'attacco: https://github.com/Static-Flow/CloudCopy oppure potresti utilizzare una delle tecniche precedenti dopo aver creato uno snapshot.
References
tip
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Impara e pratica il hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos su github.