GCP - Logging Enum
Reading time: 6 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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
 (1) (1).png)
https://betterstack.com/community/guides/logging/gcp-logging/
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:
- 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 é:
```
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 é de 400 dias** e não pode ser modificado.
- Observe que os Log Buckets **não são visíveis no Cloud Storage.**
2. **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:
- ```bash
_Required logging.googleapis.com/projects/<proj-name>/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/<proj-name>/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 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 log:** As visões de log oferecem controle avançado e **granular sobre quem tem acesso** aos logs dentro de 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:
```
{
"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 (escrever 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](https://cloud.google.com/iam/docs/audit-logging)
No entanto, note 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 sysadmin não configurar para gerar mais logs.
Para habilitar mais logs no console, o sysadmin precisa ir para [https://console.cloud.google.com/iam-admin/audit](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:
<figure><img src="../../../images/image (338).png" alt=""><figcaption></figcaption></figure>
- **Selecionar os serviços**: Ou apenas **selecionar os serviços** que você gostaria de gerar logs e o tipo de logs e o principal isento para esse serviço específico.
Além disso, note que, por padrão, apenas esses logs estão sendo gerados porque 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