GCP - Logging Enum

Support HackTricks

Grundinformationen

Dieser Dienst ermöglicht es Benutzern, Protokolldaten und Ereignisse von GCP zu speichern, zu durchsuchen, zu analysieren, zu überwachen und Alarme auszulösen.

Cloud Logging ist vollständig in andere GCP-Dienste integriert und bietet ein zentrales Repository für Protokolle aus all Ihren GCP-Ressourcen. Es sammelt automatisch Protokolle von verschiedenen GCP-Diensten wie App Engine, Compute Engine und Cloud Functions. Sie können Cloud Logging auch für Anwendungen verwenden, die lokal oder in anderen Clouds ausgeführt werden, indem Sie den Cloud Logging-Agenten oder die API verwenden.

Hauptmerkmale:

  • Zentralisierung von Protokolldaten: Aggregieren Sie Protokolldaten aus verschiedenen Quellen, um einen ganzheitlichen Überblick über Ihre Anwendungen und Infrastruktur zu erhalten.

  • Echtzeit-Protokollverwaltung: Streamen Sie Protokolle in Echtzeit für sofortige Analyse und Reaktion.

  • Leistungsstarke Datenanalyse: Verwenden Sie erweiterte Filter- und Suchfunktionen, um große Mengen an Protokolldaten schnell zu durchsuchen.

  • Integration mit BigQuery: Exportieren Sie Protokolle nach BigQuery für detaillierte Analysen und Abfragen.

  • Protokollbasierte Metriken: Erstellen Sie benutzerdefinierte Metriken aus Ihren Protokolldaten zur Überwachung und Alarmierung.

Protokollfluss

Im Grunde bestimmen die Senken und protokollbasierten Metriken, wo ein Protokoll gespeichert werden sollte.

Konfigurationen, die von GCP Logging unterstützt werden

Cloud Logging ist hochgradig konfigurierbar, um unterschiedlichen Betriebsbedürfnissen gerecht zu werden:

  1. Protokoll-Buckets (Protokollspeicherung im Web): Definieren Sie Buckets in Cloud Logging, um Protokollaufbewahrung zu verwalten und Kontrolle darüber zu haben, wie lange Ihre Protokolleinträge aufbewahrt werden.

  • Standardmäßig werden die Buckets _Default und _Required erstellt (einer protokolliert, was der andere nicht tut).

  • _Required ist:

```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")
```
  • Aufbewahrungsfrist der Daten ist pro Bucket konfiguriert und muss mindestens 1 Tag betragen. Die Aufbewahrungsfrist von _Required beträgt 400 Tage und kann nicht geändert werden.

  • Beachten Sie, dass Log Buckets nicht in Cloud Storage sichtbar sind.

  1. Log Sinks (Log-Router im Web): Erstellen Sie Sinks, um Logeinträge an verschiedene Ziele wie Pub/Sub, BigQuery oder Cloud Storage basierend auf einem Filter zu exportieren.

  • Standardmäßig werden Sinks für die Buckets _Default und _Required erstellt:

_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")

* **Ausschlussfilter:** Es ist möglich, **Ausschlüsse einzurichten, um bestimmte Logeinträge** von der Erfassung auszuschließen, Kosten zu sparen und unnötigen Lärm zu reduzieren.
3. **Log-basierte Metriken:** Konfigurieren Sie **benutzerdefinierte Metriken** basierend auf dem Inhalt von Logs, die Alarmierung und Überwachung basierend auf Logdaten ermöglichen.
4. **Logansichten:** Logansichten bieten eine erweiterte und **detaillierte Kontrolle darüber, wer Zugriff** auf die Logs innerhalb Ihrer Log Buckets hat.
* Cloud Logging **erstellt automatisch die `_AllLogs`-Ansicht für jeden Bucket**, die alle Logs anzeigt. Cloud Logging erstellt auch eine Ansicht für den `_Default`-Bucket namens `_Default`. Die `_Default`-Ansicht für den `_Default`-Bucket zeigt alle Logs außer den Data Access Audit-Logs. Die Ansichten `_AllLogs` und `_Default` sind nicht bearbeitbar.

Es ist möglich, einem Principal **nur die Verwendung einer bestimmten Logansicht** mit einer IAM-Richtlinie zu erlauben wie: 

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

Standardprotokolle

Standardmäßig werden Admin Write-Operationen (auch als Admin Activity-Auditprotokolle bezeichnet) protokolliert (Metadaten oder Konfigurationsinformationen schreiben) und können nicht deaktiviert werden.

Der Benutzer kann dann Data Access-Auditprotokolle aktivieren, dies sind Admin Read, Data Write und Data Write.

Weitere Informationen zu jedem Protokolltyp finden Sie in den Dokumenten: https://cloud.google.com/iam/docs/audit-logging

Beachten Sie jedoch, dass dies bedeutet, dass standardmäßig GetIamPolicy-Aktionen und andere Leseaktionen nicht protokolliert werden. Ein Angreifer, der versucht, die Umgebung zu enumerieren, wird also standardmäßig nicht erfasst, wenn der Systemadministrator nicht konfiguriert hat, um mehr Protokolle zu generieren.

Um mehr Protokolle in der Konsole zu aktivieren, muss der Systemadministrator zu https://console.cloud.google.com/iam-admin/audit gehen und sie aktivieren. Es gibt 2 verschiedene Optionen:

  • Standardkonfiguration: Es ist möglich, eine Standardkonfiguration zu erstellen und alle Admin Read- und/oder Data Read- und/oder Data Write-Protokolle zu protokollieren und sogar befreite Prinzipale hinzuzufügen:

  • Wählen Sie die Dienste aus: Oder einfach die Dienste auswählen, für die Sie Protokolle generieren möchten, sowie die Art der Protokolle und den befreiten Prinzipal für diesen speziellen Dienst.

Beachten Sie auch, dass standardmäßig nur diese Protokolle generiert werden, da die Generierung weiterer Protokolle die Kosten erhöhen würde.

Enumeration

Das gcloud-Befehlszeilenwerkzeug ist ein integraler Bestandteil des GCP-Ökosystems und ermöglicht es Ihnen, Ihre Ressourcen und Dienste zu verwalten. So können Sie gcloud verwenden, um Ihre Protokollkonfigurationen und Zugriffsprotokolle zu verwalten.

# 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

Beispiel zum Überprüfen der Protokolle von cloudresourcemanager (dem, der verwendet wird, um Berechtigungen zu 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

Es gibt keine Protokolle von testIamPermissions:

Post-Exploitation

Persistenz

Referenzen

Unterstütze HackTricks

Last updated