GCPW - Google Credential Provider for Windows
Last updated
Last updated
Learn & practice AWS Hacking: Learn & practice GCP Hacking:
Ceci est le système d'authentification unique que Google Workspaces fournit afin que les utilisateurs puissent se connecter à leurs PC Windows en utilisant leurs identifiants Workspace. De plus, cela stockera des jetons pour accéder à Google Workspace à certains endroits sur le PC.
Notez que est capable de détecter GCPW, d'obtenir des informations sur la configuration et même des jetons.
Lorsqu'un utilisateur accède à un PC Windows synchronisé avec Google Workspace via GCPW, il devra remplir un formulaire de connexion commun. Ce formulaire de connexion renverra un code OAuth que le PC échangera contre le jeton d'actualisation dans une requête comme :
De nouvelles lignes ont été ajoutées pour le rendre plus lisible.
Il était possible d'effectuer un MitM en installant Proxifier
sur le PC, en écrasant le binaire utilman.exe
avec un cmd.exe
et en exécutant les fonctionnalités d'accessibilité sur la page de connexion Windows, ce qui exécutera un CMD à partir duquel vous pouvez lancer et configurer le Proxifier.
N'oubliez pas de bloquer le trafic QUICK UDP dans Proxifier
afin qu'il soit rétrogradé à une communication TCP et que vous puissiez le voir.
Configurez également dans "Services et autres utilisateurs" les deux options et installez le certificat CA Burp dans Windows.
De plus, en ajoutant les clés enable_verbose_logging = 1
et log_file_path = C:\Public\gcpw.log
dans HKLM:\SOFTWARE\Google\GCPW
, il est possible de stocker certains journaux.
Il est possible de vérifier si GCPW est installé sur un appareil en vérifiant si le processus suivant existe ou si les clés de registre suivantes existent :
Dans HKCU:\SOFTWARE\Google\Accounts
, il est possible d'accéder à l'email de l'utilisateur et au refresh token chiffré si l'utilisateur s'est récemment connecté.
Dans HKLM:\SOFTWARE\Google\GCPW\Users
, il est possible de trouver les domains autorisés à se connecter dans la clé domains_allowed
et dans les sous-clés, il est possible de trouver des informations sur l'utilisateur comme l'email, la photo, le nom d'utilisateur, les durées de vie des tokens, le handle du token...
Le handle du token est un token qui commence par eth.
et à partir duquel on peut extraire certaines informations avec une requête comme :
Il est également possible de trouver le handle du token d'un access token avec une requête comme :
Afaik, il n'est pas possible d'obtenir un refresh token ou un access token à partir du token handle.
De plus, le fichier C:\ProgramData\Google\Credential Provider\Policies\<sid>\PolicyFetchResponse
est un json contenant les informations de différents settings comme enableDmEnrollment
, enableGcpAutoUpdate
, enableMultiUserLogin
(si plusieurs utilisateurs de Workspace peuvent se connecter à l'ordinateur) et validityPeriodDays
(nombre de jours pendant lesquels un utilisateur n'a pas besoin de se réauthentifier directement avec Google).
Dans le registre HKCU:\SOFTWARE\Google\Accounts
, il pourrait être possible de trouver certains comptes avec le refresh_token
crypté à l'intérieur. La méthode ProtectedData.Unprotect
peut facilement le déchiffrer.
J'ai essayé la même chose avec gcpw_extension.exe
mais il n'a trouvé aucun token.
Pour une raison quelconque, certains tokens d'accès extraits ne seront pas valides (bien que certains le soient). J'ai essayé le script suivant pour supprimer des caractères un par un afin d'essayer d'obtenir le token valide à partir du dump. Cela ne m'a jamais aidé à en trouver un valide, mais cela pourrait, je suppose :