diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-exchange-hybrid-impersonation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-exchange-hybrid-impersonation.md
index 4eec1f6d7..ed0b452e7 100644
--- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-exchange-hybrid-impersonation.md
+++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-exchange-hybrid-impersonation.md
@@ -2,46 +2,66 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Temel Bilgiler
+## Temel Bilgi
-Eski Exchange Hybrid tasarımlarında, on-prem Exchange dağıtımı Exchange Online tarafından kullanılan aynı Entra uygulama kimliği olarak kimlik doğrulaması yapabiliyordu. Bir saldırgan Exchange sunucusunu ele geçirip hybrid sertifika özel anahtarını çıkartır ve bir OAuth client-credentials flow gerçekleştirirse, Exchange Online ayrıcalık bağlamına sahip first-party tokens elde edebilirdi.
+In legacy Exchange Hybrid designs, the on-prem Exchange deployment could authenticate as the same Entra application identity used by Exchange Online. If an attacker compromised the Exchange server, extracted the hybrid certificate private key, and performed an OAuth client-credentials flow, they could obtain first-party tokens with Exchange Online privilege context.
-Pratik risk yalnızca posta kutusu erişimiyle sınırlı değildi. Exchange Online'ın geniş arka uç güven ilişkileri olduğu için bu kimlik ek Microsoft 365 hizmetleriyle etkileşime girebilir ve eski davranışlarda daha derin tenant ele geçirilmesinde kullanılabiliyordu.
+Pratik risk yalnızca posta kutusu erişimiyle sınırlı değildi. Exchange Online'ın geniş arka uç güven ilişkileri nedeniyle bu kimlik ek Microsoft 365 hizmetleriyle etkileşime girebiliyor ve eski davranışta daha derin tenant kompromisine yol açabiliyordu.
## Saldırı Yolları ve Teknik Akış
-### Exchange üzerinden federation yapılandırmasını değiştirme
+### Modify Federation Configuration via Exchange
-Exchange token'ları tarihsel olarak domain/federasyon ayarlarını yazma izinlerine sahipti. Bir saldırgan bakış açısından bu, token-signing certificate listeleri ve on-prem federasyon altyapısından gelen MFA-claim kabulünü kontrol eden yapılandırma bayrakları dahil olmak üzere federated domain güven verilerinin doğrudan değiştirilmesine imkan veriyordu.
+Exchange tokens historically had permissions to write domain/federation settings. From an attacker perspective, this enabled direct manipulation of federated domain trust data, including token-signing certificate lists and configuration flags that controlled MFA-claim acceptance from on-prem federation infrastructure.
-Bu, ele geçirilmiş bir Exchange Hybrid sunucusunun, saldırgan sadece on-prem Exchange'i ele geçirmiş olsa bile, federasyon yapılandırmasını bulut tarafından değiştirerek ADFS-style impersonation'ı sahnelemek veya güçlendirmek için kullanılabileceği anlamına gelir.
+Bu, saldırgan perspektifinden token-signing sertifika listeleri ve on-prem federation altyapısından gelen MFA-claim kabulünü kontrol eden yapılandırma bayrakları dahil olmak üzere federated domain güven verisinin doğrudan manipüle edilebilmesini sağlıyordu. Exchange tokenları tarihsel olarak domain/federation ayarlarını yazma izinlerine sahipti.
+
+That means a compromised Exchange Hybrid server could be used to stage or reinforce ADFS-style impersonation by changing federation config from the cloud side, even when the attacker started only from on-prem Exchange compromise.
+
+Bu, ele geçirilmiş bir Exchange Hybrid sunucusunun, saldırgan sadece on-prem Exchange'yi ele geçirmiş olsa bile, federasyon konfigürasyonunu bulut tarafından değiştirerek ADFS-style impersonation'ı sahnelemek veya güçlendirmek için kullanılabileceği anlamına gelir.
### ACS Actor Tokens and Service-to-Service Impersonation
-Exchange'in hybrid auth yolu Access Control Service (ACS) actor token'larını `trustedfordelegation=true` ile kullanıyordu. Bu actor token'lar daha sonra hedef kullanıcı kimliğini saldırgan kontrollü bir bölümde taşıyan ikinci, imzasız bir service token'ın içine gömülüyordu. Dış token imzasız ve actor token geniş yetki devretmiş olduğundan, çağıran yeniden kimlik doğrulamaya gerek kalmadan hedef kullanıcıları değiştirebiliyordu.
+Exchange's hybrid auth path used Access Control Service (ACS) actor tokens with `trustedfordelegation=true`. Those actor tokens were then embedded into a second, unsigned service token that carried the target user identity in an attacker-controlled section. Because the outer token was unsigned and the actor token delegated broadly, the caller could swap target users without re-authenticating.
-Pratikte, actor token elde edildikten sonra saldırganın yaklaşık 24 saat süren ve ömrü ortasında iptal edilmesi zor olan uzun süreli bir impersonation primitive'i olurdu. Bu, Exchange Online ve SharePoint/OneDrive API'leri genelinde kullanıcı impersonation'ına ve yüksek değerli data exfiltration'a imkan veriyordu.
+Exchange'in hybrid auth yolu, `trustedfordelegation=true` ile Access Control Service (ACS) actor tokenlarını kullanıyordu. Bu actor tokenlar daha sonra hedef kullanıcı kimliğini saldırganın kontrol ettiği bir bölümde taşıyan, imzasız ikinci bir service token içine gömülüyordu. Dış token imzasız ve actor token geniş yetki devretmiş olduğundan, çağıran yeniden kimlik doğrulaması yapmadan hedef kullanıcıları değiştirebiliyordu.
-Tarihsel olarak aynı desen, kurbanın `netId` değeriyle bir impersonation token oluşturarak `graph.windows.net`'e karşı da çalışıyordu. Bu, rastgele kullanıcılar olarak doğrudan Entra yönetimsel işlemleri gerçekleştirilmesine ve tam tenant ele geçirme iş akışlarına imkan veriyordu (örneğin yeni bir Global Administrator hesabı oluşturmak).
+In practice, once the actor token was obtained, the attacker had a long-lived impersonation primitive (typically around 24 hours) that was difficult to revoke mid-lifetime. This enabled user impersonation across Exchange Online and SharePoint/OneDrive APIs, including high-value data exfiltration.
-## Artık Çalışmayanlar
+Pratikte, actor token elde edildiğinde saldırganın ortalama ~24 saat süren ve süresi dolmadan iptali zor olan uzun ömürlü bir impersonation primitive'i vardı. Bu, Exchange Online ve SharePoint/OneDrive API'leri üzerinde kullanıcı impersonation'ına ve yüksek değerli veri exfiltration'ına olanak sağlıyordu.
-`graph.windows.net` impersonation yolu Exchange Hybrid actor token'ları aracılığıyla düzeltilmiştir. Eski "Exchange'ten herhangi bir Entra admin'e Graph üzerinden" zinciri bu belirli token rotası için kaldırılmış sayılmalıdır.
+Historically, the same pattern also worked against `graph.windows.net` by building an impersonation token with the victim's `netId` value. That provided direct Entra administrative action as arbitrary users and enabled full-tenant takeover workflows (for example, creating a new Global Administrator account).
-Saldırıyı belgelendirirken bu en önemli düzeltmedir: Exchange/SharePoint impersonation riskini artık yamalanmış olan Graph impersonation yükseltmesinden ayrı tutun.
+Tarihsel olarak, aynı desen kurbanın `netId` değeriyle bir impersonation tokenı oluşturarak `graph.windows.net` karşısında da işe yarıyordu. Bu, rastgele kullanıcılar olarak doğrudan Entra yönetici aksiyonu yapılmasına izin veriyor ve tam tenant takeover iş akışlarını mümkün kılıyordu (örneğin yeni bir Global Administrator hesabı oluşturmak).
+
+## What No Longer Works
+
+The `graph.windows.net` impersonation path via Exchange Hybrid actor tokens has been fixed. The old "Exchange to arbitrary Entra admin over Graph" chain should be considered removed for this specific token route.
+
+`graph.windows.net` üzerinden Exchange Hybrid actor tokenları yoluyla impersonation yolu düzeltilmiştir. Eski "Exchange to arbitrary Entra admin over Graph" zinciri bu özel token rotası için kaldırılmış olarak kabul edilmelidir.
+
+This is the most important correction when documenting the attack: keep the Exchange/SharePoint impersonation risk separate from the now-patched Graph impersonation escalation.
+
+Bu, saldırıyı belgelendirirken en önemli düzeltmedir: Exchange/SharePoint impersonation riskini şimdi yamalanmış Graph impersonation yükselmesiyle ayrı ayrı ele alın.
## Pratikte Hâlâ Önemli Olabilecekler
-Bir organizasyon hâlâ paylaşılan trust içeren eski veya eksik bir hybrid yapılandırma ve açığa çıkmış sertifika materyali çalıştırıyorsa, Exchange/SharePoint impersonation etkisi ciddi kalabilir. Federasyon-yapılandırma kötüye kullanım açısı da tenant kurulumuna ve migration durumuna bağlı olarak hâlâ ilgili olabilir.
+If an organization still runs an old or incomplete hybrid configuration with shared trust and exposed certificate material, Exchange/SharePoint impersonation impact can remain severe. The federation-configuration abuse angle can also remain relevant depending on tenant setup and migration state.
-Microsoft'un uzun vadeli hafifletmesi, on-prem ve Exchange Online kimliklerini ayırmak ve böylece shared-service-principal trust yolunun artık mevcut olmamasını sağlamaktır. Bu migrasyonu tamamlayan ortamlar bu saldırı yüzeyini önemli ölçüde azaltır.
+Bir kuruluş hâlâ paylaşılan trust ve açığa çıkmış sertifika materyali ile eski veya tamamlanmamış bir hybrid konfigürasyonu çalıştırıyorsa, Exchange/SharePoint impersonation etkisi ciddi kalabilir. Federation-configuration suiistimali açısı da tenant kurulumu ve migration durumu bağlı olarak alaka düzeyini koruyabilir.
+
+Microsoft's long-term mitigation is splitting the on-prem and Exchange Online identities so the shared-service-principal trust path no longer exists. Environments that completed that migration materially reduce this attack surface.
+
+Microsoft'un uzun vadeli hafifletmesi, on-prem ve Exchange Online kimliklerini ayırmak; böylece shared-service-principal trust yolu artık ortadan kalkar. Bu migrasyonu tamamlayan ortamlar bu saldırı yüzeyini önemli ölçüde azaltır.
## Tespit Notları
-Bu teknik kötüye kullanıldığında, audit olayları user principal name'in impersonate edilmiş bir kullanıcıya karşılık geldiği, ancak display/source bağlamının Exchange Online etkinliğine işaret ettiği kimlik uyumsuzlukları gösterebilir. Bu karışık kimlik paterni yüksek değerli bir hunting sinyalidir; ancak savunucular yanlış pozitifleri azaltmak için meşru Exchange-admin iş akışlarını bazeline almalıdır.
+When this technique is abused, audit events can show identity mismatches where the user principal name corresponds to an impersonated user while the display/source context points to Exchange Online activity. That mixed identity pattern is a high-value hunting signal, though defenders should baseline legitimate Exchange-admin workflows to reduce false positives.
+
+Bu teknik suistimal edildiğinde, denetim olayları user principal name'in impersonated user ile eşleştiği ancak display/source bağlamının Exchange Online aktivitesine işaret ettiği kimlik uyuşmazlıkları gösterebilir. Bu karışık kimlik paterni yüksek değerli bir hunting sinyalidir; ancak savunucuların false positive'leri azaltmak için meşru Exchange-admin iş akışlarını temel alması gerekir.
## References
-- https://www.youtube.com/watch?v=rzfAutv6sB8
+- [https://www.youtube.com/watch?v=rzfAutv6sB8](https://www.youtube.com/watch?v=rzfAutv6sB8)
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-cloud/workspace-security/gws-google-platforms-phishing/README.md b/src/pentesting-cloud/workspace-security/gws-google-platforms-phishing/README.md
index 166eff82f..84e1cdee9 100644
--- a/src/pentesting-cloud/workspace-security/gws-google-platforms-phishing/README.md
+++ b/src/pentesting-cloud/workspace-security/gws-google-platforms-phishing/README.md
@@ -2,7 +2,7 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Generic Phishing Methodology
+## Genel Phishing Metodolojisi
{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
@@ -10,51 +10,51 @@ https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-met
## Google Groups Phishing
-Görünüşe göre, varsayılan olarak, workspace üyeleri [**gruplar oluşturabilir**](https://groups.google.com/all-groups) **ve insanları davet edebilirler**. Daha sonra kullanıcıya gönderilecek e-postayı **bazı bağlantılar ekleyerek** değiştirebilirsiniz. **E-posta bir google adresinden gelecektir**, bu nedenle **gerçekçi** görünecek ve insanlar bağlantıya tıklayabilir.
+Görünüşe göre varsayılan olarak Workspace üyeleri [**grup oluşturabilirler**](https://groups.google.com/all-groups) **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 ayarlamak da mümkündür, böylece **gruptaki kullanıcılara daha fazla e-posta gönderebilirsiniz**, aşağıdaki resimde olduğu gibi **`google--support@googlegroups.com`** grubu oluşturulmuş ve gruptaki **tüm üyelere** (herhangi bir onay olmadan eklenmiş) **bir e-posta gönderilmiştir**.
+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
-Bir kişinin e-posta adresine sahip olarak **bir sohbet başlatabilir** veya **konuşma daveti** gönderebilirsiniz. Ayrıca, herhangi bir isimle (örneğin "Google Destek") **bir Alan oluşturmak** ve üye davet etmek mümkündür. Kabul ederlerse, Google Destek ile konuşuyorlarmış gibi düşünebilirler:
+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]
-> **Ancak testlerimde davet edilen üyeler davet bile almadı.**
+> **Testlerimde davet edilen üyelerin davetiye bile almadıklarını gördüm.**
-Bunun geçmişte nasıl çalıştığını kontrol edebilirsiniz: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
+Bunun geçmişte nasıl çalıştığını şu adreste görebilirsiniz: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
## Google Doc Phishing
-Geçmişte, **görünüşte meşru bir belge** oluşturmak ve bir yorumda **bazı e-postaları (örneğin @user@gmail.com)** belirtmek mümkündü. Google, o e-posta adresine **belgede bahsedildiğini** bildiren bir e-posta gönderdi.\
-Günümüzde bu çalışmıyor ama eğer **kurbanın e-posta erişimini belgeye verirseniz**, Google bununla ilgili bir e-posta gönderecektir. Birini bahsettiğinizde görünen mesaj budur:
+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]
-> Kurbanların, kendilerine dış bir belgenin paylaşıldığını belirten e-postaların ulaşmasını engelleyen koruma mekanizmaları olabilir.
+> 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 şirketin sahip olduğu kadar e-posta adresi ekleyebilirsiniz. Bu takvim etkinliğini mevcut zamandan **5 veya 15 dakika** sonra planlayın. Etkinliği gerçekçi gösterin ve **okumaları gereken bir şey olduğunu belirten bir yorum ve başlık ekleyin** (ile **phishing link**).
+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).
-Bu, "İnsanları İşten Çıkarma" başlıklı bir toplantı ile tarayıcıda görünecek uyarıdır, bu nedenle daha phishing benzeri bir başlık ayarlayabilirsiniz (ve hatta e-posta ile ilişkilendirilmiş ismi değiştirebilirsiniz).
+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 davet edilen kişileri göremeyecek şekilde ayarlayın**
-- **Etkinlik hakkında bildirim e-postaları göndermeyin**. Böylece, insanlar sadece 5 dakika içinde bir toplantı hakkında uyarı görecek ve o bağlantıyı okumaları gerektiğini bilecekler.
-- Görünüşe göre API kullanarak **doğru** olarak **insanların** etkinliği **kabul ettiğini** ayarlayabilir ve hatta **onların adına yorumlar oluşturabilirsiniz**.
+- 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
-[https://script.google.com/](https://script.google.com/) adresinde bir script oluşturmak ve **herkesin erişebileceği bir web uygulaması olarak sergilemek** mümkündür; bu, meşru alan **`script.google.com`** kullanacaktır.\
-Aşağıdaki gibi bir kod ile bir saldırgan, bu sayfada keyfi içerik yüklemesini sağlayabilir ve alanı sürekli olarak erişmeye devam edebilir:
+script oluşturup bunu [https://script.google.com/](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:
```javascript
function doGet() {
return HtmlService.createHtmlOutput(
@@ -62,16 +62,16 @@ return HtmlService.createHtmlOutput(
).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
```
-Örneğin [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec) adresine eriştiğinizde şunları göreceksiniz:
+For example accessing [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec) you will see:
> [!TIP]
-> İçerik bir iframe içinde yüklendiğinde bir uyarı belirecektir.
+> İçerik bir iframe içinde yüklendiği için bir uyarı görüneceğini unutmayın.
## App Scripts OAuth Phishing
-Kurbanın OAuth token'ına erişim sağlamak için belgelere bağlı App Scripts oluşturmak mümkündür, daha fazla bilgi için kontrol edin:
+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:
{{#ref}}
gws-app-scripts.md
@@ -79,83 +79,142 @@ gws-app-scripts.md
## OAuth Apps Phishing
-Önceki tekniklerden herhangi biri, kullanıcının **Google OAuth uygulamasına** erişmesini sağlamak için kullanılabilir; bu uygulama kullanıcıdan bazı **erişim** talep edecektir. Eğer kullanıcı **kaynağa** **güveniyorsa**, **uygulamaya** da **güvenebilir** (yüksek ayrıcalıklı izinler istese bile).
+Ö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, uygulamanın güvenilir olmadığını belirten çirkin bir uyarı sunar ve Workspace yöneticileri, insanların OAuth uygulamalarını kabul etmelerini engelleyebilir.
+> 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**, kullanıcılar adına çeşitli **Google hizmetleri** ile **etkileşimde bulunabilen** uygulamalar oluşturulmasına izin verir: Gmail, Drive, GCP...
+**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** hareket edecek bir uygulama oluştururken, geliştiricinin **GCP içinde bir OAuth uygulaması** oluşturması ve uygulamanın kullanıcı verilerine erişmesi için gerekli olan kapsamları (izinleri) belirtmesi gerekir.\
-Bir **kullanıcı**, o **uygulamayı** **kullanmak** istediğinde, kendilerine belirtilen kapsamlar dahilinde uygulamanın verilerine erişim sağlayacağını **kabul etmeleri** için **istek** alacaklardır.
+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 bilgisi olmayan kullanıcıları **hassas bilgilere erişen uygulamaları kullanmaya** **phish** etmek için çok cazip bir yoldur çünkü sonuçları anlamayabilirler. Ancak, organizasyon hesaplarında bunun olmasını önlemenin yolları vardır.
+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.
-### Doğrulanmamış Uygulama İsteği
+### Unverified App prompt
-Daha önce belirtildiği gibi, Google her zaman kullanıcının uygulamaya verdikleri izinleri **kabul etmesi için bir istem** sunacaktır. Ancak, uygulama **tehlikeli** olarak kabul edilirse, Google önce **tehlikeli** olduğunu belirten bir **istek** gösterecek ve kullanıcının uygulamaya izin vermesini **daha zor hale** getirecektir.
+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 istem, aşağıdaki durumlarda uygulamalarda görünür:
+Bu prompt aşağıdaki uygulamalarda görünür:
-- Özel verilere erişebilen herhangi bir kapsam kullanıyorsa (Gmail, Drive, GCP, BigQuery...)
-- 100'den az kullanıcıya sahip uygulamalar (100'den fazla kullanıcıya sahip uygulamalar için doğrulama süreci de gereklidir, böylece doğrulanmamış istemi göstermeyi durdurur)
+- 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)
-### İlginç Kapsamlar
+### Interesting Scopes
-[**Burada**](https://developers.google.com/identity/protocols/oauth2/scopes) tüm Google OAuth kapsamlarının bir listesini bulabilirsiniz.
+[**Here**](https://developers.google.com/identity/protocols/oauth2/scopes) you can find a list of all the Google OAuth scopes.
-- **cloud-platform**: **Google Cloud Platform** hizmetleri arasında verilerinizi görüntüleyin ve yönetin. GCP'de kullanıcıyı taklit edebilirsiniz.
-- **admin.directory.user.readonly**: Kuruluşunuzun GSuite dizinini görüntüleyin ve indirin. Tüm kullanıcıların isimlerini, telefonlarını, takvim URL'lerini alın.
+- **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.
-### OAuth Uygulaması Oluşturma
+### Create an OAuth App
-**Bir OAuth Client ID oluşturmaya başlayın**
+**Start creating an OAuth Client ID**
-1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) adresine gidin ve onay ekranını yapılandırmak için tıklayın.
-2. Ardından, **kullanıcı türünün** **içsel** (sadece kuruluşunuzdaki kişiler için) mi yoksa **dışsal** mı olduğunu soracaktır. İhtiyacınıza uygun olanı seçin.
-- İçsel, eğer kuruluşun bir kullanıcısını zaten ele geçirdiyseniz ve bu uygulamayı başka birini **phish** etmek için oluşturuyorsanız ilginç olabilir.
-3. Uygulamaya bir **isim** verin, bir **destek e-postası** (kendinizi biraz daha anonimleştirmek için bir googlegroup e-postası ayarlayabileceğinizi unutmayın), bir **logo**, **yetkili alanlar** ve **güncellemeler** için başka bir **e-posta** verin.
-4. **OAuth kapsamlarını** **seçin**.
-- Bu sayfa, hassas izinler, hassas olmayan izinler ve kısıtlı izinler olarak üçe ayrılmıştır. Her yeni izin eklediğinizde, kendi kategorisine eklenir. İstenen izinlere bağlı olarak, kullanıcılara bu izinlerin ne kadar hassas olduğunu belirten farklı istemler görünecektir.
-- Hem **`admin.directory.user.readonly`** hem de **`cloud-platform`** hassas izinlerdir.
-5. **Test kullanıcılarını ekleyin.** Uygulamanın durumu test aşamasındayken, yalnızca bu kullanıcılar uygulamaya erişebilecektir, bu nedenle **phish edeceğiniz e-postayı eklemeyi unutmayın**.
+1. Go to [https://console.cloud.google.com/apis/credentials/oauthclient](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.
+3. 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**.
+4. **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.
+5. **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**.
-Şimdi **önceden oluşturulan OAuth Client ID** kullanarak bir web uygulaması için **kimlik bilgileri** alalım:
+Now let's get **credentials for a web application** using the **previously created OAuth Client ID**:
-1. [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) adresine geri dönün, bu sefer farklı bir seçenek görünecektir.
-2. **Web uygulaması için kimlik bilgileri oluşturmayı** seçin.
-3. Gerekli **Javascript kökenlerini** ve **yönlendirme URI'lerini** ayarlayın.
-- Test için her ikisine de **`http://localhost:8000/callback`** gibi bir şey ayarlayabilirsiniz.
-4. Uygulamanızın **kimlik bilgilerini** alın.
+1. Go back to [https://console.cloud.google.com/apis/credentials/oauthclient](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
+4. Get your application **credentials**
-Son olarak, **OAuth uygulama kimlik bilgilerini** kullanacak bir web uygulaması **çalıştırın**. Bir örneği [https://github.com/carlospolop/gcp_oauth_phishing_example](https://github.com/carlospolop/gcp_oauth_phishing_example) adresinde bulabilirsiniz.
+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](https://github.com/carlospolop/gcp_oauth_phishing_example).
```bash
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-secret ""
```
-**`http://localhost:8000`** adresine gidin, Google ile Giriş yap butonuna tıklayın, size bu gibi bir mesaj **gösterilecektir**:
+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 **erişim ve yenileme token'larını** gösterecektir. **Bu token'ları nasıl kullanacağınız hakkında daha fazla bilgi için kontrol edin**:
+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:
{{#ref}}
../../gcp-security/gcp-persistence/gcp-non-svc-persistence.md
{{#endref}}
-#### `glcoud` Kullanımı
+#### Using `glcoud`
-Web konsolu yerine gcloud kullanarak bir şeyler yapmak mümkündür, kontrol edin:
+Web console yerine `glcoud` kullanarak bazı işlemler yapmak mümkündür, bak:
{{#ref}}
../../gcp-security/gcp-privilege-escalation/gcp-clientauthconfig-privesc.md
{{#endref}}
+#### 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.
+
+
+
+### OAuth Consent Grant Abuse: Detection & Response (Admin Reports)
+
+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.
+```bash
+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`
+```text
+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:
+```bash
+gam all users delete tokens clientId
+```
+- 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
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Matthew Bryant - Hacking G Suite: The Power of Dark Apps Script Magic
-- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch ve Beau Bullock - OK Google, GSuite'i Kırmızı Takım Olarak Nasıl Ele Geçiririm?
+- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch and Beau Bullock - OK Google, How do I Red Team GSuite?
+- [https://redcanary.com/blog/threat-detection/google-workspace-oauth-attack/](https://redcanary.com/blog/threat-detection/google-workspace-oauth-attack/)
+- [https://github.com/GAM-team/GAM](https://github.com/GAM-team/GAM)
{{#include ../../../banners/hacktricks-training.md}}