AWS - EBS Snapshot Dump

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o 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 em sua conta pessoal e baixá-lo:

# 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 o 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: Crie um novo volume do tamanho e tipo desejados acessando EC2 -> Volumes.

Para realizar essa 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: Selecione a opção "anexar volume" clicando com o botão direito no volume criado.

Passo 3: Selecione a instância na caixa de texto da instância.

Para realizar essa 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 possui 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 "novovolume".

Para realizar essa ação, use o comando sudo mkdir /novovolume.

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

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

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

  • Altere o diretório para /novovolume.

  • 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 "novovolume".

Você pode fazer isso com o 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

Cópia de Sombra

Qualquer usuário da 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 controlam e exportando o arquivo NTDS.dit e o 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 poderia usar uma das técnicas anteriores após criar um snapshot.

Referências

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización