GCP - Logging Enum

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Informações Básicas

Este serviço permite aos usuários armazenar, pesquisar, analisar, monitorar e alertar sobre dados de log e eventos 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 em execução localmente ou em outras nuvens, usando o agente ou API do Cloud Logging.

Recursos Principais:

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

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

  • Análise de Dados Poderosa: Use capacidades avançadas de filtragem e pesquisa para vasculhar rapidamente grandes volumes de dados de log.

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

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

Fluxo de Logs

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

Configurações Suportadas pelo Cloud Logging do GCP

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 a retenção de logs, fornecendo controle sobre por quanto tempo suas entradas de log são retidas.

  • Por padrão, os buckets _Default e _Required são criados (um está registrando o que o outro não está).

  • _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")
  • 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 do _Required é de 400 dias e não pode ser modificado.

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

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

É possível permitir que um principal **use apenas uma visualizaçã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
}

Registos Padrão

Por padrão, as operações de Escrita de Admin (também chamadas de registos de auditoria de Atividade de Admin) são as que são registadas (escrever metadados ou informações de configuração) e não podem ser desativadas.

Em seguida, o usuário pode ativar os registos de auditoria de Acesso a Dados, que são Leitura de Admin, Escrita de Dados e Escrita de Dados.

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

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

Para ativar mais registos no console, o administrador do sistema precisa ir para https://console.cloud.google.com/iam-admin/audit e ativá-los. Existem 2 opções diferentes:

  • Configuração Padrão: É possível criar uma configuração padrão e registar todos os registos de Leitura de Admin e/ou Leitura de Dados e/ou Escrita de Dados e até adicionar princípios isentos:

  • Selecionar os serviços: Ou apenas selecionar os serviços dos quais gostaria de gerar registos e o tipo de registos e o princípio isento para esse serviço específico.

Também observe que por padrão apenas esses registos estão sendo gerados porque gerar mais registos aumentará os custos.

Enumeração

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

# 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 permissões): 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

pageGCP - Logging Post Exploitation

Persistência

pageGCP - Logging Persistence

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras formas de apoiar o HackTricks:

Última actualización