GCP - Logging Enum

支持HackTricks

基本信息

此服务允许用户存储、搜索、分析、监视和对来自GCP的日志数据和事件发出警报。

Cloud Logging与其他GCP服务完全集成,为您的所有GCP资源的日志提供了一个集中存储库。它会自动收集来自各种GCP服务(如应用引擎、计算引擎和云函数)的日志。您还可以通过使用Cloud Logging代理或API,将Cloud Logging用于在本地运行或在其他云中运行的应用程序。

主要特点:

  • **日志数据集中化:**从各种来源聚合日志数据,提供应用程序和基础设施的整体视图。

  • **实时日志管理:**实时流式传输日志,进行即时分析和响应。

  • **强大的数据分析:**使用高级过滤和搜索功能快速筛选大量日志数据。

  • **与BigQuery集成:**将日志导出到BigQuery进行详细分析和查询。

  • **基于日志的指标:**从日志数据创建自定义指标,用于监视和警报。

日志流

基本上,汇集器和基于日志的指标将决定日志应存储在何处。

GCP Logging支持的配置

Cloud Logging具有高度可配置性,以满足各种运营需求:

  1. 日志存储桶(Web中的日志存储):在Cloud Logging中定义存储桶以管理日志保留,控制日志条目的保留时间。

  • 默认情况下,会创建_Default_Required两个存储桶(一个记录,另一个不记录)。

  • _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")
  • 数据的保留期是根据存储桶配置的,必须至少为1天。然而,_Required的保留期为400天,且无法修改。

  • 请注意,日志存储桶在Cloud Storage中不可见

  1. 日志汇(Web中的日志路由器):创建汇以根据过滤器将日志条目导出到各种目的地,如Pub/Sub、BigQuery或Cloud Storage。

  • 默认情况下,为存储桶_Default_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")

* **排除过滤器:**可以设置**排除规则**,以防止特定日志条目被摄入,节省成本并减少不必要的噪音。
3. **基于日志的指标:**根据日志内容配置**自定义指标**,允许基于日志数据进行警报和监视。
4. **日志视图:**日志视图在您的日志存储桶中提供高级和**细粒度控制**,控制谁可以访问日志。 
* Cloud Logging **会自动为每个存储桶创建`_AllLogs`视图**,显示所有日志。Cloud Logging还为`_Default`存储桶创建了一个名为`_Default`的视图。`_Default`存储桶的`_Default`视图显示所有日志,但不包括数据访问审计日志。`_AllLogs`和`_Default`视图不可编辑。

可以通过IAM策略允许主体**仅使用特定的日志视图**,例如:

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

默认日志

默认情况下,管理员写入操作(也称为管理员活动审计日志)会被记录(写入元数据或配置信息),无法禁用

然后,用户可以启用数据访问审计日志,这些包括管理员读取、数据写入和数据写入

您可以在文档中找到有关每种日志类型的更多信息:https://cloud.google.com/iam/docs/audit-logging

但是,请注意,这意味着默认情况下**GetIamPolicy操作和其他读取操作不会被记录**。因此,默认情况下,如果系统管理员没有配置生成更多日志,试图枚举环境的攻击者将不会被抓住。

要在控制台中启用更多日志,系统管理员需要转到https://console.cloud.google.com/iam-admin/audit并启用它们。有两种不同的选项:

  • 默认配置:可以创建默认配置并记录所有管理员读取和/或数据读取和/或数据写入日志,甚至添加豁免主体:

  • 选择服务:或者只需选择要生成日志的服务以及日志类型和该特定服务的豁免主体。

还请注意,默认情况下只生成这些日志,因为生成更多日志将增加成本。

枚举

gcloud命令行工具是GCP生态系统的一个重要组成部分,允许您管理资源和服务。以下是如何使用gcloud来管理日志配置和访问日志。

# 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

示例检查**cloudresourcemanager**的日志(用于BF权限):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

没有**testIamPermissions**的日志:

后渗透

GCP - Logging Post Exploitation

持久性

GCP - Logging Persistence

参考资料

支持HackTricks

Last updated