Exfiltration : exfiltration de données BigQuery

Ce document décrit un type de résultat de détection de menace dans Security Command Center. Ces résultats sont générés par les détecteurs de menaces lorsqu'ils détectent une menace potentielle dans vos ressources cloud. Pour obtenir la liste complète des résultats de détection de menace disponibles, consultez cet index.

Présentation

Les résultats renvoyés par le Exfiltration: BigQuery Data Exfiltration contiennent l'une des deux sous-règles possibles. Chaque sous-règle a une gravité différente :

  • Sous-règle exfil_to_external_table avec gravité = HIGH :
    • Une ressource a été enregistrée en dehors de votre organisation ou de votre projet.
  • Sous-règle vpc_perimeter_violation avec gravité = LOW :
    • VPC Service Controls a bloqué une opération de copie ou une tentative d'accès aux ressources BigQuery.

Event Threat Detection est la source de ce résultat.

Actions à mettre en place

Pour traiter ce résultat, procédez comme suit :

Étape 1 : Examiner les détails du résultat

  1. Ouvrez le résultat Exfiltration: BigQuery Data Exfiltration comme indiqué dans Examiner les résultats.
  2. Dans l'onglet Résumé du panneau "Détails du résultat", examinez les valeurs listées dans les sections suivantes :

    • Éléments détectés :
      • Gravité : la gravité est HIGH pour la sous-règle exfil_to_external_table ou LOW pour la sous-règle vpc_perimeter_violation.
      • Adresse e-mail du compte principal : compte utilisé pour exfiltrer les données.
      • Sources d'exfiltration : détails concernant les tables à partir desquelles les données ont été exfiltrées.
      • Cibles d'exfiltration : détails concernant les tables dans lesquelles les données exfiltrées ont été stockées.
    • Ressource concernée:
      • Nom complet de la ressource : nom complet de la ressource du projet, du dossier ou de l'organisation à partir duquel les données ont été exfiltrées.
    • Liens associés:
      • URI Cloud Logging : lien vers les entrées Logging.
      • Méthode MITRE ATT&CK : lien vers la documentation MITRE ATT&CK.
      • Résultats associés : liens vers les éventuels résultats associés.
  3. Cliquez sur l'onglet Propriétés sources et examinez les champs affichés, en particulier :

    • detectionCategory:
      • subRuleName: exfil_to_external_table ou vpc_perimeter_violation.
    • evidence:
      • sourceLogId:
        • projectId : projet contenant l'ensemble de données BigQuery source. Google Cloud
    • properties
      • dataExfiltrationAttempt
        • jobLink: lien vers la tâche BigQuery qui exfiltre des données.
        • query : requête SQL exécutée sur l'ensemble de données BigQuery.
  4. Si vous le souhaitez, cliquez sur l'onglet JSON pour obtenir la liste complète des propriétés JSON du résultat.

Étape 2 : Vérifier les autorisations et les paramètres

  1. Dans la console Google Cloud , accédez à la page IAM.

    Accéder à IAM

  2. Si nécessaire, sélectionnez le projet indiqué dans le champ projectId du JSON du résultat.

  3. Sur la page qui s'affiche, dans la zone Filtre, saisissez l'adresse e-mail répertoriée dans Adresse e-mail du compte principal et vérifiez les autorisations attribuées au compte.

Étape 3 : Vérifier les journaux

  1. Dans l'onglet Résumé du panneau de détails du résultat, cliquez sur le lien URI Cloud Logging pour ouvrir l'explorateur de journaux.
  2. Recherchez les journaux d'activité d'administration liés aux tâches BigQuery à l'aide des filtres suivants :

    • protoPayload.methodName="Jobservice.insert"
    • protoPayload.methodName="google.cloud.bigquery.v2.JobService.InsertJob"

Étape 4 : Étudier les méthodes d'attaque et de réponse

  1. Examinez l'entrée du framework MITRE ATT&CK pour ce type de résultat : Exfiltration over Web Service: Exfiltration to Cloud Storage (Exfiltration via service Web : Exfiltration vers Cloud Storage).
  2. Consultez les résultats associés en cliquant sur le lien Résultats associés indiqué dans la ligne Résultats associés de l'onglet Résumé des détails du résultat. Les résultats associés sont du même type de résultat, sur la même instance et sur le même réseau.
  3. Pour élaborer un plan de réponse, combinez les résultats de vos enquêtes avec la recherche MITRE.

Étape 5 : Mettre en œuvre votre plan de réponse

Le plan de réponse suivant peut être adapté à ce résultat, mais il peut également avoir un impact sur vos opérations. Veillez à bien évaluer les informations que vous collectez dans votre enquête pour déterminer quelle est la meilleure réponse à apporter aux problèmes soulevés par les résultats.

Exemple de code JSON de résultat

Voici un exemple de code JSON de résultat.

{
  "findings": {
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP",
      "callerIpGeo": {
        "regionCode": "REGION_CODE"
      },
      "serviceName": "bigquery.googleapis.com",
      "methodName": "google.cloud.bigquery.v2.JobService.InsertJob"
    },
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID",
    "category": "Exfiltration: BigQuery Data Exfiltration",
    "cloudDlpDataProfile": {},
    "cloudDlpInspection": {},
    "createTime": "2023-05-30T15:49:59.709Z",
    "database": {},
    "eventTime": "2023-05-30T15:49:59.432Z",
    "exfiltration": {
      "sources": [
        {
          "name": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      ],
      "targets": [
        {
          "name": "//bigquery.googleapis.com/projects/TARGET_PROJECT_ID/datasets/TARGET_DATASET_ID/tables/TARGET_TABLE_ID"
        }
      ]
    },
    "findingClass": "THREAT",
    "findingProviderId": "organizations/ORGANIZATION_ID/firstPartyFindingProviders/etd",
    "indicator": {},
    "kernelRootkit": {},
    "kubernetes": {},
    "mitreAttack": {
      "primaryTactic": "EXFILTRATION",
      "primaryTechniques": [
        "EXFILTRATION_OVER_WEB_SERVICE",
        "EXFILTRATION_TO_CLOUD_STORAGE"
      ]
    },
    "mute": "UNDEFINED",
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "parentDisplayName": "Event Threat Detection",
    "resourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "severity": "HIGH",
    "state": "ACTIVE",
    "vulnerability": {}
  },
  "resource": {
    "name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "display_name": "PROJECT_ID",
    "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "project_display_name": "PROJECT_ID",
    "parent_name": "//cloudresourcemanager.googleapis.com/folders/FOLDER_ID",
    "parent_display_name": "FOLDER_NAME",
    "type": "google.cloud.resourcemanager.Project",
    "folders": [
      {
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_ID",
        "resourceFolderDisplayName": "FOLDER_NAME"
      }
    ]
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_ID"
    },
    "detectionCategory": {
      "technique": "org_exfiltration",
      "indicator": "audit_log",
      "ruleName": "big_query_exfil",
      "subRuleName": "exfil_to_external_table"
    },
    "detectionPriority": "HIGH",
    "affectedResources": [
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1685461795",
            "nanos": 341527000
          },
          "insertId": "INSERT_ID"
        }
      }
    ],
    "properties": {
      "dataExfiltrationAttempt": {
        "jobState": "SUCCEEDED",
        "jobLink": "https://console.cloud.google.com/bigquery?j=bq:BIGQUERY_JOB_LOCATION:BIGQUERY_JOB_ID&project=PROJECT_ID&page=queryresults",
        "job": {
          "projectId": "PROJECT_ID",
          "jobId": "BIGQUERY_JOB_ID",
          "location": "BIGQUERY_JOB_LOCATION"
        },
        "query": "QUERY",
        "sourceTables": [
          {
            "resourceUri": "https://console.cloud.google.com/bigquery?p=PROJECT_ID&d=DATASET_ID&t=TABLE_ID&page=table",
            "projectId": "PROJECT_ID",
            "datasetId": "DATASET_ID",
            "tableId": "TABLE_ID"
          }
        ],
        "destinationTables": [
          {
            "resourceUri": "https://console.cloud.google.com/bigquery?p=TARGET_PROJECT_ID&d=TARGET_DATASET_ID&t=TARGET_TABLE_ID&page=table",
            "projectId": "TARGET_PROJECT_ID",
            "datasetId": "TARGET_DATASET_ID",
            "tableId": "TARGET_TABLE_ID"
          }
        ],
        "userEmail": "e2etest@PROJECT_ID.iam.gserviceaccount.com"
      },
      "principalEmail": "PRINCIPAL_EMAIL"
    },
    "findingId": "FINDING_ID",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/techniques/T1567/002/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222023-05-30T15:49:55.341527Z%22%0AinsertId%3D%22INSERT_ID%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
        }
      ],
      "relatedFindingUri": {}
    }
  }
}

Étape suivante