GCP - Logging Enum

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge HackTricks AWS)!

Autres façons de soutenir HackTricks :

Informations de base

Ce service permet aux utilisateurs de stocker, rechercher, analyser, surveiller et alerter sur les données de journal et les événements de GCP.

Cloud Logging est entièrement intégré à d'autres services GCP, fournissant un référentiel centralisé pour les journaux de toutes vos ressources GCP. Il collecte automatiquement des journaux à partir de divers services GCP tels que App Engine, Compute Engine et Cloud Functions. Vous pouvez également utiliser Cloud Logging pour les applications s'exécutant sur site ou dans d'autres clouds en utilisant l'agent ou l'API Cloud Logging.

Fonctionnalités clés :

  • Centralisation des données de journal : Agréger les données de journal à partir de différentes sources, offrant une vue holistique de vos applications et infrastructures.

  • Gestion des journaux en temps réel : Diffusez les journaux en temps réel pour une analyse et une réponse immédiates.

  • Analyse de données puissante : Utilisez des capacités de filtrage et de recherche avancées pour parcourir rapidement de grands volumes de données de journal.

  • Intégration avec BigQuery : Exportez les journaux vers BigQuery pour une analyse et une interrogation détaillées.

  • Métriques basées sur les journaux : Créez des métriques personnalisées à partir de vos données de journal pour la surveillance et les alertes.

Flux des journaux

Essentiellement, les éviers et les métriques basées sur les journaux détermineront où un journal doit être stocké.

Configurations prises en charge par GCP Logging

Cloud Logging est hautement configurable pour répondre à divers besoins opérationnels :

  1. Buckets de journaux (Stockage des journaux sur le web) : Définissez des buckets dans Cloud Logging pour gérer la rétention des journaux, offrant un contrôle sur la durée pendant laquelle vos entrées de journal sont conservées.

  • Par défaut, les buckets _Default et _Required sont créés (l'un enregistre ce que l'autre ne fait pas).

  • _Required est :

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")
  • La période de rétention des données est configurée par bucket et doit être d'au moins 1 jour. Cependant, la période de rétention de _Required est de 400 jours et ne peut pas être modifiée.

  • Notez que les Buckets de journaux ne sont pas visibles dans Cloud Storage.

  1. Éviers de journaux (Routeur de journaux sur le web) : Créez des éviers pour exporter les entrées de journal vers diverses destinations telles que Pub/Sub, BigQuery ou Cloud Storage en fonction d'un filtre.

  • Par défaut, des éviers pour les buckets _Default et _Required sont créés :

_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")

* **Filtres d'exclusion :** Il est possible de configurer des **exclusions pour empêcher des entrées de journal spécifiques** d'être ingérées, ce qui permet d'économiser des coûts et de réduire le bruit inutile.
3. **Métriques basées sur les journaux :** Configurez des **métriques personnalisées** basées sur le contenu des journaux, permettant des alertes et une surveillance basées sur les données de journal.
4. **Vues de journal :** Les vues de journal offrent un contrôle avancé et **granulaire sur qui a accès** aux journaux dans vos buckets de journaux.
* Cloud Logging **crée automatiquement la vue `_AllLogs` pour chaque bucket**, qui affiche tous les journaux. Cloud Logging crée également une vue pour le bucket `_Default` appelée `_Default`. La vue `_Default` pour le bucket `_Default` affiche tous les journaux sauf les journaux d'audit d'accès aux données. Les vues `_AllLogs` et `_Default` ne sont pas modifiables.

Il est possible de permettre à un principal **d'utiliser uniquement une vue de journal spécifique** avec une stratégie IAM comme :

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

Journaux par défaut

Par défaut, les opérations Admin Write (également appelées journaux d'audit des activités des administrateurs) sont celles qui sont enregistrées (écrire des métadonnées ou des informations de configuration) et ne peuvent pas être désactivées.

Ensuite, l'utilisateur peut activer les journaux d'audit des accès aux données, qui incluent les Admin Read, Data Write et Data Write.

Vous pouvez trouver plus d'informations sur chaque type de journal dans la documentation : https://cloud.google.com/iam/docs/audit-logging

Cependant, notez que cela signifie qu'en par défaut, les actions telles que GetIamPolicy et autres actions de lecture ne sont pas enregistrées. Ainsi, par défaut, un attaquant tentant d'énumérer l'environnement ne sera pas détecté si le sysadmin n'a pas configuré la génération de plus de journaux.

Pour activer plus de journaux dans la console, le sysadmin doit se rendre sur https://console.cloud.google.com/iam-admin/audit et les activer. Il existe 2 options différentes :

  • Configuration par défaut : Il est possible de créer une configuration par défaut et d'enregistrer tous les journaux Admin Read et/ou Data Read et/ou Data Write et même d'ajouter des principaux exemptés :

  • Sélectionner les services : Ou simplement sélectionner les services pour lesquels vous souhaitez générer des journaux et le type de journaux ainsi que le principal excepté pour ce service spécifique.

Notez également qu'en par défaut, seuls ces journaux sont générés car générer plus de journaux augmentera les coûts.

Énumération

L'outil en ligne de commande gcloud est une partie intégrante de l'écosystème GCP, vous permettant de gérer vos ressources et services. Voici comment vous pouvez utiliser gcloud pour gérer vos configurations de journalisation et accéder aux journaux.

# 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

Exemple pour vérifier les journaux de cloudresourcemanager (celui utilisé pour BF permissions): 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

Il n'y a pas de journaux de testIamPermissions:

Post Exploitation

pageGCP - Logging Post Exploitation

Persistence

pageGCP - Logging Persistence

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour