Ringkasan analisis yang memahami konteks
Google SecOps memungkinkan Anda melihat telemetri, konteks entitas, hubungan, dan kerentanan sebagai satu deteksi dalam akun Google SecOps Anda. Fitur ini menyediakan kontekstualisasi entity untuk memungkinkan Anda memahami pola perilaku dalam telemetri dan konteks entity yang terpengaruh dari pola tersebut.
Contoh:
- Menampilkan izin untuk akun yang sedang dicoba login secara brute force.
- Pentingnya data yang dihosting oleh aset yang juga merupakan sumber aktivitas jaringan keluar.
Pelanggan dapat menggunakan kontekstualisasi ini untuk pemfilteran deteksi, prioritas notifikasi heuristik, triase, dan investigasi.
Analis keamanan dan engineer deteksi biasanya berupaya membuat deteksi pada pola dasar telemetri peristiwa (koneksi jaringan keluar), sehingga membuat banyak deteksi untuk diurutkan oleh analis mereka. Analis mencoba menyatukan pemahaman tentang apa yang terjadi sehingga memicu pemberitahuan dan seberapa signifikan ancamannya.
Analisis kontekstual menggabungkan kemampuan pengayaan lanjutan lebih awal dalam alur kerja pembuatan dan eksekusi deteksi, sehingga Anda dapat menyediakan kemampuan tambahan berikut:
- Menyediakan konteks yang relevan untuk penskoran risiko kontekstual berbasis heuristik dari deteksi pada waktu eksekusi deteksi, bukan pada tahap triase manual
- Mengurangi waktu yang dihabiskan untuk triase dan menggabungkan informasi secara manual dari berbagai sistem keamanan IT (konsol EDR, log firewall atau proxy, konteks CMDB dan IAM, hasil pemindaian kerentanan)
- Memungkinkan analis dan engineer deteksi memfilter seluruh cluster ancaman yang mungkin diharapkan atau tidak menimbulkan bahaya bagi perusahaan (pengujian malware di lingkungan sandbox, kerentanan dan aktivitas anomali di jaringan pengembangan tanpa data atau akses sensitif, dan lainnya)
Menulis aturan untuk analisis yang memahami konteks
Anda dapat menggunakan aturan Detection Engine untuk menelusuri data konteks entitas di akun Google SecOps Anda.
Untuk menelusuri data konteks entitas, selesaikan langkah-langkah berikut:
Tentukan sumber menggunakan udm atau entity.
$eventname.[<source>].field1.field2
Untuk konteks entitas, <source> adalah 'graph'. Untuk peristiwa UDM, <source> adalah 'udm'. Jika tidak ada, <source> akan ditetapkan secara default ke udm.Tentukan data entity:
$e1.graph.entity.hostname = "my-hostname"
$e1.graph.entity.relations.relationship = "OWNS"
Tentukan data peristiwa UDM. Pernyataan berikut setara.
$e1.udm.principal.asset_id = "my_asset_id"
$e1.principal.asset_id = "my_asset_id"
Anda dapat membuat banyak jenis aturan yang sama untuk konteks entity seperti yang Anda lakukan untuk peristiwa UDM, termasuk yang berikut:
Beberapa aturan acara
Membandingkan konteks entitas dengan konteks entitas lainnya
Membandingkan konteks entitas dengan peristiwa UDM
Kolom berulang dalam konteks entitas
Jendela geser
Menghitung skor risiko untuk deteksi
Tidak seperti peristiwa UDM, konteks entitas tidak memiliki stempel waktu tertentu. Setiap rekaman konteks entitas memiliki interval waktu, entity.metadata.interval, yang menunjukkan masa berlaku konteks entitas. Interval waktu ini mungkin bukan batas hari dan dapat berupa durasi apa pun.
Peristiwa UDM hanya akan dikorelasikan dengan rekaman konteks entitas jika stempel waktu peristiwa UDM berada dalam interval waktu rekaman konteks entitas. Jika kondisi ini tidak terpenuhi, UDM dan entity tidak akan dievaluasi untuk deteksi. Mesin deteksi secara implisit menerapkan hal ini dan Anda tidak perlu menentukannya sebagai kondisi dalam aturan.
- Saat membandingkan peristiwa UDM dengan konteks entity dengan windowing, konteks entity mewakili nilai konstan selama periode tertentu.
- Jika ada bucket hari yang berdekatan yang nilai konteks entitasnya berubah, Google SecOps akan mencoba mencocokkan semua nilai konteks entitas, dan menampilkan semua kecocokan yang ditemukan.
Contoh aturan
Menelusuri entitas dengan konteks administrator
Aturan berikut menelusuri entitas yang juga terkait dengan hak istimewa administrator. Log ini mencari waktu ketika seseorang dengan hak istimewa administrator mencoba login ke atau logout dari sistem.
rule LoginLogout {
meta:
events:
($log_inout.metadata.event_type = "USER_LOGIN" or $log_inout.metadata.event_type = "USER_LOGOUT")
$log_inout.principal.user.user_display_name = $user
$context.graph.entity.user.user_display_name = $user
$context.graph.entity.resource.attribute.roles.type = "ADMINISTRATOR"
match:
$user over 2m
condition:
$log_inout and $context
}
Contoh jendela geser
Contoh jendela geser berikut valid.
rule Detection {
meta:
events:
$e1.graph.entity.hostname = $host
$e2.udm.principal.hostname = $host
match:
// Using e2 (a UDM event) as a pivot.
$host over 3h after $e2
condition:
$e1 and $e2
}
Contoh jendela geser yang tidak valid
Contoh jendela geser berikut tidak valid. Konteks entitas tidak dapat digunakan sebagai titik pergeseran untuk jendela geser.
rule Detection {
meta:
events:
$e1.graph.entity.hostname = $host
$e2.udm.principal.hostname = $host
match:
// Attempting to use $e1 (an entity context) as a pivot. Invalid.
$host over 3h after $e1
condition:
$e1 and $e2
}
Contoh login menggunakan bagian hasil
Contoh berikut menggunakan bagian outcome
untuk menghitung skor risiko untuk
deteksi.
rule Detection {
meta:
events:
$auth.metadata.event_type = "USER_LOGIN"
$auth.metadata.vendor_name = "Acme"
$auth.metadata.product_name = "Acme SSO"
$auth.target.user.userid = $user
$auth.metadata.event_timestamp.seconds >
$context.graph.entity.user.termination_date.seconds
$context.graph.metadata.vendor_name = "Microsoft"
$context.graph.metadata.product_name = "Azure Active Directory"
$context.graph.metadata.entity_type = "USER"
$context.graph.entity.user.userid = $user
$context.graph.entity.user.termination_date.seconds > 0
match:
$user over 15m
outcome:
$risk_score = max(
if ( $auth.metadata.event_type = "USER_LOGIN", 50) +
if (
$context.graph.entity.user.title = "Remote" nocase or
$context.graph.entity.user.title = "Temp" nocase or
$context.graph.entity.user.title = "Vendor" nocase, 40) +
if ( $context.graph.entity.user.title = "Legal" nocase, 10)
)
condition:
$auth and $context
}
Contoh peluncuran proses yang mencurigakan
Contoh berikut mengevaluasi data proses peristiwa UDM terhadap data konteks IOC yang disimpan sebagai konteks entitas.
rule ProcessLaunch {
meta:
events:
$ioc.graph.metadata.vendor_name = "ACME"
$ioc.graph.metadata.product_name = "IOCs"
$ioc.graph.metadata.entity_type = "FILE"
$ioc.graph.entity.file.sha256 = $hash
$process.metadata.event_type = "PROCESS_LAUNCH"
$process.principal.hostname = $hostname
(
not $process.target.process.file.sha256 = "" and
$process.target.process.file.sha256 = $hash
)
match:
$hash over 15m
condition:
$ioc and $process
}
Penentu tambahan untuk konteks entitas
Untuk membuat variabel peristiwa yang menggunakan konteks entitas, Anda harus memberikan
<source>
setelah nama peristiwa.
<source>
harus graph
.
Pola berikut merujuk ke konteks entitas:
$e.graph.entity.hostname
Perhatikan bahwa ada dua metode setara untuk merujuk ke peristiwa UDM:
$u.udm.principal.asset_id
$u.principal.asset_id
Anda dapat memadupadankan semua kualifikasi ini dalam teks aturan. Anda juga dapat menggunakan kualifikasi yang berbeda untuk acara yang sama.
Bagian hasil
Mesin deteksi mendukung bagian outcome
yang memungkinkan Anda mendapatkan lebih banyak
informasi dari suatu aturan. Logika yang ditentukan di bagian outcome
dievaluasi
terhadap setiap deteksi. Jika suatu aturan menghasilkan N deteksi, setiap N deteksi dapat menghasilkan serangkaian hasil yang berbeda.
Anda dapat menemukan contoh aturan yang menggunakan bagian outcome
di bagian
aturan dengan pemilihan hasil.
Penggunaan dan sintaksis mendetail bagian outcome
dapat ditemukan di
bagian hasil.
Bagian hasil dan penghapusan duplikat deteksi / pengelompokan deteksi
Untuk aturan dengan bagian kecocokan, ingatlah bahwa deteksi "dikelompokkan menurut" variabel kecocokan. Hal ini menyebabkan deteksi dideduplikasi, sehingga satu baris ditampilkan untuk setiap set unik variabel kecocokan dan jangka waktu.
Variabel hasil diabaikan saat melakukan penghapusan duplikat ini. Oleh karena itu, jika ada dua deteksi berbeda dengan nilai yang sama untuk variabel kecocokan dan jangka waktu, tetapi dengan nilai yang berbeda untuk variabel hasil, deteksi ini akan dideduplikasi dan Anda hanya akan melihat satu deteksi. Hal ini dapat terjadi jika deteksi dibuat karena data yang terlambat tiba, misalnya. Berikut adalah contoh yang menggambarkan kasus ini.
rule ExampleOutcomeRule {
...
match:
$hostname over <some window>
outcome:
$risk_score = <some logic here>
...
}
Aturan ini akan menghasilkan kecocokan berikut:
Deteksi 1: hostname: test-hostname time window: [t1, t2] risk_score: 10
Deteksi 2: hostname: test-hostname time window: [t1, t2] risk_score: 73
Karena variabel kecocokan dan jangka waktu sama untuk Deteksi 1 dan Deteksi 2, deteksi ini akan diduplikasi dan Anda hanya akan melihat satu deteksi, meskipun variabel hasil, risk_score, berbeda.
Langkah berikutnya
Untuk mengetahui informasi tentang cara Google SecOps menyerap data kontekstual dan memperkaya entitas, lihat Cara Google SecOps memperkaya data peristiwa dan entitas
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.