GCP - Permissions for a Pentest

Εάν θέλετε να κάνετε ένα pentest σε ένα περιβάλλον GCP, πρέπει να ζητήσετε αρκετά δικαιώματα για να ελέγξετε όλες ή τις περισσότερες υπηρεσίες που χρησιμοποιούνται στο GCP. Ιδανικά, θα πρέπει να ζητήσετε από τον πελάτη να δημιουργήσει:

  • Δημιουργία ενός νέου project

  • Δημιουργία ενός Λογαριασμού Υπηρεσίας μέσα σε αυτό το project (πάρτε τα json διαπιστευτήρια) ή δημιουργήστε έναν νέο χρήστη.

  • Δώστε στον Λογαριασμό Υπηρεσίας ή στον χρήστη τους ρόλους που αναφέρονται παρακάτω στον ΟΡΓΑΝΙΣΜΟ

  • Ενεργοποιήστε τις APIs που αναφέρονται παρακάτω σε αυτό το project που δημιουργήθηκε

Σύνολο δικαιωμάτων για να χρησιμοποιήσετε τα εργαλεία που προτείνονται αργότερα:

roles/viewer
roles/resourcemanager.folderViewer
roles/resourcemanager.organizationViewer

APIs προς ενεργοποίηση (από το starbase):

gcloud services enable \
serviceusage.googleapis.com \
cloudfunctions.googleapis.com \
storage.googleapis.com \
iam.googleapis.com \
cloudresourcemanager.googleapis.com \
compute.googleapis.com \
cloudkms.googleapis.com \
sqladmin.googleapis.com \
bigquery.googleapis.com \
container.googleapis.com \
dns.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com \
binaryauthorization.googleapis.com \
pubsub.googleapis.com \
appengine.googleapis.com \
run.googleapis.com \
redis.googleapis.com \
memcache.googleapis.com \
apigateway.googleapis.com \
spanner.googleapis.com \
privateca.googleapis.com \
cloudasset.googleapis.com \
accesscontextmanager.googleapis.com

Ατομικές άδειες εργαλείων

From https://github.com/carlospolop/PurplePanda/tree/master/intel/google#permissions-configuration

roles/bigquery.metadataViewer
roles/composer.user
roles/compute.viewer
roles/container.clusterViewer
roles/iam.securityReviewer
roles/resourcemanager.folderViewer
roles/resourcemanager.organizationViewer
roles/secretmanager.viewer

Το ScoutSuite είναι ένα εργαλείο ανοικτού κώδικα που χρησιμοποιείται για την αξιολόγηση της ασφάλειας των περιβαλλόντων Google Cloud Platform (GCP). Το εργαλείο αυτό ελέγχει τις άδειες που έχουν ανατεθεί στους χρήστες και τους ρόλους στο GCP και παρέχει αναφορές για τυχόν ευπάθειες ασφάλειας που μπορεί να υπάρχουν. Μπορεί να χρησιμοποιηθεί κατά τη διάρκεια μιας δοκιμαστικής επίθεσης για να εντοπιστούν ενδεχόμενες ευπάθειες στις άδειες του GCP.

From https://github.com/nccgroup/ScoutSuite/wiki/Google-Cloud-Platform#permissions

roles/Viewer
roles/iam.securityReviewer
roles/stackdriver.accounts.viewer

CloudSploit is an open-source security scanner designed specifically for cloud environments. It helps identify security risks and misconfigurations in your cloud infrastructure. CloudSploit supports various cloud providers, including Google Cloud Platform (GCP).

To use CloudSploit with GCP, you need to configure the cloud provider settings. Here's how you can do it:

  1. Install CloudSploit by following the instructions provided in the official documentation.

  2. Set up the necessary permissions for CloudSploit to access your GCP resources. This includes granting the required IAM roles to the service account used by CloudSploit. Refer to the IAM permissions section in the CloudSploit documentation for the specific roles needed.

  3. Configure the GCP provider in CloudSploit by providing the required credentials. This typically involves creating a service account key file and specifying its path in the CloudSploit configuration. Detailed instructions can be found in the GCP provider configuration section of the CloudSploit documentation.

Once you have completed these steps, you can run CloudSploit scans against your GCP environment to identify any security vulnerabilities or misconfigurations.

From https://github.com/aquasecurity/cloudsploit/blob/master/docs/gcp.md#cloud-provider-configuration

includedPermissions:
- cloudasset.assets.listResource
- cloudkms.cryptoKeys.list
- cloudkms.keyRings.list
- cloudsql.instances.list
- cloudsql.users.list
- compute.autoscalers.list
- compute.backendServices.list
- compute.disks.list
- compute.firewalls.list
- compute.healthChecks.list
- compute.instanceGroups.list
- compute.instances.getIamPolicy
- compute.instances.list
- compute.networks.list
- compute.projects.get
- compute.securityPolicies.list
- compute.subnetworks.list
- compute.targetHttpProxies.list
- container.clusters.list
- dns.managedZones.list
- iam.serviceAccountKeys.list
- iam.serviceAccounts.list
- logging.logMetrics.list
- logging.sinks.list
- monitoring.alertPolicies.list
- resourcemanager.folders.get
- resourcemanager.folders.getIamPolicy
- resourcemanager.folders.list
- resourcemanager.hierarchyNodes.listTagBindings
- resourcemanager.organizations.get
- resourcemanager.organizations.getIamPolicy
- resourcemanager.projects.get
- resourcemanager.projects.getIamPolicy
- resourcemanager.projects.list
- resourcemanager.resourceTagBindings.list
- resourcemanager.tagKeys.get
- resourcemanager.tagKeys.getIamPolicy
- resourcemanager.tagKeys.list
- resourcemanager.tagValues.get
- resourcemanager.tagValues.getIamPolicy
- resourcemanager.tagValues.list
- storage.buckets.getIamPolicy
- storage.buckets.list

From https://lyft.github.io/cartography/modules/gcp/config.html

roles/iam.securityReviewer
roles/resourcemanager.organizationViewer
roles/resourcemanager.folderViewer

From https://github.com/JupiterOne/graph-google-cloud/blob/main/docs/development.md

roles/iam.securityReviewer
roles/iam.organizationRoleViewer
roles/bigquery.metadataViewer

Last updated