GCP - Compute Post Exploitation
Compute
Pour plus d'informations sur Compute et VPC (Networking), consultez :
GCP - Compute EnumExporter et inspecter les images localement
Cela permettrait à un attaquant d'accéder aux données contenues dans des images déjà existantes ou de créer de nouvelles images de VM en cours d'exécution et d'accéder à leurs données sans avoir accès à la VM en cours d'exécution.
Il est possible d'exporter une image de VM vers un bucket, puis de la télécharger et de la monter localement avec la commande :
Avant d'effectuer cette action, l'attaquant pourrait avoir besoin de privilèges sur le bucket de stockage et certainement des privilèges sur cloudbuild car c'est le service qui sera sollicité pour effectuer l'exportation.
De plus, pour que cela fonctionne, le codebuild SA et le compute SA doivent avoir des permissions privilégiées.
Le cloudbuild SA <project-id>@cloudbuild.gserviceaccount.com
a besoin de :
roles/iam.serviceAccountTokenCreator
roles/compute.admin
roles/iam.serviceAccountUser
Et le SA <project-id>-compute@developer.gserviceaccount.com
a besoin de :
roles/compute.storageAdmin
roles/storage.objectAdmin
Exporter et inspecter les snapshots et disques localement
Il n'est pas possible d'exporter directement des snapshots et des disques, mais il est possible de transformer un snapshot en disque, un disque en image et, en suivant la section précédente, d'exporter cette image pour l'inspecter localement
Inspecter une Image en créant une VM
Dans le but d'accéder aux données stockées dans une image ou à l'intérieur d'une VM en cours d'exécution à partir de laquelle un attaquant a créé une image, il est possible d'accorder à un compte externe l'accès à l'image :
et ensuite créer une nouvelle VM à partir de celle-ci :
Si vous ne pouviez pas donner à votre compte externe l'accès à l'image, vous pourriez lancer une VM en utilisant cette image dans le projet de la victime et faire en sorte que les métadonnées exécutent un reverse shell pour accéder à l'image en ajoutant le paramètre :
Inspect a Snapshot/Disk attaching it to a VM
Dans le but d'accéder aux données stockées dans un disque ou un snapshot, vous pourriez transformer le snapshot en disque, un disque en image et suivre les étapes précédentes.
Ou vous pourriez accorder l'accès à un compte externe sur le disque (si le point de départ est un snapshot, donner l'accès sur le snapshot ou créer un disque à partir de celui-ci) :
Attacher le disque à une instance :
Monter le disque à l'intérieur de la VM :
SSH dans la VM :
Identifier le Disque : Une fois à l'intérieur de la VM, identifiez le nouveau disque en listant les périphériques de disque. Typiquement, vous pouvez le trouver comme
/dev/sdb
,/dev/sdc
, etc.Formater et Monter le Disque (si c'est un disque neuf ou brut) :
Créer un point de montage :
Monter le disque :
Si vous ne pouvez pas donner accès à un projet externe au snapshot ou au disque, vous devrez peut-être effectuer ces actions à l'intérieur d'une instance dans le même projet que le snapshot/disque.
Last updated