GWS - Google Platforms Phishing

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Genel Phishing Metodolojisi

Phishing Methodology - HackTricks

Google Groups Phishing

Görünüşe göre varsayılan olarak Workspace üyeleri grup oluşturabilirler ve insanları bunlara davet edebilirler. Daha sonra kullanıcıya gönderilecek e-postayı bazı linkler ekleyerek değiştirebilirsiniz. E-posta bir google adresinden gelecek, bu yüzden meşru görünecek ve insanlar linke tıklayabilir.

Ayrıca FROM adresini Google grup e-postası olarak ayarlayarak grup içindeki kullanıcılara daha fazla e-posta göndermek mümkün, aşağıdaki görüntüde google--support@googlegroups.com adlı grup oluşturulmuş ve gruptaki tüm üyelere (herhangi bir onay olmadan eklenen) bir e-posta gönderilmiş.

Google Chat Phishing

Sadece e-posta adresine sahip olarak bir kişi ile sohbet başlatabilir veya bir konuşma daveti gönderebilirsiniz. Ayrıca herhangi bir isim alabilecek bir Space oluşturmak (ör. “Google Support”) ve üyeleri buraya davet etmek mümkün. Kabul ederlerse Google Support ile konuştuğunu düşünebilirler:

Tip

Testlerimde davet edilen üyelerin davetiye bile almadıklarını gördüm.

Bunun geçmişte nasıl çalıştığını şu adreste görebilirsiniz: https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s

Google Doc Phishing

Eskiden görünüşte meşru bir doküman oluşturup bir yorumda bir e-postayı (@user@gmail.com gibi) etiketlemek mümkündü. Google, o e-posta adresine dokümanda bahsedildiğine dair bir e-posta gönderiyordu.
Günümüzde bu çalışmıyor ama eğer mağdurun e-posta adresine dokümana erişim verirseniz Google bununla ilgili bir e-posta gönderecektir. Birini bahsettiğinizde görünen mesaj şudur:

Tip

Mağdurların, harici bir dokümanın onlarla paylaşıldığını belirten e-postaların kendilerine ulaşmasını engelleyen koruma mekanizmaları olabilir.

Google Calendar Phishing

Bir takvim etkinliği oluşturabilir ve saldırdığınız şirkette sahip olduğunuz kadar çok e-posta adresi ekleyebilirsiniz. Bu takvim etkinliğini mevcut zamandan 5 veya 15 dk sonraya ayarlayın. Etkinliği meşru gösterin ve okumaları gerektiğini belirten bir yorum ve başlık ekleyin (içinde phishing link ile).

Tarayıcıda “Firing People” adlı bir toplantı başlığıyla görünecek uyarı budur; bu yüzden daha phishing tarzı bir başlık belirleyebilir (hatta e-postanıza bağlı ismi değiştirebilirsiniz).

Daha az şüpheli görünmesi için:

  • Alıcıların diğer davetli kişileri görmesini engelleyecek şekilde ayarlayın
  • Etkinlikle ilgili bildirim e-postaları GÖNDERMEYİN. Böylece kişiler yalnızca 5 dakika içinde bir toplantı uyarısı görür ve o linki okumaları gerektiğini düşünürler.
  • Görünüşe göre API kullanarak people için accepted değerini True yapabilir ve onların adına yorumlar oluşturabilirsiniz.

App Scripts Redirect Phishing

script oluşturup bunu https://script.google.com/ üzerinde herkesin erişebileceği bir web uygulaması olarak açığa çıkarabilir ve meşru domain script.google.com kullanılmasını sağlayabilirsiniz.
Aşağıdaki gibi bir kodla saldırgan, domain’e erişimi sürdürerek bu sayfada keyfi içerik yükleyebilir:

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)
}

For example accessing https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec you will see:

Tip

İçerik bir iframe içinde yüklendiği için bir uyarı görüneceğini unutmayın.

App Scripts OAuth Phishing

Belgelere eklenmiş App Scripts oluşturarak bir kurbanın OAuth token’ına erişmeye çalışmak mümkündür, daha fazla bilgi için bakınız:

GWS - App Scripts

OAuth Apps Phishing

Önceki tekniklerin herhangi biri, kullanıcıyı bir Google OAuth application’a erişecek şekilde yönlendirmek için kullanılabilir; bu uygulama kullanıcıdan bazı access’ler request edebilir. Eğer kullanıcı trusts ettiği source’u trusts ederse, application’ı da trust edebilir (yüksek ayrıcalıklı izinler istese bile).

Note

Google, uygulama güvenilmez kabul edildiğinde kullanıcıya çirkin bir uyarı sunar ve Workspace yöneticileri insanların OAuth uygulamalarını kabul etmesini engelleyebilirler.

Google, bir uygulamanın çeşitli Google services üzerinde kullanıcılar adına interact etmesine izin verecek uygulamalar oluşturulmasına izin verir: Gmail, Drive, GCP…

Diğer kullanıcılar adına act on behalf other users yapmak üzere bir uygulama oluştururken, geliştiricinin bir OAuth app inside GCP oluşturması ve uygulamanın kullanıcı verilerine erişmesi için ihtiyaç duyduğu scope’ları (izinleri) belirtmesi gerekir.
Bir user uygulamayı use etmek istediğinde, uygulamanın scope’larda belirtilen verilerine erişmesine izin vermek için accept etmesi konusunda prompted edilir.

Bu, teknik olmayan kullanıcıları hassas bilgilere erişen applications kullanmaya ikna etmek için çok verimli bir phishing yoludur çünkü sonuçlarını anlamayabilirler. Ancak, organizasyon hesaplarında bunun olmasını engellemenin yolları vardır.

Unverified App prompt

Daha önce bahsedildiği gibi, google her zaman kullanıcının uygulamaya kendisi adına verdiği izinleri accept etmesi için bir prompt gösterecektir. Ancak uygulama dangerous kabul edilirse, google önce uygulamanın dangerous olduğunu belirten bir prompt gösterir ve kullanıcının uygulamaya izin vermesini daha zorlaştırır.

Bu prompt aşağıdaki uygulamalarda görünür:

  • Private verilere erişebilen herhangi bir scope kullanan uygulamalar (Gmail, Drive, GCP, BigQuery…)
  • 100’den az kullanıcıya sahip uygulamalar (100’den fazla kullanıcıya sahip uygulamalar için ayrıca bir inceleme süreci gerekir, aksi takdirde unverified prompt gösterilmeye devam eder)

Interesting Scopes

Here you can find a list of all the Google OAuth scopes.

  • cloud-platform: View and manage your data across Google Cloud Platform services. You can impersonate the user in GCP.
  • admin.directory.user.readonly: See and download your organization’s GSuite directory. Get names, phones, calendar URLs of all the users.

Create an OAuth App

Start creating an OAuth Client ID

  1. Go to https://console.cloud.google.com/apis/credentials/oauthclient and click on configure the consent screen.
  2. Then, you will be asked if the user type is internal (only for people in your org) or external. Select the one that suits your needs
  • Internal might be interesting you have already compromised a user of the organization and you are creating this App to phish another one.
  1. Give a name to the app, a support email (note that you can set a googlegroup email to try to anonymize yourself a bit more), a logo, authorized domains and another email for updates.
  2. Select the OAuth scopes.
  • This page is divided in non sensitive permissions, sensitive permissions and restricted permissions. Eveytime you add a new permisison it’s added on its category. Depending on the requested permissions different prompt will appear to the user indicating how sensitive these permissions are.
  • Both admin.directory.user.readonly and cloud-platform are sensitive permissions.
  1. Add the test users. As long as the status of the app is testing, only these users are going to be able to access the app so make sure to add the email you are going to be phishing.

Now let’s get credentials for a web application using the previously created OAuth Client ID:

  1. Go back to https://console.cloud.google.com/apis/credentials/oauthclient, a different option will appear this time.
  2. Select to create credentials for a Web application
  3. Set needed Javascript origins and redirect URIs
  • You can set in both something like http://localhost:8000/callback for testing
  1. Get your application credentials

Finally, lets run a web application that will use the OAuth application credentials. You can find an example in 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 prompted with a message like this one:

Uygulama kolayca kullanılabilecek access and refresh token’ları gösterecektir. Bu tokenların nasıl kullanılacağı hakkında daha fazla bilgi için bak:

GCP - Token Persistence

Using glcoud

Web console yerine glcoud kullanarak bazı işlemler yapmak mümkündür, bak:

GCP - ClientAuthConfig Privesc

OAuth app protections

Varsayılan olarak Workspace organizasyonu içindeki herhangi bir kullanıcı can accecpt any OAuth app with any permissions, ancak bunları yalnızca Sign in with Google için gereken temel bilgileri isteyen uygulamalarla sınırlamak veya üçüncü taraf uygulamalara hiç izin vermemek mümkündür.

Ayrıca, harici üçüncü taraf uygulamalara güvenilmesine izin verilmese bile trust any internal apps (organizasyon içinde oluşturulan uygulamalar) için güven izni vermek mümkündür. Bu güven default olarak yapılandırılmıştır.

Bir kullanıcı bir OAuth uygulamasına yetki verdiğinde, Google Workspace bunu Admin Reports OAuth Token Audit Activity (application name token) içine events.name değeri authorize olarak kaydeder. Bu eventler consent phishing’i tespit etmek ve verilen client ID ile scopes’ları izlemek için en iyi telemetri kaynağıdır.

Denetim kaydından çıkarılacak ana alanlar:

  • id.time, id.customerId
  • actor.email, actor.profileId
  • ipAddress, networkInfo.regionCode, networkInfo.subdivisionCode
  • events[0]['parameters'] içindeki client_id, app_name, scope, scope_data değerleri

Baseline first (reduce noise): mevcut client ID’lerin ve scopes’ın envanterini oluşturun; ardından yeni/nispeten nadir onaylar için uyarı verin.

gam all users print tokens todrive

Tespit fikirleri (yeni/nadir uygulama + riskli scopes):

  • Uyarı oluşturun eğer bir client_id onaylı allowlist’te değilse ve son X gün içinde görülmemişse (ör. 90).
  • Uyarı oluşturun eğer verilen scope yüksek riskli veya nadir scopes içeriyorsa, özellikle toplu veri erişimi veya tedarik zinciri etkisi sağlayanlar gibi:
  • 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)

Yanıt / sınırlama:

  • Kötü amaçlı OAuth client ID için tokenleri iptal et:
gam all users delete tokens clientId <client_id>
  • OAuth client ID’sini Admin Console’da, uygulamanın Google verilerine erişimini iptal ederek bloke edin.

Threat hunting pivots:

  • N’den az kullanıcı tarafından onaylanmış dış uygulamaları listeleyin (nadir kullanım).
  • Uygulama adı, yayıncı, izinler (scopes) ve benzersiz uygulama kimliğini (application ID) inceleyin.
  • Aniden riskli izinler kullanmaya başlayan atıl uygulamaları arayın (kurum içi phishing veya veri hırsızlığı gibi olası takip eylemleri).

Önlemler:

  • Tüm üçüncü taraf uygulama erişimini kısıtlayın (sadece yönetici onayıyla).
  • Kullanıcıların yalnızca temel “Sign in with Google” profil bilgilerine onay vermesine izin verecek şekilde sınırlı erişim sağlayın.

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin