GCP - Logging Enum

Reading time: 5 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Basic Information

Huduma hii inaruhusu watumiaji kuhifadhi, kutafuta, kuchambua, kufuatilia, na kutoa taarifa kuhusu data za logi na matukio kutoka GCP.

Cloud Logging imeunganishwa kikamilifu na huduma nyingine za GCP, ikitoa hifadhi ya kati ya logi kutoka kwa rasilimali zako zote za GCP. In kusanya logi kiotomatiki kutoka kwa huduma mbalimbali za GCP kama App Engine, Compute Engine, na Cloud Functions. Unaweza pia kutumia Cloud Logging kwa programu zinazofanya kazi kwenye tovuti au katika mawingu mengine kwa kutumia wakala wa Cloud Logging au API.

Key Features:

  • Kusatisha Data za Logi: Unganisha data za logi kutoka vyanzo mbalimbali, ukitoa mtazamo wa jumla wa programu zako na miundombinu.
  • Usimamizi wa Logi kwa Wakati Halisi: Pitia logi kwa wakati halisi kwa uchambuzi na majibu ya haraka.
  • Uchambuzi wa Data wenye Nguvu: Tumia uwezo wa kuchuja na kutafuta wa hali ya juu ili kupita kupitia kiasi kikubwa cha data za logi haraka.
  • Uunganisho na BigQuery: Export logi kwenda BigQuery kwa uchambuzi wa kina na kuuliza.
  • Metriki Zinazotegemea Logi: Unda metriki za kawaida kutoka kwa data zako za logi kwa ajili ya kufuatilia na kutoa taarifa.

Logs flow

https://betterstack.com/community/guides/logging/gcp-logging/

Kimsingi, sinks na metriki zinazotegemea logi zitatoa maamuzi kuhusu wapi logi inapaswa kuhifadhiwa.

Configurations Supported by GCP Logging

Cloud Logging inaweza kubadilishwa kwa urahisi ili kukidhi mahitaji mbalimbali ya uendeshaji:

  1. Log Buckets (Hifadhi ya logi kwenye wavuti): Mwelekeo wa kuunda buckets katika Cloud Logging ili kudhibiti uhifadhi wa logi, ukitoa udhibiti juu ya muda gani entries zako za logi zinapaswa kuhifadhiwa.
  • Kwa kawaida, buckets _Default na _Required zinaundwa (moja inarekodi kile nyingine haifanyi).
  • _Required ni:
`
```
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")
```

```
- **Muda wa uhifadhi** wa data umewekwa kwa kila ndoo na lazima uwe **angalau siku 1.** Hata hivyo, **muda wa uhifadhi wa \_Required ni siku 400** na hauwezi kubadilishwa.
- Kumbuka kwamba Log Buckets **hazionekani katika Cloud Storage.**

2. **Log Sinks (Log router kwenye wavuti):** Unda sinks ili **kuhamasisha entries za log** kwa maeneo mbalimbali kama Pub/Sub, BigQuery, au Cloud Storage kulingana na **filter**.
- Kwa **default** sinks za ndoo `_Default` na `_Required` zinaundwa:
- ```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")
```
- **Exclusion Filters:** Inawezekana kuweka **michujio ya kutengwa ili kuzuia entries maalum za log** zisichukuliwe, kuokoa gharama, na kupunguza kelele zisizohitajika.
3. **Log-based Metrics:** Sanidi **metrics za kawaida** kulingana na maudhui ya logs, kuruhusu arifa na ufuatiliaji kulingana na data za log.
4. **Log views:** Log views hutoa udhibiti wa hali ya juu na **wa kina juu ya nani ana ufikiaji** wa logs ndani ya ndoo zako za log.
- Cloud Logging **hujenga kiotomatiki mtazamo wa `_AllLogs` kwa kila ndoo**, ambayo inaonyesha logs zote. Cloud Logging pia huunda mtazamo kwa ndoo `_Default` inayoitwa `_Default`. Mtazamo wa `_Default` kwa ndoo `_Default` unaonyesha logs zote isipokuwa Data Access audit logs. Mtazamo wa `_AllLogs` na `_Default` hauwezi kubadilishwa.

Inawezekana kuruhusu kiongozi **kutumia tu mtazamo maalum wa Log** kwa sera ya IAM kama:
```
{
"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
}
```
### Default Logs

Kwa kawaida **Admin Write** operations (pia inajulikana kama Admin Activity audit logs) ndizo zinazorekodiwa (andika metadata au taarifa za usanidi) na **haziwezi kuzuiliwa**.

Kisha, mtumiaji anaweza kuwezesha **Data Access audit logs**, hizi ni **Admin Read, Data Write na Data Write**.

Unaweza kupata maelezo zaidi kuhusu kila aina ya log katika nyaraka: [https://cloud.google.com/iam/docs/audit-logging](https://cloud.google.com/iam/docs/audit-logging)

Hata hivyo, kumbuka kwamba hii inamaanisha kwamba kwa kawaida **`GetIamPolicy`** vitendo na vitendo vingine vya kusoma **havirekodiwi**. Hivyo, kwa kawaida mshambuliaji anayejaribu kuhesabu mazingira hatakamatwa ikiwa sysadmin hakuweka usanidi wa kuzalisha logs zaidi.

Ili kuwezesha logs zaidi katika console, sysadmin anahitaji kwenda [https://console.cloud.google.com/iam-admin/audit](https://console.cloud.google.com/iam-admin/audit) na kuziwezesha. Kuna chaguzi 2 tofauti:

- **Default Configuration**: Inawezekana kuunda usanidi wa kawaida na kurekodi logs zote za Admin Read na/au Data Read na/au Data Write na hata kuongeza wakuu walioondolewa:

<figure><img src="../../../images/image (338).png" alt=""><figcaption></figcaption></figure>

- **Select the services**: Au tu **chagua huduma** unazotaka kuzalisha logs na aina ya logs na mkuu aliyeondolewa kwa huduma hiyo maalum.

Pia kumbuka kwamba kwa kawaida ni hizo logs pekee zinazozalishwa kwa sababu kuzalisha logs zaidi kutongeza gharama.

### Enumeration

Zana ya amri `gcloud` ni sehemu muhimu ya mfumo wa GCP, ikikuruhusu kusimamia rasilimali na huduma zako. Hapa kuna jinsi unavyoweza kutumia `gcloud` kusimamia usanidi wako wa logging na kufikia 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