GWS - Google Platforms Phishing

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

Γενική Μεθοδολογία Phishing

Phishing Methodology - HackTricks

Google Groups Phishing

Φαίνεται ότι, από προεπιλογή, στο workspace τα μέλη can create groups και μπορούν να προσκαλέσουν άτομα σε αυτές. Μπορείς στη συνέχεια να τροποποιήσεις το email που θα σταλεί στον χρήστη προσθέτοντας κάποιους συνδέσμους. Το email θα προέρχεται από μια google διεύθυνση, οπότε θα φαίνεται έγκυρο και οι άνθρωποι μπορεί να πατήσουν τον σύνδεσμο.

Επίσης είναι δυνατό να ορίσεις τη διεύθυνση FROM ως την Google group email για να στείλεις περισσότερα emails στα μέλη της ομάδας, όπως στην ακόλουθη εικόνα όπου η ομάδα google--support@googlegroups.com δημιουργήθηκε και ένα email στάλθηκε σε όλα τα μέλη της ομάδας (που προστέθηκαν χωρίς καμία συγκατάθεση)

Google Chat Phishing

Μπορεί να μπορέσεις είτε να ξεκινήσεις ένα chat με ένα άτομο έχοντας μόνο τη διεύθυνση email του είτε να στείλεις μια πρόσκληση για συνομιλία. Επιπλέον, είναι δυνατό να δημιουργήσεις ένα Space που μπορεί να έχει οποιοδήποτε όνομα (π.χ. “Google Support”) και να προσκαλέσεις μέλη σε αυτό. Αν δεχτούν μπορεί να πιστέψουν ότι μιλάνε με το Google Support:

Tip

Στις δοκιμές μου όμως οι προσκεκλημένοι δεν έλαβαν καν την πρόσκληση.

Μπορείς να δεις πώς λειτουργούσε αυτό στο παρελθόν εδώ: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Google Doc Phishing

Παλιότερα ήταν δυνατό να δημιουργήσεις ένα φαινομενικά νόμιμο έγγραφο και μετά σε ένα σχόλιο να αναφέρεις κάποιο email (όπως @user@gmail.com). Η Google έστελνε ένα email σε αυτή τη διεύθυνση ενημερώνοντας ότι αναφέρθηκαν στο έγγραφο.
Σήμερα αυτό δεν λειτουργεί, αλλά αν δώσεις στο θύμα πρόσβαση στο έγγραφο μέσω email η Google θα στείλει ένα email που το δηλώνει. Αυτό είναι το μήνυμα που εμφανίζεται όταν αναφέρεις κάποιον:

Tip

Τα θύματα μπορεί να έχουν μηχανισμούς προστασίας που δεν επιτρέπουν να φτάνουν στο email τους ειδοποιήσεις ότι ένα εξωτερικό έγγραφο μοιράστηκε μαζί τους.

Google Calendar Phishing

Μπορείς να δημιουργήσεις ένα calendar event και να προσθέσεις όσες διευθύνσεις email της εταιρείας που στοχεύεις έχεις. Προγραμμάτισε αυτό το calendar event σε 5 ή 15 min από την τωρινή ώρα. Κάνε το event να φαίνεται legit και βάλε ένα σχόλιο και έναν τίτλο που υποδεικνύει ότι πρέπει να διαβάσουν κάτι (με τον phishing link).

Αυτή είναι η ειδοποίηση που θα εμφανιστεί στον browser με τίτλο meeting “Firing People”, οπότε μπορείς να βάλεις έναν πιο phishing-ότι τίτλο (και ακόμα να αλλάξεις το όνομα που σχετίζεται με το email σου).

Για να φαίνεται λιγότερο ύποπτο:

  • Διάταξε το ώστε οι παραλήπτες να μην βλέπουν τα άλλα άτομα που προσκλήθηκαν
  • Κάνε NOT send emails notifying about the event. Έτσι, οι άνθρωποι θα βλέπουν μόνο την ειδοποίησή τους για ένα meeting σε 5 λεπτά και ότι πρέπει να διαβάσουν αυτόν τον σύνδεσμο.
  • Φαινομενικά χρησιμοποιώντας το API μπορείς να ορίσεις σε True ότι οι άνθρωποι έχουν accepted το event και ακόμα να δημιουργείς σχόλια στο όνομά τους.

App Scripts Redirect Phishing

Είναι δυνατό να δημιουργήσεις ένα script στο https://script.google.com/ και να το εκθέσεις ως web application προσβάσιμο από όλους που θα χρησιμοποιεί το έγκυρο domain script.google.com.
Με κάποιον κώδικα όπως ο ακόλουθος, ένας attacker θα μπορούσε να κάνει το script να φορτώνει αυθαίρετο περιεχόμενο σε αυτή τη σελίδα χωρίς να σταματήσει να χρησιμοποιεί το domain:

function doGet() {
return HtmlService.createHtmlOutput(
'<meta http-equiv="refresh" content="0;url=https://cloud.hacktricks.wiki/en/pentesting-cloud/workspace-security/gws-google-platforms-phishing/index.html#app-scripts-redirect-phishing">'
).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}

Για παράδειγμα, αν αποκτήσετε πρόσβαση στο https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec θα δείτε:

Tip

Σημειώστε ότι θα εμφανιστεί μια προειδοποίηση καθώς το περιεχόμενο φορτώνεται μέσα σε ένα iframe.

App Scripts OAuth Phishing

Είναι δυνατό να δημιουργηθούν App Scripts συνδεδεμένα με έγγραφα για να επιχειρήσουν να αποκτήσουν πρόσβαση στο OAuth token ενός θύματος. Για περισσότερες πληροφορίες δείτε:

GWS - App Scripts

OAuth Apps Phishing

Οποιαδήποτε από τις προηγούμενες τεχνικές μπορεί να χρησιμοποιηθεί για να κάνει τον χρήστη να ανοίξει μια Google OAuth application που θα ζητήσει από τον χρήστη κάποια πρόσβαση. Αν ο χρήστης εμπιστευτεί την πηγή, μπορεί να εμπιστευτεί και την εφαρμογή (ακόμα κι αν ζητάει υψηλά προνόμια).

Note

Σημειώστε ότι η Google εμφανίζει μια άσχημη προτροπή που προειδοποιεί ότι η εφαρμογή δεν είναι αξιόπιστη σε αρκετές περιπτώσεις και οι Workspace admins μπορούν ακόμη και να εμποδίσουν τους χρήστες να αποδέχονται OAuth applications.

Η Google επιτρέπει τη δημιουργία εφαρμογών που μπορούν να ενεργούν εκ μέρους χρηστών με διάφορες Google services: Gmail, Drive, GCP…

Όταν δημιουργείται μια εφαρμογή για να ενεργεί εκ μέρους άλλων χρηστών, ο προγραμματιστής πρέπει να δημιουργήσει μια OAuth app inside GCP και να δηλώσει τα scopes (permissions) που η εφαρμογή χρειάζεται για να έχει πρόσβαση στα δεδομένα των χρηστών. Όταν ένας χρήστης θέλει να χρησιμοποιήσει αυτήν την εφαρμογή, θα του ζητηθεί να αποδεχτεί ότι η εφαρμογή θα έχει πρόσβαση στα δεδομένα του που ορίζονται στα scopes.

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

Unverified App prompt

Όπως αναφέρθηκε, η Google θα εμφανίζει πάντα μια προτροπή στον χρήστη για να αποδεχτεί τα permissions που δίνει η εφαρμογή εκ μέρους του. Ωστόσο, αν η εφαρμογή θεωρηθεί επικίνδυνη, η Google θα εμφανίσει πρώτα μια προτροπή που υποδεικνύει ότι είναι επικίνδυνη και καθιστά πιο δύσκολη για τον χρήστη την παροχή των δικαιωμάτων στην εφαρμογή.

This prompt appears in apps that:

  • Χρησιμοποιούν οποιοδήποτε scope που μπορεί να αποκτήσει πρόσβαση σε ιδιωτικά δεδομένα (Gmail, Drive, GCP, BigQuery…)
  • Apps με λιγότερους από 100 users (apps > 100 a review process is also needed to stop showing the unverified prompt)

Interesting Scopes

Here μπορείτε να βρείτε μια λίστα με όλα τα Google OAuth scopes.

  • cloud-platform: View and manage your data across Google Cloud Platform services. Μπορείτε να παραστήσετε τον χρήστη στο GCP.
  • admin.directory.user.readonly: Δείτε και κατεβάστε τον κατάλογο GSuite της οργάνωσης. Λάβετε ονόματα, τηλέφωνα, calendar URLs όλων των χρηστών.

Create an OAuth App

Start creating an OAuth Client ID

  1. Πηγαίνετε στο https://console.cloud.google.com/apis/credentials/oauthclient και κάντε κλικ στο configure the consent screen.
  2. Στη συνέχεια, θα σας ζητηθεί αν ο user type είναι internal (μόνο για άτομα στην οργάνωσή σας) ή external. Επιλέξτε αυτό που ταιριάζει στις ανάγκες σας.
  • Το internal μπορεί να είναι χρήσιμο αν έχετε ήδη παραβιάσει έναν χρήστη της οργάνωσης και δημιουργείτε αυτή την App για να phish κάποιον άλλο.
  1. Δώστε ένα name στην app, ένα support email (σημειώστε ότι μπορείτε να ορίσετε ένα googlegroup email για να ανωνυμοποιηθείτε λίγο περισσότερο), ένα logo, authorized domains και ένα ακόμη email για updates.
  2. Select the OAuth scopes.
  • Αυτή η σελίδα είναι χωρισμένη σε non sensitive permissions, sensitive permissions και restricted permissions. Κάθε φορά που προσθέτετε μια νέα permission προστίθεται στην αντίστοιχη κατηγορία. Ανάλογα με τα requested permissions, θα εμφανιστούν διαφορετικά prompts στον χρήστη που υποδεικνύουν πόσο ευαίσθητες είναι αυτές οι permissions.
  • Both admin.directory.user.readonly and cloud-platform are sensitive permissions.
  1. Add the test users. Όσο η κατάσταση της app είναι testing, μόνο αυτοί οι users θα μπορούν να έχουν πρόσβαση στην app, οπότε βεβαιωθείτε να προσθέσετε το email που πρόκειται να phish-άρετε.

Τώρα ας πάρουμε credentials για μια web application χρησιμοποιώντας το προηγουμένως δημιουργημένο OAuth Client ID:

  1. Επιστρέψτε στο https://console.cloud.google.com/apis/credentials/oauthclient, αυτή τη φορά θα εμφανιστεί μια διαφορετική επιλογή.
  2. Επιλέξτε να create credentials for a Web application
  3. Ορίστε τα απαραίτητα Javascript origins και redirect URIs
  • Μπορείτε να ορίσετε και στα δύο κάτι σαν http://localhost:8000/callback για testing
  1. Πάρτε τα credentials της εφαρμογής σας

Τέλος, ας τρέξουμε μια web application που θα χρησιμοποιήσει τα OAuth application credentials. Μπορείτε να βρείτε ένα παράδειγμα στο https://github.com/carlospolop/gcp_oauth_phishing_example.

git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"

Go to http://localhost:8000 click on the Login with Google button, you will be θα σας εμφανιστεί with a message like this one:

The application will show the access and refresh token than can be easily used. For more information about πώς να χρησιμοποιήσετε αυτά τα tokens δείτε:

GCP - Token Persistence

Χρήση glcoud

Είναι δυνατό να κάνετε κάποιες ενέργειες χρησιμοποιώντας gcloud αντί της web console, δείτε:

GCP - ClientAuthConfig Privesc

Προστασίες OAuth app

Από προεπιλογή έχει ρυθμιστεί ώστε οποιοσδήποτε χρήστης εντός μιας οργάνωσης Workspace να μπορεί να αποδεχτεί οποιοδήποτε OAuth app με οποιαδήποτε permissions, αλλά είναι δυνατόν να περιοριστούν αυτά ώστε να επιτρέπονται μόνο εφαρμογές που ζητούν μόνο τις βασικές πληροφορίες που απαιτούνται για το Sign in with Google ή να μην επιτρέπονται καθόλου third-party apps.

Επιπλέον, ακόμα και αν δεν επιτρέπεται η εμπιστοσύνη σε εξωτερικά third-party apps, είναι δυνατό να επιτρέπεται να εμπιστευτούν οποιεσδήποτε εσωτερικές εφαρμογές (apps που δημιουργούνται εντός της οργάνωσης). Αυτή η εμπιστοσύνη είναι ρυθμισμένη από προεπιλογή.

Όταν ένας χρήστης εξουσιοδοτεί ένα OAuth app, το Google Workspace το καταγράφει στο Admin Reports OAuth Token Audit Activity (application name token) με το events.name ορισμένο σε authorize. Αυτά τα events είναι η καλύτερη τηλεμετρία για να ανιχνεύσετε consent phishing και να παρακολουθήσετε το client ID και τα scopes που χορηγήθηκαν.

Key fields to extract from the audit event:

  • id.time, id.customerId
  • actor.email, actor.profileId
  • ipAddress, networkInfo.regionCode, networkInfo.subdivisionCode
  • events[0]['parameters'] values for client_id, app_name, scope, scope_data

Καθορίστε baseline πρώτα (μείωση θορύβου): δημιουργήστε ένα inventory των υπαρχόντων client IDs και scopes, και στη συνέχεια ειδοποιήστε για νέες/σπάνιες consents.

gam all users print tokens todrive

Ιδέες ανίχνευσης (νέα/σπάνια app + επικίνδυνα scopes):

  • Ειδοποίηση αν ένα client_id είναι δεν βρίσκεται σε εγκεκριμένη allowlist και δεν εμφανίστηκε τις τελευταίες X ημέρες (π.χ., 90).
  • Ειδοποίηση αν το χορηγημένο scope περιλαμβάνει υψηλού κινδύνου ή σπάνια scopes, ειδικά αυτά που επιτρέπουν μαζική πρόσβαση σε δεδομένα ή έχουν επίπτωση στην αλυσίδα προμήθειας, όπως:
  • https://mail.google.com/
  • https://www.googleapis.com/auth/gmail.readonly
  • https://www.googleapis.com/auth/drive
  • https://www.googleapis.com/auth/drive.readonly
  • https://www.googleapis.com/auth/chat.messages
  • https://www.googleapis.com/auth/chromewebstore
client_id NOT IN approved_client_ids
AND client_id NOT IN last_seen_90d
AND scope CONTAINS any(high_risk_scopes OR rare_scopes)

Αντιμετώπιση / περιορισμός:

  • Ανακαλέστε τα tokens για το κακόβουλο OAuth client ID:
gam all users delete tokens clientId <client_id>
  • Αποκλείστε το OAuth client ID στο Admin Console ανακαλώντας την πρόσβαση της εφαρμογής στα δεδομένα του Google.

Threat hunting pivots:

  • Καταγράψτε εξωτερικές εφαρμογές στις οποίες έχει δοθεί συγκατάθεση από λιγότερους από N χρήστες (σπάνια υιοθέτηση).
  • Εξετάστε το όνομα της εφαρμογής, τον publisher, τα permissions/scopes και το μοναδικό application ID.
  • Αναζητήστε ανενεργές εφαρμογές που ξαφνικά χρησιμοποιούν επικίνδυνα permissions (πιθανές επακόλουθες ενέργειες όπως internal phishing ή κλοπή δεδομένων).

Μέτρα αντιμετώπισης:

  • Περιορίστε την πρόσβαση όλων των εφαρμογών τρίτων (μόνο εγκεκριμένες από τον admin).
  • Επιτρέψτε περιορισμένη πρόσβαση ώστε οι χρήστες να μπορούν να δίνουν συγκατάθεση μόνο για βασικές πληροφορίες προφίλ “Sign in with Google”.

Αναφορές

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