Aturan deteksi gabungan
Deteksi komposit di Google SecOps melibatkan penghubungan beberapa aturan YARA-L. Dokumen ini menjelaskan cara membuat aturan komposit. Untuk informasi selengkapnya, lihat Ringkasan deteksi komposit.
Memahami struktur aturan
Aturan deteksi komposit selalu merupakan aturan multiperistiwa dan mengikuti struktur dan sintaksis yang sama dengan aturan peristiwa tunggal.
Aturan komposit memiliki komponen penting berikut:
Bagian
events: Menentukan input Anda; deteksi atau peristiwa tertentu yang dianalisis oleh aturan.Bagian
match: Menentukan cara input harus terhubung selama jangka waktu yang ditentukan.Bagian
condition: Berisi logika akhir yang menentukan apakah peristiwa yang digabungkan memenuhi kriteria untuk memicu pemberitahuan.
Tentukan input di bagian events
Langkah pertama dalam membuat aturan deteksi komposit adalah menentukan input aturan di bagian events. Input untuk aturan komposit berasal dari koleksi, yang menyimpan deteksi yang dihasilkan oleh kueri lain.
SecOps Google menyediakan dua metode berikut untuk mengakses data dari koleksi.
Merujuk konten deteksi dengan variabel atau label meta
Untuk mengakses data dari deteksi tanpa merujuk ke peristiwa UDM asli, Anda dapat menggunakan variabel outcome, variabel match, atau label meta. Sebaiknya gunakan pendekatan ini karena memberikan fleksibilitas yang lebih besar dan kompatibilitas yang lebih baik di berbagai jenis aturan.
Misalnya, beberapa aturan dapat menyimpan string (seperti URL, nama file, atau
kunci registri) dalam variabel outcome umum jika Anda mencari string tersebut
di berbagai konteks. Untuk mengakses string ini dari aturan gabungan, mulai
dengan detection dan temukan informasi yang relevan menggunakan elemen dari
resource Koleksi.
Contoh: Misalkan aturan deteksi menghasilkan informasi berikut:
Variabel hasil:
dest_domain = "cymbal.com"Kolom UDM:
target.hostname = "cymbal.com"
Dalam aturan komposit, Anda dapat mengakses data ini menggunakan jalur berikut:
detection.detection.outcomes["dest_domain"]untuk mengakses variabel hasildest_domain.detection.collection_elements.references.event.target.hostnameuntuk mengakses kolom UDMtarget.hostname.detection.time_window.start_time.secondsuntuk mengakses stempel waktu mulai deteksi.
Collection API dan SecurityResult API menyediakan akses ke keduanya:
- Nilai metadata dan hasil deteksi (
detection.detection) - Peristiwa UDM pokok dari aturan yang dirujuk (
collection_elements)
Merujuk konten deteksi dengan ID atau nama aturan
Anda dapat mereferensikan aturan berdasarkan nama atau ID-nya. Sebaiknya gunakan pendekatan ini jika logika deteksi Anda bergantung pada aturan tertentu dan Anda ingin mengurangi data yang dianalisis hanya pada hasil aturan tersebut. Mereferensikan aturan yang relevan menurut nama atau ID akan meningkatkan performa dan mencegah waktu tunggu habis dengan mengurangi data yang dianalisis. Misalnya, Anda dapat langsung membuat kueri kolom seperti target.url atau
principal.ip dari deteksi sebelumnya yang diketahui.
Merujuk aturan menurut ID aturan (direkomendasikan): Gunakan kolom
detection.detection.rule_iduntuk merujuk aturan menurut ID. Anda dapat menemukan ID aturan di URL aturan di Google SecOps. Aturan buatan pengguna memiliki ID dalam formatru_UUID, sedangkan deteksi terkurasi memiliki ID dalam formatur_UUID. Contoh:detection.detection.rule_id = "ru_e0d3f371-6832-4d20-b0ad-1f4e234acb2b"Merujuk aturan berdasarkan nama aturan: gunakan kolom
detection.detection.rule_nameuntuk merujuk aturan berdasarkan nama. Anda dapat menentukan nama aturan yang tepat atau menggunakan ekspresi reguler untuk mencocokkannya. Contoh:detection.detection.rule_name = "My Rule Name"detection.detection.rule_name = "/PartOfName/"
Gabungkan input di bagian match
Untuk menghubungkan deteksi, peristiwa, atau entitas terkait dalam aturan komposit, tentukan
bagian match menggunakan variabel yang ditentukan di bagian events. Variabel ini dapat mencakup label aturan, variabel hasil, variabel kecocokan, kolom deteksi, atau elemen pengumpulan.
Untuk informasi tentang sintaksis, lihat Sintaksis bagian pencocokan.
Menentukan bagian condition
Tentukan bagian condition untuk mengevaluasi hasil bagian match.
Jika kondisinya adalah true, pemberitahuan akan dibuat. Untuk mengetahui informasi tentang
sintaksis, lihat Sintaksis bagian kondisi.
Menerapkan teknik lanjutan pada aturan gabungan
Bagian ini menjelaskan cara menerapkan teknik lanjutan saat membuat aturan komposit.
Menggabungkan peristiwa dan deteksi
Aturan komposit dapat menggabungkan beberapa sumber data, termasuk peristiwa UDM, data grafik entitas, dan kolom deteksi. Panduan berikut berlaku:
Gunakan variabel berbeda per sumber: Tetapkan variabel peristiwa unik ke setiap sumber data (misalnya,
$euntuk peristiwa,$duntuk deteksi), dengan sumber data mencakup peristiwa, entitas, dan deteksi.Gabungkan sumber pada konteks bersama: Hubungkan sumber data menggunakan nilai umum, seperti ID pengguna, alamat IP, atau nama domain dalam kondisi aturan Anda.
Tentukan periode pencocokan: Selalu sertakan klausa
matchdengan periode waktu tidak lebih dari 48 jam.
Contoh: menggabungkan peristiwa dan deteksi
rule CheckCuratedDetection_with_EDR_and_EG {
meta:
author = "noone@cymbal.com"
events:
$d.detection.detection.rule_name = /SCC: Custom Modules: Configurable Bad Domain/
$d.detection.collection_elements.references.event.network.dns.questions.name = $domain
$d.detection.collection_elements.references.event.principal.asset.hostname = $hostname
$e.metadata.log_type = "LIMACHARLIE_EDR"
$e.metadata.product_event_type = "NETWORK_CONNECTIONS"
$domain = re.capture($e.principal.process.command_line, "\\s([a-zA-Z0-9.-]+\\.[a-zA-Z0-9.-]+)$")
$hostname = re.capture($e.principal.hostname, "([^.]*)")
$prevalence.graph.metadata.entity_type = "DOMAIN_NAME"
$prevalence.graph.metadata.source_type = "DERIVED_CONTEXT"
$prevalence.graph.entity.hostname = $domain
$prevalence.graph.entity.domain.prevalence.day_count = 10
$prevalence.graph.entity.domain.prevalence.rolling_max <= 5
$prevalence.graph.entity.domain.prevalence.rolling_max > 0
match:
$hostname over 1h
outcome:
$risk_score = 80
$CL_target = array($domain)
condition:
$e and $d and $prevalence
}
Membuat deteksi gabungan berurutan
Deteksi komposit berurutan mengidentifikasi pola peristiwa terkait yang urutan deteksinya penting, seperti deteksi upaya login brute force, diikuti dengan login yang berhasil. Pola ini dapat menggabungkan beberapa deteksi dasar, peristiwa UDM mentah, atau keduanya.
Untuk membuat deteksi komposit berurutan, Anda harus menerapkan urutan tersebut dalam aturan. Untuk menerapkan urutan yang diharapkan, gunakan salah satu metode berikut:
Jendela geser: Tentukan urutan deteksi menggunakan jendela geser dalam kondisi
matchAnda.Perbandingan stempel waktu: Bandingkan stempel waktu deteksi dalam logika aturan Anda untuk memverifikasi bahwa deteksi terjadi dalam urutan yang dipilih.
Contoh: deteksi gabungan berurutan
events:
$d1.detection.detection.rule_name = "fileEvent_rule"
$userid = $d1.detection.detection.outcomes["user"]
$hostname = $d1.detection.detection.outcomes["hostname"]
$d2.detection.detection.rule_name = "processExecution_rule"
$userid = $d2.detection.detection.outcomes["user"]
$hostname = $d2.detection.detection.outcomes["hostname"]
$d3.detection.detection.rule_name = "networkEvent_rule"
$userid = $d3.detection.detection.outcomes["user"]
$hostname = $d3.detection.detection.outcomes["hostname"]
$d3.detection.collection_elements.references.event.metadata.event_timestamp.seconds > $d2.detection.collection_elements.references.event.metadata.event_timestamp.seconds
match:
$userid over 24h after $d1
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.