AWS - EBS Snapshot Dump

Support HackTricks

Verificando um 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

Nota que dsnap não permitirá que você baixe snapshots públicos. Para contornar isso, você pode fazer uma cópia do snapshot na sua conta pessoal e baixá-la:

# 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

Para mais informações sobre essa técnica, confira a pesquisa original em https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/

Você pode fazer isso com Pacu usando o módulo ebs__download_snapshots

Verificando um snapshot na AWS

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

Monte-o em uma VM EC2 sob seu controle (deve estar na mesma região que a cópia do backup):

Passo 1: Um novo volume do tamanho e tipo de sua preferência deve ser criado indo para EC2 –> Volumes.

Para realizar esta ação, siga estes comandos:

  • Crie um volume EBS para anexar à instância EC2.

  • Certifique-se de que o volume EBS e a instância estejam na mesma zona.

Passo 2: A opção "attach volume" deve ser selecionada clicando com o botão direito no volume criado.

Passo 3: A instância da caixa de texto da instância deve ser selecionada.

Para realizar esta ação, use o seguinte comando:

  • Anexe o volume EBS.

Passo 4: Faça login na instância EC2 e liste os discos disponíveis usando o comando lsblk.

Passo 5: Verifique se o volume tem algum dado usando o comando sudo file -s /dev/xvdf.

Se a saída do comando acima mostrar "/dev/xvdf: data", significa que o volume está vazio.

Passo 6: Formate o volume para o sistema de arquivos ext4 usando o comando sudo mkfs -t ext4 /dev/xvdf. Alternativamente, você também pode usar o formato xfs usando o comando sudo mkfs -t xfs /dev/xvdf. Por favor, note que você deve usar ext4 ou xfs.

Passo 7: Crie um diretório de sua escolha para montar o novo volume ext4. Por exemplo, você pode usar o nome "newvolume".

Para realizar esta ação, use o comando sudo mkdir /newvolume.

Passo 8: Monte o volume no diretório "newvolume" usando o comando sudo mount /dev/xvdf /newvolume/.

Passo 9: Mude o diretório para o diretório "newvolume" e verifique o espaço em disco para validar a montagem do volume.

Para realizar esta ação, use os seguintes comandos:

  • Mude o diretório para /newvolume.

  • Verifique o espaço em disco usando o comando df -h .. A saída deste comando deve mostrar o espaço livre no diretório "newvolume".

Você pode fazer isso com Pacu usando o módulo ebs__explore_snapshots.

Verificando um snapshot na AWS (usando 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

Qualquer usuário AWS que possua a permissão EC2:CreateSnapshot pode roubar os hashes de todos os usuários do domínio criando um snapshot do Controlador de Domínio, montando-o em uma instância que eles controlam e exportando o NTDS.dit e o arquivo de hive do registro SYSTEM para uso com o projeto secretsdump do Impacket.

Você pode usar esta ferramenta para automatizar o ataque: https://github.com/Static-Flow/CloudCopy ou pode usar uma das técnicas anteriores após criar um snapshot.

Referências

Support HackTricks

Last updated