Eksfiltrasi: Pemulihan Cadangan Cloud SQL ke Organisasi Eksternal

Dokumen ini menjelaskan jenis temuan ancaman di Security Command Center. Temuan ancaman dihasilkan oleh detektor ancaman saat mendeteksi potensi ancaman di resource cloud Anda. Untuk daftar lengkap temuan ancaman yang tersedia, lihat Indeks temuan ancaman.

Ringkasan

Pemindahan data yang tidak sah dari cadangan Cloud SQL terdeteksi dengan memeriksa log audit untuk menentukan apakah data dari cadangan telah dipulihkan ke instance Cloud SQL di luar organisasi atau project. Semua jenis instance dan cadangan Cloud SQL didukung.

Event Threat Detection adalah sumber temuan ini.

Cara merespons

Untuk merespons temuan ini, lakukan hal berikut:

Langkah 1: Tinjau detail temuan

  1. Buka temuan Exfiltration: Cloud SQL Restore Backup to External Organization, seperti yang diarahkan dalam Meninjau temuan.
  2. Di panel detail temuan, pada tab Ringkasan , tinjau informasi di bagian berikut:

    • Yang terdeteksi, terutama kolom berikut:
      • Email utama: akun yang digunakan untuk mengeksfiltrasi data.
      • Sumber exfiltrasi: detail tentang instance Cloud SQL tempat cadangan dibuat.
      • Target exfiltrasi: detail tentang instance Cloud SQL tempat data cadangan dipulihkan.
    • Resource yang terpengaruh, terutama kolom berikut:
      • Nama lengkap resource: nama resource cadangan yang dipulihkan.
      • Nama lengkap project: Google Cloud project yang berisi instance Cloud SQL tempat cadangan dibuat.
  3. Link terkait, terutama kolom berikut:

    • URI Cloud Logging: link ke entri Logging.
    • Metode MITRE ATT&CK: link ke dokumentasi MITRE ATT&CK.
    • Temuan terkait: link ke temuan terkait.
  4. Klik tab JSON.

  5. Dalam JSON, perhatikan kolom berikut.

    • resource:
      • parent_name: nama resource instance Cloud SQL tempat cadangan dibuat
    • evidence:
      • sourceLogId:
        • projectId: project yang Google Cloud berisi set data BigQuery sumber.
    • properties:
      • restoreToExternalInstance:
        • backupId: ID proses cadangan yang dipulihkan

Langkah 2: Tinjau izin dan setelan

  1. Di Google Cloud konsol, buka halaman IAM.

    Buka IAM

  2. Jika perlu, pilih project instance yang tercantum di kolom projectId dalam JSON temuan (dari Langkah 1).

  3. Di halaman yang muncul, di kotak Filter, masukkan alamat email yang tercantum di Email utama (dari Langkah 1) dan periksa izin yang ditetapkan ke akun.

Langkah 3: Periksa log

  1. Di Google Cloud konsol, buka Logs Explorer dengan mengklik link di URI Cloud Logging (dari Langkah 1). Halaman Logs Explorer mencakup semua log yang terkait dengan instance Cloud SQL yang relevan.

Langkah 4: Teliti metode serangan dan respons

  1. Tinjau entri framework MITRE ATT&CK untuk jenis temuan ini: Exfiltration Over Web Service: Exfiltration to Cloud Storage.
  2. Tinjau temuan terkait dengan mengklik link di baris Temuan terkait. (dari Langkah 1). Temuan terkait memiliki jenis temuan yang sama pada instance Cloud SQL yang sama.
  3. Untuk mengembangkan rencana respons, gabungkan hasil penyelidikan Anda dengan riset MITRE.

Langkah 5: Terapkan respons Anda

Rencana respons berikut mungkin sesuai untuk temuan ini, tetapi juga dapat memengaruhi operasi. Evaluasi dengan cermat informasi yang Anda kumpulkan dalam penyelidikan untuk menentukan cara terbaik dalam menyelesaikan temuan.

  • Hubungi pemilik project dengan data yang dieksfiltrasi.
  • Pertimbangkan untuk mencabut izin utama yang tercantum di baris Email utama di tab Ringkasan detail temuan hingga penyelidikan selesai.
  • Untuk menghentikan exfiltrasi lebih lanjut, tambahkan kebijakan IAM yang ketat ke instance Cloud SQL yang terpengaruh.
  • Untuk membatasi akses ke Cloud SQL Admin API, gunakan Kontrol Layanan VPC.
  • Untuk mengidentifikasi dan memperbaiki peran yang terlalu permisif, gunakan IAM Recommender.

Contoh JSON temuan

Berikut adalah contoh JSON temuan.

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

Langkah berikutnya