Menggunakan gabungan dalam Penelusuran

Didukung di:

Gabungan membantu mengorelasikan data dari berbagai sumber untuk memberikan lebih banyak konteks bagi penyelidikan. Dengan menautkan peristiwa, entitas, dan data terkait lainnya, Anda dapat menyelidiki skenario serangan yang kompleks.

Dokumen ini menjelaskan cara menggunakan operasi gabung di Google Security Operations. Dokumen ini juga mencakup jenis gabungan yang didukung, kasus penggunaan, dan praktik terbaik.

Membuat gabungan

Hanya gabungan berbasis statistik yang didukung. Anda harus menentukannya di bagian kecocokan kueri dengan jangka waktu korelasi hingga 48 jam. Anda dapat membuat gabungan dengan menghubungkan kolom secara langsung (misalnya, $e1.hostname = $e2.hostname) atau menggunakan variabel placeholder. Saat menentukan gabungan di bagian match, Anda harus menggunakan variabel placeholder.

Contoh kueri berikut menggabungkan dua kolom dengan tanda sama dengan (=) dan variabel placeholder bersama:

Contoh 1:


events:

  // Assign a value from the first event to the placeholder variable $user

  $user = $e1.principal.user.userid

  // The second assignment creates an implicit join, linking $e2 to $e1

  // where the user ID is the same.

  $user = $e2.principal.user.userid

match:

  $user over 1h

condition:

  $e1 and $e2

Contoh 2:


$e1.principal.ip = $ip

$e1.metadata.event_type = "USER_LOGIN"

$e1.principal.hostname = $host

$e2.target.ip = $ip

$e2.principal.hostname = "altostrat"

$e2.target.hostname = $host

match:
  $ip, $host over 5m

Jenis gabungan yang didukung

Bagian ini menjelaskan berbagai jenis gabungan yang dapat Anda gunakan.

Penggabungan event-event

Penggabungan peristiwa-peristiwa menghubungkan dua peristiwa Universal Data Model (UDM) yang berbeda. Kueri contoh berikut menautkan peristiwa USER_LOGIN dengan peristiwa lain untuk menemukan nama host (altostrat) yang berinteraksi dengan pengguna, berdasarkan alamat IP umum:


$e1.principal.ip = $ip

$e1.metadata.event_type = "USER_LOGIN"

$e2.target.ip = $ip

$e2.principal.hostname = "altostrat"

match:

  $ip over 5m

Gabungan Event-ECG

Gabungan Event-ECG menghubungkan peristiwa UDM dengan entitas dari Entity Context Graph (ECG). Contoh kueri berikut menemukan peristiwa NETWORK_CONNECTION dan ASSET dari grafik entitas yang memiliki nama host yang sama dalam jangka waktu 1 jam:


events:

   $e1.metadata.event_type = "NETWORK_CONNECTION"

   $g1.graph.metadata.entity_type = "ASSET"

   $e1.principal.asset.hostname = $g1.graph.entity.asset.hostname

   $x = $g1.graph.entity.asset.hostname

match:

   $x over 1h

condition:

   $e1 and $g1

Gabungan datatable-event

Penggabungan datatable-event menghubungkan peristiwa UDM dengan entri dalam tabel data kustom. Hal ini berguna untuk memeriksa data peristiwa live terhadap daftar yang ditentukan pengguna, seperti alamat IP atau aktor ancaman berbahaya yang diketahui. Contoh kueri berikut menggabungkan peristiwa NETWORK_CONNECTION dengan tabel data untuk menemukan koneksi yang melibatkan alamat IP tertentu dari daftar tersebut:


$ip = %DATATABLE_NAME.COLUMN_NAME

$ip = $e1.principal.ip

$e1.metadata.event_type = "NETWORK_CONNECTION"

match:

   $ip over 1h

Praktik terbaik

Kueri gabungan dapat menggunakan banyak resource karena menggabungkan banyak hasil. Filter yang luas dan umum dapat menyebabkan kueri gagal, terkadang setelah penundaan yang lama, misalnya:

  • target.ip != null

  • metadata.event_type = "NETWORK_CONNECTION" (jika jenis acara ini sangat umum di lingkungan Anda)

Sebaiknya gabungkan filter umum dengan filter yang lebih spesifik untuk mengurangi jumlah total peristiwa yang perlu diproses kueri. Filter luas seperti target.ip != null harus dipasangkan dengan filter yang lebih spesifik untuk meningkatkan performa kueri, misalnya:

$e1.metadata.log_type = $log
$e1.metadata.event_type = "USER_LOGIN"
$e1.target.ip != ""

$e2.metadata.log_type = $log
$e2.principal.ip = "10.0.0.76"
$e2.target.hostname != "altostrat"

match:
$log over 5m

Jika kueri Anda masih lambat, Anda juga dapat mengurangi rentang waktu keseluruhan kueri (misalnya, dari 30 hari menjadi satu minggu).

Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik YARA-L.

Batasan

Batasan berikut berlaku saat menggunakan gabungan:

  • Anda dapat menggunakan maksimal dua peristiwa UDM per kueri.

  • Anda dapat menggunakan maksimum satu peristiwa EKG per kueri.

  • Anda dapat menggunakan maksimum dua Tabel Data per kueri.

  • Anda tidak dapat menggabungkan peristiwa tabel data, UDM, dan ECG dalam satu kueri.

  • Rentang waktu kueri maksimum adalah 90 hari.

  • Jendela waktu match maksimum adalah 48 jam.

  • Gabungan didukung di antarmuka pengguna dan EventService.UDMSearch API, tetapi tidak di SearchService.UDMSearch API.

Kasus penggunaan umum

Bagian ini mencantumkan beberapa cara umum untuk menggunakan gabungan.

Mendeteksi pencurian dan penggunaan kredensial

Tujuan: Temukan instance saat pengguna berhasil login, lalu dengan cepat menghapus file sistem penting. Hal ini dapat menunjukkan pengambilalihan akun atau aktivitas orang dalam yang berbahaya.

Jenis gabungan: Gabungan Acara-Acara

Deskripsi: Kueri ini menghubungkan dua peristiwa berbeda yang tidak mencurigakan jika terjadi secara terpisah, tetapi menjadi sangat mencurigakan jika terjadi bersamaan. Pertama-tama, cari peristiwa USER_LOGIN, lalu peristiwa FILE_DELETION. Keduanya digabungkan oleh user.userid umum dengan jangka waktu singkat.

Contoh kueri:


// Event 1: A user successfully logs in

$e1.metadata.event_type = "USER_LOGIN"

$e1.security_result.action = "ALLOW"

$e1.principal.user.userid = $user

// Event 2: The same user deletes a critical file

$e2.metadata.event_type = "FILE_DELETION"

$e2.target.file.full_path = /etc\/passwd|C:\\Windows\\System32\\/

$e2.principal.user.userid = $user

match:
  $user over 10m

condition:
  $e1 and $e2

Mengidentifikasi koneksi berisiko dari aset penting

Tujuan: Memperkaya data jaringan aktif dengan informasi aset untuk menemukan koneksi keluar dari server yang tidak boleh berkomunikasi dengan domain eksternal yang jarang muncul (misalnya, server database produksi).

Jenis gabungan: Gabungan Event-ECG

Deskripsi: Satu koneksi jaringan ke domain langka mungkin tidak menjadi prioritas tinggi. Namun, kueri ini meningkatkan pentingnya peristiwa tersebut dengan menggabungkannya dengan Entity Context Graph (ECG). Secara khusus, alat ini mencari peristiwa NETWORK_CONNECTIONyang berasal dari aset yang diberi label "Server Database Kritis" dalam grafik entity.

Contoh kueri:


events:
  $e.metadata.event_type = "NETWORK_CONNECTION"

  $e.target.domain.prevalence.day_count <= 5

  $asset.graph.metadata.entity_type = "ASSET"

  $asset.graph.entity.asset.labels.value = "Critical Database Server"

  $e.principal.asset.hostname = $asset.graph.entity.asset.hostname

  $host = $e.principal.asset.hostname

match:
  $host over 1h

condition:
  $e and $asset

Mencari IOC pelaku ancaman

Tujuan: Secara aktif menelusuri Indikator Gangguan (IoC) dengan memeriksa semua kueri DNS aktif terhadap daftar domain yang diketahui digunakan oleh aktor ancaman tertentu.

Jenis gabungan: Gabungan Datatable-Event

Deskripsi: Tim intelijen ancaman Anda mengelola tabel data bernama ThreatActor_Domains yang mencantumkan domain berbahaya. Kueri ini menggabungkan semua peristiwa NETWORK_DNS_QUERYreal-time dengan tabel data ini. Hal ini akan segera menampilkan setiap instance saat host di jaringan Anda mencoba menyelesaikan domain dari daftar informasi ancaman Anda.

Contoh kueri:


// Datatable: Get the list of malicious domains

$domain = $ip = %DATATABLE_NAME.COLUMN_NAME

// Event: A DNS query is made

$e.metadata.event_type = "NETWORK_DNS"

$e.network.dns.questions.name = $domain

match:
  $domain over 5m

condition:
  $e

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.