AWS Pentesting

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Βασικές Πληροφορίες

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

Έννοιες όπως η ιεραρχία της οργάνωσης, η IAM και άλλες βασικές έννοιες εξηγούνται στο:

AWS - Basic Information

Εργαστήρια για μάθηση

Εργαλεία για προσομοίωση επιθέσεων:

Μεθοδολογία Ελεγκτή Ασφάλειας AWS/Red Team

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

Από την άποψη της Ομάδας Red Team, το πρώτο βήμα για την παραβίαση ενός περιβάλλοντος AWS είναι να καταφέρετε να αποκτήσετε κάποια διαπιστευτήρια. Εδώ έχετε μερικές ιδέες για το πώς να το κάνετε:

  • Διαρροές στο github (ή παρόμοιες) - OSINT

  • Κοινωνική Μηχανική

  • Επαναχρησιμοποίηση κωδικού πρόσβασης (διαρροές κωδικών πρόσβασης)

  • Ευπάθειες σε εφαρμογές που φιλοξενούνται στο AWS

  • Server Side Request Forgery με πρόσβαση στο σημείο τερματικής πληροφορίας (metadata endpoint)

  • Ανάγνωση τοπικού αρχείου

  • /home/USERNAME/.aws/credentials

  • C:\Users\USERNAME\.aws\credentials

  • Παραβιάσεις τρίτων

  • Εσωτερικός Υπάλληλος

  • Cognito διαπιστευτήρια

Ή με το παραβίαση μιας μη εξουσιοδοτημένης υπηρεσίας που εκτίθεται:

AWS - Unauthenticated Enum & Access

Ή εάν κάνετε μια αναθεώρηση, μπορείτε απλά να ζητήσετε διαπιστευτήρια με αυτούς τους ρόλους:

AWS - Permissions for a Pentest

Αφού καταφέρετε να αποκτήσετε διαπιστευτήρια, πρέπει να γνωρίζετε σε ποιον ανήκουν αυτά τα διαπιστευτήρια και τι έχουν πρόσβαση, οπότε πρέπει να πραγματοποιήσετε μερικές βασικές απαρίθμηση:

Βασική Απαρίθμηση

SSRF

Εάν βρήκατε ένα SSRF σε μια μηχανή μέσα στο AWS, ελέγξτε αυτήν τη σελίδα για κόλπα:

Whoami

Ένα από τα πρώτα πράγματα που πρέπει να γνωρίζετε είναι ποιος είστε (σε ποιο λογαριασμό βρίσκεστε και άλλες πληροφορίες για το περιβάλλον AWS):

# Easiest way, but might be monitored?
aws sts get-caller-identity
aws iam get-user # This will get your own user

# If you have a Key ID
aws sts get-access-key-info --access-key-id=ASIA1234567890123456

# Get inside error message
aws sns publish --topic-arn arn:aws:sns:us-east-1:*account id*:aaa --message aaa

# From metadata
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic/instance-identity/document

Σημειώστε ότι οι εταιρείες μπορεί να χρησιμοποιούν canary tokens για να ανιχνεύσουν όταν τα tokens κλαπούν και χρησιμοποιηθούν. Συνιστάται να ελέγξετε εάν ένα token είναι canary token πριν το χρησιμοποιήσετε. Για περισσότερες πληροφορίες ελέγξτε αυτήν τη σελίδα.

Απαρίθμηση Οργανισμού

AWS - Organizations Enum

Απαρίθμηση IAM

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

Εάν δεν έχετε αρκετές άδειες για να απαριθμήσετε το IAM, μπορείτε να τα κλέψετε με bruteforce για να τα ανακαλύψετε. Ελέγξτε πώς να κάνετε την απαρίθμηση και το brute-forcing στο:

AWS - IAM, Identity Center & SSO Enum

Τώρα που έχετε κάποιες πληροφορίες για τα διαπιστευτήριά σας (και αν είστε μια κόκκινη ομάδα ελπίζω να μην έχετε ανιχνευθεί). Είναι ώρα να καταλάβετε ποιες υπηρεσίες χρησιμοποιούνται στο περιβάλλον. Στην επόμενη ενότητα μπορείτε να ελέγξετε ορισμένους τρόπους για απαρίθμηση ορισμένων κοινών υπηρεσιών.

Απαρίθμηση Υπηρεσιών, Μετά-Εκμετάλλευση & Μόνιμη Παρουσία

Η AWS διαθέτει μια εκπληκτική ποσότητα υπηρεσιών, στην ακόλουθη σελίδα θα βρείτε βασικές πληροφορίες, cheatsheets απαρίθμησης, πώς να αποφύγετε την ανίχνευση, να αποκτήσετε μόνιμη παρουσία και άλλα κόλπα μετά-εκμετάλλευσης για μερικές από αυτές:

AWS - Services

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

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

AWS - Unauthenticated Enum & Access

Ανέλιξη Προνομίων

Εάν μπορείτε να ελέγξετε τουλάχιστον τα δικαιώματά σας σε διάφορους πόρους, μπορείτε να ελέγξετε εάν μπορείτε να αποκτήσετε περαιτέρω δικαιώματα. Θα πρέπει να επικεντρωθείτε τουλάχιστον στα δικαιώματα που αναφέρονται στο:

AWS - Privilege Escalation

Δημόσια Εκτεθειμένες Υπηρεσίες

Κατά την απαρίθμηση των υπηρεσιών AWS μπορεί να έχετε βρει ορισμένες από αυτές να εκθέτουν στο Διαδίκτυο στοιχεία (θύρες VM/Containers, βάσεις δεδομένων ή υπηρεσίες ουράς, αντίγραφα ασφαλείας ή κάδους...). Ως pentester/red teamer θα πρέπει πάντα να ελέγχετε εάν μπορείτε να βρείτε ευαίσθητες πληροφορίες / ευπάθειες σε αυτές, καθώς μπορεί να σας παρέχουν περαιτέρω πρόσβαση στον λογαριασμό AWS.

Σε αυτό το βιβλίο θα βρείτε πληροφορίες για το πώς να βρείτε εκτεθειμένες υπηρεσίες AWS και πώς να τις ελέγξετε. Όσον αφορά το πώς να βρείτε ευπάθειες σε εκτεθειμένες δικτυακές υπηρεσίες, θα σας συνιστούσα να αναζητήσετε τη συγκεκριμένη υπηρεσία στο:

Παραβίαση του Οργανισμού

Από τον λογαριασμό ρίζας/διαχείρισης

Όταν ο λογαριασμός διαχείρισης δημιουργεί νέους λογαριασμούς στον οργανισμό, δημιουργείται ένας νέος ρόλος στον νέο λογαριασμό, με την προεπιλεγμένη ονομασία OrganizationAccountAccessRole και δίνει πολιτική AdministratorAccess στον λογαριασμό διαχείρισης για πρόσβαση στον νέο λογαριασμό ως διαχειριστής.

Έτσι, για να έχετε πρόσβαση ως διαχειριστής σε έναν υπολογιστικό λογ

# Install
gem install aws_recon

# Recon and get json
AWS_PROFILE=<profile> aws_recon \
--services S3,EC2 \
--regions global,us-east-1,us-east-2 \
--verbose
  • cloudlist: Το Cloudlist είναι ένα εργαλείο πολλαπλών νεφών για την ανάκτηση Πόρων (Ονομάτων Κεντρικού Υπολογιστή, Διευθύνσεων IP) από Παρόχους Νέφους.

  • cloudmapper: Το CloudMapper σας βοηθά να αναλύσετε τα περιβάλλοντα των Amazon Web Services (AWS) σας. Περιλαμβάνει πλέον πολλαπλή λειτουργικότητα, συμπεριλαμβανομένου του ελέγχου για θέματα ασφαλείας.

# Installation steps in github
# Create a config.json file with the aws info, like:
{
"accounts": [
{
"default": true,
"id": "<account id>",
"name": "dev"
}
],
"cidrs":
{
"2.2.2.2/28": {"name": "NY Office"}
}
}

# Enumerate
python3 cloudmapper.py collect --profile dev
## Number of resources discovered
python3 cloudmapper.py stats --accounts dev

# Create HTML report
## In the report you will find all the info already
python3 cloudmapper.py report --accounts dev

# Identify potential issues
python3 cloudmapper.py audit --accounts dev --json > audit.json
python3 cloudmapper.py audit --accounts dev --markdow > audit.md
python3 cloudmapper.py iam_report --accounts dev

# Identify admins
## The permissions search for are in https://github.com/duo-labs/cloudmapper/blob/4df9fd7303e0337ff16a08f5e58f1d46047c4a87/shared/iam_audit.py#L163-L175
python3 cloudmapper.py find_admins --accounts dev

# Identify unused elements
python3 cloudmapper.py find_unused --accounts dev

# Identify publivly exposed resources
python3 cloudmapper.py public --accounts dev

python cloudmapper.py prepare #Prepare webserver
python cloudmapper.py webserver #Show webserver
  • cartography: Το Cartography είναι ένα εργαλείο Python που συγκεντρώνει τα υποδομικά στοιχεία και τις σχέσεις μεταξύ τους σε μια ευανάγνωστη γραφική αναπαράσταση με τη χρήση μιας βάσης δεδομένων Neo4j.

# Install
pip install cartography
## At the time of this writting you need neo4j version 3.5.*

# Get AWS info
AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt  --neo4j-user neo4j
  • starbase: Το Starbase συλλέγει περιουσιακά στοιχεία και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένης της υποδομής στον νέφος, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια ευανάγνωστη γραφική προβολή που υποστηρίζεται από τη βάση δεδομένων Neo4j.

  • aws-inventory: (Χρησιμοποιεί python2) Αυτό είναι ένα εργαλείο που προσπαθεί να ανακαλύψει όλους τους πόρους AWS που έχουν δημιουργηθεί σε ένα λογαριασμό.

  • aws_public_ips: Είναι ένα εργαλείο για να ανακτήσετε όλες τις δημόσιες διευθύνσεις IP (τόσο IPv4/IPv6) που σχετίζονται με ένα λογαριασμό AWS.

Privesc & Exploiting

  • SkyArk: Ανακαλύψτε τους πιο προνομιούχους χρήστες στο σαρώνομενο περιβάλλον AWS, συμπεριλαμβανομένων των AWS Shadow Admins. Χρησιμοποιεί το powershell. Μπορείτε να βρείτε τον ορισμό των προνομιούχων πολιτικών στη συνάρτηση Check-PrivilegedPolicy στο https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1.

  • pacu: Το Pacu είναι ένα ανοικτού κώδικα πλαίσιο εκμετάλλευσης του AWS, σχεδιασμένο για επιθετική ασφάλεια κατά των περιβαλλόντων στον νέφος. Μπορεί να απαριθμήσει, να βρει λανθασμένες ρυθμίσεις και να τις εκμεταλλευτεί. Μπορείτε να βρείτε τον ορισμό των προνομιούχων δικαιωμάτων στο https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 μέσα στο λεξικό user_escalation_methods.

  • Σημειώστε ότι το pacu ελέγχει μόνο τα δικά σας μονοπάτια privescs (όχι σε όλο το λογαριασμό).

# Install
## Feel free to use venvs
pip3 install pacu

# Use pacu CLI
pacu
> import_keys <profile_name> # import 1 profile from .aws/credentials
> import_keys --all # import all profiles
> list # list modules
> exec iam__enum_permissions # Get permissions
> exec iam__privesc_scan # List privileged permissions
  • PMapper: Το Principal Mapper (PMapper) είναι ένα σενάριο και βιβλιοθήκη για την αναγνώριση κινδύνων στη διαμόρφωση του AWS Identity and Access Management (IAM) για ένα λογαριασμό AWS ή μια οργάνωση AWS. Μοντελοποιεί τους διάφορους χρήστες IAM και ρόλους σε ένα λογαριασμό ως έναν κατευθυνόμενο γράφο, που επιτρέπει ελέγχους για ανέλιξη προνομίων και για εναλλακτικές διαδρομές που μπορεί να ακολουθήσει ένας επιτιθέμενος για να αποκτήσει πρόσβαση σε ένα πόρο ή μια ενέργεια στο AWS. Μπορείτε να ελέγξετε τα δικαιώματα που χρησιμοποιούνται για την εύρεση διαδρομών προνομίων στα ονόματα αρχείων που τελειώνουν σε _edges.py στο https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing

# Install
pip install principalmapper

# Get data
pmapper --profile dev graph create
pmapper --profile dev graph display # Show basic info
# Generate graph
pmapper --profile dev visualize # Generate svg graph file (can also be png, dot and graphml)
pmapper --profile dev visualize --only-privesc # Only privesc permissions

# Generate analysis
pmapper --profile dev analysis
## Run queries
pmapper --profile dev query 'who can do iam:CreateUser'
pmapper --profile dev query 'preset privesc *' # Get privescs with admins

# Get organization hierarchy data
pmapper --profile dev orgs create
pmapper --profile dev orgs display
  • cloudsplaining: Το Cloudsplaining είναι ένα εργαλείο αξιολόγησης ασφάλειας AWS IAM που εντοπίζει παραβιάσεις της αρχής του ελάχιστου δικαιώματος και δημιουργεί έναν προτεραιοποιημένο κίνδυνο HTML αναφορά. Θα σας δείξει πιθανά υπερπρονομιούχους πελάτες, ενσωματωμένες πολιτικές aws και ποιοι αρχές έχουν πρόσβαση σε αυτές. (Δεν ελέγχει μόνο για προώθηση δικαιωμάτων, αλλά και για άλλου είδους ενδιαφέρουσες άδειες, συνιστάται η χρήση του).

# Install
pip install cloudsplaining

# Download IAM policies to check
## Only the ones attached with the versions used
cloudsplaining download --profile dev

# Analyze the IAM policies
cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/
  • cloudjack: Το CloudJack αξιολογεί τους λογαριασμούς AWS για ευπάθειες κλοπής υποτομέων λόγω αποσυνδεδεμένων ρυθμίσεων Route53 και CloudFront.

  • ccat: Λίστα αποθετηρίων ECR -> Ανάκτηση αποθετηρίου ECR -> Παραβίαση του -> Ανέβασμα παραβιασμένης εικόνας

  • Dufflebag: Το Dufflebag είναι ένα εργαλείο που αναζητά μέσω δημόσιων στιγμιοτύπων Elastic Block Storage (EBS) για μυστικά που μπορεί να έχουν αφεθεί κατά λάθος.

Ελεγχος

  • cloudsploit: Το CloudSploit από την Aqua είναι ένα ανοιχτού κώδικα έργο που σχεδιάστηκε για τον εντοπισμό κινδύνων ασφάλειας σε λογαριασμούς υποδομής στο cloud, συμπεριλαμβανομένων: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), Oracle Cloud Infrastructure (OCI) και GitHub (Δεν αναζητά ShadowAdmins).

./index.js --csv=file.csv --console=table --config ./config.js

# Compiance options: --compliance {hipaa,cis,cis1,cis2,pci}
## use "cis" for cis level 1 and 2
  • Prowler: Το Prowler είναι ένα εργαλείο ασφαλείας με ανοικτό κώδικα για την εκτέλεση αξιολογήσεων, ελέγχων, ανταποκρίσεων σε περιστατικά, συνεχούς παρακολούθησης, ενίσχυσης και προετοιμασίας για αντι-εγκληματική έρευνα στην ασφάλεια του AWS.

# Install python3, jq and git
# Install
pip install prowler
prowler -v

# Run
prowler <provider>
prowler aws --profile custom-profile [-M csv json json-asff html]
  • CloudFox: Το CloudFox σας βοηθά να αποκτήσετε επίγνωση της κατάστασης σε άγνωστα περιβάλλοντα στον νέφος. Είναι ένα εργαλείο γραμμής εντολών ανοικτού κώδικα που δημιουργήθηκε για να βοηθήσει τους εισβολείς ασφαλείας και άλλους επαγγελματίες ασφάλειας να βρουν ευπάθειες διέξοδου επίθεσης στην υποδομή του νέφους.

cloudfox aws --profile [profile-name] all-checks
  • ScoutSuite: Το Scout Suite είναι ένα εργαλείο ανοικτού κώδικα για αξιολόγηση ασφάλειας πολλαπλών νέφων, το οποίο επιτρέπει την αξιολόγηση της ασφάλειας των περιβαλλόντων νέφους.

# Install
virtualenv -p python3 venv
source venv/bin/activate
pip install scoutsuite
scout --help

# Get info
scout aws -p dev
  • cs-suite: Το Cloud Security Suite (χρησιμοποιεί την python2.7 και φαίνεται να μην είναι σε συντήρηση)

  • Zeus: Το Zeus είναι ένα ισχυρό εργαλείο για την ενίσχυση των βέλτιστων πρακτικών ασφάλειας του AWS EC2 / S3 / CloudTrail / CloudWatch / KMS (φαίνεται να μην είναι σε συντήρηση). Ελέγχει μόνο τα προεπιλεγμένα διαμορφωμένα διαπιστευτήρια εντός του συστήματος.

Συνεχής Ελεγχος

  • cloud-custodian: Το Cloud Custodian είναι ένας κανόνες κινητήρας για τη διαχείριση λογαριασμών και πόρων δημόσιου νέφους. Επιτρέπει στους χρήστες να ορίζουν πολιτικές για τη δημιουργία μιας καλά διαχειριζόμενης υποδομής νέφους, η οποία είναι τόσο ασφαλής όσο και βελτιστοποιημένη από άποψη κόστους. Συγκεντρώνει πολλά από τα ανεπίσημα σενάρια που έχουν οι οργανισμοί σε ένα ελαφρύ και ευέλικτο εργαλείο, με ενιαία μετρήσεις και αναφορές.

  • pacbot: Το Policy as Code Bot (PacBot) είναι μια πλατφόρμα για συνεχή παρακολούθηση της συμμόρφωσης, αναφορά συμμόρφωσης και αυτοματοποίηση ασφάλειας για το νέφος. Στο PacBot, οι πολιτικές ασφάλειας και συμμόρφωσης υλοποιούνται ως κώδικας. Όλοι οι πόροι που ανακαλύπτονται από το PacBot αξιολογούνται έναντι αυτών των πολιτικών για να μετρηθεί η συμμόρφωση με τις πολιτικές. Το πλαίσιο αυτόματης διόρθωσης του PacBot παρέχει τη δυνατότητα αυτόματης αντίδρασης σε παραβιάσεις πολιτικής με λαμβανόμενες προκαθορισμένες ενέργειες.

  • streamalert: Το StreamAlert είναι ένα αναλυτικό πλαίσιο ανάλυσης δεδομένων σε πραγματικό χρόνο που σας επιτρέπει να εισάγετε, αναλύετε και ειδοποιείτε για δεδομένα από οποιοδήποτε περιβάλλον, χρησιμοποιώντας πηγές δεδομένων και λογική ειδοποίησης που ορίζετε. Οι ομάδες ασφαλείας υπολογιστών χρησιμοποιούν το StreamAlert για να σαρώνουν τεραβάιτ από δεδομένα καταγραφής κάθε μέρα για τον εντοπισμό και την αντίδραση σε περιστατικά.

DEBUG: Καταγραφή αιτημάτων AWS cli

# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080

# Capture with burp nor verifying ssl
aws --no-verify-ssl ...

# Dowload brup cert and transform it to pem
curl http://127.0.0.1:8080/cert --output Downloads/certificate.cer
openssl x509 -inform der -in Downloads/certificate.cer -out Downloads/certificate.pem

# Indicate the ca cert to trust
export AWS_CA_BUNDLE=~/Downloads/certificate.pem

# Run aws cli normally trusting burp cert
aws ...

Αναφορές

Μάθετε το hacking του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Last updated