Esfiltrazione: ripristino del backup di Cloud SQL in un'organizzazione esterna

Questo documento descrive un tipo di risultato di minaccia in Security Command Center. I risultati di minaccia vengono generati dai rilevatori di minacce quando rilevano una potenziale minaccia nelle risorse cloud. Per un elenco completo dei risultati di minaccia disponibili, consulta l'indice dei risultati di minaccia.

Panoramica

L'esfiltrazione di dati da un backup di Cloud SQL viene rilevata esaminando i log di audit per determinare se i dati del backup sono stati ripristinati in un'istanza Cloud SQL al di fuori dell'organizzazione o del progetto. Sono supportati tutti i tipi di istanze e backup di Cloud SQL.

Event Threat Detection è l'origine di questo risultato.

Come rispondere

Per rispondere a questo risultato:

Passaggio 1: esamina i dettagli del risultato

  1. Apri un risultato Exfiltration: Cloud SQL Restore Backup to External Organization, come indicato in Esaminare i risultati.
  2. Nella scheda Riepilogo del riquadro dei dettagli del risultato, esamina le informazioni nelle seguenti sezioni:

    • Che cosa è stato rilevato, in particolare i seguenti campi:
      • Indirizzo email dell'entità: l'account utilizzato per esfiltrare i dati.
      • Origini di esfiltrazione: dettagli sull'istanza Cloud SQL da cui è stato creato il backup.
      • Destinazioni di esfiltrazione: dettagli sull'istanza Cloud SQL in cui sono stati ripristinati i dati di backup.
    • Risorsa interessata, in particolare i seguenti campi:
      • Nome completo della risorsa: il nome della risorsa del backup ripristinato.
      • Nome completo del progetto: il Google Cloud progetto che contiene l'istanza Cloud SQL da cui è stato creato il backup.
  3. Link correlati, in particolare i seguenti campi:

    • URI Cloud Logging: link alle voci di Logging.
    • Metodo MITRE ATT&CK: link alla documentazione MITRE ATT&CK.
    • Risultati correlati: link a eventuali risultati correlati.
  4. Fai clic sulla scheda JSON.

  5. Nel JSON, prendi nota dei seguenti campi.

    • resource:
      • parent_name: il nome della risorsa dell'istanza Cloud SQL da cui è stato creato il backup
    • evidence:
      • sourceLogId:
        • projectId: il Google Cloud progetto che contiene l'origine del set di dati BigQuery.
    • properties:
      • restoreToExternalInstance:
        • backupId: l'ID dell'esecuzione del backup ripristinata

Passaggio 2: esamina le autorizzazioni e le impostazioni

  1. Nella Google Cloud console vai alla pagina IAM.

    Vai a IAM

  2. Se necessario, seleziona il progetto dell'istanza elencata nel projectId campo nel JSON del risultato (dal passaggio 1).

  3. Nella pagina visualizzata, nella casella Filtro, inserisci l'indirizzo email elencato in Indirizzo email dell'entità (dal passaggio 1) e controlla le autorizzazioni assegnate all'account.

Passaggio 3: controlla i log

  1. Nella Google Cloud console, vai a Esplora log facendo clic sul link in URI Cloud Logging (dal passaggio 1). La pagina Esplora log include tutti i log relativi all'istanza Cloud SQL pertinente.

Passaggio 4: ricerca i metodi di attacco e risposta

  1. Esamina la voce del framework MITRE ATT&CK per questo tipo di risultato: Esfiltrazione tramite servizio web: esfiltrazione in Cloud Storage.
  2. Esamina i risultati correlati facendo clic sul link nella riga Risultati correlati. (dal passaggio 1). I risultati correlati hanno lo stesso tipo di risultato sulla stessa istanza Cloud SQL.
  3. Per sviluppare un piano di risposta, combina i risultati dell'indagine con la ricerca MITRE.

Passaggio 5: implementa la risposta

Il seguente piano di risposta potrebbe essere appropriato per questo risultato, ma potrebbe anche influire sulle operazioni. Valuta attentamente le informazioni raccolte durante l'indagine per determinare il modo migliore per risolvere i risultati.

  • Contatta il proprietario del progetto con i dati esfiltrati.
  • Valuta la possibilità di revocare le autorizzazioni dell'entità elencata nella riga Indirizzo email dell'entità nella scheda Riepilogo dei dettagli del risultato fino al completamento dell'indagine.
  • Per interrompere l'esfiltrazione, aggiungi policy IAM restrittive alle istanze Cloud SQL interessate.
  • Per limitare l'accesso all'API Cloud SQL Admin, utilizza Controlli di servizio VPC.
  • Per identificare e correggere i ruoli eccessivamente permissivi, utilizza IAM Recommender.

Esempio di JSON del risultato

Di seguito è riportato un esempio del JSON del risultato.

{
    "finding": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
      "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
      "resource_name": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME/backupRuns/BACKUP_ID",
      "state": "ACTIVE",
      "category": "Exfiltration: CloudSQL Restore Backup to External Organization",
      "sourceProperties": {
        "sourceId": {
          "projectNumber": "SOURCE_PROJECT_NUMBER",
          "customerOrganizationNumber": "ORGANIZATION_ID"
        },
        "detectionCategory": {
          "technique": "backup_exfiltration",
          "indicator": "audit_log",
          "ruleName": "cloudsql_exfil",
          "subRuleName": "restore_to_external_instance"
        },
        "detectionPriority": "HIGH",
        "affectedResources": [
          {
            "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/SOURCE_PROJECT_NUMBER"
          },
          {
            "gcpResourceName": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME"
          },
          {
            "gcpResourceName": "//cloudsql.googleapis.com/projects/TARGET_PROJECT_ID/instances/TARGET_INSTANCE_NAME"
          },
        ],
        "evidence": [{
          "sourceLogId": {
            "projectId": "SOURCE_PROJECT_ID",
            "resourceContainer": "projects/SOURCE_PROJECT_ID",
            "timestamp": {
              "seconds": "0",
              "nanos": 0.0
            },
            "insertId": "INSERT_ID"
          }
        }],
        "properties": {
          "restoreToExternalInstance": {
            "principalEmail": "PRINCIPAL_EMAIL",
            "sourceCloudsqlInstanceResource": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME",
            "backupId": "BACKUP_ID",
            "targetCloudsqlInstanceResource": "//cloudsql.googleapis.com/projects/TARGET_PROJECT_ID/instances/TARGET_INSTANCE_NAME"
          }
        },
        "findingId": "FINDING_ID",
        "contextUris": {
          "mitreUri": {
            "displayName": "MITRE Link",
            "url": "https://attack.mitre.org/techniques/T1567/002/"
          },
          "cloudLoggingQueryUri": [{
            "displayName": "Cloud Logging Query Link",
            "url": "LOGGING_LINK"
          }],
          "relatedFindingUri": {
            "displayName": "Related CloudSQL Exfiltration findings",
            "url": "RELATED_FINDINGS_LINK"
          }
        }
      },
      "securityMarks": {
        "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
      },
      "eventTime": "2022-01-19T21:36:07.901Z",
      "createTime": "2022-01-19T21:36:08.695Z",
      "severity": "HIGH",
      "workflowState": "NEW",
      "canonicalName": "projects/SOURCE_PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID"
      "mute": "UNDEFINED",
      "findingClass": "THREAT",
      "mitreAttack": {
        "primaryTactic": "EXFILTRATION",
        "primaryTechniques": ["EXFILTRATION_OVER_WEB_SERVICE", "EXFILTRATION_TO_CLOUD_STORAGE"]
      },
      "access": {
        "principalEmail": "PRINCIPAL_EMAIL",
        "callerIp": "IP",
        "callerIpGeo": {
        },
        "serviceName": "cloudsql.googleapis.com",
        "methodName": "cloudsql.instances.restoreBackup"
      },
      "exfiltration": {
        "sources": [
          {
            "name": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME"
          }
        ],
        "targets": [
          {
            "name": "//cloudsql.googleapis.com/projects/TARGET_PROJECT_ID/instances/TARGET_INSTANCE_NAME"
          }
        ]
      }
    },
    "resource": {
      "name": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME/backupRuns/BACKUP_ID",
      "projectName": "//cloudresourcemanager.googleapis.com/projects/SOURCE_PROJECT_NUMBER",
      "projectDisplayName": "SOURCE_PROJECT_ID",
      "parentName": "//cloudsql.googleapis.com/projects/SOURCE_PROJECT_ID/instances/SOURCE_INSTANCE_NAME",
      "parentDisplayName": "SOURCE_INSTANCE_NAME",
      "type": "google.cloud.sql.Instance",
      "folders": [{
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
        "resourceFolderDisplayName": "FOLDER_ID"
      }],
      "displayName": "mysql-backup-restore-instance"
    }
}

Passaggi successivi