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)
Ceci est le binaire et le service que Google propose pour maintenir synchronisés les mots de passe des utilisateurs entre l'AD et Workspace. Chaque fois qu'un utilisateur change son mot de passe dans l'AD, il est défini sur Google.
Il est installé dans C:\Program Files\Google\Password Sync
où vous pouvez trouver le binaire PasswordSync.exe
pour le configurer et password_sync_service.exe
(le service qui continuera à fonctionner).
Pour configurer ce binaire (et service), il est nécessaire de lui donner accès à un principal Super Admin dans Workspace :
Se connecter via OAuth avec Google et ensuite il stockera un jeton dans le registre (chiffré)
Disponible uniquement sur les contrôleurs de domaine avec interface graphique
Fournir des identifiants de compte de service de GCP (fichier json) avec des permissions pour gérer les utilisateurs de Workspace
Très mauvaise idée car ces identifiants n'expirent jamais et pourraient être mal utilisés
Très mauvaise idée de donner un accès SA sur Workspace car le SA pourrait être compromis dans GCP et il serait possible de pivoter vers Workspace
Google l'exige pour les contrôles de domaine sans interface graphique
Ces identifiants sont également stockés dans le registre
Concernant l'AD, il est possible d'indiquer d'utiliser le contexte d'applications actuel, anonyme ou des identifiants spécifiques. Si l'option d'identifiants est sélectionnée, le nom d'utilisateur est stocké dans un fichier sur le disque et le mot de passe est chiffré et stocké dans le registre.
Notez que Winpeas est capable de détecter GPS, d'obtenir des informations sur la configuration et même de déchiffrer le mot de passe et le jeton.
Dans le fichier C:\ProgramData\Google\Google Apps Password Sync\config.xml
, il est possible de trouver une partie de la configuration comme le baseDN
de l'AD configuré et le nom d'utilisateur
dont les identifiants sont utilisés.
Dans le registre HKLM\Software\Google\Google Apps Password Sync
, il est possible de trouver le jeton de rafraîchissement chiffré et le mot de passe chiffré pour l'utilisateur AD (le cas échéant). De plus, si au lieu d'un jeton, des identifiants SA sont utilisés, il est également possible de les trouver chiffrés à cette adresse de registre. Les valeurs à l'intérieur de ce registre ne sont accessibles que par les Administrateurs.
Le mot de passe chiffré (le cas échéant) se trouve dans la clé ADPassword
et est chiffré à l'aide de l'API CryptProtectData
. Pour le déchiffrer, vous devez être le même utilisateur que celui qui a configuré la synchronisation des mots de passe et utiliser cette entropie lors de l'utilisation de CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };
Le jeton chiffré (le cas échéant) se trouve dans la clé AuthToken
et est chiffré à l'aide de l'API CryptProtectData
. Pour le déchiffrer, vous devez être le même utilisateur que celui qui a configuré la synchronisation des mots de passe et utiliser cette entropie lors de l'utilisation de CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };
De plus, il est également encodé en base32hex avec le dictionnaire 0123456789abcdefghijklmnopqrstv
.
Les valeurs d'entropie ont été trouvées en utilisant l'outil. Il a été configuré pour surveiller les appels à CryptUnprotectData
et CryptProtectData
et ensuite l'outil a été utilisé pour lancer et surveiller PasswordSync.exe
qui déchiffrera le mot de passe configuré et le jeton d'authentification au début et l'outil affichera les valeurs pour l'entropie utilisée dans les deux cas :
Notez qu'il est également possible de voir les valeurs déchiffrées dans l'entrée ou la sortie des appels à ces API également (au cas où à un moment donné Winpeas cesserait de fonctionner).
Dans le cas où la synchronisation des mots de passe a été configurée avec des identifiants SA, elle sera également stockée dans des clés à l'intérieur du registre HKLM\Software\Google\Google Apps Password Sync
.
Tout comme avec GCPW, il est possible de dumper la mémoire du processus de PasswordSync.exe
et des processus password_sync_service.exe
et vous pourrez trouver des jetons de rafraîchissement et d'accès (s'ils ont déjà été générés).
Je suppose que vous pourriez également trouver les identifiants configurés de l'AD.