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)
Це двійковий файл і служба, яку Google пропонує для синхронізації паролів користувачів між AD та Workspace. Кожного разу, коли користувач змінює свій пароль в AD, він встановлюється в Google.
Він встановлюється в C:\Program Files\Google\Password Sync
, де ви можете знайти двійковий файл PasswordSync.exe
для його налаштування та password_sync_service.exe
(служба, яка продовжить працювати).
Щоб налаштувати цей двійковий файл (і службу), потрібно надати доступ до супер адміністратора в Workspace:
Увійти через OAuth з Google, після чого він зберігатиме токен у реєстрі (зашифрований)
Доступно лише на контролерах домену з GUI
Надати деякі облікові дані сервісного облікового запису з GCP (json файл) з правами на управління користувачами Workspace
Дуже погана ідея, оскільки ці облікові дані ніколи не закінчуються і можуть бути зловживані
Дуже погана ідея надавати SA доступ до Workspace, оскільки SA може бути скомпрометований у GCP, і це може дозволити перейти до Workspace
Google вимагає це для контролю домену без GUI
Ці облікові дані також зберігаються в реєстрі
Щодо AD, можливо вказати використовувати поточний контекст додатків, анонімний або деякі специфічні облікові дані. Якщо вибрано варіант облікових даних, ім'я користувача зберігається в файлі на диску, а пароль є зашифрованим і зберігається в реєстрі.
Зверніть увагу, що Winpeas здатний виявити GPS, отримати інформацію про конфігурацію та навіть розшифрувати пароль і токен.
У файлі C:\ProgramData\Google\Google Apps Password Sync\config.xml
можна знайти частину конфігурації, таку як baseDN
налаштованого AD та username
, облікові дані якого використовуються.
У реєстрі HKLM\Software\Google\Google Apps Password Sync
можна знайти зашифрований токен оновлення та зашифрований пароль для користувача AD (якщо є). Більше того, якщо замість токена використовуються деякі облікові дані SA, їх також можна знайти зашифрованими за цією адресою реєстру. Значення в цьому реєстрі доступні лише адміністраторам.
Зашифрований пароль (якщо є) знаходиться в ключі ADPassword
і зашифрований за допомогою CryptProtectData
API. Щоб розшифрувати його, потрібно бути тим же користувачем, що налаштував синхронізацію паролів, і використовувати цю ентропію при використанні CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0xda, 0xfc, 0xb2, 0x8d, 0xa0, 0xd5, 0xa8, 0x7c, 0x88, 0x8b, 0x29, 0x51, 0x34, 0xcb, 0xae, 0xe9 };
Зашифрований токен (якщо є) знаходиться в ключі AuthToken
і зашифрований за допомогою CryptProtectData
API. Щоб розшифрувати його, потрібно бути тим же користувачем, що налаштував синхронізацію паролів, і використовувати цю ентропію при використанні CryptUnprotectData
: byte[] entropyBytes = new byte[] { 0x00, 0x14, 0x0b, 0x7e, 0x8b, 0x18, 0x8f, 0x7e, 0xc5, 0xf2, 0x2d, 0x6e, 0xdb, 0x95, 0xb8, 0x5b };
Більше того, він також кодується за допомогою base32hex з словником 0123456789abcdefghijklmnopqrstv
.
Значення ентропії були знайдені за допомогою інструменту. Він був налаштований для моніторингу викликів до CryptUnprotectData
та CryptProtectData
, а потім інструмент використовувався для запуску та моніторингу PasswordSync.exe
, який розшифрує налаштований пароль і токен авторизації на початку, і інструмент показуватиме значення для використаної ентропії в обох випадках:
Зверніть увагу, що також можливо побачити розшифровані значення в введенні або виході викликів до цих API (в разі, якщо в якийсь момент Winpeas перестане працювати).
У разі, якщо синхронізація паролів була налаштована з обліковими даними SA, вона також буде зберігатися в ключах у реєстрі HKLM\Software\Google\Google Apps Password Sync
.
Так само, як і з GCPW, можливо вивантажити пам'ять процесу PasswordSync.exe
та процесу password_sync_service.exe
, і ви зможете знайти токени оновлення та доступу (якщо вони вже були згенеровані).
Я думаю, ви також могли б знайти налаштовані облікові дані AD.