GPS - Google Password Sync
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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 no 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).
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)
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
Ideia muito ruim dar acesso a uma SA sobre o workspace, pois a SA pode ser comprometida no GCP e será possível pivotar para o Workspace
O Google exige isso para domínio controlado sem GUI
Essas credenciais também são armazenadas no registro
Quanto ao AD, é possível indicar para usar o contexto de aplicações atual, anônimo ou algumas credenciais específicas. Se a opção de credenciais for selecionada, o nome de usuário é armazenado dentro de um arquivo no disco e a senha é criptografada e armazenada no registro.
Note que Winpeas é capaz de detectar GPS, obter informações sobre a configuração e até mesmo descriptografar a senha e o token.
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 apenas acessíveis 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 };
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
.
Os valores de entropia foram encontrados usando a ferramenta. Ela foi configurada para monitorar as chamadas para CryptUnprotectData
e CryptProtectData
e então a ferramenta foi usada para iniciar e monitorar PasswordSync.exe
, que descriptografará a senha configurada e o token de autenticação no início, e a ferramenta mostrará os valores da entropia usada em ambos os casos:
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
.
Assim como com o GCPW, é possível despejar 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.