mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
### Phishing em Plataformas Google e Apps OAuth
|
||||
|
||||
Verifique como você poderia usar diferentes plataformas Google, como Drive, Chat, Grupos... para enviar ao vítima um link de phishing e como realizar um Phishing de Google OAuth em:
|
||||
Verifique como você poderia usar diferentes plataformas Google, como Drive, Chat, Grupos... para enviar um link de phishing à vítima e como realizar um phishing de Google OAuth em:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/
|
||||
@@ -14,7 +14,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
### Password Spraying
|
||||
|
||||
Para testar senhas com todos os e-mails que você encontrou (ou que você gerou com base em um padrão de nome de e-mail que você pode ter descoberto), você pode usar uma ferramenta como [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (embora pareça não estar sendo mantida), que usará lambdas da AWS para mudar o endereço IP.
|
||||
Para testar senhas com todos os e-mails que você encontrou (ou que você gerou com base em um padrão de nome de e-mail que você pode ter descoberto), você poderia usar uma ferramenta como [**https://github.com/ustayready/CredKing**](https://github.com/ustayready/CredKing) (embora pareça não estar sendo mantida), que usará lambdas da AWS para mudar o endereço IP.
|
||||
|
||||
## Pós-Exploração
|
||||
|
||||
@@ -54,13 +54,13 @@ gws-persistence.md
|
||||
|
||||
- Sair de todas as sessões
|
||||
- Alterar a senha do usuário
|
||||
- Gerar novos códigos de backup 2FA
|
||||
- Gerar novos códigos de backup de 2FA
|
||||
- Remover senhas de aplicativos
|
||||
- Remover aplicativos OAuth
|
||||
- Remover dispositivos 2FA
|
||||
- Remover dispositivos de 2FA
|
||||
- Remover encaminhadores de e-mail
|
||||
- Remover filtros de e-mail
|
||||
- Remover e-mails/telefones de recuperação
|
||||
- Remover e-mail/telefones de recuperação
|
||||
- Remover smartphones sincronizados maliciosos
|
||||
- Remover aplicativos Android ruins
|
||||
- Remover delegações de conta ruins
|
||||
|
||||
@@ -18,12 +18,12 @@ Também é possível definir o endereço **FROM** como o **e-mail do grupo Googl
|
||||
|
||||
## Google Chat Phishing
|
||||
|
||||
Você pode ser capaz de **iniciar um chat** com uma pessoa apenas tendo seu endereço de e-mail ou enviar um **convite para conversar**. Além disso, é possível **criar um Espaço** que pode ter qualquer nome (por exemplo, "Suporte Google") e **convidar** membros para ele. Se eles aceitarem, podem pensar que estão conversando com o Suporte Google:
|
||||
Você pode ser capaz de **iniciar um chat** com uma pessoa apenas tendo seu endereço de e-mail ou enviar um **convite para conversar**. Além disso, é possível **criar um Espaço** que pode ter qualquer nome (por exemplo, "Suporte Google") e **convidar** membros para isso. Se eles aceitarem, podem pensar que estão conversando com o Suporte Google:
|
||||
|
||||
<figure><img src="../../../images/image (6).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!TIP]
|
||||
> **Nos meus testes, no entanto, os membros convidados não receberam nem mesmo um convite.**
|
||||
> **Nos meus testes, no entanto, os membros convidados nem sequer receberam um convite.**
|
||||
|
||||
Você pode verificar como isso funcionou no passado em: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
|
||||
|
||||
@@ -39,7 +39,7 @@ Hoje em dia, isso não funciona, mas se você **der ao e-mail da vítima acesso
|
||||
|
||||
## Google Calendar Phishing
|
||||
|
||||
Você pode **criar um evento de calendário** e adicionar quantos endereços de e-mail da empresa que você está atacando tiver. Agende este evento de calendário em **5 ou 15 min** a partir do horário atual. Faça o evento parecer legítimo e **coloque um comentário e um título indicando que eles precisam ler algo** (com o **link de phishing**).
|
||||
Você pode **criar um evento de calendário** e adicionar quantos endereços de e-mail da empresa que você está atacando tiver. Programe este evento de calendário em **5 ou 15 min** a partir do horário atual. Faça o evento parecer legítimo e **coloque um comentário e um título indicando que eles precisam ler algo** (com o **link de phishing**).
|
||||
|
||||
Este é o alerta que aparecerá no navegador com um título de reunião "Demissão de Pessoas", então você poderia definir um título mais parecido com phishing (e até mesmo mudar o nome associado ao seu e-mail).
|
||||
|
||||
@@ -49,7 +49,7 @@ Para parecer menos suspeito:
|
||||
|
||||
- Configure para que **os destinatários não possam ver as outras pessoas convidadas**
|
||||
- **NÃO envie e-mails notificando sobre o evento**. Assim, as pessoas só verão seu aviso sobre uma reunião em 5 minutos e que precisam ler aquele link.
|
||||
- Aparentemente, usando a API, você pode definir como **Verdadeiro** que **as pessoas** aceitaram **o evento** e até mesmo criar **comentários em nome delas**.
|
||||
- Aparentemente, usando a API, você pode definir como **True** que **as pessoas** aceitaram **o evento** e até mesmo criar **comentários em nome delas**.
|
||||
|
||||
## App Scripts Redirect Phishing
|
||||
|
||||
@@ -69,9 +69,9 @@ Por exemplo, acessando [https://script.google.com/macros/s/AKfycbwuLlzo0PUaT63G3
|
||||
> [!TIP]
|
||||
> Note que um aviso aparecerá enquanto o conteúdo é carregado dentro de um iframe.
|
||||
|
||||
## Phishing de App Scripts OAuth
|
||||
## Phishing de OAuth de App Scripts
|
||||
|
||||
É possível criar App Scripts anexados a documentos para tentar obter acesso ao token OAuth de uma vítima, para mais informações consulte:
|
||||
É possível criar App Scripts anexados a documentos para tentar obter acesso ao token OAuth de uma vítima, para mais informações, consulte:
|
||||
|
||||
{{#ref}}
|
||||
gws-app-scripts.md
|
||||
@@ -91,7 +91,7 @@ Quando um **usuário** deseja **usar** essa **aplicação**, ele será **solicit
|
||||
|
||||
Esta é uma maneira muito atraente de **phish** usuários não técnicos para usar **aplicações que acessam informações sensíveis** porque eles podem não entender as consequências. No entanto, em contas de organizações, existem maneiras de evitar que isso aconteça.
|
||||
|
||||
### Aviso de Aplicativo Não Verificado
|
||||
### Aviso de App Não Verificado
|
||||
|
||||
Como foi mencionado, o Google sempre apresentará um **aviso ao usuário para aceitar** as permissões que estão concedendo à aplicação em seu nome. No entanto, se a aplicação for considerada **perigosa**, o Google mostrará **primeiro** um **aviso** indicando que é **perigosa** e **dificultando** para o usuário conceder as permissões ao app.
|
||||
|
||||
@@ -112,15 +112,15 @@ Esse aviso aparece em apps que:
|
||||
**Comece criando um ID de Cliente OAuth**
|
||||
|
||||
1. Vá para [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) e clique em configurar a tela de consentimento.
|
||||
2. Em seguida, será perguntado se o **tipo de usuário** é **interno** (apenas para pessoas na sua organização) ou **externo**. Selecione o que melhor se adequa às suas necessidades
|
||||
2. Em seguida, você será perguntado se o **tipo de usuário** é **interno** (apenas para pessoas na sua organização) ou **externo**. Selecione o que melhor se adequa às suas necessidades
|
||||
- Interno pode ser interessante se você já comprometeu um usuário da organização e está criando este App para phish outro.
|
||||
3. Dê um **nome** ao app, um **e-mail de suporte** (note que você pode definir um e-mail de grupo do Google para tentar se anonimizar um pouco mais), um **logo**, **domínios autorizados** e outro **e-mail** para **atualizações**.
|
||||
4. **Selecione** os **escopos OAuth**.
|
||||
- Esta página é dividida em permissões não sensíveis, permissões sensíveis e permissões restritas. Sempre que você adicionar uma nova permissão, ela será adicionada à sua categoria. Dependendo das permissões solicitadas, diferentes avisos aparecerão para o usuário indicando quão sensíveis essas permissões são.
|
||||
- Esta página é dividida em permissões não sensíveis, permissões sensíveis e permissões restritas. Sempre que você adicionar uma nova permissão, ela é adicionada à sua categoria. Dependendo das permissões solicitadas, diferentes avisos aparecerão para o usuário indicando quão sensíveis essas permissões são.
|
||||
- Tanto **`admin.directory.user.readonly`** quanto **`cloud-platform`** são permissões sensíveis.
|
||||
5. **Adicione os usuários de teste.** Enquanto o status do app for teste, apenas esses usuários poderão acessar o app, então certifique-se de **adicionar o e-mail que você vai phish**.
|
||||
5. **Adicione os usuários de teste.** Enquanto o status do app for de teste, apenas esses usuários poderão acessar o app, então certifique-se de **adicionar o e-mail que você vai phish**.
|
||||
|
||||
Agora vamos **obter credenciais para uma aplicação web** usando o **ID de Cliente OAuth criado anteriormente**:
|
||||
Agora vamos obter **credenciais para uma aplicação web** usando o **ID de Cliente OAuth criado anteriormente**:
|
||||
|
||||
1. Volte para [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), uma opção diferente aparecerá desta vez.
|
||||
2. Selecione **criar credenciais para uma aplicação web**
|
||||
@@ -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>"
|
||||
```
|
||||
Vá para **`http://localhost:8000`**, clique no botão Login with Google, você será **solicitado** com uma mensagem como esta:
|
||||
Vá para **`http://localhost:8000`**, clique no botão Login com Google, você será **solicitado** com uma mensagem como esta:
|
||||
|
||||
<figure><img src="../../../images/image (333).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -156,6 +156,6 @@ O aplicativo mostrará o **token de acesso e o token de atualização** que pode
|
||||
## Referências
|
||||
|
||||
- [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 e Beau Bullock - OK Google, How do I Red Team GSuite?
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Mike Felch e Beau Bullock - OK Google, Como faço para Red Team GSuite?
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -80,7 +80,7 @@ Para dar acesso ao token do OAuth, você precisa clicar em **`Serviços +` e adi
|
||||
- **Drive**: Para acessar dados do drive
|
||||
- **Google Sheets API**: Para que funcione com o gatilho
|
||||
|
||||
Para alterar você mesmo os **escopos necessários**, você pode ir para as configurações do projeto e habilitar: **`Mostrar arquivo de manifesto "appsscript.json" no editor`.**
|
||||
Para alterar os **escopos necessários** você pode ir para as configurações do projeto e habilitar: **`Mostrar arquivo de manifesto "appsscript.json" no editor`.**
|
||||
```javascript
|
||||
function getToken() {
|
||||
var userEmail = Session.getActiveUser().getEmail()
|
||||
@@ -147,13 +147,13 @@ Permissões solicitadas para executar o App Script:
|
||||
|
||||
### Criar Gatilho
|
||||
|
||||
Uma vez que o App é lido, clique em **⏰ Gatilhos** para criar um gatilho. Como **função** a ser executada, escolha **`getToken`**, execute na implantação **`Head`**, na fonte do evento selecione **`De planilha`** e no tipo de evento selecione **`Ao abrir`** ou **`Ao editar`** (de acordo com suas necessidades) e salve.
|
||||
Uma vez que o App é lido, clique em **⏰ Gatilhos** para criar um gatilho. Como **função** a ser executada, escolha **`getToken`**, execute na implantação **`Head`**, na fonte do evento selecione **`From spreadsheet`** e no tipo de evento selecione **`On open`** ou **`On edit`** (de acordo com suas necessidades) e salve.
|
||||
|
||||
Observe que você pode verificar as **execuções dos App Scripts na aba Execuções** se quiser depurar algo.
|
||||
Observe que você pode verificar as **execuções dos App Scripts na aba Executions** se quiser depurar algo.
|
||||
|
||||
### Compartilhamento
|
||||
|
||||
Para **disparar** o **App Script**, a vítima precisa se conectar com **Acesso de Editor**.
|
||||
Para **ativar** o **App Script**, a vítima precisa se conectar com **Acesso de Editor**.
|
||||
|
||||
> [!TIP]
|
||||
> O **token** usado para executar o **App Script** será o do **criador do gatilho**, mesmo que o arquivo seja aberto como Editor por outros usuários.
|
||||
@@ -161,7 +161,7 @@ Para **disparar** o **App Script**, a vítima precisa se conectar com **Acesso d
|
||||
### Abusando de documentos Compartilhados Comigo
|
||||
|
||||
> [!CAUTION]
|
||||
> Se alguém **compartilhou com você um documento com App Scripts e um gatilho usando o Head** do App Script (não uma implantação fixa), você pode modificar o código do App Script (adicionando, por exemplo, as funções de roubo de token), acessá-lo, e o **App Script será executado com as permissões do usuário que compartilhou o documento com você**! (note que o token OAuth dos proprietários terá como escopos de acesso os que foram dados quando o gatilho foi criado).
|
||||
> Se alguém **compartilhou com você um documento com App Scripts e um gatilho usando o Head** do App Script (não uma implantação fixa), você pode modificar o código do App Script (adicionando, por exemplo, as funções de roubo de token), acessá-lo, e o **App Script será executado com as permissões do usuário que compartilhou o documento com você**! (note que o token OAuth do proprietário terá como escopos de acesso os que foram dados quando o gatilho foi criado).
|
||||
>
|
||||
> Uma **notificação será enviada ao criador do script indicando que alguém modificou o script** (Que tal usar permissões do gmail para gerar um filtro para prevenir o alerta?)
|
||||
|
||||
@@ -183,11 +183,11 @@ Observe que também é possível **compartilhar um App Script como uma aplicaç
|
||||
|
||||
<figure><img src="../../../images/image (337).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Seguido pelo **prompt típico do OAuth pedindo** as permissões necessárias.
|
||||
Seguido pelo **típico prompt do OAuth pedindo** as permissões necessárias.
|
||||
|
||||
### Testando
|
||||
|
||||
Você pode testar um token coletado para listar emails com:
|
||||
Você pode testar um token coletado para listar e-mails com:
|
||||
```bash
|
||||
curl -X GET "https://www.googleapis.com/gmail/v1/users/<user@email>/messages" \
|
||||
-H "Authorization: Bearer <token>"
|
||||
@@ -200,11 +200,11 @@ curl -H "Authorization: Bearer $OAUTH_TOKEN" \
|
||||
```
|
||||
## App Script como Persistência
|
||||
|
||||
Uma opção para persistência seria **criar um documento e adicionar um gatilho para a função getToken** e compartilhar o documento com o atacante para que toda vez que o atacante abrir o arquivo, ele **exfiltre o token da vítima.**
|
||||
Uma opção para persistência seria **criar um documento e adicionar um gatilho para a função getToken** e compartilhar o documento com o atacante, para que toda vez que o atacante abrir o arquivo, ele **exfiltre o token da vítima.**
|
||||
|
||||
Também é possível criar um App Script e fazê-lo ser acionado a cada X tempo (como a cada minuto, hora, dia...). Um atacante que tenha **credenciais comprometidas ou uma sessão de uma vítima poderia definir um gatilho de tempo para o App Script e vazar um token OAuth muito privilegiado todos os dias**:
|
||||
Também é possível criar um App Script e fazê-lo ser acionado a cada X tempo (como a cada minuto, hora, dia...). Um atacante que tenha **credenciais comprometidas ou uma sessão de uma vítima poderia configurar um gatilho de tempo do App Script e vazar um token OAuth muito privilegiado todos os dias**:
|
||||
|
||||
Basta criar um App Script, ir para Gatilhos, clicar em Adicionar Gatilho e selecionar como fonte de evento Acionado pelo tempo e selecionar as opções que melhor se adequam a você:
|
||||
Basta criar um App Script, ir para Gatilhos, clicar em Adicionar Gatilho e selecionar como fonte de evento Acionado pelo tempo e escolher as opções que melhor se adequam a você:
|
||||
|
||||
<figure><img src="../../../images/image (336).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -218,4 +218,10 @@ Além disso, se alguém **compartilhou** com você um documento com **acesso de
|
||||
> [!WARNING]
|
||||
> Isso significa que o **criador do documento aparecerá como criador de qualquer App Script** que qualquer pessoa com acesso de editor criar dentro dele.
|
||||
>
|
||||
> Isso também significa que o **App Script será confiável pelo ambiente do Workspace
|
||||
> Isso também significa que o **App Script será confiável pelo ambiente do Workspace** do criador do documento.
|
||||
|
||||
> [!CAUTION]
|
||||
> Isso também significa que se um **App Script já existia** e as pessoas **concederam acesso**, qualquer um com permissão de **Editor** no documento pode **modificá-lo e abusar desse acesso.**\
|
||||
> Para abusar disso, você também precisa que as pessoas acionem o App Script. E um truque interessante é **publicar o script como um aplicativo da web**. Quando as **pessoas** que já concederam **acesso** ao App Script acessam a página da web, elas **acionarão o App Script** (isso também funciona usando `<img>` tags).
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
<summary>Passos para criar um filtro no gmail</summary>
|
||||
|
||||
(Instruções [**aqui**](https://support.google.com/mail/answer/6579))
|
||||
(Instruções de [**aqui**](https://support.google.com/mail/answer/6579))
|
||||
|
||||
1. Abra [Gmail](https://mail.google.com/).
|
||||
2. Na caixa de pesquisa na parte superior, clique em Mostrar opções de pesquisa .
|
||||
@@ -41,7 +41,7 @@ Também é possível criar filtros e encaminhar apenas e-mails específicos para
|
||||
|
||||
## Senhas de aplicativo
|
||||
|
||||
Se você conseguiu **comprometer uma sessão de usuário do Google** e o usuário tinha **2FA**, você pode **gerar** uma [**senha de aplicativo**](https://support.google.com/accounts/answer/185833?hl=en) (siga o link para ver os passos). Observe que **senhas de aplicativo não são mais recomendadas pelo Google e são revogadas** quando o usuário **altera a senha da conta do Google.**
|
||||
Se você conseguiu **comprometer uma sessão de usuário do Google** e o usuário tinha **2FA**, você pode **gerar** uma [**senha de aplicativo**](https://support.google.com/accounts/answer/185833?hl=en) (siga o link para ver os passos). Note que **senhas de aplicativo não são mais recomendadas pelo Google e são revogadas** quando o usuário **altera a senha da conta do Google.**
|
||||
|
||||
**Mesmo que você tenha uma sessão aberta, você precisará saber a senha do usuário para criar uma senha de aplicativo.**
|
||||
|
||||
@@ -63,7 +63,7 @@ Também é possível **desativar 2-FA ou inscrever um novo dispositivo** (ou nú
|
||||
## Persistência via Aplicativos OAuth
|
||||
|
||||
Se você **comprometeu a conta de um usuário**, você pode simplesmente **aceitar** conceder todas as permissões possíveis a um **Aplicativo OAuth**. O único problema é que o Workspace pode ser configurado para **não permitir aplicativos OAuth externos e/ou internos não revisados.**\
|
||||
É bastante comum que as Organizações do Workspace não confiem por padrão em aplicativos OAuth externos, mas confiem em internos, então, se você tiver **permissões suficientes para gerar um novo aplicativo OAuth** dentro da organização e aplicativos externos forem proibidos, gere-o e **use esse novo aplicativo OAuth interno para manter a persistência**.
|
||||
É bastante comum que as Organizações do Workspace não confiem por padrão em aplicativos OAuth externos, mas confiem nos internos, então se você tiver **permissões suficientes para gerar um novo aplicativo OAuth** dentro da organização e aplicativos externos forem proibidos, gere-o e **use esse novo aplicativo OAuth interno para manter a persistência**.
|
||||
|
||||
Verifique a página a seguir para mais informações sobre Aplicativos OAuth:
|
||||
|
||||
@@ -73,17 +73,17 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Persistência via delegação
|
||||
|
||||
Você pode simplesmente **delegar a conta** para uma conta diferente controlada pelo atacante (se você tiver permissão para fazer isso). No **Workspace**, essa opção deve ser **ativada**. Pode ser desativada para todos, ativada para alguns usuários/grupos ou para todos (geralmente é ativada apenas para alguns usuários/grupos ou completamente desativada).
|
||||
Você pode simplesmente **delegar a conta** para uma conta diferente controlada pelo atacante (se você tiver permissão para fazer isso). Nas **Organizações** do Workspace, essa opção deve ser **ativada**. Pode ser desativada para todos, ativada para alguns usuários/grupos ou para todos (geralmente é ativada apenas para alguns usuários/grupos ou completamente desativada).
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Se você é um administrador do Workspace, verifique isso para ativar o recurso</summary>
|
||||
|
||||
(Informações [copiadas da documentação](https://support.google.com/a/answer/7223765))
|
||||
(Informação [copiada da documentação](https://support.google.com/a/answer/7223765))
|
||||
|
||||
Como administrador da sua organização (por exemplo, seu trabalho ou escola), você controla se os usuários podem delegar acesso à sua conta do Gmail. Você pode permitir que todos tenham a opção de delegar sua conta. Ou, apenas permitir que pessoas de certos departamentos configurem a delegação. Por exemplo, você pode:
|
||||
Como administrador da sua organização (por exemplo, seu trabalho ou escola), você controla se os usuários podem delegar acesso à sua conta do Gmail. Você pode permitir que todos tenham a opção de delegar sua conta. Ou, apenas permitir que pessoas em certos departamentos configurem a delegação. Por exemplo, você pode:
|
||||
|
||||
- Adicionar um assistente administrativo como delegado em sua conta do Gmail para que ele possa ler e enviar e-mails em seu nome.
|
||||
- Adicionar um assistente administrativo como delegado na sua conta do Gmail para que ele possa ler e enviar e-mails em seu nome.
|
||||
- Adicionar um grupo, como seu departamento de vendas, em Grupos como delegado para dar a todos acesso a uma conta do Gmail.
|
||||
|
||||
Os usuários só podem delegar acesso a outro usuário na mesma organização, independentemente de seu domínio ou unidade organizacional.
|
||||
@@ -104,7 +104,7 @@ Os usuários só podem delegar acesso a outro usuário na mesma organização, i
|
||||
|
||||
Faça login usando uma _conta de administrador_, não sua conta atual CarlosPolop@gmail.com
|
||||
|
||||
2. No console de administração, vá para Menu  **Apps****Google Workspace****Gmail****Configurações do usuário**.
|
||||
2. No console de administração, vá para Menu  **Apps****Google Workspace****Gmail****Configurações do usuário**.
|
||||
3. Para aplicar a configuração a todos, deixe a unidade organizacional superior selecionada. Caso contrário, selecione uma [unidade organizacional](https://support.google.com/a/topic/1227584) filha.
|
||||
4. Clique em **Delegação de e-mail**.
|
||||
5. Marque a caixa **Permitir que os usuários deleguem acesso à sua caixa de entrada a outros usuários no domínio**.
|
||||
@@ -141,18 +141,18 @@ Se você estiver usando o Gmail através do seu trabalho, escola ou outra organi
|
||||
- Se você usar processos automatizados, como APIs ou extensões de navegador, alguns delegados podem acessar uma conta do Gmail ao mesmo tempo.
|
||||
|
||||
1. No seu computador, abra [Gmail](https://mail.google.com/). Você não pode adicionar delegados pelo aplicativo Gmail.
|
||||
2. No canto superior direito, clique em Configurações   **Ver todas as configurações**.
|
||||
2. No canto superior direito, clique em Configurações   **Ver todas as configurações**.
|
||||
3. Clique na aba **Contas e Importação** ou **Contas**.
|
||||
4. Na seção "Conceder acesso à sua conta", clique em **Adicionar outra conta**. Se você estiver usando o Gmail através do seu trabalho ou escola, sua organização pode restringir a delegação de e-mail. Se você não ver essa configuração, entre em contato com seu administrador.
|
||||
- Se você não ver Conceder acesso à sua conta, então está restrito.
|
||||
- Se você não vê Conceder acesso à sua conta, então está restrito.
|
||||
5. Insira o endereço de e-mail da pessoa que você deseja adicionar. Se você estiver usando o Gmail através do seu trabalho, escola ou outra organização, e seu administrador permitir, você pode inserir o endereço de e-mail de um grupo. Este grupo deve ter o mesmo domínio que sua organização. Membros externos do grupo são negados acesso à delegação.\
|
||||
\
|
||||
**Importante:** Se a conta que você delega é uma nova conta ou a senha foi redefinida, o administrador deve desativar a exigência de alterar a senha quando você fizer login pela primeira vez.
|
||||
**Importante:** Se a conta que você delega é uma nova conta ou a senha foi redefinida, o Administrador deve desativar a exigência de alterar a senha quando você fizer login pela primeira vez.
|
||||
|
||||
- [Saiba como um administrador pode criar um usuário](https://support.google.com/a/answer/33310).
|
||||
- [Saiba como um administrador pode redefinir senhas](https://support.google.com/a/answer/33319).
|
||||
- [Saiba como um Administrador pode criar um usuário](https://support.google.com/a/answer/33310).
|
||||
- [Saiba como um Administrador pode redefinir senhas](https://support.google.com/a/answer/33319).
|
||||
|
||||
6. Clique em **Próximo passo**  **Enviar e-mail para conceder acesso**.
|
||||
6. Clique em **Próximo Passo**  **Enviar e-mail para conceder acesso**.
|
||||
|
||||
A pessoa que você adicionou receberá um e-mail pedindo para confirmar. O convite expira após uma semana.
|
||||
|
||||
@@ -168,7 +168,7 @@ Se você tiver uma **sessão dentro da conta do Google da vítima**, pode navega
|
||||
|
||||
## **Persistência via** Scripts de Aplicativo
|
||||
|
||||
Você pode criar **gatilhos baseados em tempo** em Scripts de Aplicativo, então, se o Script de Aplicativo for aceito pelo usuário, ele será **ativado** mesmo **sem o usuário acessá-lo**. Para mais informações sobre como fazer isso, verifique:
|
||||
Você pode criar **gatilhos baseados em tempo** em Scripts de Aplicativo, então se o Script de Aplicativo for aceito pelo usuário, ele será **ativado** mesmo **sem o usuário acessá-lo**. Para mais informações sobre como fazer isso, verifique:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/gws-app-scripts.md
|
||||
|
||||
@@ -2,18 +2,18 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Elevação de Privilégios no Google Groups
|
||||
## Google Groups Privesc
|
||||
|
||||
Por padrão, em workspace, um **grupo** pode ser **acessado livremente** por qualquer membro da organização.\
|
||||
O Workspace também permite **conceder permissões a grupos** (até permissões do GCP), então, se grupos podem ser ingressados e eles têm permissões extras, um atacante pode **abusar desse caminho para escalar privilégios**.
|
||||
O Workspace também permite **conceder permissões a grupos** (até permissões GCP), então, se grupos podem ser ingressados e eles têm permissões extras, um atacante pode **abusar desse caminho para escalar privilégios**.
|
||||
|
||||
Você pode precisar de acesso ao console para ingressar em grupos que permitem ser ingressados por qualquer um na org. Verifique as informações dos grupos em [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
|
||||
|
||||
### Acesso às informações de e-mail dos Grupos
|
||||
|
||||
Se você conseguiu **comprometer uma sessão de usuário do Google**, a partir de [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) você pode ver o histórico de e-mails enviados para os grupos de e-mail dos quais o usuário é membro, e você pode encontrar **credenciais** ou outros **dados sensíveis**.
|
||||
Se você conseguiu **comprometer uma sessão de usuário do google**, a partir de [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) você pode ver o histórico de e-mails enviados para os grupos de e-mail dos quais o usuário é membro, e você pode encontrar **credenciais** ou outros **dados sensíveis**.
|
||||
|
||||
## GCP <--> GWS Pivotando
|
||||
## GCP <--> GWS Pivoting
|
||||
|
||||
{{#ref}}
|
||||
../gcp-security/gcp-to-workspace-pivoting/
|
||||
@@ -21,11 +21,11 @@ Se você conseguiu **comprometer uma sessão de usuário do Google**, a partir d
|
||||
|
||||
## Takeout - Baixar Tudo que o Google Sabe sobre uma conta
|
||||
|
||||
Se você tem uma **sessão dentro da conta do google da vítima**, você pode baixar tudo que o Google salva sobre essa conta em [**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)
|
||||
Se você tem uma **sessão dentro da conta google da vítima**, você pode baixar tudo que o Google salva sobre essa conta em [**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)
|
||||
|
||||
## Vault - Baixar todos os dados do Workspace dos usuários
|
||||
|
||||
Se uma organização tem **Google Vault habilitado**, você pode acessar [**https://vault.google.com**](https://vault.google.com/u/1/) e **baixar** todas as **informações**.
|
||||
Se uma organização tem **Google Vault habilitado**, você pode ser capaz de acessar [**https://vault.google.com**](https://vault.google.com/u/1/) e **baixar** todas as **informações**.
|
||||
|
||||
## Download de Contatos
|
||||
|
||||
@@ -41,7 +41,7 @@ Em [**https://mail.google.com/chat**](https://mail.google.com/chat) você pode a
|
||||
|
||||
## Mineração do Google Drive
|
||||
|
||||
Ao **compartilhar** um documento, você pode **especificar** as **pessoas** que podem acessá-lo uma a uma, **compartilhar** com sua **empresa inteira** (**ou** com alguns **grupos específicos**) gerando um link.
|
||||
Ao **compartilhar** um documento, você pode **especificar** as **pessoas** que podem acessá-lo uma a uma, **compartilhar** com toda a sua **empresa** (**ou** com alguns **grupos** específicos) gerando um **link**.
|
||||
|
||||
Ao compartilhar um documento, nas configurações avançadas você também pode **permitir que as pessoas pesquisem** por este arquivo (por **padrão** isso está **desativado**). No entanto, é importante notar que uma vez que os usuários visualizam um documento, ele se torna pesquisável por eles.
|
||||
|
||||
@@ -54,7 +54,7 @@ Algumas maneiras propostas para encontrar todos os documentos:
|
||||
|
||||
## **Keep Notes**
|
||||
|
||||
Em [**https://keep.google.com/**](https://keep.google.com) você pode acessar as notas do usuário, **informações sensíveis** podem estar salvas aqui.
|
||||
Em [**https://keep.google.com/**](https://keep.google.com) você pode acessar as notas do usuário, **informações** **sensíveis** podem estar salvas aqui.
|
||||
|
||||
### Modificar App Scripts
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ gcds-google-cloud-directory-sync.md
|
||||
|
||||
## GPS - Google Password Sync
|
||||
|
||||
Este é o binário e serviço que o Google oferece para **manter sincronizadas as senhas dos usuários entre o AD** e o Workspace. Sempre que um usuário altera sua senha no AD, ela é definida para o Google.
|
||||
Este é o binário e serviço que o Google oferece para **manter as senhas dos usuários sincronizadas entre o AD** e o Workspace. Sempre que um usuário altera sua senha no AD, ela é definida para o Google.
|
||||
|
||||
Ele é instalado em `C:\Program Files\Google\Password Sync`, onde você pode encontrar o binário `PasswordSync.exe` para configurá-lo e `password_sync_service.exe` (o serviço que continuará em execução).
|
||||
|
||||
|
||||
@@ -20,11 +20,11 @@ Além disso, note que o GCDS não sincronizará senhas do AD para o Workspace. S
|
||||
|
||||
### GCDS - Tokens de Disco & Credenciais do AD
|
||||
|
||||
O binário `config-manager.exe` (o binário principal do GCDS com GUI) armazenará as credenciais do Active Directory configuradas, o token de atualização e o acesso por padrão em um **arquivo xml** na pasta **`C:\Program Files\Google Cloud Directory Sync`** em um arquivo chamado **`Untitled-1.xml`** por padrão. Embora também possa ser salvo na pasta `Documents` do usuário ou em **qualquer outra pasta**.
|
||||
O binário `config-manager.exe` (o principal binário do GCDS com GUI) armazenará as credenciais do Active Directory configuradas, o token de atualização e o acesso por padrão em um **arquivo xml** na pasta **`C:\Program Files\Google Cloud Directory Sync`** em um arquivo chamado **`Untitled-1.xml`** por padrão. Embora também possa ser salvo na pasta `Documents` do usuário ou em **qualquer outra pasta**.
|
||||
|
||||
Além disso, o registro **`HKCU\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\ui`** dentro da chave **`open.recent`** contém os caminhos para todos os arquivos de configuração abertos recentemente (xmls). Portanto, é possível **verificá-lo para encontrá-los**.
|
||||
|
||||
As informações mais interessantes dentro do arquivo seriam:
|
||||
A informação mais interessante dentro do arquivo seria:
|
||||
```xml
|
||||
[...]
|
||||
<loginMethod>OAUTH2</loginMethod>
|
||||
@@ -49,7 +49,7 @@ As informações mais interessantes dentro do arquivo seriam:
|
||||
<authCredentialsEncrypted>XMmsPMGxz7nkpChpC7h2ag==</authCredentialsEncrypted>
|
||||
[...]
|
||||
```
|
||||
Note como o **refresh** **token** e a **senha** do usuário são **criptografados** usando **AES CBC** com uma chave e IV gerados aleatoriamente armazenados em **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (onde quer que a biblioteca Java **`prefs`** armazene as preferências) nas chaves de string **`/Encryption/Policy/V2.iv`** e **`/Encryption/Policy/V2.key`** armazenadas em base64.
|
||||
Observe como o **refresh** **token** e a **senha** do usuário são **criptografados** usando **AES CBC** com uma chave e IV gerados aleatoriamente armazenados em **`HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util`** (onde quer que a biblioteca Java **`prefs`** armazene as preferências) nas chaves de string **`/Encryption/Policy/V2.iv`** e **`/Encryption/Policy/V2.key`** armazenadas em base64.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -150,9 +150,9 @@ Write-Host "Decrypted Password: $decryptedPassword"
|
||||
</details>
|
||||
|
||||
> [!NOTE]
|
||||
> Note que é possível verificar essa informação checando o código java de **`DirSync.jar`** em **`C:\Program Files\Google Cloud Directory Sync`** procurando pela string `exportkeys` (já que esse é o parâmetro cli que o binário `upgrade-config.exe` espera para despejar as chaves).
|
||||
> Note que é possível verificar essas informações checando o código java de **`DirSync.jar`** em **`C:\Program Files\Google Cloud Directory Sync`** procurando pela string `exportkeys` (já que esse é o parâmetro cli que o binário `upgrade-config.exe` espera para despejar as chaves).
|
||||
|
||||
Em vez de usar o script do powershell, também é possível usar o binário **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** com o parâmetro `-exportKeys` e obter a **Key** e **IV** do registro em hex e então apenas usar algum cyberchef com AES/CBC e essa chave e IV para descriptografar a informação.
|
||||
Em vez de usar o script do powershell, também é possível usar o binário **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** com o parâmetro `-exportKeys` e obter a **Key** e **IV** do registro em hex e então apenas usar algum cyberchef com AES/CBC e essa chave e IV para descriptografar as informações.
|
||||
|
||||
### GCDS - Despejando tokens da memória
|
||||
|
||||
@@ -248,7 +248,7 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
### GCDS - Escopos
|
||||
|
||||
> [!NOTE]
|
||||
> Note que mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
> Observe que mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
>
|
||||
> Além disso, o token de atualização não é válido em todas as aplicações.
|
||||
|
||||
|
||||
@@ -27,13 +27,15 @@ scope=https://www.google.com/accounts/OAuthLogin
|
||||
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
|
||||
&device_type=chrome
|
||||
```
|
||||
Novas linhas foram adicionadas para torná-lo mais legível.
|
||||
|
||||
> [!NOTE]
|
||||
> Foi possível realizar um MitM instalando o `Proxifier` no PC, sobrescrevendo o binário `utilman.exe` com um `cmd.exe` e executando os **recursos de acessibilidade** na página de login do Windows, que executará um **CMD** a partir do qual você pode **iniciar e configurar o Proxifier**.\
|
||||
> Não se esqueça de **bloquear o tráfego QUICK UDP** no `Proxifier` para que ele faça downgrade para comunicação TCP e você possa vê-lo.
|
||||
>
|
||||
> Também configure em "Serviced and other users" ambas as opções e instale o certificado CA do Burp no Windows.
|
||||
> Além disso, configure em "Serviced and other users" ambas as opções e instale o certificado CA do Burp no Windows.
|
||||
|
||||
Além disso, adicionando as chaves `enable_verbose_logging = 1` e `log_file_path = C:\Public\gcpw.log` em **`HKLM:\SOFTWARE\Google\GCPW`**, é possível fazer com que ele armazene alguns logs.
|
||||
Além disso, adicionando as chaves `enable_verbose_logging = 1` e `log_file_path = C:\Public\gcpw.log` em **`HKLM:\SOFTWARE\Google\GCPW`** é possível fazer com que ele armazene alguns logs.
|
||||
|
||||
### GCPW - Impressão Digital
|
||||
|
||||
@@ -98,11 +100,11 @@ Em **`HKLM:\SOFTWARE\Google\GCPW\Users`** é possível encontrar os **domínios*
|
||||
>
|
||||
> Até onde sei, não é possível obter um refresh token ou access token a partir do identificador de token.
|
||||
|
||||
Além disso, o arquivo **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** é um json contendo as informações de diferentes **configurações** como `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (se vários usuários do Workspace podem fazer login no computador) e `validityPeriodDays` (número de dias que um usuário não precisa se reautenticar diretamente com o Google).
|
||||
Além disso, o arquivo **`C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse`** é um json que contém as informações de diferentes **configurações** como `enableDmEnrollment`, `enableGcpAutoUpdate`, `enableMultiUserLogin` (se vários usuários do Workspace podem fazer login no computador) e `validityPeriodDays` (número de dias que um usuário não precisa se reautenticar diretamente com o Google).
|
||||
|
||||
## GCPW - Obter Tokens
|
||||
|
||||
### GCPW - Registro de Refresh Tokens
|
||||
### GCPW - Tokens de Atualização do Registro
|
||||
|
||||
Dentro do registro **`HKCU:\SOFTWARE\Google\Accounts`** pode ser possível encontrar algumas contas com o **`refresh_token`** criptografado dentro. O método **`ProtectedData.Unprotect`** pode facilmente descriptografá-lo.
|
||||
|
||||
@@ -160,12 +162,10 @@ Get-RegistryKeysAndDecryptTokens -keyPath $_.PSPath
|
||||
Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
|
||||
```
|
||||
</details>
|
||||
|
||||
Exemplo de saída:
|
||||
```
|
||||
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
|
||||
```
|
||||
Como explicado em [**este vídeo**](https://www.youtube.com/watch?v=FEQxHRRP_5I), se você não encontrar o token no registro, é possível modificar o valor (ou deletar) de **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** e na próxima vez que o usuário acessar o computador, ele precisará fazer login novamente e o **token será armazenado no registro anterior**.
|
||||
Conforme explicado em [**este vídeo**](https://www.youtube.com/watch?v=FEQxHRRP_5I), se você não encontrar o token no registro, é possível modificar o valor (ou deletar) de **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** e na próxima vez que o usuário acessar o computador, ele precisará fazer login novamente e o **token será armazenado no registro anterior**.
|
||||
|
||||
### GCPW - Tokens de Atualização de Disco
|
||||
|
||||
@@ -178,11 +178,11 @@ O arquivo **`%LocalAppData%\Google\Chrome\User Data\Local State`** armazena a ch
|
||||
|
||||
Além disso, a criptografia pode ser encontrada neste código: [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)
|
||||
|
||||
Pode-se observar que AESGCM é usado, o token criptografado começa com uma **versão** (**`v10`** neste momento), depois tem [**12B de nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), e então tem o **texto cifrado** com um **mac final de 16B**.
|
||||
Pode-se observar que AESGCM é utilizado, o token criptografado começa com uma **versão** (**`v10`** neste momento), depois tem [**12B de nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), e então tem o **texto cifrado** com um **mac final de 16B**.
|
||||
|
||||
### GCPW - Extraindo tokens da memória dos processos
|
||||
|
||||
O seguinte script pode ser usado para **extrair** cada processo do **Chrome** usando `procdump`, extrair as **strings** e então **procurar** por strings relacionadas a **tokens de acesso e atualização**. Se o Chrome estiver conectado a algum site do Google, algum **processo estará armazenando tokens de atualização e/ou acesso na memória!**
|
||||
O seguinte script pode ser usado para **extrair** todos os processos do **Chrome** usando `procdump`, extrair as **strings** e então **procurar** por strings relacionadas a **tokens de acesso e atualização**. Se o Chrome estiver conectado a algum site do Google, algum **processo estará armazenando tokens de atualização e/ou acesso na memória!**
|
||||
|
||||
<details>
|
||||
|
||||
@@ -312,11 +312,11 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
### GCPW - Escopos
|
||||
|
||||
> [!NOTE]
|
||||
> Observe que, mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
> Observe que mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
>
|
||||
> Além disso, o token de atualização não é válido em todas as aplicações.
|
||||
|
||||
Por padrão, o GCPW não terá acesso como o usuário a todos os possíveis escopos OAuth, então, usando o seguinte script, podemos encontrar os escopos que podem ser usados com o `refresh_token` para gerar um `access_token`:
|
||||
Por padrão, o GCPW não terá acesso como o usuário a todos os possíveis escopos OAuth, então usando o seguinte script podemos encontrar os escopos que podem ser usados com o `refresh_token` para gerar um `access_token`:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -380,7 +380,7 @@ https://www.googleapis.com/auth/userinfo.profile
|
||||
```
|
||||
</details>
|
||||
|
||||
Além disso, verificando o código-fonte do Chromium, é possível [**encontrar este arquivo**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), que contém **outros escopos** que pode-se assumir que **não aparecem na lista anteriormente forçada por força bruta**. Portanto, esses escopos extras podem ser assumidos:
|
||||
Além disso, verificando o código-fonte do Chromium, é possível [**encontrar este arquivo**](https://github.com/chromium/chromium/blob/5301790cd7ef97088d4862465822da4cb2d95591/google_apis/gaia/gaia_constants.cc#L24), que contém **outros escopos** que podem ser assumidos que **não aparecem na lista anteriormente forçada por força bruta**. Portanto, esses escopos extras podem ser assumidos:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -468,9 +468,9 @@ Observe que o mais interessante é possivelmente:
|
||||
// OAuth2 scope for access to all Google APIs.
|
||||
const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
|
||||
```
|
||||
No entanto, tentei usar este escopo para acessar o gmail ou listar grupos e não funcionou, então não sei quão útil ainda é.
|
||||
No entanto, tentei usar esse escopo para acessar o gmail ou listar grupos e não funcionou, então não sei quão útil ainda é.
|
||||
|
||||
**Obtenha um token de acesso com todos esses escopos**:
|
||||
**Obter um token de acesso com todos esses escopos**:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -762,8 +762,8 @@ curl -X POST \
|
||||
|
||||
**Google Workspace Vault** é um complemento para o Google Workspace que fornece ferramentas para retenção de dados, pesquisa e exportação dos dados da sua organização armazenados nos serviços do Google Workspace, como Gmail, Drive, Chat e mais.
|
||||
|
||||
- Um **Caso** no Google Workspace Vault é um **container** que organiza e agrupa todas as informações relacionadas a um caso específico, investigação ou questão legal. Ele serve como o centro para gerenciar **Suspensões**, **Pesquisas** e **Exportações** relacionadas a essa questão específica.
|
||||
- Uma **Suspensão** no Google Workspace Vault é uma **ação de preservação** aplicada a usuários ou grupos específicos para **prevenir a exclusão ou alteração** de seus dados dentro dos serviços do Google Workspace. As suspensões garantem que as informações relevantes permaneçam intactas e não modificadas durante a duração de um caso legal ou investigação.
|
||||
- Um **Matter** no Google Workspace Vault é um **container** que organiza e agrupa todas as informações relacionadas a um caso específico, investigação ou questão legal. Ele serve como o hub central para gerenciar **Holds**, **Searches** e **Exports** relacionados a essa questão particular.
|
||||
- Um **Hold** no Google Workspace Vault é uma **ação de preservação** aplicada a usuários ou grupos específicos para **prevenir a exclusão ou alteração** de seus dados dentro dos serviços do Google Workspace. Holds garantem que as informações relevantes permaneçam intactas e não modificadas durante a duração de um caso legal ou investigação.
|
||||
```bash
|
||||
# List matters
|
||||
curl -X GET \
|
||||
@@ -801,15 +801,15 @@ Para abusar do GCPW para recuperar o texto claro da senha, é possível despejar
|
||||
```bash
|
||||
mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
|
||||
```
|
||||
Então procure pelo segredo como `Chrome-GCPW-<sid>` como na imagem:
|
||||
Então, procure pelo segredo como `Chrome-GCPW-<sid>` como na imagem:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Então, com um **token de acesso** com o escopo `https://www.google.com/accounts/OAuthLogin`, é possível solicitar a chave privada para descriptografar a senha:
|
||||
Então, com um **access token** com o escopo `https://www.google.com/accounts/OAuthLogin`, é possível solicitar a chave privada para descriptografar a senha:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Script para obter a senha em texto claro dado o token de acesso, senha criptografada e id do recurso</summary>
|
||||
<summary>Script para obter a senha em texto claro dado o access token, senha criptografada e id do recurso</summary>
|
||||
```python
|
||||
import requests
|
||||
from base64 import b64decode
|
||||
@@ -887,8 +887,8 @@ decrypt_password(access_token, lsa_secret)
|
||||
|
||||
É possível encontrar os componentes principais disso no código-fonte do Chromium:
|
||||
|
||||
- Domínio da API: [https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22\&type=code](https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22&type=code)
|
||||
- Endpoint da API: [https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70](https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70)
|
||||
- domínio da API: [https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22\&type=code](https://github.com/search?q=repo%3Achromium%2Fchromium%20%22devicepasswordescrowforwindows-pa%22&type=code)
|
||||
- endpoint da API: [https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70](https://github.com/chromium/chromium/blob/21ab65accce03fd01050a096f536ca14c6040454/chrome/credential_provider/gaiacp/password_recovery_manager.cc#L70)
|
||||
|
||||
## Referências
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Ele é instalado em `C:\Program Files\Google\Password Sync`, onde você pode enc
|
||||
|
||||
Para configurar este binário (e serviço), é necessário **dar acesso a um principal Super Admin no Workspace**:
|
||||
|
||||
- Login via **OAuth** com o Google e então ele **armazenará um token no registro (criptografado)**
|
||||
- Faça login via **OAuth** com o Google e então ele **armazenará um token no registro (criptografado)**
|
||||
- Disponível apenas em Controladores de Domínio com GUI
|
||||
- Fornecendo algumas **credenciais de Conta de Serviço do GCP** (arquivo json) com permissões para **gerenciar os usuários do Workspace**
|
||||
- Ideia muito ruim, pois essas credenciais nunca expiram e podem ser mal utilizadas
|
||||
@@ -29,9 +29,9 @@ Quanto ao AD, é possível indicar para usar o **contexto de aplicações atual,
|
||||
|
||||
No arquivo **`C:\ProgramData\Google\Google Apps Password Sync\config.xml`** é possível encontrar parte da configuração, como o **`baseDN`** do AD configurado e o **`username`** cujas credenciais estão sendo usadas.
|
||||
|
||||
No registro **`HKLM\Software\Google\Google Apps Password Sync`** é possível encontrar o **token de atualização criptografado** e a **senha criptografada** para o usuário do AD (se houver). Além disso, se em vez de um token, algumas **credenciais de SA** forem usadas, também é possível encontrá-las criptografadas nesse endereço do registro. Os **valores** dentro deste registro são acessíveis apenas por **Administradores**.
|
||||
No registro **`HKLM\Software\Google\Google Apps Password Sync`** é possível encontrar o **token de atualização criptografado** e a **senha criptografada** para o usuário do AD (se houver). Além disso, se em vez de um token, algumas **credenciais de SA** forem usadas, também é possível encontrar essas criptografadas nesse endereço do registro. Os **valores** dentro deste registro são acessíveis apenas por **Administradores**.
|
||||
|
||||
A **senha criptografada** (se houver) está dentro da chave **`ADPassword`** e é criptografada usando a API **`CryptProtectData`**. Para descriptografá-la, você precisa ser o mesmo usuário que configurou a sincronização de senhas e usar esta **entropia** ao usar a **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
|
||||
A **senha** criptografada (se houver) está dentro da chave **`ADPassword`** e é criptografada usando a API **`CryptProtectData`**. Para descriptografá-la, você precisa ser o mesmo usuário que configurou a sincronização de senhas e usar esta **entropia** ao usar a **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };`
|
||||
|
||||
O token criptografado (se houver) está dentro da chave **`AuthToken`** e é criptografado usando a API **`CryptProtectData`**. Para descriptografá-lo, você precisa ser o mesmo usuário que configurou a sincronização de senhas e usar esta **entropia** ao usar a **`CryptUnprotectData`**: `byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };`\
|
||||
Além disso, também é codificado usando base32hex com o dicionário **`0123456789abcdefghijklmnopqrstv`**.
|
||||
@@ -46,7 +46,7 @@ Caso a sincronização de senhas tenha sido **configurada com credenciais de SA*
|
||||
|
||||
### GPS - Extraindo tokens da memória
|
||||
|
||||
Assim como com o GCPW, é possível extrair a memória do processo dos processos `PasswordSync.exe` e `password_sync_service.exe` e você poderá encontrar tokens de atualização e de acesso (se já tiverem sido gerados).\
|
||||
Assim como com o GCPW, é possível extrair a memória do processo dos processos `PasswordSync.exe` e `password_sync_service.exe` e você poderá encontrar tokens de atualização e acesso (se já tiverem sido gerados).\
|
||||
Acho que você também poderia encontrar as credenciais configuradas do AD.
|
||||
|
||||
<details>
|
||||
@@ -140,7 +140,7 @@ https://www.googleapis.com/oauth2/v4/token
|
||||
### GPS - Escopos
|
||||
|
||||
> [!NOTE]
|
||||
> Note que mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
> Observe que mesmo tendo um token de atualização, não é possível solicitar nenhum escopo para o token de acesso, pois você só pode solicitar os **escopos suportados pela aplicação onde você está gerando o token de acesso**.
|
||||
>
|
||||
> Além disso, o token de atualização não é válido em todas as aplicações.
|
||||
|
||||
|
||||
@@ -4,14 +4,14 @@
|
||||
|
||||
## Informações Básicas
|
||||
|
||||
A principal diferença entre essa forma de sincronizar usuários com o GCDS é que o GCDS é feito manualmente com alguns binários que você precisa baixar e executar, enquanto **a Sincronização do Diretório do Admin é sem servidor** gerenciada pelo Google em [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
A principal diferença entre essa forma de sincronizar usuários com GCDS é que o GCDS é feito manualmente com alguns binários que você precisa baixar e executar, enquanto **a Sincronização do Diretório do Admin é sem servidor** gerenciada pelo Google em [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
No momento da redação deste documento, este serviço está em beta e suporta 2 tipos de sincronização: do **Active Directory** e do **Azure Entra ID:**
|
||||
No momento em que este texto foi escrito, este serviço está em beta e suporta 2 tipos de sincronização: De **Active Directory** e de **Azure Entra ID:**
|
||||
|
||||
- **Active Directory:** Para configurar isso, você precisa dar **acesso ao Google ao seu ambiente do Active Directory**. E como o Google só tem acesso às redes do GCP (via **conectores VPC**), você precisa criar um conector e, em seguida, tornar seu AD disponível a partir desse conector, tendo-o em VMs na rede do GCP ou usando Cloud VPN ou Cloud Interconnect. Então, você também precisa fornecer **credenciais** de uma conta com acesso de leitura sobre o diretório e um **certificado** para contatar via **LDAPS**.
|
||||
- **Azure Entra ID:** Para configurar isso, é necessário apenas **fazer login no Azure com um usuário com acesso de leitura** sobre a assinatura do Entra ID em um pop-up exibido pelo Google, e o Google manterá o token com acesso de leitura sobre o Entra ID.
|
||||
- **Active Directory:** Para configurar isso, você precisa dar **acesso ao Google ao seu ambiente do Active Directory**. E como o Google só tem acesso às redes do GCP (via **conectores VPC**), você precisa criar um conector e, em seguida, tornar seu AD disponível a partir desse conector, tendo-o em VMs na rede do GCP ou usando Cloud VPN ou Cloud Interconnect. Em seguida, você também precisa fornecer **credenciais** de uma conta com acesso de leitura sobre o diretório e **certificado** para contatar via **LDAPS**.
|
||||
- **Azure Entra ID:** Para configurar isso, é necessário **fazer login no Azure com um usuário com acesso de leitura** sobre a assinatura do Entra ID em um pop-up exibido pelo Google, e o Google manterá o token com acesso de leitura sobre o Entra ID.
|
||||
|
||||
Uma vez configuradas corretamente, ambas as opções permitirão **sincronizar usuários e grupos com o Workspace**, mas não permitirão configurar usuários e grupos do Workspace para o AD ou EntraID.
|
||||
Uma vez configurado corretamente, ambas as opções permitirão **sincronizar usuários e grupos com o Workspace**, mas não permitirão configurar usuários e grupos do Workspace para o AD ou EntraID.
|
||||
|
||||
Outras opções que serão permitidas durante essa sincronização são:
|
||||
|
||||
@@ -48,7 +48,7 @@ Há outra opção para abusar de grupos privilegiados existentes no Workspace. P
|
||||
Se a sincronização de, por exemplo, EntraID, para o Workspace estiver **configurada para substituir o domínio** do objeto importado **pelo e-mail do Workspace**, será possível para um atacante criar o grupo `gcp-organization-admins@<entraid.email>` no EntraID, adicionar um usuário a esse grupo e esperar até que a sincronização de todos os grupos aconteça.\
|
||||
**O usuário será adicionado ao grupo `gcp-organization-admins@<workspace.email>`, escalando privilégios no GCP.**
|
||||
|
||||
### Do Google Workspace -> AD/EntraID
|
||||
### De Google Workspace -> AD/EntraID
|
||||
|
||||
Observe que o Workspace requer credenciais com acesso somente leitura sobre o AD ou EntraID para sincronizar usuários e grupos. Portanto, não é possível abusar do Google Workspace para realizar qualquer alteração no AD ou EntraID. Portanto, **isso não é possível** neste momento.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user