Ringkasan analisis kontekstual
Google SecOps memungkinkan Anda melihat telemetri, konteks entitas, hubungan, dan kerentanan sebagai satu deteksi dalam akun Google SecOps. Fitur ini memberikan kontekstualisasi entity agar Anda dapat memahami pola perilaku dalam telemetri dan konteks entity yang terpengaruh dari pola tersebut.
Contoh:
- Menampilkan izin untuk akun yang login brute force-nya sedang dicoba.
- Pentingnya data yang dihosting oleh aset yang juga merupakan sumber aktivitas jaringan keluar.
Pelanggan dapat menggunakan kontekstualisasi ini untuk pemfilteran deteksi, prioritas peringatan heuristik, pemilahan, dan investigasi.
Analis keamanan dan engineer deteksi biasanya bekerja untuk membuat deteksi pada pola dasar telemetri peristiwa (koneksi jaringan keluar), sehingga membuat banyak deteksi untuk diseleksi oleh analis mereka. Analis mencoba menggabungkan pemahaman tentang apa yang terjadi untuk memicu pemberitahuan dan seberapa signifikan ancaman tersebut.
Analisis kontekstual menggabungkan kemampuan pengayaan lanjutan lebih awal dalam alur kerja pembuatan dan eksekusi deteksi, sehingga Anda dapat memberikan kemampuan tambahan berikut:
- Menyediakan konteks yang relevan untuk penskoran risiko kontekstual berbasis heuristik pada deteksi pada waktu eksekusi deteksi, bukan pada tahap triase manual
- Mengurangi waktu yang dihabiskan untuk melakukan pemilahan dan menggabungkan informasi secara manual dari sistem keamanan IT yang berbeda (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 mewakili sedikit atau tidak ada bahaya bagi perusahaan (pengujian malware di lingkungan sandbox, kerentanan, dan aktivitas abnormal di jaringan pengembangan tanpa data atau akses sensitif, dan lainnya)
Menulis aturan untuk analisis kontekstual
Anda dapat menggunakan aturan Detection Engine untuk menelusuri data konteks entitas di akun Google SecOps Anda.
Untuk menelusuri data konteks entity, selesaikan langkah-langkah berikut:
Tentukan sumber menggunakan udm atau entitas.
$eventname.[<source>].field1.field2
Untuk konteks entitas, <source> adalah 'graph'. Untuk peristiwa UDM, <source> adalah 'udm'. Jika dihilangkan, <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 peristiwa
Membandingkan konteks entitas dengan konteks entitas lain
Membandingkan konteks entitas dengan peristiwa UDM
Kolom berulang dalam konteks entity
Jendela geser
Menghitung skor risiko untuk deteksi
Tidak seperti peristiwa UDM, konteks entity tidak memiliki stempel waktu tertentu. Setiap kumpulan data konteks entity memiliki interval waktu, entity.metadata.interval, yang menjadi periode berlakunya konteks entity. Interval waktu ini mungkin bukan batas hari dan dapat berupa durasi apa pun.
Peristiwa UDM akan dikorelasikan dengan data konteks entity hanya jika stempel waktu peristiwa UDM berada dalam interval waktu data konteks entity. 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 periode, konteks entity mewakili nilai konstan selama periode yang ditentukan.
- Jika ada bucket hari yang berdekatan tempat konteks entity mengubah nilainya, Google SecOps akan mencoba mencocokkan semua nilai konteks entity, dan menampilkan semua kecocokan yang ditemukan.
Contoh aturan
Menelusuri entity dengan konteks administrator
Aturan berikut menelusuri entitas yang juga terkait dengan hak istimewa administrator. Peristiwa ini mencari waktu saat seseorang dengan hak istimewa administrator mencoba login 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 periode 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 periode geser yang tidak valid
Contoh jendela geser berikut tidak valid. Konteks entity tidak dapat digunakan sebagai pivot 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 entity, Anda harus memberikan <source>
setelah nama peristiwa.
<source>
harus graph
.
Pola berikut merujuk ke konteks entity:
$e.graph.entity.hostname
Perhatikan bahwa ada dua metode yang setara untuk merujuk ke peristiwa UDM:
$u.udm.principal.asset_id
$u.principal.asset_id
Anda dapat memadupadankan semua penentu ini dalam teks aturan. Anda juga dapat menggunakan penentu yang berbeda untuk peristiwa yang sama.
Bagian hasil
Mesin deteksi mendukung bagian outcome
yang memungkinkan Anda memperoleh informasi
selengkapnya dari aturan. Logika yang ditentukan di bagian outcome
dievaluasi
terhadap setiap deteksi. Jika aturan menghasilkan N deteksi, setiap N deteksi dapat menghasilkan kumpulan hasil yang berbeda.
Anda dapat menemukan contoh aturan yang menggunakan bagian outcome
di bagian
aturan dengan pemilihan hasil.
Penggunaan dan sintaksis mendetail dari bagian outcome
dapat ditemukan di bagian hasil.
Bagian hasil dan penghapusan duplikat deteksi / pengelompokan deteksi
Untuk aturan dengan bagian kecocokan, ingat bahwa deteksi "dikelompokkan menurut" variabel kecocokan. Hal ini menyebabkan deteksi dihapus duplikatnya, sehingga satu baris ditampilkan untuk setiap kumpulan unik variabel pencocokan dan periode waktu.
Variabel hasil diabaikan saat melakukan penghapusan duplikat ini. Jadi, jika ada dua deteksi berbeda dengan nilai yang sama untuk variabel pencocokan dan periode waktu, tetapi dengan nilai yang berbeda untuk variabel hasil, deteksi tersebut akan dihapus duplikatnya 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 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 periode waktu sama untuk Deteksi 1 dan Deteksi 2, keduanya akan dihapus duplikatnya dan Anda hanya akan melihat satu deteksi, meskipun variabel hasil, risk_score, berbeda.
Langkah berikutnya
Untuk informasi tentang cara Google SecOps menyerap data kontekstual dan memperkaya entity, lihat Cara Google SecOps memperkaya data peristiwa dan entity
Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.