GCP - Logging Enum

htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ

HackTricks をサポートする他の方法:

基本情報

このサービスは、GCPからのログデータとイベントを保存、検索、分析、監視、アラートに使用することをユーザーに許可します。

Cloud Logging は他のGCPサービスと完全に統合されており、すべてのGCPリソースからのログを集約するための中央リポジトリを提供します。これにより、App Engine、Compute Engine、Cloud Functionsなどのさまざまな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に移動して有効にする必要があります。2つの異なるオプションがあります:

  • デフォルト構成:デフォルト構成を作成し、すべての管理者読み取りおよび/またはデータ読み取りおよび/またはデータ書き込みログを記録し、免除されたプリンシパルを追加することが可能です:

  • サービスを選択:または、ログを生成したいサービスとログの種類、およびその特定のサービスの免除されたプリンシパルを選択することができます。

また、デフォルトではこれらのログのみが生成されるため、より多くのログを生成するとコストが増加します。

列挙

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**のログはありません:

ポストエクスプロイテーション

pageGCP - Logging Post Exploitation

永続性

pageGCP - Logging Persistence

参考文献

htARTE(HackTricks AWS Red Team Expert)でAWSハッキングをゼロからヒーローまで学ぶ htARTE (HackTricks AWS Red Team Expert)!

HackTricksをサポートする他の方法:

最終更新