AWS Pentesting
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Basic Information
Πριν ξεκινήσετε το pentesting ενός AWS περιβάλλοντος, υπάρχουν μερικά βασικά πράγματα που πρέπει να γνωρίζετε σχετικά με το πώς λειτουργεί το AWS για να σας βοηθήσει να κατανοήσετε τι πρέπει να κάνετε, πώς να βρείτε κακοδιαμορφώσεις και πώς να τις εκμεταλλευτείτε.
Έννοιες όπως η ιεραρχία οργανισμού, το IAM και άλλες βασικές έννοιες εξηγούνται σε:
Labs to learn
- https://github.com/RhinoSecurityLabs/cloudgoat
- https://github.com/BishopFox/iam-vulnerable
- https://github.com/nccgroup/sadcloud
- https://github.com/bridgecrewio/terragoat
- https://github.com/ine-labs/AWSGoat
- http://flaws.cloud/
- http://flaws2.cloud/
Tools to simulate attacks:
- https://github.com/Datadog/stratus-red-team/
- https://github.com/sbasu7241/AWS-Threat-Simulation-and-Detection/tree/main
AWS Pentester/Red Team Methodology
Για να ελέγξετε ένα AWS περιβάλλον, είναι πολύ σημαντικό να γνωρίζετε: ποιες υπηρεσίες χρησιμοποιούνται, τι εκτίθεται, ποιος έχει πρόσβαση σε τι και πώς συνδέονται οι εσωτερικές υπηρεσίες AWS με τις εξωτερικές υπηρεσίες.
Από την οπτική γωνία της Red Team, το πρώτο βήμα για να συμβιβαστεί ένα AWS περιβάλλον είναι να καταφέρετε να αποκτήσετε κάποια διαπιστευτήρια. Εδώ έχετε μερικές ιδέες για το πώς να το κάνετε αυτό:
- Leaks σε github (ή παρόμοια) - OSINT
- Social Engineering
- Password reuse (password leaks)
- Ευπάθειες σε AWS-Hosted Applications
- Server Side Request Forgery με πρόσβαση στο metadata endpoint
- Local File Read
/home/USERNAME/.aws/credentialsC:\Users\USERNAME\.aws\credentials- 3rd parties breached
- Internal Employee
- Cognito credentials
Ή με συμβιβασμό μιας μη αυθεντικοποιημένης υπηρεσίας που εκτίθεται:
AWS - Unauthenticated Enum & Access
Ή αν κάνετε μια ανασκόπηση, θα μπορούσατε απλώς να ζητήσετε διαπιστευτήρια με αυτούς τους ρόλους:
AWS - Permissions for a Pentest
Note
Αφού καταφέρετε να αποκτήσετε διαπιστευτήρια, πρέπει να γνωρίζετε σε ποιον ανήκουν αυτά τα creds, και σε τι έχουν πρόσβαση, οπότε πρέπει να εκτελέσετε κάποια βασική αρίθμηση:
Basic Enumeration
SSRF
Αν βρείτε ένα SSRF σε μια μηχανή μέσα στο AWS, ελέγξτε αυτή τη σελίδα για κόλπα:
Whoami
Ένα από τα πρώτα πράγματα που πρέπει να γνωρίζετε είναι ποιος είστε (σε ποιον λογαριασμό είστε και άλλες πληροφορίες σχετικά με το AWS env):
# 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
Caution
Σημειώστε ότι οι εταιρείες μπορεί να χρησιμοποιούν canary tokens για να εντοπίσουν πότε κωδικοί πρόσβασης κλέβονται και χρησιμοποιούνται. Συνιστάται να ελέγξετε αν ένας κωδικός είναι canary token ή όχι πριν τον χρησιμοποιήσετε.
Για περισσότερες πληροφορίες ελέγξτε αυτή τη σελίδα.
Org Enumeration
IAM Enumeration
Αν έχετε αρκετά δικαιώματα, ο έλεγχος των προνομίων κάθε οντότητας μέσα στον λογαριασμό AWS θα σας βοηθήσει να κατανοήσετε τι μπορείτε να κάνετε εσείς και άλλες ταυτότητες και πώς να κλιμακώσετε τα προνόμια.
Αν δεν έχετε αρκετά δικαιώματα για να καταγράψετε το IAM, μπορείτε να τα κλέψετε με brute force για να τα ανακαλύψετε.
Δείτε πώς να κάνετε την καταγραφή και το brute-forcing στο:
AWS - IAM, Identity Center & SSO Enum
Note
Τώρα που έχετε κάποιες πληροφορίες για τα διαπιστευτήριά σας (και αν είστε red team ελπίζω να δεν έχετε εντοπιστεί). Είναι καιρός να κατανοήσετε ποιες υπηρεσίες χρησιμοποιούνται στο περιβάλλον.
Στην επόμενη ενότητα μπορείτε να δείτε μερικούς τρόπους για να καταγράψετε κάποιες κοινές υπηρεσίες.
Services Enumeration, Post-Exploitation & Persistence
Η AWS έχει μια εκπληκτική ποσότητα υπηρεσιών, στην επόμενη σελίδα θα βρείτε βασικές πληροφορίες, καταγραφές cheatsheets**,** πώς να αποφύγετε την ανίχνευση, να αποκτήσετε επιμονή, και άλλα tricks post-exploitation για μερικές από αυτές:
Σημειώστε ότι δεν χρειάζεται να εκτελέσετε όλη τη δουλειά χειροκίνητα, παρακάτω σε αυτή την ανάρτηση μπορείτε να βρείτε μια ενότητα σχετικά με αυτόματα εργαλεία.
Επιπλέον, σε αυτό το στάδιο μπορεί να έχετε ανακαλύψει περισσότερες υπηρεσίες εκτεθειμένες σε μη αυθεντικοποιημένους χρήστες, μπορεί να είστε σε θέση να τις εκμεταλλευτείτε:
AWS - Unauthenticated Enum & Access
Privilege Escalation
Αν μπορείτε να ελέγξετε τουλάχιστον τα δικά σας δικαιώματα σε διάφορους πόρους, θα μπορούσατε να ελέγξετε αν μπορείτε να αποκτήσετε περαιτέρω δικαιώματα. Πρέπει να εστιάσετε τουλάχιστον στα δικαιώματα που αναφέρονται σε:
Publicly Exposed Services
Κατά την καταγραφή υπηρεσιών AWS μπορεί να έχετε βρει κάποιες από αυτές να εκθέτουν στοιχεία στο Διαδίκτυο (θύρες VM/Containers, βάσεις δεδομένων ή υπηρεσίες ουρών, στιγμιότυπα ή κάδους…).
Ως pentester/red teamer θα πρέπει πάντα να ελέγχετε αν μπορείτε να βρείτε ευαίσθητες πληροφορίες / ευπάθειες σε αυτές καθώς μπορεί να σας παρέχουν περαιτέρω πρόσβαση στον λογαριασμό AWS.
Σε αυτό το βιβλίο θα πρέπει να βρείτε πληροφορίες σχετικά με το πώς να βρείτε εκτεθειμένες υπηρεσίες AWS και πώς να τις ελέγξετε. Για το πώς να βρείτε ευπάθειες σε εκτεθειμένες υπηρεσίες δικτύου θα σας συνιστούσα να αναζητήσετε την συγκεκριμένη υπηρεσία στο:
Compromising the Organization
From the root/management account
Όταν ο λογαριασμός διαχείρισης δημιουργεί νέους λογαριασμούς στην οργάνωση, δημιουργείται μια νέα ρόλος στον νέο λογαριασμό, που ονομάζεται από προεπιλογή OrganizationAccountAccessRole και δίνει πολιτική AdministratorAccess στον λογαριασμό διαχείρισης για να έχει πρόσβαση στον νέο λογαριασμό.
.png)
Έτσι, για να αποκτήσετε πρόσβαση ως διαχειριστής σε έναν παιδικό λογαριασμό χρειάζεστε:
- Συμβιβασμός του λογαριασμού διαχείρισης και εύρεση του ID των παιδικών λογαριασμών και των ονόματων της ρόλου (OrganizationAccountAccessRole από προεπιλογή) που επιτρέπει στον λογαριασμό διαχείρισης να έχει πρόσβαση ως διαχειριστής.
- Για να βρείτε τους παιδικούς λογαριασμούς, πηγαίνετε στην ενότητα οργανώσεων στην κονσόλα aws ή εκτελέστε
aws organizations list-accounts - Δεν μπορείτε να βρείτε το όνομα των ρόλων άμεσα, οπότε ελέγξτε όλες τις προσαρμοσμένες πολιτικές IAM και αναζητήστε οποιαδήποτε επιτρέπει
sts:AssumeRoleπάνω στους προηγουμένως ανακαλυφθέντες παιδικούς λογαριασμούς. - Συμβιβασμός ενός principal στον λογαριασμό διαχείρισης με
sts:AssumeRoleάδεια πάνω στη ρόλο στους παιδικούς λογαριασμούς (ακόμα και αν ο λογαριασμός επιτρέπει σε οποιονδήποτε από τον λογαριασμό διαχείρισης να προσποιείται, καθώς είναι εξωτερικός λογαριασμός, συγκεκριμένες άδειεςsts:AssumeRoleείναι απαραίτητες).
Automated Tools
Recon
- aws-recon: Ένα εργαλείο συλλογής αποθεμάτων επικεντρωμένο στην ασφάλεια AWS, γραμμένο σε Ruby.
# 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 συλλέγει περιουσιακά στοιχεία και σχέσεις από υπηρεσίες και συστήματα, συμπεριλαμβανομένης της υποδομής cloud, εφαρμογών SaaS, ελέγχων ασφαλείας και άλλων, σε μια διαισθητική γραφική απεικόνιση που υποστηρίζεται από τη βάση δεδομένων Neo4j.
- aws-inventory: (Χρησιμοποιεί python2) Αυτό είναι ένα εργαλείο που προσπαθεί να ανακαλύψει όλα AWS resources που έχουν δημιουργηθεί σε έναν λογαριασμό.
- 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 exploitation framework, σχεδιασμένο για επιθετική δοκιμή ασφαλείας σε περιβάλλοντα cloud. Μπορεί να καταγράψει, να βρει λάθη διαμόρφωσης και να τα εκμεταλλευτεί. Μπορείτε να βρείτε τον ορισμό των προνομιακών αδειών στο https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134 μέσα στο λεξικό
user_escalation_methods. - Σημειώστε ότι το pacu ελέγχει μόνο τα δικά σας μονοπάτια privesc (όχι σε επίπεδο λογαριασμού).
# 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 Users και Roles σε έναν λογαριασμό ως κατευθυνόμενο γράφο, που επιτρέπει ελέγχους για privilege escalation και για εναλλακτικές διαδρομές που θα μπορούσε να ακολουθήσει ένας επιτιθέμενος για να αποκτήσει πρόσβαση σε έναν πόρο ή ενέργεια στο AWS. Μπορείτε να ελέγξετε τις permissions που χρησιμοποιούνται για να βρείτε privesc διαδρομές στα ονόματα αρχείων που τελειώνουν σε
_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 με προτεραιότητα κινδύνου.
Θα σας δείξει πιθανά υπερβολικά προνομιακά πελάτες, inline και aws πολιτικές και ποιοι προσωπικοί έχουν πρόσβαση σε αυτές. (Ελέγχει όχι μόνο για privesc αλλά και για άλλου είδους ενδιαφέρουσες άδειες, συνιστάται η χρήση του).
# 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 για ευπάθειες hijacking υποτομέων ως αποτέλεσμα αποσυνδεδεμένων ρυθμίσεων Route53 και CloudFront.
- ccat: Λίστα ECR repos -> Pull ECR repo -> Backdoor it -> Push backdoored image
- Dufflebag: Το Dufflebag είναι ένα εργαλείο που αναζητά μέσω δημόσιων στιγμιότυπων Elastic Block Storage (EBS) για μυστικά που μπορεί να έχουν αφεθεί κατά λάθος.
Audit
- 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 σας βοηθά να αποκτήσετε κατάσταση επίγνωσης σε άγνωστα περιβάλλοντα cloud. Είναι ένα εργαλείο γραμμής εντολών ανοιχτού κώδικα που δημιουργήθηκε για να βοηθήσει τους penetration testers και άλλους επαγγελματίες επιθετικής ασφάλειας να βρουν εκμεταλλεύσιμους επιθετικούς δρόμους στην υποδομή cloud.
cloudfox aws --profile [profile-name] all-checks
- ScoutSuite: Το Scout Suite είναι ένα εργαλείο ανοιχτού κώδικα για τον έλεγχο ασφαλείας πολλαπλών cloud, το οποίο επιτρέπει την αξιολόγηση της ασφάλειας των περιβαλλόντων cloud.
# 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 είναι μια μηχανή κανόνων για τη διαχείριση δημόσιων λογαριασμών και πόρων cloud. Επιτρέπει στους χρήστες να ορίζουν πολιτικές για να επιτρέπουν μια καλά διαχειριζόμενη υποδομή cloud, που είναι τόσο ασφαλής όσο και βελτιστοποιημένη για κόστος. Συγκεντρώνει πολλά από τα ad-hoc σενάρια που έχουν οι οργανισμοί σε ένα ελαφρύ και ευέλικτο εργαλείο, με ενοποιημένα μετρήσεις και αναφορές.
- pacbot: Policy as Code Bot (PacBot) είναι μια πλατφόρμα για συνεχή παρακολούθηση συμμόρφωσης, αναφορά συμμόρφωσης και αυτοματοποίηση ασφάλειας για το cloud. Στο PacBot, οι πολιτικές ασφάλειας και συμμόρφωσης υλοποιούνται ως κώδικας. Όλοι οι πόροι που ανακαλύπτονται από το PacBot αξιολογούνται σύμφωνα με αυτές τις πολιτικές για να εκτιμηθεί η συμμόρφωση με τις πολιτικές. Το πλαίσιο auto-fix του PacBot παρέχει τη δυνατότητα αυτόματης αντίδρασης σε παραβιάσεις πολιτικής αναλαμβάνοντας προκαθορισμένες ενέργειες.
- streamalert: Το StreamAlert είναι ένα serverless, σε πραγματικό χρόνο πλαίσιο ανάλυσης δεδομένων που σας δίνει τη δυνατότητα να εισάγετε, αναλύετε και ειδοποιείτε για δεδομένα από οποιοδήποτε περιβάλλον, χρησιμοποιώντας πηγές δεδομένων και λογική ειδοποίησης που ορίζετε. Οι ομάδες ασφάλειας υπολογιστών χρησιμοποιούν το 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 ...
Αναφορές
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Δείτε τα subscription plans!
- Εγγραφείτε στο 💬 Discord group ή την telegram group ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα hacking tricks υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
HackTricks Cloud

