AWS - EBS Snapshot Dump

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Sprawdzanie migawki lokalnie

# 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

Uwaga. dsnap nie pozwoli ci pobrać publicznych migawek. Aby to obejść, możesz skopiować migawkę do swojego osobistego konta i pobrać ją:

# 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

Aby uzyskać więcej informacji na temat tej techniki, sprawdź oryginalne badania na stronie https://rhinosecuritylabs.com/aws/exploring-aws-ebs-snapshots/

Możesz to zrobić za pomocą Pacu, korzystając z modułu ebs__download_snapshots

Sprawdzanie migawki w AWS

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

Zamontuj go w instancji EC2 pod Twoją kontrolą (musi być w tym samym regionie co kopia zapasowa):

Krok 1: Przejdź do EC2 -> Woluminy i utwórz nowy wolumin o preferowanej wielkości i typie.

Aby wykonać tę czynność, postępuj zgodnie z poniższymi poleceniami:

  • Utwórz wolumin EBS dołączony do instancji EC2.

  • Upewnij się, że wolumin EBS i instancja znajdują się w tej samej strefie.

Krok 2: Kliknij prawym przyciskiem na utworzonym woluminie i wybierz opcję "dołącz wolumin".

Krok 3: Wybierz instancję z pola tekstowego instancji.

Aby wykonać tę czynność, użyj poniższego polecenia:

  • Dołącz wolumin EBS.

Krok 4: Zaloguj się do instancji EC2 i wyświetl dostępne dyski za pomocą polecenia lsblk.

Krok 5: Sprawdź, czy wolumin zawiera jakiekolwiek dane za pomocą polecenia sudo file -s /dev/xvdf.

Jeśli wynik powyższego polecenia pokazuje "/dev/xvdf: dane", oznacza to, że wolumin jest pusty.

Krok 6: Sformatuj wolumin do systemu plików ext4 za pomocą polecenia sudo mkfs -t ext4 /dev/xvdf. Alternatywnie, możesz również użyć formatu xfs za pomocą polecenia sudo mkfs -t xfs /dev/xvdf. Zauważ, że powinieneś użyć albo ext4, albo xfs.

Krok 7: Utwórz katalog o wybranej nazwie, aby zamontować nowy wolumin ext4. Na przykład, możesz użyć nazwy "newvolume".

Aby wykonać tę czynność, użyj polecenia sudo mkdir /newvolume.

Krok 8: Zamontuj wolumin do katalogu "newvolume" za pomocą polecenia sudo mount /dev/xvdf /newvolume/.

Krok 9: Zmień katalog na katalog "newvolume" i sprawdź miejsce na dysku, aby zweryfikować zamontowanie woluminu.

Aby wykonać tę czynność, użyj poniższych poleceń:

  • Zmień katalog na /newvolume.

  • Sprawdź miejsce na dysku za pomocą polecenia df -h .. Wynik tego polecenia powinien pokazać wolne miejsce w katalogu "newvolume".

Możesz to zrobić za pomocą Pacu, korzystając z modułu ebs__explore_snapshots.

Sprawdzanie migawki w AWS (za pomocą wiersza poleceń)

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

Kopia cienia

Każdy użytkownik AWS posiadający uprawnienie EC2:CreateSnapshot może ukraść hashe wszystkich użytkowników domenowych, tworząc zrzut Domain Controllera, montując go do kontrolowanej przez siebie instancji i eksportując plik rejestru NTDS.dit i SYSTEM do użycia z projektem secretsdump Impacket.

Możesz użyć tego narzędzia do zautomatyzowania ataku: https://github.com/Static-Flow/CloudCopy lub możesz skorzystać z jednej z poprzednich technik po utworzeniu zrzutu.

Referencje

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated