GCP - Basic Information
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Η Google Cloud χρησιμοποιεί μια Ιεραρχία Πόρων που είναι παρόμοια, εννοιολογικά, με αυτή ενός παραδοσιακού συστήματος αρχείων. Αυτό παρέχει μια λογική ροή εργασίας γονέα/παιδιού με συγκεκριμένα σημεία προσάρτησης για πολιτικές και δικαιώματα.
Σε υψηλό επίπεδο, φαίνεται έτσι:
Ένα εικονικό μηχάνημα (που ονομάζεται Compute Instance) είναι ένας πόρος. Ένας πόρος βρίσκεται σε ένα έργο, πιθανώς δίπλα σε άλλες Compute Instances, αποθηκευτικούς κάδους κ.λπ.
Είναι δυνατόν να μεταφέρετε ένα έργο χωρίς καμία οργάνωση σε μια οργάνωση με τις άδειες roles/resourcemanager.projectCreator
και roles/resourcemanager.projectMover
. Εάν το έργο βρίσκεται μέσα σε άλλη οργάνωση, είναι απαραίτητο να επικοινωνήσετε με την υποστήριξη GCP για να μεταφέρετε πρώτα έξω από την οργάνωση. Για περισσότερες πληροφορίες δείτε αυτό.
Επιτρέπουν την κεντρικοποίηση του ελέγχου πάνω στους πόρους cloud της οργάνωσής σας:
Κεντρικοποιήστε τον έλεγχο για να ρυθμίσετε περιορισμούς σχετικά με το πώς μπορούν να χρησιμοποιηθούν οι πόροι της οργάνωσής σας.
Ορίστε και καθορίστε οδηγίες για τις ομάδες ανάπτυξης ώστε να παραμένουν εντός των ορίων συμμόρφωσης.
Βοηθήστε τους ιδιοκτήτες έργων και τις ομάδες τους να κινούνται γρήγορα χωρίς ανησυχία για την παραβίαση της συμμόρφωσης.
Αυτές οι πολιτικές μπορούν να δημιουργηθούν για να επηρεάσουν την πλήρη οργάνωση, τον φάκελο ή τα έργα. Οι απόγονοι του στοχευμένου κόμβου ιεραρχίας πόρων κληρονομούν την πολιτική οργάνωσης.
Για να ορίσετε μια πολιτική οργάνωσης, επιλέγετε έναν περιορισμό, ο οποίος είναι ένας συγκεκριμένος τύπος περιορισμού κατά ενός υπηρεσίας Google Cloud ή μιας ομάδας υπηρεσιών Google Cloud. Ρυθμίζετε αυτόν τον περιορισμό με τους επιθυμητούς περιορισμούς σας.
Περιορίστε την κοινή χρήση πόρων με βάση το domain.
Περιορίστε τη χρήση λογαριασμών υπηρεσιών Identity and Access Management.
Περιορίστε τη φυσική τοποθεσία των νεοδημιουργηθέντων πόρων.
Απενεργοποιήστε τη δημιουργία λογαριασμών υπηρεσιών.
Υπάρχουν πολλοί περισσότεροι περιορισμοί που σας δίνουν λεπτομερή έλεγχο στους πόρους της οργάνωσής σας. Για περισσότερες πληροφορίες, δείτε τη λίστα όλων των περιορισμών Πολιτικής Οργάνωσης.
Αυτοί είναι παρόμοιοι με τις πολιτικές IAM στο AWS καθώς κάθε ρόλος περιέχει ένα σύνολο αδειών.
Ωστόσο, σε αντίθεση με το AWS, δεν υπάρχει κεντρικό αποθετήριο ρόλων. Αντί αυτού, οι πόροι δίνουν X ρόλους πρόσβασης σε Y κύριους, και ο μόνος τρόπος για να μάθετε ποιος έχει πρόσβαση σε έναν πόρο είναι να χρησιμοποιήσετε τη μέθοδο get-iam-policy
πάνω σε αυτόν τον πόρο.
Αυτό θα μπορούσε να είναι πρόβλημα γιατί αυτό σημαίνει ότι ο μόνος τρόπος για να μάθετε ποιες άδειες έχει ένας κύριος είναι να ρωτήσετε κάθε πόρο σε ποιον δίνει άδειες, και ένας χρήστης μπορεί να μην έχει άδειες για να πάρει άδειες από όλους τους πόρους.
Υπάρχουν τρεις τύποι ρόλων στο IAM:
Βασικοί/Πρωτότυποι ρόλοι, οι οποίοι περιλαμβάνουν τους ρόλους Ιδιοκτήτης, Επεξεργαστής και Θεατής που υπήρχαν πριν από την εισαγωγή του IAM.
Προκαθορισμένοι ρόλοι, οι οποίοι παρέχουν λεπτομερή πρόσβαση για μια συγκεκριμένη υπηρεσία και διαχειρίζονται από την Google Cloud. Υπάρχουν πολλοί προκαθορισμένοι ρόλοι, μπορείτε να δείτε όλους αυτούς με τα προνόμια που έχουν εδώ.
Προσαρμοσμένοι ρόλοι, οι οποίοι παρέχουν λεπτομερή πρόσβαση σύμφωνα με μια λίστα αδειών που καθορίζεται από τον χρήστη.
Υπάρχουν χιλιάδες άδειες στο GCP. Για να ελέγξετε αν ένας ρόλος έχει άδεια μπορείτε να αναζητήσετε την άδεια εδώ και να δείτε ποιους ρόλους έχει.
Μπορείτε επίσης να αναζητήσετε εδώ προκαθορισμένους ρόλους που προσφέρονται από κάθε προϊόν. Σημειώστε ότι μερικοί ρόλοι δεν μπορούν να προσαρτηθούν σε χρήστες και μόνο σε SAs λόγω ορισμένων αδειών που περιέχουν. Επιπλέον, σημειώστε ότι οι άδειες θα ισχύουν μόνο αν είναι προσαρτημένες στην αντίστοιχη υπηρεσία.
Ή ελέγξτε αν ένας προσαρμοσμένος ρόλος μπορεί να χρησιμοποιήσει μια συγκεκριμένη άδεια εδώ.
GCP - IAM, Principals & Org Policies EnumΣτην κονσόλα GCP δεν υπάρχει καμία διαχείριση Χρηστών ή Ομάδων, αυτό γίνεται στο Google Workspace. Αν και μπορείτε να συγχρονίσετε έναν διαφορετικό πάροχο ταυτότητας στο Google Workspace.
Μπορείτε να αποκτήσετε πρόσβαση στους χρήστες και τις ομάδες του Workspaces στο https://admin.google.com.
MFA μπορεί να επιβληθεί στους χρήστες Workspaces, ωστόσο, ένας επιτιθέμενος θα μπορούσε να χρησιμοποιήσει ένα token για να αποκτήσει πρόσβαση στο GCP μέσω cli που δεν θα προστατεύεται από MFA (θα προστατεύεται από MFA μόνο όταν ο χρήστης συνδεθεί για να το δημιουργήσει: gcloud auth login
).
Όταν δημιουργείται μια οργάνωση, προτείνεται έντονα να δημιουργηθούν αρκετές ομάδες. Εάν διαχειρίζεστε οποιαδήποτε από αυτές, μπορεί να έχετε συμβιβάσει όλη ή ένα σημαντικό μέρος της οργάνωσης:
Ομάδα
Λειτουργία
gcp-organization-admins
(απαιτούνται ομαδικοί ή ατομικοί λογαριασμοί για τη λίστα ελέγχου)
Διαχείριση οποιουδήποτε πόρου ανήκει στην οργάνωση. Αναθέστε αυτόν τον ρόλο με φειδώ; οι διαχειριστές οργανώσεων έχουν πρόσβαση σε όλους τους πόρους Google Cloud σας. Εναλλακτικά, επειδή αυτή η λειτουργία είναι πολύ προνομιακή, σκεφτείτε να χρησιμοποιήσετε ατομικούς λογαριασμούς αντί να δημιουργήσετε μια ομάδα.
gcp-network-admins
(απαιτείται για τη λίστα ελέγχου)
Δημιουργία δικτύων, υποδικτύων, κανόνων τείχους προστασίας και δικτυακών συσκευών όπως Cloud Router, Cloud VPN και cloud load balancers.
gcp-billing-admins
(απαιτείται για τη λίστα ελέγχου)
Ρύθμιση λογαριασμών χρέωσης και παρακολούθηση της χρήσης τους.
gcp-developers
(απαιτείται για τη λίστα ελέγχου)
Σχεδίαση, κωδικοποίηση και δοκιμή εφαρμογών.
gcp-security-admins
Καθιέρωση και διαχείριση πολιτικών ασφαλείας για ολόκληρη την οργάνωση, συμπεριλαμβανομένης της διαχείρισης πρόσβασης και των πολιτικών περιορισμού οργάνωσης. Δείτε τον οδηγό θεμελίων ασφαλείας Google Cloud για περισσότερες πληροφορίες σχετικά με τον προγραμματισμό της υποδομής ασφαλείας Google Cloud σας.
gcp-devops
Δημιουργία ή διαχείριση ολοκληρωμένων αγωγών που υποστηρίζουν τη συνεχή ολοκλήρωση και παράδοση, παρακολούθηση και προμήθεια συστημάτων.
gcp-logging-admins
gcp-logging-viewers
gcp-monitor-admins
gcp-billing-viewer
(δεν είναι πλέον προεπιλεγμένο)
Παρακολούθηση των δαπανών στα έργα. Τυπικά μέλη είναι μέλη της ομάδας χρηματοδότησης.
gcp-platform-viewer
(δεν είναι πλέον προεπιλεγμένο)
Ανασκόπηση πληροφοριών πόρων σε όλη την οργάνωση Google Cloud.
gcp-security-reviewer
(δεν είναι πλέον προεπιλεγμένο)
Ανασκόπηση της ασφάλειας του cloud.
gcp-network-viewer
(δεν είναι πλέον προεπιλεγμένο)
Ανασκόπηση ρυθμίσεων δικτύου.
grp-gcp-audit-viewer
(δεν είναι πλέον προεπιλεγμένο)
Προβολή αρχείων καταγραφής ελέγχου.
gcp-scc-admin
(δεν είναι πλέον προεπιλεγμένο)
Διαχείριση του Security Command Center.
gcp-secrets-admin
(δεν είναι πλέον προεπιλεγμένο)
Διαχείριση μυστικών στο Secret Manager.
Επιβολή ισχυρών κωδικών πρόσβασης
Μεταξύ 8 και 100 χαρακτήρων
Καμία επαναχρησιμοποίηση
Καμία λήξη
Εάν οι άνθρωποι αποκτούν πρόσβαση στο Workspace μέσω τρίτου παρόχου, αυτές οι απαιτήσεις δεν εφαρμόζονται.
Αυτοί είναι οι κύριοι που οι πόροι μπορούν να έχουν συνδεδεμένους και πρόσβαση για να αλληλεπιδρούν εύκολα με το GCP. Για παράδειγμα, είναι δυνατόν να αποκτήσετε πρόσβαση στο auth token ενός Λογαριασμού Υπηρεσίας συνδεδεμένου σε μια VM στα μεταδεδομένα.
Είναι δυνατόν να συναντήσετε κάποιες συγκρούσεις όταν χρησιμοποιείτε και τους IAM και τα πεδία πρόσβασης. Για παράδειγμα, ο λογαριασμός υπηρεσίας σας μπορεί να έχει τον ρόλο IAM compute.instanceAdmin
, αλλά η περίπτωση που έχετε παραβιάσει έχει περιοριστεί με τον περιορισμό πεδίου https://www.googleapis.com/auth/compute.readonly
. Αυτό θα σας εμπόδιζε να κάνετε οποιεσδήποτε αλλαγές χρησιμοποιώντας το OAuth token που έχει ανατεθεί αυτόματα στην περίπτωση σας.
Είναι παρόμοιο με τους ρόλους IAM από το AWS. Αλλά όχι όπως στο AWS, οποιοσδήποτε λογαριασμός υπηρεσίας μπορεί να συνδεθεί σε οποιαδήποτε υπηρεσία (δεν χρειάζεται να το επιτρέπει μέσω πολιτικής).
Πολλοί από τους λογαριασμούς υπηρεσιών που θα βρείτε είναι στην πραγματικότητα αυτόματα δημιουργημένοι από το GCP όταν αρχίσετε να χρησιμοποιείτε μια υπηρεσία, όπως:
Ωστόσο, είναι επίσης δυνατό να δημιουργήσετε και να συνδέσετε σε πόρους custom service accounts, τα οποία θα μοιάζουν έτσι:
Υπάρχουν 2 κύριοι τρόποι πρόσβασης στο GCP ως λογαριασμός υπηρεσίας:
Μέσω OAuth tokens: Αυτά είναι tokens που θα λάβετε από μέρη όπως τα metadata endpoints ή κλέβοντας http requests και περιορίζονται από τους access scopes.
Κλειδιά: Αυτά είναι δημόσια και ιδιωτικά ζεύγη κλειδιών που θα σας επιτρέψουν να υπογράφετε αιτήματα ως λογαριασμός υπηρεσίας και ακόμη και να δημιουργείτε OAuth tokens για να εκτελείτε ενέργειες ως λογαριασμός υπηρεσίας. Αυτά τα κλειδιά είναι επικίνδυνα επειδή είναι πιο περίπλοκα να περιοριστούν και να ελεγχθούν, γι' αυτό το GCP συνιστά να μην τα δημιουργείτε.
Σημειώστε ότι κάθε φορά που δημιουργείται ένας SA, το GCP δημιουργεί ένα κλειδί για τον λογαριασμό υπηρεσίας που ο χρήστης δεν μπορεί να έχει πρόσβαση (και δεν θα αναφέρεται στην εφαρμογή ιστού). Σύμφωνα με αυτή τη συζήτηση, αυτό το κλειδί χρησιμοποιείται εσωτερικά από το GCP για να δώσει πρόσβαση στα metadata endpoints για να δημιουργήσουν τα προσβάσιμα OAuth tokens.
Οι access scopes είναι συνδεδεμένες με τα παραγόμενα OAuth tokens για να αποκτήσουν πρόσβαση στα API endpoints του GCP. Περιορίζουν τις άδειες του OAuth token. Αυτό σημαίνει ότι αν ένα token ανήκει σε έναν Ιδιοκτήτη ενός πόρου αλλά δεν έχει την κατάλληλη πρόσβαση στο scope του token για να αποκτήσει πρόσβαση σε αυτόν τον πόρο, το token δεν μπορεί να χρησιμοποιηθεί για (κακή) χρήση αυτών των προνομίων.
Η Google στην πραγματικότητα συνιστά ότι οι access scopes να μην χρησιμοποιούνται και να βασίζεστε εντελώς στο IAM. Το διαδικτυακό διαχειριστικό portal επιβάλλει αυτό, αλλά οι access scopes μπορούν ακόμα να εφαρμοστούν σε περιπτώσεις χρησιμοποιώντας προσαρμοσμένους λογαριασμούς υπηρεσίας προγραμματισμένα.
Μπορείτε να δείτε ποιες scopes είναι καθορισμένες κάνοντας query:
Οι προηγούμενοι σκοποί είναι αυτοί που δημιουργούνται από προεπιλογή χρησιμοποιώντας gcloud
για να αποκτήσετε πρόσβαση σε δεδομένα. Αυτό συμβαίνει επειδή όταν χρησιμοποιείτε gcloud
πρώτα δημιουργείτε ένα OAuth token και στη συνέχεια το χρησιμοποιείτε για να επικοινωνήσετε με τα endpoints.
Ο πιο σημαντικός σκοπός από αυτούς είναι cloud-platform
, που σημαίνει βασικά ότι είναι δυνατό να έχετε πρόσβαση σε οποιαδήποτε υπηρεσία στο GCP.
Μπορείτε να βρείτε μια λίστα με όλους τους πιθανούς σκοπούς εδώ.
Αν έχετε gcloud
διαπιστευτήρια προγράμματος περιήγησης, είναι δυνατό να αποκτήσετε ένα token με άλλους σκοπούς, κάνοντας κάτι σαν:
Όπως ορίζεται από το terraform στο https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/google_project_iam χρησιμοποιώντας το terraform με GCP υπάρχουν διάφοροι τρόποι για να παραχωρήσετε σε έναν κύριο πρόσβαση σε έναν πόρο:
Μέλη: Ορίζετε τους κύριους ως μέλη ρόλων χωρίς περιορισμούς πάνω στον ρόλο ή στους κύριους. Μπορείτε να βάλετε έναν χρήστη ως μέλος ενός ρόλου και στη συνέχεια να βάλετε μια ομάδα ως μέλος του ίδιου ρόλου και επίσης να ορίσετε αυτούς τους κύριους (χρήστης και ομάδα) ως μέλη άλλων ρόλων.
Δεσμεύσεις: Πολλοί κύριοι μπορούν να δεσμευτούν σε έναν ρόλο. Αυτοί οι κύριοι μπορούν ακόμα να δεσμευτούν ή να είναι μέλη άλλων ρόλων. Ωστόσο, αν ένας κύριος που δεν είναι δεσμευμένος στον ρόλο οριστεί ως μέλος μιας δεσμευμένης ρόλου, την επόμενη φορά που η δέσμευση θα εφαρμοστεί, η ιδιότητα μέλους θα εξαφανιστεί.
Πολιτικές: Μια πολιτική είναι αυθεντική, υποδεικνύει ρόλους και κύριους και στη συνέχεια, αυτοί οι κύριοι δεν μπορούν να έχουν περισσότερους ρόλους και αυτοί οι ρόλοι δεν μπορούν να έχουν περισσότερους κύριους εκτός αν αυτή η πολιτική τροποποιηθεί (ούτε καν σε άλλες πολιτικές, δεσμεύσεις ή μέλη). Επομένως, όταν ένας ρόλος ή κύριος καθορίζεται σε πολιτική, όλα τα προνόμια του είναι περιορισμένα από αυτή την πολιτική. Προφανώς, αυτό μπορεί να παρακαμφθεί σε περίπτωση που ο κύριος έχει την επιλογή να τροποποιήσει την πολιτική ή δικαιώματα κλιμάκωσης προνομίων (όπως η δημιουργία ενός νέου κύριου και η δέσμευσή του σε έναν νέο ρόλο).
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)