Praktik Terbaik Penelusuran UDM

Dokumen ini menjelaskan praktik terbaik yang direkomendasikan Google untuk melakukan penelusuran menggunakan Penelusuran UDM. Penelusuran UDM dapat memerlukan sumber daya komputasi yang cukup besar untuk diselesaikan jika tidak dibangun dengan hati-hati. Performa juga bervariasi bergantung pada ukuran dan kompleksitas data dalam instance Chronicle.

Setiap kondisi harus dalam bentuk udm-field operator value.

Contoh: principal.hostname = "win-server"

Selalu coba persempit rentang waktu ke batas minimum yang diperlukan. Chronicle dapat menyerap data dalam jumlah besar, sehingga membatasi cakupan data tersebut saat melakukan penelusuran dapat meningkatkan performa penelusuran secara substansial.

Anda dapat menggunakan ekspresi reguler saat melakukan penelusuran UDM:

  • Gunakan AND, OR, dan NOT.
  • AND diasumsikan jika tidak ada operator lain.
  • Gunakan tanda kurung untuk mengubah urutan prioritas.
  • Bergantung pada jenis kolom, operator kolom dapat mencakup: = != >= > < <=

Menggunakan nocase sebagai pengubah penelusuran

nocase dapat digunakan sebagai pengubah untuk mengabaikan kapitalisasi.

Misalnya, penelusuran berikut tidak valid:

target.user.userid = "TIM.SMITH" nocase

Ekspresi reguler tidak berfungsi untuk kolom terenumerasi

Anda tidak dapat menggunakan ekspresi reguler untuk kolom terenumerasi (kolom dengan rentang nilai standar) seperti metadata.event_type atau network.ip_protocol.

Misalnya, penelusuran berikut tidak valid:

metadata.eventtype = /NETWORK*/

Namun, penelusuran berikut valid (dan memperkirakan apa yang dicoba di atas):

(metadata.event_type = "NETWORK_CONNECTION" or metadata.event_type = "NETWORK_DHCP")

Menggunakan salah satu dan semua operator di kolom Peristiwa

Dalam penelusuran UDM, beberapa kolom diberi label sebagai berulang, yang berarti kolom tersebut adalah daftar nilai atau jenis pesan lainnya. Tidak seperti YARA-L, kolom berulang dalam penelusuran UDM selalu diperlakukan dengan operator any secara default, tanpa opsi untuk menentukan all dalam penelusuran Anda.

Saat operator any digunakan, predikat akan dievaluasi sebagai benar (true) jika nilai apa pun di kolom berulang memenuhi kondisi tersebut. Misalnya, jika Anda menelusuri principal.ip != "1.2.3.4" dan acara dalam penelusuran Anda menyertakan principal.ip = "1.2.3.4" dan principal.ip = "5.6.7.8", penelusuran akan menghasilkan kecocokan. Hal ini akan memperluas penelusuran Anda untuk menyertakan hasil yang cocok dengan salah satu operator, bukan mencocokkan semuanya.

Setiap elemen di kolom berulang diperlakukan satu per satu. Jika kolom berulang ditemukan dalam peristiwa di penelusuran, peristiwa tersebut akan dievaluasi untuk setiap elemen dalam kolom tersebut. Hal ini dapat menyebabkan perilaku yang tidak terduga, terutama saat melakukan penelusuran menggunakan operator !=.

Saat menggunakan operator any, predikatnya dievaluasi sebagai benar (true) jika nilai apa pun dalam kolom berulang memenuhi kondisi.

Stempel waktu menggunakan waktu epoch Unix

Kolom stempel waktu dicocokkan menggunakan waktu Unix epoch (jumlah detik yang telah berlalu sejak Kamis 1 Januari 1970 00:00:00).

Saat menelusuri stempel waktu tertentu, hal berikut (dalam waktu epoch) valid:

metadata.ingested_timestamp.seconds = 1660784400

Stempel waktu berikut tidak valid:

metadata.ingested_timestamp = "2022-08-18T01:00:00Z"

Ada kolom tertentu yang dikecualikan dari filter, termasuk hal berikut:

  • metadata.id
  • metadata.product_log_id
  • *.timestamp

Karena kolom ini cenderung memiliki nilai unik, menampilkannya akan menciptakan lebih banyak "derau" daripada nilai di antarmuka Penelusuran UDM.

Bentuk Normal Konjungtif

Penelusuran UDM menggunakan bentuk normal konjungtif, pendekatan untuk logika Boolean yang menyatakan formula sebagai konjungsi klausa dengan AND atau OR. Setiap klausa yang terhubung dengan kata sambung (AND), harus berupa literal atau berisi disjungsi, (OR).

Contoh:

  • (A OR B) AND (C OR D)
  • (A OR B) AND (NOT C OR B)

Klausa juga dapat berupa literal:

  • A OR B
  • A AND B

Anda tidak dapat menggunakan A OR (B AND C) dalam bentuk normal konjungtif, tetapi Anda dapat menggunakan (A OR B) AND (A OR C).

Contoh berikut akan menghasilkan error dalam Penelusuran UDM:

principal.hostname = "win-server" nocase OR (principal.hostname = "win-adfs" nocase AND metadata.event_type = "NETWORK_CONNECTION")

Berikut adalah contoh valid yang menggunakan bentuk normal konjungtif dalam Penelusuran UDM:

(principal.hostname = "win-server" nocase OR principal.hostname = "win-adfs" nocase) AND (principal.hostname = "win-server" nocase OR metadata.event_type = "NETWORK_CONNECTION")

Anda tidak dapat menggunakan NOT (A OR B) dalam bentuk normal konjungtif, tetapi Anda dapat menggunakan NOT A AND NOT B.

Hal berikut tidak valid:

principal.hostname = "win-server" nocase AND NOT(metadata.event_type = "PROCESS_TERMINATION" OR metadata.event_type = "USER_RESOURCE_ACCESS")

Hal berikut ini valid:

principal.hostname = "win-server" nocase AND NOT metadata.event_type = "PROCESS_TERMINATION" AND NOT metadata.event_type = "USER_RESOURCE_ACCESS"

Anda tidak dapat menggunakan A AND (B OR (C AND D)) dalam bentuk normal konjungtif, tetapi Anda dapat menggunakan A AND (B OR C) AND (B OR D).

Hal berikut tidak valid:

principal.hostname = "win-server" nocase AND (metadata.event_type = "PROCESS_LAUNCH" OR (metadata.event_type = "NETWORK_CONNECTION" AND target.ip = "10.128.0.21")

Hal berikut ini valid:

principal.hostname = "win-server" nocase AND (metadata.event_type = "PROCESS_LAUNCH" OR metadata.event_type = "NETWORK_CONNECTION") AND (metadata.event_type = "PROCESS_LAUNCH" OR target.ip = "10.128.0.21")