GCP - Logging Enum

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Podstawowe informacje

Usługa ta umożliwia użytkownikom przechowywanie, wyszukiwanie, analizowanie, monitorowanie i alarmowanie na danych logów i zdarzeń z GCP.

Cloud Logging jest w pełni zintegrowany z innymi usługami GCP, zapewniając scentralizowane repozytorium logów ze wszystkich zasobów GCP. Automatycznie zbiera logi z różnych usług GCP takich jak App Engine, Compute Engine i Cloud Functions. Można również używać Cloud Logging do aplikacji uruchomionych lokalnie lub w innych chmurach, korzystając z agenta Cloud Logging lub interfejsu API.

Główne funkcje:

  • Centralizacja danych logów: Agreguj dane logów z różnych źródeł, oferując holistyczny widok aplikacji i infrastruktury.

  • Zarządzanie logami w czasie rzeczywistym: Strumieniuj logi w czasie rzeczywistym dla natychmiastowej analizy i reakcji.

  • Potężna analiza danych: Użyj zaawansowanych możliwości filtrowania i wyszukiwania do szybkiego przeglądania dużych ilości danych logów.

  • Integracja z BigQuery: Eksportuj logi do BigQuery dla szczegółowej analizy i zapytań.

  • Metryki oparte na logach: Twórz niestandardowe metryki na podstawie danych logów do monitorowania i alarmowania.

Przepływ logów

W zasadzie zlewnie i metryki oparte na logach określają, gdzie log powinien być przechowywany.

Konfiguracje obsługiwane przez Cloud Logging GCP

Cloud Logging jest wysoce konfigurowalny, aby dostosować się do różnorodnych potrzeb operacyjnych:

  1. Kosze logów (Przechowywanie logów w sieci): Zdefiniuj kosze w Cloud Logging do zarządzania retencją logów, zapewniając kontrolę nad czasem retencji wpisów logów.

  • Domyślnie tworzone są kosze _Default i _Required (jeden rejestruje to, czego drugi nie).

  • _Required to:

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")
  • Okres retencji danych jest konfigurowany na kosz i musi wynosić co najmniej 1 dzień. Jednak okres retencji _Required wynosi 400 dni i nie można go modyfikować.

  • Zauważ, że Kosze logów nie są widoczne w Cloud Storage.

  1. Zlewnie logów (Router logów w sieci): Twórz zlewnie do eksportowania wpisów logów do różnych miejsc docelowych, takich jak Pub/Sub, BigQuery lub Cloud Storage na podstawie filtru.

  • Domyślnie tworzone są zlewnie dla koszy _Default i _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")

* **Filtry wykluczeń:** Możliwe jest ustawienie **wykluczeń, aby zapobiec przyjmowaniu określonych wpisów logów**, oszczędzając koszty i redukując zbędny hałas.
3. **Metryki oparte na logach:** Konfiguruj **niestandardowe metryki** na podstawie zawartości logów, umożliwiając alarmowanie i monitorowanie na podstawie danych logów.
4. **Widoki logów:** Widoki logów zapewniają zaawansowaną i **dokładną kontrolę nad tym, kto ma dostęp** do logów wewnątrz twoich koszy logów. 
* Cloud Logging **automatycznie tworzy widok `_AllLogs` dla każdego kosza**, który pokazuje wszystkie logi. Cloud Logging tworzy również widok dla kosza `_Default` o nazwie `_Default`. Widok `_Default` dla kosza `_Default` pokazuje wszystkie logi z wyjątkiem logów audytu dostępu do danych. Widoki `_AllLogs` i `_Default` nie są edytowalne.

Możliwe jest zezwolenie na to, aby podmiot **korzystał tylko z określonego widoku logów** za pomocą polityki IAM, na przykład:

<div data-gb-custom-block data-tag="code" data-overflow='wrap'>

```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
}

Domyślne dzienniki

Domyślnie operacje Zapis administratora (nazywane również dziennikami audytu aktywności administratora) są rejestrowane (zapisują metadane lub informacje konfiguracyjne) i nie można ich wyłączyć.

Następnie użytkownik może włączyć dzienniki audytu dostępu do danych, które obejmują Odczyt administratora, Zapis danych i Odczyt danych.

Więcej informacji na temat każdego rodzaju dziennika znajdziesz w dokumentacji: https://cloud.google.com/iam/docs/audit-logging

Należy jednak zauważyć, że oznacza to, że domyślnie działania GetIamPolicy i inne działania odczytu nie są rejestrowane. Dlatego domyślnie atakujący próbujący wyliczyć środowisko nie zostanie wykryty, jeśli administrator systemu nie skonfigurował generowania większej liczby dzienników.

Aby włączyć więcej dzienników w konsoli, administrator systemu musi przejść do https://console.cloud.google.com/iam-admin/audit i je włączyć. Istnieją 2 różne opcje:

  • Konfiguracja domyślna: Możliwe jest utworzenie domyślnej konfiguracji i rejestrowanie wszystkich dzienników Odczytu administratora i/lub Odczytu danych i/lub Zapisu danych oraz dodawanie wyłączonych podmiotów:

  • Wybierz usługi: Lub po prostu wybierz usługi, dla których chcesz generować dzienniki oraz rodzaj dzienników i wyłączonego podmiotu dla tej konkretnej usługi.

Należy również zauważyć, że domyślnie generowane są tylko te dzienniki, ponieważ generowanie większej liczby dzienników zwiększy koszty.

Wyliczanie

Narzędzie wiersza poleceń gcloud jest integralną częścią ekosystemu GCP, pozwalającą zarządzać zasobami i usługami. Oto jak możesz użyć gcloud do zarządzania konfiguracjami dzienników i dostępem do dzienników.

# 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

Przykład sprawdzenia logów usługi cloudresourcemanager (używanej do BF uprawnień): 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

Nie ma logów testIamPermissions:

Post Exploitation

pageGCP - Logging Post Exploitation

Persistence

pageGCP - Logging Persistence

References

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated