GCP - Logging Enum

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Información Básica

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

Cloud Logging está totalmente integrado con otros servicios de GCP, proporcionando un repositorio centralizado para los registros de todos sus recursos de GCP. Recopila automáticamente registros de varios servicios de GCP como App Engine, Compute Engine y Cloud Functions. También se puede utilizar Cloud Logging para aplicaciones que se ejecutan localmente o en otras nubes mediante el agente o la API de Cloud Logging.

Características clave:

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

  • Gestión de Registro 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 rápidamente grandes volúmenes de datos de registro.

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

  • 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. Buckets de Registro (Almacenamiento de registros en la web): Define buckets 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 buckets _Default y _Required (uno registra lo que el otro no).

  • _Required es:

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 como mínimo de 1 día. Sin embargo, el período de retención de _Required es de 400 días y no se puede modificar.

  • Ten en cuenta que los Buckets de Registro no son visibles en Cloud Storage.

  1. Sinks de Registro (Enrutador de registros en la web): Crea sinks para exportar entradas de registro a varios destinos como Pub/Sub, BigQuery o Cloud Storage basado en 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 ciertas entradas de registro** sean ingestadas, ahorrando costos y reduciendo ruido innecesario.
3. **Métricas Basadas en Registros:** Configura **métricas personalizadas** basadas en el contenido de los registros, permitiendo alertas y monitoreo basados en datos de registro.
4. **Vistas de Registro:** Las vistas de registro brindan un control avanzado y **granular sobre quién tiene acceso** a los registros dentro de tus buckets de registro. 
* Cloud Logging **crea automáticamente la vista `_AllLogs` para cada bucket**, que muestra todos los registros. Cloud Logging también crea una vista para el bucket `_Default` llamada `_Default`. La vista `_Default` para el bucket `_Default` muestra todos los registros excepto los registros 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 registro específica** con una política de 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 escritura de administrador (también llamados registros de auditoría de actividad de administrador) son las que se registran (escriben metadatos o información de configuración) y no se pueden deshabilitar.

Luego, el usuario puede habilitar los registros de auditoría de acceso a datos, que incluyen lecturas de administrador, escrituras de datos y lecturas de datos.

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

Sin embargo, tenga en cuenta que esto significa que por defecto las acciones GetIamPolicy y otras acciones de lectura no se están registrando. Por lo tanto, por defecto, un atacante que intente enumerar el entorno no será detectado si el administrador del sistema no configura para generar más registros.

Para habilitar más registros en la consola, el administrador del sistema debe 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 lectura de administrador y/o lectura de datos y/o escritura de datos e incluso agregar principios exentos:

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

También tenga en cuenta que por defecto solo se generan 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, que le permite administrar sus recursos y servicios. Así es como puede usar gcloud para administrar sus 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 utilizado para BF permisos): 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

pageGCP - Logging Post Exploitation

Persistencia

pageGCP - Logging Persistence

Referencias

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización