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 es el binario y servicio que Google ofrece para mantener sincronizadas las contraseñas de los usuarios entre el AD y Workspace. Cada vez que un usuario cambia su contraseña en el AD, se establece en Google.
Se instala en C:\Program Files\Google\Password Sync
donde puedes encontrar el binario PasswordSync.exe
para configurarlo y password_sync_service.exe
(el servicio que seguirá ejecutándose).
Para configurar este binario (y servicio), es necesario darle acceso a un principal de Super Admin en Workspace:
Iniciar sesión a través de OAuth con Google y luego almacenará un token en el registro (encriptado)
Solo disponible en Controladores de Dominio con GUI
Proporcionar algunas credenciales de Cuenta de Servicio de GCP (archivo json) con permisos para gestionar los usuarios de Workspace
Muy mala idea ya que esas credenciales nunca expiran y podrían ser mal utilizadas
Muy mala idea dar acceso a una SA sobre workspace ya que la SA podría ser comprometida en GCP y sería posible pivotar a Workspace
Google lo requiere para dominios controlados sin GUI
Estas credenciales también se almacenan en el registro
En cuanto al AD, es posible indicarle que use el contexto de aplicaciones actual, anónimo o algunas credenciales específicas. Si se selecciona la opción de credenciales, el nombre de usuario se almacena dentro de un archivo en el disco y la contraseña está encriptada y almacenada en el registro.
Ten en cuenta que Winpeas es capaz de detectar GPS, obtener información sobre la configuración y incluso desencriptar la contraseña y el token.
En el archivo C:\ProgramData\Google\Google Apps Password Sync\config.xml
es posible encontrar parte de la configuración como el baseDN
del AD configurado y el nombre de usuario
cuyas credenciales se están utilizando.
En el registro HKLM\Software\Google\Google Apps Password Sync
es posible encontrar el token de actualización encriptado y la contraseña encriptada para el usuario de AD (si la hay). Además, si en lugar de un token, se utilizan algunas credenciales de SA, también es posible encontrar esas encriptadas en esa dirección del registro. Los valores dentro de este registro son solo accesibles por Administradores.
La contraseña encriptada (si la hay) está dentro de la clave ADPassword
y está encriptada usando la API CryptProtectData
. Para desencriptarla, necesitas ser el mismo usuario que configuró la sincronización de contraseñas y usar esta entropía al usar CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };
El token encriptado (si lo hay) está dentro de la clave AuthToken
y está encriptado usando la API CryptProtectData
. Para desencriptarlo, necesitas ser el mismo usuario que configuró la sincronización de contraseñas y usar esta entropía al usar CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };
Además, también está codificado usando base32hex con el diccionario 0123456789abcdefghijklmnopqrstv
.
Los valores de entropía se encontraron utilizando la herramienta. Se configuró para monitorear las llamadas a CryptUnprotectData
y CryptProtectData
y luego se utilizó la herramienta para lanzar y monitorear PasswordSync.exe
, que desencriptará la contraseña y el token de autenticación configurados al principio y la herramienta mostrará los valores de la entropía utilizada en ambos casos:
Ten en cuenta que también es posible ver los valores desencriptados en la entrada o salida de las llamadas a estas APIs también (en caso de que en algún momento Winpeas deje de funcionar).
En caso de que la sincronización de contraseñas se haya configurado con credenciales de SA, también se almacenará en claves dentro del registro HKLM\Software\Google\Google Apps Password Sync
.
Al igual que con GCPW, es posible extraer la memoria del proceso de PasswordSync.exe
y los procesos de password_sync_service.exe
y podrás encontrar tokens de actualización y acceso (si ya han sido generados).
Supongo que también podrías encontrar las credenciales configuradas del AD.