# GWS - Google Platforms Phishing

{{#include ../../../banners/hacktricks-training.md}}

## Generic Phishing Methodology

{{#ref}}
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
{{#endref}}

## Google Groups Phishing

Blykens, standaard kan werkruimte lede [**groepe skep**](https://groups.google.com/all-groups) **en mense na hulle nooi**. Jy kan dan die e-pos wat aan die gebruiker gestuur sal word **wysig deur 'n paar skakels by te voeg.** Die **e-pos sal van 'n google adres kom**, so dit sal **legitiem** lyk en mense mag op die skakel klik.

Dit is ook moontlik om die **FROM** adres as die **Google groep e-pos** in te stel om **meer e-posse aan die gebruikers binne die groep** te stuur, soos in die volgende beeld waar die groep **`google--support@googlegroups.com`** geskep is en 'n **e-pos aan al die lede** van die groep gestuur is (wat sonder enige toestemming bygevoeg is)

<figure><img src="../../../images/image (5) (1).png" alt=""><figcaption></figcaption></figure>

## Google Chat Phishing

Jy mag in staat wees om of **'n gesprek te begin** met 'n persoon net deur hul e-pos adres te hê of 'n **uitnodiging om te praat** te stuur. Boonop is dit moontlik om **'n Ruimte te skep** wat enige naam kan hê (bv. "Google Support") en **lede na dit uit te nooi**. As hulle aanvaar, mag hulle dink dat hulle met Google Support praat:

<figure><img src="../../../images/image (6).png" alt=""><figcaption></figcaption></figure>

> [!TIP]
> **In my toetse het die uitgenooide lede egter glad nie 'n uitnodiging ontvang nie.**

Jy kan kyk hoe dit in die verlede gewerk het in: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)

## Google Doc Phishing

In die verlede was dit moontlik om 'n **blijkbaar legitieme dokument** te skep en in 'n kommentaar **'n e-pos te noem (soos @user@gmail.com)**. Google **het 'n e-pos na daardie e-pos adres gestuur** om te laat weet dat hulle in die dokument genoem is.\
Tans werk dit nie, maar as jy **die slagoffer se e-pos toegang tot die dokument gee**, sal Google 'n e-pos stuur wat dit aandui. Dit is die boodskap wat verskyn wanneer jy iemand noem:

<figure><img src="../../../images/image (7).png" alt=""><figcaption></figcaption></figure>

> [!TIP]
> Slagoffers mag 'n beskermingsmeganisme hê wat nie toelaat dat e-posse wat aandui dat 'n eksterne dokument met hulle gedeel is, hul e-pos bereik nie.

## Google Calendar Phishing

Jy kan **'n kalender gebeurtenis skep** en soveel e-pos adresse van die maatskappy wat jy aanval, byvoeg as wat jy het. Skeduleer hierdie kalender gebeurtenis in **5 of 15 min** vanaf die huidige tyd. Laat die gebeurtenis legitiem lyk en **sit 'n kommentaar en 'n titel wat aandui dat hulle iets moet lees** (met die **phishing skakel**).

Dit is die waarskuwing wat in die blaaier sal verskyn met 'n vergadering titel "Firing People", so jy kan 'n meer phishing-agtige titel stel (en selfs die naam wat met jou e-pos geassosieer is, verander).

<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>

Om dit minder verdag te laat lyk:

- Stel dit op sodat **ontvangers nie die ander mense wat genooi is, kan sien nie**
- Moet **nie e-posse stuur wat oor die gebeurtenis kennis gee nie**. Dan sal die mense net hul waarskuwing oor 'n vergadering in 5min sien en dat hulle daardie skakel moet lees.
- Blykbaar kan jy met die API stel dat **mense** die gebeurtenis **aanvaar** het en selfs **kommentaar namens hulle skep**.

## App Scripts Redirect Phishing

Dit is moontlik om 'n skrip in [https://script.google.com/](https://script.google.com/) te skep en **dit as 'n webtoepassing bloot te stel wat deur almal toeganklik is** wat die legitieme domein **`script.google.com`** sal gebruik.\
Met 'n paar kode soos die volgende kan 'n aanvaller die skrip laat laai arbitrêre inhoud op hierdie bladsy sonder om die domein te stop:
```javascript
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)
}
```
Byvoorbeeld, deur toegang te verkry tot [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec) sal jy sien:

<figure><img src="../../../images/image (4) (1).png" alt=""><figcaption></figcaption></figure>

> [!TIP]
> Let daarop dat 'n waarskuwing sal verskyn terwyl die inhoud binne 'n iframe gelaai word.

## App Scripts OAuth Phishing

Dit is moontlik om App Scripts aan dokumente te koppel om te probeer toegang te verkry tot 'n slagoffer se OAuth-token, vir meer inligting, kyk:

{{#ref}}
gws-app-scripts.md
{{#endref}}

## OAuth Apps Phishing

Enige van die vorige tegnieke kan gebruik word om die gebruiker toegang te laat verkry tot 'n **Google OAuth-toepassing** wat die gebruiker om **toegang** sal vra. As die gebruiker die **bron** **vertrou**, kan hy die **toepassing** **vertrou** (selfs al vra dit vir hoë bevoorregte toestemmings).

> [!NOTE]
> Let daarop dat Google 'n lelike prompt aanbied wat waarsku dat die toepassing in verskeie gevalle nie vertrou word nie, en Workspace-administrateurs kan selfs voorkom dat mense OAuth-toepassings aanvaar.

**Google** laat toe om toepassings te skep wat kan **interaksie hê namens gebruikers** met verskeie **Google-dienste**: Gmail, Drive, GCP...

Wanneer 'n toepassing geskep word om **namens ander gebruikers op te tree**, moet die ontwikkelaar 'n **OAuth-toepassing binne GCP** skep en die skope (toestemmings) aan dui wat die toepassing nodig het om toegang tot die gebruikersdata te verkry.\
Wanneer 'n **gebruiker** daardie **toepassing** wil **gebruik**, sal hulle gevra word om te **aanvaar** dat die toepassing toegang tot hul data sal hê soos gespesifiseer in die skope.

Dit is 'n baie aantreklike manier om **phish** nie-tegniese gebruikers om **toepassings te gebruik wat sensitiewe inligting toegang gee** omdat hulle dalk nie die gevolge verstaan nie. Dit is egter in organisasies se rekeninge moontlik om te voorkom dat dit gebeur.

### Onverifieerde App-prompt

Soos genoem, sal Google altyd 'n **prompt aan die gebruiker aanbied om die** toestemmings wat hulle aan die toepassing gee, te aanvaar. As die toepassing egter as **gevaarlik** beskou word, sal Google **eerste** 'n **prompt** toon wat aandui dat dit **gevaarlik** is en **dit moeiliker maak** vir die gebruiker om die toestemmings aan die toepassing te gee.

Hierdie prompt verskyn in toepassings wat:

- Enige skoop gebruik wat toegang tot privaat data kan verkry (Gmail, Drive, GCP, BigQuery...)
- Toepassings met minder as 100 gebruikers (toepassings > 100 'n hersieningsproses is ook nodig om die onverifieerde prompt te stop)

### Interessante Skope

[**Hier**](https://developers.google.com/identity/protocols/oauth2/scopes) kan jy 'n lys van al die Google OAuth-skope vind.

- **cloud-platform**: Beskou en bestuur jou data oor **Google Cloud Platform**-dienste. Jy kan die gebruiker in GCP naboots.
- **admin.directory.user.readonly**: Sien en laai jou organisasie se GSuite-gids af. Kry name, telefone, kalender-URL's van al die gebruikers.

### Skep 'n OAuth App

**Begin om 'n OAuth Client ID te skep**

1. Gaan na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) en klik op configure the consent screen.
2. Dan sal jy gevra word of die **gebruiker tipe** **intern** (slegs vir mense in jou org) of **ekstern** is. Kies die een wat by jou behoeftes pas
- Intern mag interessant wees as jy reeds 'n gebruiker van die organisasie gecompromitteer het en jy hierdie App skep om 'n ander een te phish.
3. Gee 'n **naam** aan die app, 'n **ondersteunings e-pos** (let daarop dat jy 'n googlegroup e-pos kan stel om jouself 'n bietjie meer te anonimiseer), 'n **logo**, **geautoriseerde domeine** en 'n ander **e-pos** vir **opdaterings**.
4. **Kies** die **OAuth skope**.
- Hierdie bladsy is verdeel in nie-sensitiewe toestemmings, sensitiewe toestemmings en beperkte toestemmings. Elke keer as jy 'n nuwe toestemming byvoeg, word dit in sy kategorie bygevoeg. Afhangende van die aangevraagde toestemmings, sal verskillende prompts aan die gebruiker verskyn wat aandui hoe sensitief hierdie toestemmings is.
- Beide **`admin.directory.user.readonly`** en **`cloud-platform`** is sensitiewe toestemmings.
5. **Voeg die toetsgebruikers by.** Solank as die status van die app toets is, sal slegs hierdie gebruikers toegang tot die app hê, so maak seker om **die e-pos wat jy gaan phish** by te voeg.

Nou kom ons **kry kredensiale vir 'n webtoepassing** met behulp van die **voorheen geskepte OAuth Client ID**:

1. Gaan terug na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), 'n ander opsie sal hierdie keer verskyn.
2. Kies om **kredensiale vir 'n webtoepassing te skep**
3. Stel nodige **Javascript oorspronge** en **herlei URI's** in
- Jy kan in albei iets soos **`http://localhost:8000/callback`** vir toetsing stel
4. Kry jou toepassing se **kredensiale**

Laastens, laat ons **'n webtoepassing uitvoer wat die OAuth-toepassing se kredensiale sal gebruik**. Jy kan 'n voorbeeld vind 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_id>" --client-secret "<client_secret>"
```
Gaan na **`http://localhost:8000`** en klik op die Login with Google-knoppie, jy sal **gevra** word met 'n boodskap soos hierdie:

<figure><img src="../../../images/image (333).png" alt=""><figcaption></figcaption></figure>

Die toepassing sal die **toegang en hernu token** wys wat maklik gebruik kan word. Vir meer inligting oor **hoe om hierdie tokens te gebruik, kyk**:

{{#ref}}
../../gcp-security/gcp-persistence/gcp-non-svc-persistence.md
{{#endref}}

#### Gebruik `glcoud`

Dit is moontlik om iets te doen met gcloud in plaas van die webkonsol, kyk:

{{#ref}}
../../gcp-security/gcp-privilege-escalation/gcp-clientauthconfig-privesc.md
{{#endref}}

## Verwysings

- [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 en Beau Bullock - OK Google, Hoe doen ek 'n Red Team GSuite?

{{#include ../../../banners/hacktricks-training.md}}
