GCP - Logging Enum

Support HackTricks

Informações Básicas

Este serviço permite que os usuários armazenem, pesquisem, analisem, monitorem e alertem sobre dados e eventos de log do GCP.

O Cloud Logging está totalmente integrado com outros serviços do GCP, fornecendo um repositório centralizado para logs de todos os seus recursos do GCP. Ele coleta automaticamente logs de vários serviços do GCP como App Engine, Compute Engine e Cloud Functions. Você também pode usar o Cloud Logging para aplicativos que estão em execução localmente ou em outras nuvens usando o agente ou API do Cloud Logging.

Principais Recursos:

  • Centralização de Dados de Log: Agregue dados de log de várias fontes, oferecendo uma visão holística de suas aplicações e infraestrutura.

  • Gerenciamento de Logs em Tempo Real: Transmita logs em tempo real para análise e resposta imediatas.

  • Análise de Dados Poderosa: Use recursos avançados de filtragem e pesquisa para filtrar rapidamente grandes volumes de dados de log.

  • Integração com BigQuery: Exporte logs para o BigQuery para análise e consulta detalhadas.

  • Métricas Baseadas em Logs: Crie métricas personalizadas a partir dos seus dados de log para monitoramento e alertas.

Fluxo de Logs

Basicamente, os sinks e métricas baseadas em logs determinarão onde um log deve ser armazenado.

Configurações Suportadas pelo GCP Logging

O Cloud Logging é altamente configurável para atender a diversas necessidades operacionais:

  1. Buckets de Log (Armazenamento de logs na web): Defina buckets no Cloud Logging para gerenciar retenção de logs, proporcionando controle sobre quanto tempo suas entradas de log são retidas.

  • Por padrão, os buckets _Default e _Required são criados (um registra o que o outro não 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")
```
  • O período de retenção dos dados é configurado por bucket e deve ser de pelo menos 1 dia. No entanto, o período de retenção de _Required é 400 dias e não pode ser modificado.

  • Observe que os Log Buckets não são visíveis no Cloud Storage.

  1. Log Sinks (Roteador de logs na web): Crie sinks para exportar entradas de log para vários destinos, como Pub/Sub, BigQuery ou Cloud Storage, com base em um filtro.

  • Por padrão, sinks para os buckets _Default e _Required são criados:

_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 Exclusão:** É possível configurar **exclusões para impedir que entradas de log específicas** sejam ingeridas, economizando custos e reduzindo ruídos desnecessários.
3. **Métricas baseadas em logs:** Configure **métricas personalizadas** com base no conteúdo dos logs, permitindo alertas e monitoramento com base nos dados de log.
4. **Visões de logs:** As visões de logs oferecem controle avançado e **granular sobre quem tem acesso** aos logs dentro dos seus log buckets.
* O Cloud Logging **cria automaticamente a visão `_AllLogs` para cada bucket**, que mostra todos os logs. O Cloud Logging também cria uma visão para o bucket `_Default` chamada `_Default`. A visão `_Default` para o bucket `_Default` mostra todos os logs, exceto os logs de auditoria de Acesso a Dados. As visões `_AllLogs` e `_Default` não são editáveis.

É possível permitir que um principal **use apenas uma visão de Log específica** com uma 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
}

Logs Padrão

Por padrão, as operações de Admin Write (também chamadas de logs de auditoria de Atividade do Admin) são as que são registradas (escrevem metadados ou informações de configuração) e não podem ser desativadas.

Em seguida, o usuário pode habilitar os logs de auditoria de Acesso a Dados, que são Admin Read, Data Write e Data Write.

Você pode encontrar mais informações sobre cada tipo de log na documentação: https://cloud.google.com/iam/docs/audit-logging

No entanto, observe que isso significa que, por padrão, as ações GetIamPolicy e outras ações de leitura não estão sendo registradas. Portanto, por padrão, um atacante tentando enumerar o ambiente não será pego se o administrador do sistema não configurar para gerar mais logs.

Para habilitar mais logs no console, o administrador do sistema precisa acessar https://console.cloud.google.com/iam-admin/audit e habilitá-los. Existem 2 opções diferentes:

  • Configuração Padrão: É possível criar uma configuração padrão e registrar todos os logs de Admin Read e/ou Data Read e/ou Data Write e até adicionar principais isentos:

  • Selecionar os serviços: Ou apenas selecionar os serviços para os quais você gostaria de gerar logs e o tipo de logs e o principal isento para esse serviço específico.

Além disso, observe que, por padrão, apenas esses logs estão sendo gerados, pois gerar mais logs aumentará os custos.

Enumeração

A ferramenta de linha de comando gcloud é uma parte integral do ecossistema GCP, permitindo que você gerencie seus recursos e serviços. Veja como você pode usar gcloud para gerenciar suas configurações de logging e acessar logs.

# 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

Exemplo para verificar os logs do cloudresourcemanager (o usado 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

Não há logs de testIamPermissions:

Pós Exploração

Persistência

Referências

Support HackTricks

Last updated