GCP - Logging Enum

Support HackTricks

Información Básica

Este servicio permite a los usuarios almacenar, buscar, analizar, monitorear y alertar sobre datos y eventos de registro de GCP.

Cloud Logging está completamente integrado con otros servicios de GCP, proporcionando un repositorio centralizado para los registros de todos tus recursos de GCP. Recopila automáticamente registros de varios servicios de GCP como App Engine, Compute Engine y Cloud Functions. También puedes usar Cloud Logging para aplicaciones que se ejecutan en las instalaciones o en otras nubes utilizando el agente de Cloud Logging o la API.

Características Clave:

  • Centralización de Datos de Registro: Agrega datos de registro de diversas fuentes, ofreciendo una vista holística de tus aplicaciones e infraestructura.

  • Gestión de Registros en Tiempo Real: Transmite registros en tiempo real para análisis y respuesta inmediatos.

  • Análisis de Datos Potente: Utiliza capacidades avanzadas de filtrado y búsqueda para filtrar grandes volúmenes de datos de registro rápidamente.

  • Integración con BigQuery: Exporta registros a BigQuery para análisis y consultas detalladas.

  • Métricas Basadas en Registros: Crea métricas personalizadas a partir de tus datos de registro para monitoreo y alertas.

Flujo de Registros

Básicamente, los sinks y las métricas basadas en registros determinarán dónde se debe almacenar un registro.

Configuraciones Soportadas por GCP Logging

Cloud Logging es altamente configurable para adaptarse a diversas necesidades operativas:

  1. Cubos de Registro (Almacenamiento de registros en la web): Define cubos en Cloud Logging para gestionar la retención de registros, proporcionando control sobre cuánto tiempo se retienen tus entradas de registro.

  • Por defecto, se crean los cubos _Default y _Required (uno registra lo que el otro no).

  • _Required es:

```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")
```
  • El período de retención de los datos se configura por bucket y debe ser de al menos 1 día. Sin embargo, el período de retención de _Required es de 400 días y no se puede modificar.

  • Tenga en cuenta que los Log Buckets no son visibles en Cloud Storage.

  1. Log Sinks (Enrutador de logs en la web): Cree sinks para exportar entradas de logs a varios destinos como Pub/Sub, BigQuery o Cloud Storage según un filtro.

  • Por defecto, se crean sinks para los buckets _Default y _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")

* **Filtros de exclusión:** Es posible configurar **exclusiones para evitar que entradas de logs específicas** sean ingeridas, ahorrando costos y reduciendo ruido innecesario.
3. **Métricas basadas en logs:** Configure **métricas personalizadas** basadas en el contenido de los logs, lo que permite alertas y monitoreo basado en datos de logs.
4. **Vistas de logs:** Las vistas de logs brindan control avanzado y **granular sobre quién tiene acceso** a los logs dentro de sus buckets de logs.
* Cloud Logging **crea automáticamente la vista `_AllLogs` para cada bucket**, que muestra todos los logs. Cloud Logging también crea una vista para el bucket `_Default` llamada `_Default`. La vista `_Default` para el bucket `_Default` muestra todos los logs excepto los logs de auditoría de acceso a datos. Las vistas `_AllLogs` y `_Default` no son editables.

Es posible permitir que un principal **solo use una vista de Log específica** con una política IAM como: 

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

Registros Predeterminados

Por defecto, las operaciones de Admin Write (también llamadas registros de auditoría de actividad de administrador) son las que se registran (escribir metadatos o información de configuración) y no se pueden desactivar.

Luego, el usuario puede habilitar los registros de auditoría de acceso a datos, que son Admin Read, Data Write y Data Write.

Puedes encontrar más información sobre cada tipo de registro en la documentación: https://cloud.google.com/iam/docs/audit-logging

Sin embargo, ten en cuenta que esto significa que, por defecto, las acciones GetIamPolicy y otras acciones de lectura no están siendo registradas. Por lo tanto, por defecto, un atacante que intente enumerar el entorno no será detectado si el administrador del sistema no configuró la generación de más registros.

Para habilitar más registros en la consola, el administrador del sistema necesita ir a https://console.cloud.google.com/iam-admin/audit y habilitarlos. Hay 2 opciones diferentes:

  • Configuración Predeterminada: Es posible crear una configuración predeterminada y registrar todos los registros de Admin Read y/o Data Read y/o Data Write e incluso agregar principios exentos:

  • Seleccionar los servicios: O simplemente seleccionar los servicios para los que te gustaría generar registros y el tipo de registros y el principio exento para ese servicio específico.

También ten en cuenta que, por defecto, solo se están generando esos registros porque generar más registros aumentará los costos.

Enumeración

La herramienta de línea de comandos gcloud es una parte integral del ecosistema de GCP, lo que te permite gestionar tus recursos y servicios. Aquí te mostramos cómo puedes usar gcloud para gestionar tus configuraciones de registro y acceder a los registros.

# 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

Ejemplo para verificar los registros de cloudresourcemanager (el que se usa para 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

No hay registros de testIamPermissions:

Post Explotación

Persistencia

Referencias

Apoya a HackTricks

Last updated