Hacking the Cloud: Privilege Escalation στο AWS

Η αναβάθμιση προνομίων (Privilege Escalation) στο AWS είναι η διαδικασία κατά την οποία ένας χρήστης ή μια υπηρεσία αποκτά υψηλότερα επίπεδα πρόσβασης ή δικαιωμάτων από αυτά που αρχικά είχε. Αυτό μπορεί να συμβεί είτε σκόπιμα από έναν κακόβουλο χρήστη είτε κατά λάθος μέσω λανθασμένων ρυθμίσεων ασφαλείας.

hacking the cloud getting started

Πώς γίνεται η αναβάθμιση προνομίων στο AWS:

  1. Insecure IAM Policies: Η πολιτική IAM (Identity and Access Management) μπορεί να είναι υπερβολικά επιτρεπτική, επιτρέποντας σε έναν χρήστη περισσότερη πρόσβαση από ό,τι χρειάζεται. Για παράδειγμα, μια πολιτική με Action: *, Resource: *, Effect: Allow μπορεί να δώσει πλήρη δικαιώματα διαχειριστή σε κάποιον χρήστη.
  2. Exploiting Vulnerable Services: Μερικές υπηρεσίες AWS μπορεί να έχουν αδυναμίες που επιτρέπουν την εκτέλεση εντολών ή την απόκτηση δεδομένων με αυξημένα δικαιώματα.
  3. Exploitation of Access Keys and Credentials: Αν κάποιος αποκτήσει πρόσβαση στα κλειδιά πρόσβασης ή διαπιστευτήρια ενός χρήστη με υψηλά δικαιώματα, μπορεί να χρησιμοποιήσει αυτά τα διαπιστευτήρια για να αποκτήσει πρόσβαση σε πόρους που δεν θα έπρεπε κανονικά να έχει.
  4. Cross-account Access: Η δυνατότητα πρόσβασης από έναν λογαριασμό AWS σε άλλον μέσω πολιτικών cross-account μπορεί να επιτρέψει την αναβάθμιση προνομίων αν δεν ρυθμιστεί σωστά.

Πρόληψη της αναβάθμισης προνομίων:

  • Apply the Principle of Least Privilege: Δώστε στους χρήστες και τις υπηρεσίες μόνο τα δικαιώματα που χρειάζονται για να εκτελούν τις εργασίες τους.
  • Continuous Monitoring and Logging: Παρακολουθείτε τις δραστηριότητες των χρηστών και καταγράψτε όλες τις ενέργειες για να εντοπίσετε ύποπτη συμπεριφορά.
  • Regular Review of IAM Policies: Αναθεωρείτε τακτικά τις πολιτικές IAM για να βεβαιωθείτε ότι δεν υπάρχουν υπερβολικά επιτρεπτικές ή ανασφαλείς ρυθμίσεις.
  • Use of Temporary Credentials: Αντί να χρησιμοποιείτε στατικά κλειδιά πρόσβασης, προτιμήστε τη χρήση προσωρινών διαπιστευτηρίων μέσω υπηρεσιών όπως το AWS STS (Security Token Service).

Με την κατάλληλη διαχείριση και τις σωστές πρακτικές ασφαλείας, η αναβάθμιση προνομίων μπορεί να αποφευχθεί, διασφαλίζοντας την ασφάλεια των πόρων σας στο AWS.

Δημιουργία νέας πολιτικής

Η άδεια iam μας επιτρέπει να δημιουργήσουμε μια νέα έκδοση μιας συγκεκριμένης πολιτικής. Αν έχουμε πρόσβαση στο αντικείμενο στο οποίο είναι δεσμευμένη η πολιτική, μπορούμε να αναβαθμίσουμε τα προνόμιά μας.

Για να ελέγξετε τις πολιτικές που είναι συνδεδεμένες με έναν χρήστη, χρησιμοποιήστε τις ακόλουθες εντολές:

kali> aws iam list-attached-user-policies –user-name <username>

kali> aws iam list-user-policies –user-name <username>

Για να το κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε την ακόλουθη μέθοδο.

Δημιουργούμαι ένα αρχείο json, στη δική μου  περίπτωση είναι το MyPolicy.json:

Παρόλο που η ρύθμιση μιας νέας πολιτικής ως προεπιλεγμένη συνήθως απαιτεί την άδεια iam
, η χρήση του flag –set-as-default κατά τη δημιουργία αυτόματα την ορίζει ως την νέα προεπιλεγμένη έκδοση χωρίς να χρειάζεται αυτή η άδεια.

Η διαδικασία είναι ως εξής: πρώτα, πρέπει να προσπαθήσουμε να αποκτήσουμε τον έλεγχο ενός λογαριασμού χρήστη που έχει οποιαδήποτε πολιτική συνδεδεμένη με αυτόν. Μετά από αυτό, απλά δημιουργούμε μια νέα πολιτική στο AWS, ενημερώνοντας μια υπάρχουσα. Το αποτέλεσμα είναι ότι το αντικείμενο που ελέγχουμαι αποκτά απεριόριστα δικαιώματα.

Σύνδεση μιας πολιτικής σε έναν χρήστη/ομάδα

Αν ο χρήστης IAM έχει την άδεια iam, τότε μπορούμε να αναβαθμίσουμε τα προνόμια συνδέοντας μια πολιτική και αποκτώντας τα δικαιώματα που καθορίζονται σε αυτή την πολιτική.

Αυτό μπορεί να γίνει με την ακόλουθη εντιλή:

kali> aws iam attach-user-policy –user-name my_username –policy-arn arn:aws:iam::aws:policy/AdministratorAccess

Όπως ίσως έχετε καταλάβει, ο χρήστης θα αποκτήσει δικαιώματα διαχειριστή. Η προσθήκη μιας πολιτικής σε μια ομάδα λειτουργεί με τον ίδιο τρόπο, αλλά απαιτεί την άδεια iam: AttachGroupPolicy:

kali> aws iam attach-group-policy –group-name my_group –policy-arn arn:aws:iam::aws:policy/AdministratorAccess

Ορισμός της προεπιλεγμένης έκδοσης πολιτικής

Υποθέστε ότι ανακαλύπτετε ότι το cloud που εξετάζετε έχει πολλαπλές εκδόσεις της ίδιας πολιτικής και η πρώτη έκδοση προσφέρει ελαφρώς πιο προηγμένες λειτουργίες από τη δεύτερη έκδοση. Σε αυτήν την περίπτωση, με την άδεια iam: SetDefaultPolicyVersion, μπορούμε να αλλάξουμε την έκδοση της πολιτικής στην έκδοση που χρειαζόμαστε.

Για παράδειγμα, παρατηρήσατε ότι η πολιτική PolicyToChange έχει αρκετές εκδόσεις:

kali> aws iam list-policy-versions –policy-arn arn:aws:iam::123456789012:policy/PolicyToChange

Για να αναλύσετε μια συγκεκριμένη έκδοση λεπτομερώς, χρησιμοποιήστε την ακόλουθη εντολή:

kali> aws iam get-policy-version –policy-arn arn:aws:iam::123456789012:policy/PolicyToChange –version-id v1

Μετά την ανάλυση, θα είστε σε θέση να καθορίσετε την πολιτική που παρέχει περισσότερες δυνατότητες και να την αλλάξετε στην απαιτούμενη με την ακόλουθη εντολή:

kali> aws iam set-default-policy-version –policy-arn arn:aws:iam:: 123456789012:policy/PolicyToChange –version-id v1

Δημιουργία μιας EC2 instance με ένα υπάρχον instance profile

Με τις άδειες iam και EC2, μπορούμε να δημιουργήσουμε ένα νέο παράδειγμα EC2 με πρόσβαση στο λειτουργικό σύστημα. Στη συνέχεια, περνάμε ένα υπάρχον προφίλ παραδείγματος EC2/υπηρεσίας ρόλου σε αυτό. Συνδεόμαστε στο παράδειγμα και ζητούμε τα σχετικά κλειδιά AWS από τα metadata της υπηρεσία του παραδείγματος EC2, αποκτώντας πρόσβαση σε όλες τις άδειες του προφίλ παραδείγματος/υπηρεσίας ρόλου.

Μπορούμε να έχουμε πρόσβαση στο παράδειγμα δημιουργώντας/εισάγοντας ένα κλειδί SSH, παρέχοντας ένα script στα δεδομένα χρήστη του EC2 ή ένα reverse shell payload.

Μόλις το παράδειγμα είναι ενεργό και προσβάσιμο, η ανάκτηση μεταδεδομένων EC2 παρέχει προσωρινά διαπιστευτήρια για το σχετικό προφίλ παραδείγματος, παρέχοντας πρόσβαση σε οποιαδήποτε υπηρεσία AWS έχει ο επισυναπτόμενος ρόλος.

Ένα παράδειγμα εντολής για να εκμεταλλευτείτε αυτήν τη μέθοδο μπορεί να φαίνεται κάπως έτσι:

kali> aws ec2 run-instances –image-id 12345 –instance-type t2.micro –iam-instance-profile Name=iam-full-access-ip –key-name my_ssh_key –security-group-ids sg-123456

Όπου έχουμε πρόσβαση στο my_ssh_key και το security group sg-123456 επιτρέπει πρόσβαση SSH. Μια άλλη εντολή που θα μπορούσε να εκτελεστεί και δεν απαιτεί κλειδί SSH ή ασφαλιστικό συνόλο που επιτρέπει πρόσβαση SSH θα μπορούσε να φαίνεται κάπως έτσι:

kali> aws ec2 run-instances –image-id 12345 –instance-type t2.micro –iam-instance-profile Name=iam-full-access-ip –user-datafile://reverse_shell.sh

Όπου το αρχείο .sh περιέχει ένα script που ανοίγει ένα reverse shell.

Αυτοματοποιημένοι έλεγχοι

Υπάρχουν διάφορα εργαλεία για τη σάρωση των πολιτικών και privilege escalation vectors. Ένα από αυτά είναι το aws_escalate.py, το οποίο μπορείτε να βρείτε στο ακόλουθο αποθετήριο GitHub: aws_escalate.py.

Για να ξεκινήσετε, προσδιορίστε τις ακόλουθες επιλογές:

kali> python3 aws_escalate.py –user-name User –access-key-id 12345 –secret-key 12345

Μπορείτε επίσης να επιλέξετε να μην καθορίσετε ένα συγκεκριμένο χρήστη και να χρησιμοποιήσετε το switch -all-users για να σαρώσετε όλους τους διαθέσιμους χρήστες.

Αξίζει να σημειωθεί ότι η εξέλιξη προνομίων μέσω του IAM είναι μια σχετικά απλή διαδικασία. Το πιο σημαντικό είναι να συνειδητοποιήσετε ότι πάντα απαιτείται η απαρίθμηση των πολιτικών. Συχνά, η ευάλωτη διαμόρφωση βρίσκεται εκεί.

Σύνοψη

Με αυτές τις απλές μεθόδους, μπορούμε να εξελίξουμε τα προνόμια του IAM και να αποκτήσουμε πλήρη δικαιώματα διαχειριστή.

 

 

iGuRu.gr The Best Technology Site in Greeceggns

Get the best viral stories straight into your inbox!















Written by Anastasis Vasileiadis

Οι μεταφράσεις είναι σαν τις γυναίκες. Όταν είναι ωραίες δεν είναι πιστές και όταν είναι πιστές δεν είναι ωραίες.

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *

Το μήνυμα σας δεν θα δημοσιευτεί εάν:
1. Περιέχει υβριστικά, συκοφαντικά, ρατσιστικά, προσβλητικά ή ανάρμοστα σχόλια.
2. Προκαλεί βλάβη σε ανηλίκους.
3. Παρενοχλεί την ιδιωτική ζωή και τα ατομικά και κοινωνικά δικαιώματα άλλων χρηστών.
4. Διαφημίζει προϊόντα ή υπηρεσίες ή διαδικτυακούς τόπους .
5. Περιέχει προσωπικές πληροφορίες (διεύθυνση, τηλέφωνο κλπ).