Translated ['src/pentesting-cloud/aws-security/aws-persistence/aws-sts-p

This commit is contained in:
Translator
2025-01-21 17:39:39 +00:00
parent 5217cd6143
commit 132dd9ac59
42 changed files with 558 additions and 556 deletions

View File

@@ -24,7 +24,7 @@ O binário `config-manager.exe` (o principal binário do GCDS com GUI) armazenar
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**.
A informação mais interessante dentro do arquivo seria:
As informações mais interessantes dentro do arquivo seriam:
```xml
[...]
<loginMethod>OAUTH2</loginMethod>
@@ -54,7 +54,7 @@ Observe como o **refresh** **token** e a **senha** do usuário são **criptograf
<details>
<summary>Script Powershell para descriptografar o refresh token e a senha</summary>
```powershell
```bash
# Paths and key names
$xmlConfigPath = "C:\Users\c\Documents\conf.xml"
$regPath = "SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util"
@@ -162,7 +162,7 @@ Acho que você também poderia encontrar as credenciais configuradas do AD.
<details>
<summary>Despejar processos config-manager.exe e buscar tokens</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -248,7 +248,7 @@ https://www.googleapis.com/oauth2/v4/token
### GCDS - 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**.
> Note que mesmo tendo um token de atualização, não é possível solicitar qualquer 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.
@@ -321,6 +321,6 @@ curl -X POST \
# You could also change the password of a user for example
```
> [!CAUTION]
> Não é possível conceder ao novo usuário o papel de Super Amin porque o **token de atualização não possui escopos suficientes** para conceder os privilégios necessários.
> Não é possível atribuir ao novo usuário o papel de Super Admin porque o **token de atualização não possui escopos suficientes** para conceder os privilégios necessários.
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -27,20 +27,18 @@ 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.
>
> Além disso, configure em "Serviced and other users" ambas as opções e instale o certificado CA do Burp no Windows.
> Também 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
É possível verificar se o GCPW está instalado em um dispositivo verificando se o seguinte processo existe ou se as seguintes chaves de registro existem:
```powershell
```bash
# Check process gcpw_extension.exe
if (Get-Process -Name "gcpw_extension" -ErrorAction SilentlyContinue) {
Write-Output "The process gcpw_xtension.exe is running."
@@ -111,7 +109,7 @@ Dentro do registro **`HKCU:\SOFTWARE\Google\Accounts`** pode ser possível encon
<details>
<summary>Obter <strong><code>HKCU:\SOFTWARE\Google\Accounts</code></strong> dados e descriptografar refresh_tokens</summary>
```powershell
```bash
# Import required namespace for decryption
Add-Type -AssemblyName System.Security
@@ -180,14 +178,14 @@ Além disso, a criptografia pode ser encontrada neste código: [https://github.c
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
### GCPW - Extraindo tokens da memória de processos
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!**
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!**
<details>
<summary>Extrair processos do Chrome e procurar tokens</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\strings.exe"
@@ -262,7 +260,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
Eu tentei o mesmo com `gcpw_extension.exe`, mas ele não encontrou nenhum token.
Por algum motivo, **alguns tokens de acesso extraídos não serão válidos (embora alguns serão)**. Eu tentei o seguinte script para remover caracteres um por um para tentar obter o token válido do dump. Nunca me ajudou a encontrar um válido, mas pode ser que ajude:
Por algum motivo, **alguns tokens de acesso extraídos não serão válidos (embora alguns sejam)**. Eu tentei o seguinte script para remover caracteres um por um para tentar obter o token válido do dump. Nunca me ajudou a encontrar um válido, mas pode ajudar, eu acho:
<details>
@@ -312,7 +310,7 @@ 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**.
> Note que mesmo tendo um token de atualização, não é possível solicitar qualquer 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.
@@ -380,7 +378,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 podem ser assumidos 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 pode-se assumir que **não aparecem na lista previamente forçada**. Portanto, esses escopos extras podem ser assumidos:
<details>
@@ -470,7 +468,7 @@ const char kAnyApiOAuth2Scope[] = "https://www.googleapis.com/auth/any-api";
```
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 é.
**Obter um token de acesso com todos esses escopos**:
**Obtenha um token de acesso com todos esses escopos**:
<details>
@@ -591,7 +589,7 @@ Alguns exemplos usando alguns desses escopos:
<details>
<summary>https://www.googleapis.com/auth/userinfo.email &#x26; https://www.googleapis.com/auth/userinfo.profile</summary>
<summary>https://www.googleapis.com/auth/userinfo.email & https://www.googleapis.com/auth/userinfo.profile</summary>
```bash
curl -X GET \
-H "Authorization: Bearer $access_token" \
@@ -762,8 +760,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 **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.
- 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 hub central para gerenciar **Suspensões**, **Pesquisas** e **Exportações** relacionadas a essa questão particular.
- 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.
```bash
# List matters
curl -X GET \
@@ -805,11 +803,11 @@ 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 **access token** com o escopo `https://www.google.com/accounts/OAuthLogin`, é possível solicitar a chave privada para descriptografar a senha:
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:
<details>
<summary>Script para obter a senha em texto claro dado o access token, senha criptografada e id do recurso</summary>
<summary>Script para obter a senha em texto claro dado o token de acesso, senha criptografada e id do recurso</summary>
```python
import requests
from base64 import b64decode

View File

@@ -29,7 +29,7 @@ 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 encontrar essas 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 encontrá-las 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 };`
@@ -42,7 +42,7 @@ Os valores de entropia foram encontrados usando a ferramenta. Ela foi configurad
Note que também é possível ver os valores **descriptografados** na entrada ou saída das chamadas para essas APIs também (caso em algum momento o Winpeas pare de funcionar).
Caso a sincronização de senhas tenha sido **configurada com credenciais de SA**, também será armazenada em chaves dentro do registro **`HKLM\Software\Google\Google Apps Password Sync`**.
Caso a Sincronização de Senhas tenha sido **configurada com credenciais de SA**, também será armazenada em chaves dentro do registro **`HKLM\Software\Google\Google Apps Password Sync`**.
### GPS - Extraindo tokens da memória
@@ -52,7 +52,7 @@ Acho que você também poderia encontrar as credenciais configuradas do AD.
<details>
<summary>Extrair <code>PasswordSync.exe</code> e os processos <code>password_sync_service.exe</code> e buscar tokens</summary>
```powershell
```bash
# Define paths for Procdump and Strings utilities
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
$stringsPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\strings.exe"