コンテキストアウェア分析で Sensitive Data Protection のデータを使用する

以下でサポートされています。

このドキュメントでは、Sensitive Data Protection および追加のログソースのエンティティ コンテキスト データを使用して、脅威の調査を実行するときに、潜在的な脅威の影響と範囲に関するコンテキストを理解する方法を説明します。

このドキュメントで説明するユースケースでは、ユーザー(MITRE ATT&CK Technique T1204.002)による悪意のあるファイルの実行と、そのユーザーがネットワーク上のその他の場所にある機密データにアクセスできるかどうかを検出します。

この例では、次のデータを Google Security Operations に取り込んで正規化する必要があります。

  • ネットワーク ログと EDR ログを使用したユーザー アクティビティ データ。
  • Google Cloud IAM Analysis などのデータソースのリソース関係。
  • 保存されたデータの種類と機密性に関するラベルを含む Sensitive Data Protection のログ。

Google Security Operations は、元データを解析して統合データモデル(UDM)エンティティとイベント レコードに変換できる必要があります。

Sensitive Data Protection のデータを Google Security Operations に取り込む方法については、Google Security Operations への Sensitive Data Protection データのエクスポートをご覧ください。

Google Cloud IAM 分析データ

この例の Google Cloud IAM 分析ログデータは、組織内のユーザーを識別し、各ユーザーがネットワーク上の他のシステムと持つ関係を把握します。以下は、UDM エンティティ レコードとして保存された IAM Analysis ログのスニペットです。これには、analytics:claim.patients という BigQuery テーブルを管理する mikeross ユーザーに関する情報が保存されます。

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP IAM Analysis"
metadata.entity_type: "USER"
entity.user.userid: "mikeross"
relations[2].entity.resource.name: "analytics:claim.patients"
relations[2].entity.resource.resource_type: "TABLE"
relations[2].entity_type: "RESOURCE"
relations[2].relationship: "ADMINISTERS"

Sensitive Data Protection のデータ

この例の Sensitive Data Protection データには、BigQuery テーブルに関する情報が保存されます。次に、UDM エンティティ レコードとして保存された Sensitive Data Protection ログのスニペットを示します。これは、米国社会保障番号が格納されていることを示す、Predicted InfoType ラベル US_SOCIAL_SECURITY_NUMBER を持つ analytics:claim.patients という BigQuery テーブルを表します。

metadata.vendor_name: "Google Cloud Platform"
metadata.product_name: "GCP DLP CONTEXT"
metadata.entity_type: "RESOURCE"
metadata.description: "RISK_HIGH"
entity.resource.resource_type: "TABLE"
entity.resource.resource_subtype: "BigQuery Table"
entity.resource.attribute.cloud.environment"GOOGLE_CLOUD_PLATFORM"
entity.resource.attribute.labels[0].key: "Sensitivity Score"
entity.resource.attribute.labels[0].value: "SENSITIVITY_HIGH"
entity.resource.attribute.labels[1].key: "Predicted InfoType"
entity.resource.attribute.labels[1].value: "US_SOCIAL_SECURITY_NUMBER"
entity.resource.product_object_id: "analytics:claim.patients"

ウェブプロキシ イベント

この例のウェブ プロキシ イベントは、ネットワーク アクティビティをキャプチャします。次のスニペットは、UDM イベント レコードとして保存された Zscaler ウェブプロキシ ログです。これは、ユーザーが userid の値 mikeross を持つ実行可能ファイルのネットワーク ダウンロード イベントをキャプチャします。ここで、received_bytes の値は 514605 です。

metadata.log_type = "ZSCALER_WEBPROXY"
metadata.product_name = "NSS"
metadata.vendor_name = "Zscaler"
metadata.event_type = "NETWORK_HTTP"
network.http.response_code = 200
network.received_bytes = 514605
principal.user.userid = "mikeross"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"

EDR イベント

この例の EDR イベントは、エンドポイント デバイスでのアクティビティをキャプチャします。次のスニペットは、UDM イベント レコードとして保存された CrowdStrike Falcon EDR ログです。これは、Microsoft Excel アプリケーションと userid の値 mikeross を持つユーザーを含むネットワーク イベントをキャプチャします。

metadata.log_type = "CS_EDR"
metadata.product_name = "Falcon"
metadata.vendor_name = "Crowdstrike"
metadata.event_type = "NETWORK_HTTP"
target.process.file.full_path = "\\Device\\HarddiskVolume1\\Program Files\\C:\\Program Files\\Microsoft Office\\Office16\\EXCEL.exe"
target.url = "http://manygoodnews.com/dow/Client%20Update.exe"
target.user.userid = "mikeross"

これらのレコードには、ユーザー ID mikeross とテーブル名 analytics:claim.patients の両方という共通の情報があるので注意してください。このドキュメントの次のセクションでは、レコードを結合するために、これらの値をルールで使用する方法について説明します。

この例の検出エンジンルール

この例のルールでは、ユーザー(MITRE ATT&CK Technique T1204.002)による悪意のあるファイルの実行を検出します。

このユーザーがネットワーク上の他の場所にも機密データにアクセスできる場合、このルールにより、より高いリスクスコアが検出に割り当てられます。このルールは、次の情報を関連付けます。

  • ユーザー アクティビティ(実行可能ファイルのダウンロードや起動など)。
  • リソース間の関係(ユーザーと BigQuery テーブルの関係など)。
  • ユーザーがアクセスできるリソース(BigQuery テーブルに保存されているデータの種類など)における機密情報の存在。

以下に、サンプルルールの各セクションの説明を示します。

  • events セクションでは、ルールが検索するデータのパターンを指定し、次の内容が含まれます。

    • グループ 1 とグループ 2 は、Excel アプリケーションのアクティビティにも関連する、大量のデータまたは実行可能ファイルのダウンロードをキャプチャするネットワーク イベントと EDR イベントを識別します。
    • グループ 3 は、ネットワークおよび EDR イベントで識別されたユーザーが、BigQuery テーブルに対する権限も持つレコードを識別します。
    • グループ 4 は、ユーザーがアクセスできる BigQuery テーブルの Sensitive Data Protection レコードを識別します。

    式の各グループは、$table_name 変数または $user 変数を使用して、同じユーザーとデータベース テーブルに関連するレコードを結合します。

  • outcome セクションでは、ルールが $risk_score 変数を作成し、テーブル内のデータの機密性に基づいて値を設定します。この場合、データに US_SOCIAL_SECURITY_NUMBER Sensitive Data Protection infoType のラベルが付いているかどうかを確認します。

    outcome セクションでは、$principalHostname$entity_resource_name などの追加の変数も設定されます。これらの変数は、検出によって返され、保存されるため、Google Security Operations で表示するときにも表示できます。変数の値を列として表示できます。

  • condition セクションは、パターンが events セクションで指定されたすべての UDM レコードを検索することを示します。

  rule high_risk_user_download_executable_from_macro {
 meta:
   author = "Google Cloud Security Demos"
   description = "Executable downloaded by Microsoft Excel from High Risk User"
   severity = "High"
   technique = "T1204.002"

 events:
   //Group 1. identify a proxy event with suspected executable download
   $proxy_event.principal.user.userid = $user
   $proxy_event.target.url =  /.*\.exe$/ or
   $proxy_event.network.received_bytes > 102400

   //Group 2. correlate with an EDR event indicating Excel activity
   $edr_event.target.user.userid  = $user
   $edr_event.target.process.file.full_path = /excel/ nocase
   $edr_event.metadata.event_type = "NETWORK_HTTP"

   //Group 3. Use the entity to find the permissions
   $user_entity.graph.entity.user.userid = $user
   $user_entity.graph.relations.entity.resource.name = $table_name

   //Group 4. the entity is from Cloud DLP data
   $table_context.graph.entity.resource.product_object_id = $table_name
   $table_context.graph.metadata.product_name = "GCP DLP CONTEXT"

 match:
    $user over 5m

 outcome:
   //calculate risk score
   $risk_score = max(
       if( $table_context.graph.entity.resource.attribute.labels.value = "US_SOCIAL_SECURITY_NUMBER", 80)
       )
   $technique = array_distinct("T1204.002")
   $principalHostname = array_distinct($proxy_event.principal.hostname)
   $principalIp = array_distinct($proxy_event.principal.ip)
   $principalMac = array_distinct($proxy_event.principal.mac)
   $targetHostname = array_distinct($proxy_event.target.hostname)
   $target_url = array_distinct($proxy_event.target.url)
   $targetIp = array_distinct($proxy_event.target.ip)
   $principalUserUserid =  array_distinct($proxy_event.principal.user.userid)
   $entity_resource_name = array_distinct($table_context.graph.entity.resource.name)

condition:
   $proxy_event and $edr_event and $user_entity and $table_context
}

検出について

既存のデータに対してルールをテストし、定義で指定されたアクティビティのパターンが特定された場合、検出が生成されます。[検出] パネルには、ルールのテスト後に生成された検出が表示されます。[検出] パネルには、ルールが検出を作成した原因となったイベントとエンティティ レコードも表示されます。この例では、次のレコードが表示されます。

  • Google Cloud IAM 分析 UDM エンティティ
  • Sensitive Data Protection UDM エンティティ
  • Zscaler ウェブプロキシの UDM イベント
  • CrowdStrike Falcon EDR UDM イベント

[検出] パネルで、イベントまたはエンティティ レコードを選択して詳細を表示します。

検出では、ルールの outcome セクションで定義された変数も保存されます。[検出] パネルで変数を表示するには、[] を選択し、[] メニューから 1 つ以上の変数名を選択します。選択した列が [検出] パネルに表示されます。

次のステップ

カスタムルールを記述するには、YARA-L 2.0 言語の概要をご覧ください。

カスタム コンテキスト アウェア分析を作成するには、コンテキスト アウェア分析を作成するをご覧ください。

事前定義された脅威分析を使用するには、Google Security Operations のキュレートされた検出機能を使用するをご覧ください。