유출: BigQuery 데이터 무단 반출

이 문서에서는 Security Command Center의 위협 발견 사항 유형에 대해 설명합니다. 위협 발견 사항은 위협 감지기가 클라우드 리소스에서 잠재적인 위협을 감지할 때 생성됩니다. 사용 가능한 위협 발견 사항의 전체 목록은 위협 발견 사항 색인을 확인하세요.

개요

Exfiltration: BigQuery Data Exfiltration으로 반환된 발견 항목에는 두 가지 하위 규칙 중 하나가 포함됩니다. 각 하위 규칙의 심각도가 다릅니다.

  • 심각도 = HIGH인 하위 규칙 exfil_to_external_table:
    • 리소스가 조직 또는 프로젝트 외부에 저장되었습니다.
  • 심각도 = LOW인 하위 규칙 vpc_perimeter_violation:
    • VPC 서비스 제어가 복사 작업 또는 BigQuery 리소스 액세스 시도를 차단했습니다.

Event Threat Detection이 이 발견 사항의 소스입니다.

대응 방법

이 발견 사항에 대응하려면 다음을 수행하세요.

1단계: 발견 사항 세부정보 검토하기

  1. 발견 항목 검토의 지시에 따라 Exfiltration: BigQuery Data Exfiltration 발견 항목을 엽니다.
  2. 발견 항목 세부정보 패널의 요약 탭에서 다음 섹션에 나열된 값을 검토합니다.

    • 감지된 항목:
      • 심각도: 심각도는 하위 규칙 exfil_to_external_table의 경우 HIGH, 하위 규칙 vpc_perimeter_violation의 경우 LOW입니다.
      • 주 구성원 이메일: 데이터를 유출하는 데 사용된 계정
      • 유출 소스: 데이터가 유출된 테이블에 대한 세부정보
      • 유출 대상: 유출된 데이터가 저장된 테이블에 대한 세부정보
    • 영향을 받는 리소스:
      • 리소스 전체 이름: 데이터가 유출된 프로젝트, 폴더, 조직의 전체 리소스 이름
    • 관련 링크:
      • Cloud Logging URI: Logging 항목의 링크
      • MITRE ATT&CK 메서드: MITRE ATT&CK 문서의 링크
      • 관련 발견 항목: 모든 관련 발견 항목의 링크
  3. 소스 속성 탭을 클릭하고 특히 다음과 같은 표시된 필드를 검토합니다.

    • detectionCategory:
      • subRuleName: exfil_to_external_table 또는 vpc_perimeter_violation입니다.
    • evidence:
      • sourceLogId:
        • projectId: 소스 BigQuery 데이터 세트가 포함된 Google Cloud 프로젝트입니다.
    • properties
      • dataExfiltrationAttempt
        • jobLink: 데이터를 유출한 BigQuery 작업의 링크
        • query: BigQuery 데이터 세트에서 실행되는 SQL 쿼리
  4. 원하는 경우 발견 항목의 JSON 속성 전체 목록을 보려면 JSON 탭을 클릭합니다.

2단계: 권한 및 설정 검토하기

  1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

    IAM으로 이동

  2. 필요한 경우 발견 항목 JSON의 projectId 필드에 나열된 프로젝트를 선택합니다.

  3. 표시되는 페이지의 필터 상자에서 주 구성원 이메일에 나열된 이메일 주소를 입력하고 계정에 할당되는 권한을 확인합니다.

3단계: 로그 확인하기

  1. 발견 항목 세부정보 패널의 요약 탭에서 Cloud Logging URI 링크를 클릭하여 로그 탐색기를 엽니다.
  2. 다음 필터를 사용하여 BigQuery 작업과 관련된 관리자 활동 로그를 찾습니다.

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

4단계: 공격 및 대응 방법 조사하기

  1. 이 발견 항목 유형의 MITRE ATT&CK 프레임워크 항목 검토: 웹 서비스를 통한 유출: Cloud Storage로 유출
  2. 발견 항목 세부정보의 요약 탭에 있는 관련 발견 항목 행에서 관련 발견 항목 링크를 클릭하여 관련 발견 항목을 검토합니다. 관련 발견 항목은 동일한 인스턴스 및 네트워크의 동일한 발견 유형입니다.
  3. 대응 계획을 개발하려면 조사 결과를 MITRE 연구와 결합합니다.

5단계: 대응 구현하기

다음의 응답 계획이 이 발견 사항에 적합할 수 있지만 작업에도 영향을 줄 수 있습니다. 조사에서 수집한 정보를 신중하게 평가하여 발견 사항을 해결할 최선의 방법을 결정해야 합니다.

예시 발견 사항 JSON

다음은 발견 항목 JSON의 예시입니다.

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

다음 단계