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. 로그 버킷 (웹에서 로그 저장): 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. 로그 싱크 (웹에서 로그 라우터): 필터에 따라 로그 항목을 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
}

기본 로그

기본적으로 관리자 쓰기(Admin Write) 작업(또는 관리자 활동 감사 로그)가 로그에 기록됩니다(메타데이터 또는 구성 정보 작성) 비활성화할 수 없습니다.

그런 다음 사용자는 **데이터 액세스 감사 로그(Data Access audit logs)**를 활성화할 수 있습니다. 이러한 로그는 **관리자 읽기(Admin Read), 데이터 쓰기(Data Write) 및 데이터 쓰기(Data Write)**에 해당합니다.

각 로그 유형에 대한 자세한 정보는 문서에서 확인할 수 있습니다: https://cloud.google.com/iam/docs/audit-logging

그러나 기본적으로 GetIamPolicy 작업 및 기타 읽기 작업이 로그에 기록되지 않는다는 것을 유의하십시오. 따라서, 기본적으로 시스템 관리자가 더 많은 로그를 생성하도록 구성하지 않은 경우, 환경을 열거하려는 공격자는 포착되지 않을 수 있습니다.

콘솔에서 더 많은 로그를 활성화하려면 시스템 관리자는 https://console.cloud.google.com/iam-admin/audit로 이동하여 활성화해야 합니다. 두 가지 다른 옵션이 있습니다:

  • 기본 구성(Default Configuration): 기본 구성을 생성하고 모든 관리자 읽기(Admin Read) 및/또는 데이터 읽기(Data Read) 및/또는 데이터 쓰기(Data Write) 로그를 기록하고 면제된 주체를 추가할 수 있습니다:

  • 서비스 선택(Select the services): 또는 로그를 생성하려는 서비스 및 로그 유형 및 해당 특정 서비스의 면제된 주체를 선택할 수 있습니다.

또한, 기본적으로 이러한 로그만 생성되기 때문에 더 많은 로그를 생성하면 비용이 증가할 수 있습니다.

열거

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 해킹 배우기**!

HackTricks를 지원하는 다른 방법:

最終更新