GCP - Logging Enum

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Основна інформація

Ця служба дозволяє користувачам зберігати, шукати, аналізувати, моніторити та отримувати сповіщення про дані та події журналів з GCP.

Cloud Logging повністю інтегрований з іншими службами GCP, надаючи централізований репозиторій для журналів з усіх ваших ресурсів GCP. Він автоматично збирає журнали з різних служб GCP таких як App Engine, Compute Engine та Cloud Functions. Ви також можете використовувати Cloud Logging для додатків, що працюють на місці або в інших хмарах, використовуючи агент Cloud Logging або API.

Ключові особливості:

  • Централізація даних журналів: Агрегуйте дані журналів з різних джерел, пропонуючи цілісний погляд на ваші додатки та інфраструктуру.
  • Управління журналами в реальному часі: Потокове передавання журналів в реальному часі для негайного аналізу та реагування.
  • Потужний аналіз даних: Використовуйте розширені можливості фільтрації та пошуку, щоб швидко переглядати великі обсяги даних журналів.
  • Інтеграція з BigQuery: Експортуйте журнали в BigQuery для детального аналізу та запитів.
  • Метрики на основі журналів: Створюйте користувацькі метрики з ваших даних журналів для моніторингу та сповіщення.

Потік журналів

https://betterstack.com/community/guides/logging/gcp-logging/

В основному, зливи та метрики на основі журналів визначать, де слід зберігати журнал.

Конфігурації, підтримувані GCP Logging

Cloud Logging має високу конфігурованість, щоб відповідати різноманітним операційним потребам:

  1. Журнальні контейнери (зберігання журналів в мережі): Визначте контейнери в Cloud Logging для управління зберіганням журналів, надаючи контроль над тим, як довго зберігаються ваші записи журналів.
  • За замовчуванням створюються контейнери _Default та _Required (один веде облік того, що інший не веде).
  • _Required це:
```bash
LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency")
```

  • Період зберігання даних налаштовується для кожного бакета і повинен бути не менше 1 дня. Однак період зберігання _Required становить 400 днів і не може бути змінений.
  • Зверніть увагу, що Log Buckets не видимі в Cloud Storage.
  1. Log Sinks (Log router в вебі): Створіть сінки для експорту записів журналу до різних місць призначення, таких як Pub/Sub, BigQuery або Cloud Storage на основі фільтра.
  • За замовчуванням сінки для бакетів _Default і _Required створюються:

_Required logging.googleapis.com/projects//locations/global/buckets/_Required LOG_ID(“cloudaudit.googleapis.com/activity”) OR LOG_ID(“externalaudit.googleapis.com/activity”) OR LOG_ID(“cloudaudit.googleapis.com/system_event”) OR LOG_ID(“externalaudit.googleapis.com/system_event”) OR LOG_ID(“cloudaudit.googleapis.com/access_transparency”) OR LOG_ID(“externalaudit.googleapis.com/access_transparency”) _Default logging.googleapis.com/projects//locations/global/buckets/_Default NOT LOG_ID(“cloudaudit.googleapis.com/activity”) AND NOT LOG_ID(“externalaudit.googleapis.com/activity”) AND NOT LOG_ID(“cloudaudit.googleapis.com/system_event”) AND NOT LOG_ID(“externalaudit.googleapis.com/system_event”) AND NOT LOG_ID(“cloudaudit.googleapis.com/access_transparency”) AND NOT LOG_ID(“externalaudit.googleapis.com/access_transparency”)

- **Фільтри виключення:** Можна налаштувати **виключення для запобігання надходженню конкретних записів журналу**, що дозволяє заощаджувати кошти та зменшувати зайвий шум.
3. **Метрики на основі журналів:** Налаштуйте **кастомні метрики** на основі вмісту журналів, що дозволяє здійснювати сповіщення та моніторинг на основі даних журналу.
4. **Перегляди журналів:** Перегляди журналів надають розширений та **досконалий контроль над тим, хто має доступ** до журналів у ваших бакетах журналів.
- Cloud Logging **автоматично створює перегляд `_AllLogs` для кожного бакета**, який показує всі журнали. Cloud Logging також створює перегляд для бакета `_Default`, названий `_Default`. Перегляд `_Default` для бакета `_Default` показує всі журнали, за винятком журналів аудиту доступу до даних. Перегляди `_AllLogs` та `_Default` не підлягають редагуванню.

Можна дозволити принципалу **використовувати лише конкретний перегляд журналу** з політикою IAM, як:
```json
{
"bindings": [
{
"members": ["user:username@gmail.com"],
"role": "roles/logging.viewAccessor",
"condition": {
"title": "Bucket reader condition example",
"description": "Grants logging.viewAccessor role to user username@gmail.com for the VIEW_ID log view.",
"expression": "resource.name == \"projects/PROJECT_ID/locations/LOCATION/buckets/BUCKET_NAME/views/VIEW_ID\""
}
}
],
"etag": "BwWd_6eERR4=",
"version": 3
}

Default Logs

За замовчуванням Admin Write операції (також називаються журналами аудиту активності адміністратора) є тими, що реєструються (запис метаданих або інформації про конфігурацію) і не можуть бути вимкнені.

Потім користувач може увімкнути журнали аудиту доступу до даних, це Admin Read, Data Write і Data Write.

Ви можете знайти більше інформації про кожен тип журналу в документації: https://cloud.google.com/iam/docs/audit-logging

Однак зверніть увагу, що це означає, що за замовчуванням GetIamPolicy дії та інші дії читання не реєструються. Тому, за замовчуванням, зловмисник, який намагається перерахувати середовище, не буде спійманий, якщо системний адміністратор не налаштував генерацію більше журналів.

Щоб увімкнути більше журналів у консолі, системний адміністратор повинен перейти до https://console.cloud.google.com/iam-admin/audit і увімкнути їх. Є 2 різні варіанти:

  • Default Configuration: Можна створити конфігурацію за замовчуванням і реєструвати всі журнали Admin Read і/або Data Read і/або Data Write, а також додати звільнені принципали:
  • Select the services: Або просто вибрати сервіси, для яких ви хочете генерувати журнали, тип журналів і звільнений принципал для цього конкретного сервісу.

Також зверніть увагу, що за замовчуванням генеруються лише ці журнали, оскільки генерація більше журналів збільшить витрати.

Enumeration

Командний рядок gcloud є невід’ємною частиною екосистеми GCP, що дозволяє вам керувати вашими ресурсами та сервісами. Ось як ви можете використовувати gcloud для управління вашими конфігураціями журналювання та доступом до журналів.

# List buckets
gcloud logging buckets list
gcloud logging buckets describe <bucket-name> --location <location>

# List log entries: only logs that contain log entries are listed.
gcloud logging logs list

# Get log metrics
gcloud logging metrics list
gcloud logging metrics describe <metric-name>

# Get log sinks
gcloud logging sinks list
gcloud logging sinks describe <sink-name>

# Get log views
gcloud logging views list --bucket <bucket> --location global
gcloud logging views describe --bucket <bucket> --location global <view-id> # view-id is usually the same as the bucket name

# Get log links
gcloud logging links list --bucket _Default --location global
gcloud logging links describe <link-id> --bucket _Default --location global

Приклад перевірки журналів cloudresourcemanager (той, що використовується для BF дозволів): https://console.cloud.google.com/logs/query;query=protoPayload.serviceName%3D%22cloudresourcemanager.googleapis.com%22;summaryFields=:false:32:beginning;cursorTimestamp=2024-01-20T00:07:14.482809Z;startTime=2024-01-01T11:12:26.062Z;endTime=2024-02-02T17:12:26.062Z?authuser=2&project=digital-bonfire-410512

Журналів testIamPermissions немає:

Постексплуатація

GCP - Logging Post Exploitation

Персистентність

GCP - Logging Persistence

Посилання

Tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks