UEBA のリスク分析

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

このドキュメントでは、UEBA カテゴリのリスク分析のルールセットの概要、必要なデータ、各ルールセットによって生成されるアラートの調整に使用できる構成について説明します。これらのルールセットは、サポートされているログソースを評価して脅威を特定するのに役立ちます。

ルールセットの説明

Risk Analytics for UEBA カテゴリでは、次のルールセットを使用できます。これらのルールセットは、検出されたパターンのタイプごとにグループ化されています。

認証

  • New Login by User to Device: ユーザーが新しいデバイスにログインしました。
  • ユーザー別の異常な認証イベント: 過去の使用状況と比較して、最近、単一のユーザー エンティティで異常な認証イベントが発生しました。
  • デバイス別の認証失敗: 単一デバイス エンティティで、過去の使用状況と比較して、最近ログイン失敗の試行回数が多くなっています。
  • Failed Authentications by User(ユーザーによる認証の失敗): 単一ユーザー エンティティで、過去の使用状況と比較して、最近ログイン試行の失敗が多数発生しています。

ネットワーク トラフィックの分析

  • デバイス別の異常な受信バイト数: 過去の使用状況と比較して、最近単一のデバイス エンティティにアップロードされたデータ量が大幅に増加しています。
  • デバイス別の異常なアウトバウンド バイト数: 過去の使用状況と比較して、最近 1 つのデバイス エンティティからダウンロードされたデータ量が大幅に増加しています。
  • デバイス別の異常な合計バイト数: デバイス エンティティが、過去の使用量と比較して、最近大量のデータをアップロードおよびダウンロードしました。
  • ユーザー別の異常な受信バイト数: 単一ユーザー エンティティが、過去の使用状況と比較して、最近大量のデータをダウンロードしました。
  • ユーザー別の異常な合計バイト数: ユーザー エンティティが、過去の使用状況と比較して、最近大量のデータをアップロードおよびダウンロードした。
  • ブルート フォース攻撃の後にユーザーがログインに成功: 1 つの IP アドレスからの単一ユーザー エンティティが、特定のアプリケーションに対して認証の失敗を複数回試みた後、ログインに成功しました。

ピアグループに基づく検出

  • 新規作成されたユーザーの異常または過剰なログイン: 最近作成されたユーザーの異常または過剰な認証アクティビティ。これは、AD コンテキストデータの作成時間を使用します。

  • 新規作成されたユーザーの異常または過剰な不審なアクティビティ: 最近作成されたユーザーの異常または過剰なアクティビティ(HTTP テレメトリー、プロセス実行、グループの変更など)。これは、AD コンテキストデータの作成時間を使用します。

疑わしいアクション

  • デバイスによるアカウントの過剰な作成: デバイス エンティティが複数の新規ユーザー アカウントを作成しました。
  • ユーザー別の過剰なアラート: ウイルス対策デバイスまたはエンドポイント デバイスからの多数のセキュリティ アラート(接続がブロックされたマルウェアが検出されたなど)が報告されました。これは、過去のパターンよりもはるかに大きなデータです。これは、security_result.action UDM フィールドが BLOCK に設定されているイベントです。

データ損失防止に基づく検出

  • データ引き出し機能を持つ異常なプロセスまたは過剰なプロセス: キーロガー、スクリーンショット、リモート アクセスなどのデータ引き出し機能に関連するプロセスの異常なアクティビティまたは過剰なアクティビティ。これは、VirusTotal のファイル メタデータ拡充を使用します。

UEBA カテゴリのリスク分析に必要なデータ

このセクションでは、最適なパフォーマンスを実現するために各ルールセット カテゴリで必要なデータについて詳しく説明します。UEBA 検出は、サポートされているすべてのデフォルト パーサーで動作するように設計されていますが、次の特定のデータ型を使用すると、そのメリットを最大限に活用できます。サポートされているデフォルト パーサーの完全なリストについては、サポートされているログタイプとデフォルト パーサーをご覧ください。

認証

これらのルールセットのいずれかを使用するには、Azure AD ディレクトリ監査(AZURE_AD_AUDIT)または Windows イベント(WINEVTLOG)からログデータを収集します。

WINEVTLOG の場合、Security イベントログ Channel に次の Windows Event IDs を含めるようにデータの収集構成を構成する必要があります。これらのイベントは、検出エンジンで使用される Event typesUSER_LOGINPROCESS_LAUNCH など)に直接マッピングされます。

Windows イベント ID の要件

イベントタイプ Windows イベント ID
USER_LOGIN 529, 4624, 4625, 4626, 4648, 4672, 4768, 4769, 4770, 4771, 4777, 4820, 4821, 4964
USER_CREATION 4720
NETWORK_CONNECTION 4096, 4097, 4321, 5156, 5632, 5633, 5157
GROUP_MODIFICATION 4728, 4729, 4732, 4733, 4735, 4737, 4745, 4746, 4747, 4750, 4751, 4752, 4755, 4756, 4757, 4760, 4761, 4762, 4764, 4784, 4785, 4786, 4787, 4788, 4791
PROCESS_LAUNCH 4688
PROCESS_OPEN 4663, 4670, 4691, 8002

ネットワーク トラフィックの分析

これらのルールセットを使用するには、ネットワーク アクティビティをキャプチャするログデータを収集します。例: FortiGate(FORTINET_FIREWALL)、Check Point(CHECKPOINT_FIREWALL)、Zscaler(ZSCALER_WEBPROXY)、CrowdStrike Falcon(CS_EDR)、Carbon Black(CB_EDR)などのデバイスから。

ピアグループに基づく検出

これらのルールセットのいずれかを使用するには、Azure AD ディレクトリ監査(AZURE_AD_AUDIT)または Windows イベント(WINEVTLOG)からログデータを収集します。

疑わしいアクション

このグループのルールセットは、それぞれ異なる種類のデータを使用します。

デバイスによる過剰なアカウント作成ルールセット

このルールセットを使用するには、Azure AD ディレクトリ監査(AZURE_AD_AUDIT)または Windows イベント(WINEVTLOG)からログデータを収集します。

ユーザー ルールセットによる過剰なアラート

このルールセットを使用するには、CrowdStrike Falcon(CS_EDR)、Carbon Black(CB_EDR)、Azure AD ディレクトリ監査(AZURE_AD_AUDIT)によって記録されたエンドポイントアクティビティや監査データなど、エンドポイントのアクティビティをキャプチャするログデータを収集します。

データ損失防止に基づく検出

これらのルールセットを使用するには、CrowdStrike Falcon(CS_EDR)、Carbon Black(CB_EDR)、SentinelOne EDR(SENTINEL_EDR)などで記録されたプロセスとファイル アクティビティをキャプチャするログデータを収集します。

フィールドの依存関係

このセクションでは、Google SecOps UEBA ルールで使用される指標とディメンション フィールドについて説明します。

指標の依存関係

次の表に、指標と、各指標に寄与するイベントを定義する対応する UDM 検索クエリを示します。

指標 指標に貢献するイベントの UDM 検索クエリ
AUTH_ATTEMPTS_FAIL metadata.event_type = "USER_LOGIN"
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
AUTH_ATTEMPTS_SUCCESS metadata.event_type = "USER_LOGIN"
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
AUTH_ATTEMPTS_TOTAL metadata.event_type = "USER_LOGIN"
AND security_result.action >= "UNKNOWN_ACTION"
DNS_BYTES_OUTBOUND network.sent_bytes > 0
AND (network.ip_protocol = "UDP" AND target.port = 53)
OR (network.ip_protocol = "TCP" AND (target.port = 53 OR target.port=3000))
DNS_QUERIES_FAIL network.dns.id > 0
AND network.dns.response_code != 0
DNS_QUERIES_SUCCESS network.dns.id > 0
AND network.dns.response_code = 0
DNS_QUERIES_TOTAL network.dns.id > 0
FILE_EXECUTIONS_FAIL metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action != "ALLOW"
FILE_EXECUTIONS_SUCCESS metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action = "ALLOW"
FILE_EXECUTIONS_TOTAL metadata.event_type = "PROCESS_LAUNCH"
HTTP_QUERIES_FAIL network.http.method != ""
AND (network.http.response_code >= 400 OR network.http.response_code = 0)
HTTP_QUERIES_SUCCESS network.http.method != ""
AND network.http.response_code < 400
HTTP_QUERIES_TOTAL network.http.method != ""
NETWORK_BYTES_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_BYTES_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_BYTES_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
NETWORK_FLOWS_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_FLOWS_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_FLOWS_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
RESOURCE_READ_FAIL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_READ_SUCCESS (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_READ_TOTAL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
RESOURCE_WRITTEN_FAIL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_WRITTEN_SUCCESS (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_WRITTEN_TOTAL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")

ディメンションの依存関係

次の表に、フィルタリングまたはグループ化に使用できるディメンションと対応する UDM フィールド オプションを示します。

ディメンション フィールド オプション
プリンシパル デバイス principal.asset.asset_id
principal.asset.hostname
principal.asset.ip
principal.asset.mac
principal.asset.product_object_id
対象デバイス target.asset.asset_id
target.asset.hostname
target.asset.ip
target.asset.mac
target.asset.product_object_id
プリンシパル ユーザー principal.user.email_addresses
principal.user.employee_id
principal.user.product_object_id
principal.user.userid
principal.user.windows_sid
ターゲット ユーザー target.user.email_addresses
target.user.employee_id
target.user.product_object_id
target.user.userid
target.user.windows_sid
ターゲット サービス target.application
ターゲット IP target.ip
プリンシパル プロセスのファイルパス principal.process.file.full_path
プリンシパル プロセス ファイル ハッシュ principal.process.file.sha256
プリンシパル ファイル ハッシュ principal.file.sha256
主な国 principal.ip_geo_artifact.location.country_or_region
セキュリティ カテゴリ security_result.category
Principal Network Organization Name(プリンシパル ネットワーク組織名) principal.ip_geo_artifact.network.organization_name
ターゲット ネットワークの組織名 target.ip_geo_artifact.network.organization_name
クライアント証明書のハッシュ network.tls.client.certificate.sha256
DNS クエリタイプ network.dns.questions.type
DNS ドメイン network.dns_domain
HTTP ユーザー エージェント network.http.user_agent
イベントタイプ metadata.event_type
オペレーティング システム principal.platform

このカテゴリのルールセットによって返されるアラートを調整する

ルール除外を使用して、ルールまたはルールセットが生成する検出数を減らすことができます。

ルールの除外では、ルールセットまたはルールセット内の特定のルールによる評価対象からイベントを除外するために使用される条件を定義します。1 つ以上のルールの除外を作成して、検出の量を減らします。これを行う方法については、ルール除外を構成するをご覧ください。

UEBA カテゴリのリスク分析のルールの例

次の例は、リスクスコアが 100 より大きいエンティティのホスト名で検出を生成するルールを作成する方法を示しています。

rule EntityRiskScore {
  meta:
  events:
    $e1.principal.hostname != ""
    $e1.principal.hostname = $hostname

    $e2.graph.entity.hostname = $hostname
    $e2.graph.risk_score.risk_window_size.seconds = 86400 // 24 hours
    $e2.graph.risk_score.risk_score >= 100

    // Run deduplication across the risk score.
    $rscore = $e2.graph.risk_score.risk_score

  match:
    // Dedup on hostname and risk score across a 4 hour window.
    $hostname, $rscore over 4h

  outcome:
    // Force these risk score based rules to have a risk score of zero to
    // prevent self feedback loops.
    $risk_score = 0

  condition:
    $e1 and $e2
}

この例のルールでは、一致セクションを使用して自己重複除去も実行します。ルール検出がトリガーされる可能性がある場合でも、4 時間以内にホスト名とリスクスコアが変更されなければ、新しい検出は作成されません。

エンティティ リスクスコア ルールで設定できるリスク ウィンドウは、24 時間または 7 日間(それぞれ 86,400 秒または 604,800 秒)のみです。リスク ウィンドウ サイズをルールに含めないと、ルールは不正確な結果を返します。

エンティティ リスクスコア データは、エンティティ コンテキスト データとは別に保存されます。両方を 1 つのルールで使用するには、ルールに 2 つの個別のエンティティ イベント、1 つはエンティティ コンテキスト用、もう 1 つはエンティティ リスクスコア用が必要です。次に例を示します。

rule EntityContextAndRiskScore {
  meta:
  events:
    $log_in.metadata.event_type = "USER_LOGIN"
    $log_in.principal.hostname = $host

    $context.graph.entity.hostname = $host
    $context.graph.metadata.entity_type = "ASSET"

    $risk_score.graph.entity.hostname = $host
    $risk_score.graph.risk_score.risk_window_size.seconds = 604800

  match:
    $host over 2m

  outcome:
    $entity_risk_score = max($risk_score.graph.risk_score.normalized_risk_score)

  condition:
    $log_in and $context and $risk_score and $entity_risk_score > 100
}

次のステップ

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。