竊取:將 BigQuery 資料匯出至 Google 雲端硬碟

本文說明 Security Command Center 中的威脅發現項目類型。威脅偵測工具在雲端資源中偵測到潛在威脅時,就會產生威脅發現項目。如需可用威脅發現項目的完整清單,請參閱「威脅發現項目索引」。

總覽

系統會檢查稽核記錄,判斷是否發生下列情況,藉此偵測 BigQuery 資料竊取:

  • 資源會儲存至 Google 雲端硬碟資料夾。

Event Threat Detection 是這項發現項目的來源。

回應方式

如要回應這項發現項目,請按照下列步驟操作:

步驟 1:查看調查結果詳細資料

  1. 按照「查看發現項目」一文的說明,開啟 Exfiltration: BigQuery Data to Google Drive 發現項目。
  2. 在調查結果詳細資料面板的「摘要」分頁中,查看下列各節的資訊:

    • 偵測到的內容,包括:
      • 主要電子郵件地址:用來外洩資料的帳戶。
      • 外洩來源:資料外洩的 BigQuery 資料表詳細資料。
      • 資料竊取目標:Google 雲端硬碟中的目的地詳細資料。
    • 受影響的資源,包括:
      • 資源完整名稱:遭外洩資料的 BigQuery 資源名稱。
      • 專案完整名稱:包含來源 BigQuery 資料集的 Google Cloud 專案。
    • 相關連結,包括:
      • Cloud Logging URI:記錄項目連結。
      • MITRE ATT&CK 方法:連結至 MITRE ATT&CK 文件。
      • 相關發現項目:任何相關發現項目的連結。
  3. 如要瞭解更多資訊,請按一下「JSON」分頁標籤。

  4. 請注意 JSON 中的下列欄位。

    • sourceProperties
      • evidence
        • sourceLogId
        • projectId:包含來源 BigQuery 資料集的 Google Cloud 專案。
      • properties
        • extractionAttempt
        • jobLink:外洩資料的 BigQuery 工作連結

步驟 2:檢查權限和設定

  1. 前往 Google Cloud 控制台的「IAM」(身分與存取權管理) 頁面。

    前往「IAM」頁面

  2. 如有需要,請選取在發現項目 JSON projectId 欄位中列出的專案 (來自步驟 1)。

  3. 在隨即顯示的頁面中,於「篩選條件」方塊中輸入 access.principalEmail 列出的電子郵件地址 (來自步驟 1),並檢查指派給該帳戶的權限。

步驟 3:檢查記錄

  1. 在發現項目詳細資料面板的「摘要」分頁中,按一下「Cloud Logging URI」連結,開啟「Logs Explorer」
  2. 使用下列篩選器,找出與 BigQuery 工作相關的管理員活動記錄:
    • protoPayload.methodName="Jobservice.insert"
    • protoPayload.methodName="google.cloud.bigquery.v2.JobService.InsertJob"

步驟 4:研究攻擊和應變方法

  1. 查看這類發現項目的 MITRE ATT&CK 架構項目: 透過網路服務外洩資料:外洩至雲端儲存空間
  2. 如要查看相關發現項目,請在發現項目詳細資料的「摘要」分頁中,按一下「相關發現項目」資料列的連結。相關發現項目是指同一執行個體和網路上的相同發現項目類型。
  3. 如要制定回應計畫,請將調查結果與 MITRE 研究結合。

步驟 5:實作回應

下列應變計畫可能適用於這項發現,但也可能影響作業。 請仔細評估調查期間收集到的資訊,找出解決問題的最佳方式。

發現項目 JSON 範例

以下是發現項目 JSON 的範例。

{
  "finding": {
    "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
    "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
    "resource_name": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID",
    "state": "ACTIVE",
    "category": "Exfiltration: BigQuery Data to Google Drive",
    "sourceProperties": {
      "affectedResources": [{
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }],
      "detectionCategory": {
        "technique": "google_drive_exfiltration",
        "indicator": "audit_log",
        "ruleName": "big_query_exfil",
        "subRuleName": "exfil_to_google_drive"
      },
      "detectionPriority": "LOW",
      "sourceId": {
        "projectNumber": "PROJECT_NUMBER",
        "customerOrganizationNumber": "ORGANIZATION_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 BigQuery Exfiltration to Google Drive findings",
          "url": "RELATED_FINDINGS_LINK"
        }
      },
      "evidence": [{
        "sourceLogId": {
          "projectId": PROJECT_ID,
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "0",
            "nanos": 0.0
          },
          "insertId": "INSERT_ID"        }
      }],
      "properties": {
        "extractionAttempt": {
          "jobLink": "https://console.cloud.google.com/bigquery?j=JOB_ID&project=SOURCE_PROJECT_ID&page=queryresults",
          "job": {
            "projectId": "SOURCE_PROJECT_ID",
            "jobId": "JOB_ID",
            "location": "US"
          },
          "sourceTable": {
            "projectId": "DESTINATION_PROJECT_ID",
            "datasetId": "DATASET_ID",
            "tableId": "TABLE_ID",
            "resourceUri": "FULL_URI"
          },
          "destinations": [
            {
              "originalUri": "gdrive://TARGET_GOOGLE_DRIVE_FOLDER/TARGET_GOOGLE_DRIVE_FILE_NAME",
              "collectionType": "GDRIVE",
              "collectionName": "TARGET_GOOGLE_DRIVE_FOLDER",
              "objectName": "TARGET_GOOGLE_DRIVE_FILE_NAME"
            }
          ]
        },
        "principalEmail": "PRINCIPAL_EMAIL"
      },
      "findingId": "FINDING_ID"
    },
    "securityMarks": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
    },
    "eventTime": "2022-03-31T21:20:18.408Z",
    "createTime": "2022-03-31T21:20:18.715Z",
    "severity": "LOW",
    "workflowState": "NEW",
    "canonicalName": "projects/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": "bigquery.googleapis.com",
      "methodName": "google.cloud.bigquery.v2.JobService.InsertJob"
    },
    "exfiltration": {
      "sources": [
        {
          "name": "//bigquery.googleapis.com/projects/SOURCE_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID"
        }
      ],
      "targets": [
        {
          "name": "TARGET_GOOGLE_DRIVE_URI"
        }
      ]
    }
  },
  "resource": {
    "name": "//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID",
    "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "projectDisplayName": "PROJECT_ID",
    "parentName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER/datasets/DATASET_ID",
    "parentDisplayName": "PROJECT_ID:DATASET_ID",
    "type": "google.cloud.bigquery.Table",
    "folders": [{
      "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
      "resourceFolderDisplayName": "FOLDER_NAME"
    }],
    "displayName": "PROJECT_ID:DATASET_ID.TABLE_ID"
  }
}

後續步驟