GCP - Logging Enum

Support HackTricks

Informazioni di base

Questo servizio consente agli utenti di memorizzare, cercare, analizzare, monitorare e ricevere avvisi sui dati e eventi di log da GCP.

Cloud Logging è completamente integrato con altri servizi GCP, fornendo un repository centralizzato per i log di tutte le tue risorse GCP. Raccoglie automaticamente i log da vari servizi GCP come App Engine, Compute Engine e Cloud Functions. Puoi anche utilizzare Cloud Logging per applicazioni in esecuzione in locale o in altre nuvole utilizzando l'agente Cloud Logging o l'API.

Caratteristiche principali:

  • Centralizzazione dei dati di log: Aggrega i dati di log da varie fonti, offrendo una visione olistica delle tue applicazioni e infrastrutture.

  • Gestione dei log in tempo reale: Trasmetti i log in tempo reale per un'analisi e una risposta immediata.

  • Analisi dei dati potente: Utilizza filtri avanzati e capacità di ricerca per setacciare rapidamente grandi volumi di dati di log.

  • Integrazione con BigQuery: Esporta i log in BigQuery per un'analisi e una query dettagliate.

  • Metriche basate sui log: Crea metriche personalizzate dai tuoi dati di log per il monitoraggio e gli avvisi.

Flusso dei log

Fondamentalmente, i sink e le metriche basate sui log determineranno dove un log dovrebbe essere memorizzato.

Configurazioni supportate da GCP Logging

Cloud Logging è altamente configurabile per soddisfare diverse esigenze operative:

  1. Log Buckets (Archiviazione dei log nel web): Definisci i bucket in Cloud Logging per gestire la conservazione dei log, fornendo controllo su quanto a lungo le tue voci di log vengono conservate.

  • Per impostazione predefinita, vengono creati i bucket _Default e _Required (uno registra ciò che l'altro non registra).

  • _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")
```
  • Il periodo di conservazione dei dati è configurato per bucket e deve essere di almeno 1 giorno. Tuttavia, il periodo di conservazione di _Required è di 400 giorni e non può essere modificato.

  • Nota che i Log Buckets non sono visibili in Cloud Storage.

  1. Log Sinks (Router di log nel web): Crea sink per esportare le voci di log in varie destinazioni come Pub/Sub, BigQuery o Cloud Storage in base a un filtro.

  • Per default, i sink per i bucket _Default e _Required vengono creati:

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

* **Filtri di esclusione:** È possibile impostare **esclusioni per prevenire l'ingestione di voci di log specifiche**, risparmiando costi e riducendo il rumore non necessario.
3. **Metriche basate sui log:** Configura **metriche personalizzate** basate sul contenuto dei log, consentendo avvisi e monitoraggio basati sui dati di log.
4. **Viste dei log:** Le viste dei log offrono un controllo avanzato e **granulare su chi ha accesso** ai log all'interno dei tuoi log bucket.
* Cloud Logging **crea automaticamente la vista `_AllLogs` per ogni bucket**, che mostra tutti i log. Cloud Logging crea anche una vista per il bucket `_Default` chiamata `_Default`. La vista `_Default` per il bucket `_Default` mostra tutti i log tranne i log di audit di accesso ai dati. Le viste `_AllLogs` e `_Default` non sono modificabili.

È possibile consentire a un principale **di utilizzare solo una specifica vista di log** con una policy IAM come: 

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

Log predefiniti

Per impostazione predefinita, le operazioni di Admin Write (chiamate anche log di audit delle attività di amministrazione) sono quelle registrate (scrivere metadati o informazioni di configurazione) e non possono essere disabilitate.

Successivamente, l'utente può abilitare i log di audit dell'accesso ai dati, che sono Admin Read, Data Write e Data Write.

Puoi trovare ulteriori informazioni su ciascun tipo di log nella documentazione: https://cloud.google.com/iam/docs/audit-logging

Tuttavia, nota che questo significa che per impostazione predefinita le azioni GetIamPolicy e altre azioni di lettura non vengono registrate. Quindi, per impostazione predefinita, un attaccante che cerca di enumerare l'ambiente non verrà catturato se l'amministratore di sistema non ha configurato la generazione di più log.

Per abilitare più log nella console, l'amministratore di sistema deve andare su https://console.cloud.google.com/iam-admin/audit e abilitarli. Ci sono 2 opzioni diverse:

  • Configurazione predefinita: È possibile creare una configurazione predefinita e registrare tutti i log di Admin Read e/o Data Read e/o Data Write e persino aggiungere principi esclusi:

  • Seleziona i servizi: Oppure seleziona i servizi per i quali desideri generare log e il tipo di log e il principio escluso per quel servizio specifico.

Nota anche che per impostazione predefinita vengono generati solo quei log perché generare più log aumenterà i costi.

Enumerazione

Lo strumento da riga di comando gcloud è una parte integrante dell'ecosistema GCP, che ti consente di gestire le tue risorse e i tuoi servizi. Ecco come puoi utilizzare gcloud per gestire le tue configurazioni di logging e accedere ai log.

# 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

Esempio per controllare i log di cloudresourcemanager (quello usato per BF permissions): 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

Non ci sono log di testIamPermissions:

Post Exploitation

GCP - Logging Post Exploitation

Persistence

GCP - Logging Persistence

References

Supporta HackTricks

Last updated