# AWS - EBS Snapshot Dump

{{#include ../../../../banners/hacktricks-training.md}}

## Kontroleer 'n snapshot plaaslik
```bash
# 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]
> **Let wel** dat `dsnap` jou nie sal toelaat om openbare snappings af te laai nie. Om dit te omseil, kan jy 'n kopie van die snapshot in jou persoonlike rekening maak, en dit aflaai:
```bash
# 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
```
Vir meer inligting oor hierdie tegniek, kyk na die oorspronklike navorsing in [https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/](https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/)

Jy kan dit met Pacu doen deur die module [ebs\_\_download_snapshots](https://github.com/RhinoSecurityLabs/pacu/wiki/Module-Details#ebs__download_snapshots) te gebruik.

## Kontroleer 'n snapshot in AWS
```bash
aws ec2 create-volume --availability-zone us-west-2a --region us-west-2  --snapshot-id snap-0b49342abd1bdcb89
```
**Monteer dit in 'n EC2 VM onder jou beheer** (dit moet in dieselfde streek wees as die kopie van die rugsteun):

Stap 1: 'n Nuwe volume van jou verkiesde grootte en tipe moet geskep word deur na EC2 –> Volumes te gaan.

Om hierdie aksie uit te voer, volg hierdie opdragte:

- Skep 'n EBS-volume om aan die EC2-instantie te koppel.
- Verseker dat die EBS-volume en die instantie in dieselfde sone is.

Stap 2: Die "koppel volume" opsie moet gekies word deur regs te klik op die geskepte volume.

Stap 3: Die instantie uit die instantie teksvak moet gekies word.

Om hierdie aksie uit te voer, gebruik die volgende opdrag:

- Koppel die EBS-volume.

Stap 4: Teken in op die EC2-instantie en lys die beskikbare skywe met die opdrag `lsblk`.

Stap 5: Kontroleer of die volume enige data het met die opdrag `sudo file -s /dev/xvdf`.

As die uitvoer van die bogenoemde opdrag "/dev/xvdf: data" toon, beteken dit dat die volume leeg is.

Stap 6: Formateer die volume na die ext4 lêerstelsel met die opdrag `sudo mkfs -t ext4 /dev/xvdf`. Alternatiewelik kan jy ook die xfs-formaat gebruik deur die opdrag `sudo mkfs -t xfs /dev/xvdf` te gebruik. Neem asseblief kennis dat jy óf ext4 óf xfs moet gebruik.

Stap 7: Skep 'n gids van jou keuse om die nuwe ext4-volume te monteer. Byvoorbeeld, jy kan die naam "newvolume" gebruik.

Om hierdie aksie uit te voer, gebruik die opdrag `sudo mkdir /newvolume`.

Stap 8: Monteer die volume na die "newvolume" gids met die opdrag `sudo mount /dev/xvdf /newvolume/`.

Stap 9: Verander gids na die "newvolume" gids en kontroleer die skyfspasie om die volume-montage te valideer.

Om hierdie aksie uit te voer, gebruik die volgende opdragte:

- Verander gids na `/newvolume`.
- Kontroleer die skyfspasie met die opdrag `df -h .`. Die uitvoer van hierdie opdrag moet die vrye spasie in die "newvolume" gids toon.

Jy kan dit met Pacu doen deur die module `ebs__explore_snapshots` te gebruik.

## Kontroleer 'n snapshot in AWS (met cli)
```bash
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

Enige AWS-gebruiker wat die **`EC2:CreateSnapshot`** toestemming het, kan die hashes van alle domein gebruikers steel deur 'n **snapshot van die Domeinbeheerder** te skep, dit aan 'n instansie wat hulle beheer te koppel en die **NTDS.dit en SYSTEM** registrasie hives lêer te eksporteer vir gebruik met Impacket se secretsdump projek.

Jy kan hierdie hulpmiddel gebruik om die aanval te outomatiseer: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) of jy kan een van die vorige tegnieke gebruik nadat jy 'n snapshot geskep het.

## References

- [https://devopscube.com/mount-ebs-volume-ec2-instance/](https://devopscube.com/mount-ebs-volume-ec2-instance/)

{{#include ../../../../banners/hacktricks-training.md}}
