Memigrasikan aturan deteksi ArcSight ke Microsoft Sentinel
Artikel ini menjelaskan cara mengidentifikasi, membandingkan, dan memigrasikan aturan deteksi ArcSight Anda ke aturan analitik Microsoft Sentinel.
Mengidentifikasi dan memigrasi aturan
Microsoft Sentinel menggunakan analisis pembelajaran mesin untuk menciptakan insiden dengan keakuratan tinggi dan dapat ditindaklanjuti, serta beberapa deteksi yang ada mungkin redundan di Microsoft Sentinel. Oleh karena itu, jangan migrasikan semua aturan deteksi dan analitik Anda secara membabi buta. Ulas pertimbangan ini saat Anda mengidentifikasi aturan deteksi yang ada.
- Pastikan untuk memilih kasus penggunaan yang membenarkan migrasi aturan, mempertimbangkan prioritas dan efisiensi bisnis.
- Pastikan Anda memahami jenis aturan Microsoft Sentinel.
- Pastikan Anda memahami terminologi aturan.
- Tinjau aturan apa pun yang belum memicu peringatan apa pun dalam 6-12 bulan terakhir, dan tentukan apakah aturan tersebut masih relevan.
- Hilangkan ancaman atau peringatan tingkat rendah yang secara rutin Anda abaikan.
- Gunakan fungsi yang ada, dan periksa apakah aturan analitik bawaan Microsoft Sentinel dapat mengatasi kasus penggunaan Anda saat ini. Karena Microsoft Sentinel menggunakan analitik pembelajaran mesin untuk menghasilkan fidelitas tinggi dan insiden yang dapat ditindaklanjuti, kemungkinan beberapa deteksi Anda yang sudah ada tidak diperlukan lagi.
- Konfirmasikan sumber data yang terhubung dan ulas metode koneksi data Anda. Tinjau kembali percakapan kumpulan data untuk memastikan kedalaman dan keluasan data di seluruh kasus penggunaan yang Anda rencanakan untuk dideteksi.
- Jelajahi sumber daya komunitas seperti SOC Prime Threat Detection Marketplace untuk memeriksa apakah aturan Anda tersedia.
- Pertimbangkan apakah konverter kueri online seperti Uncoder.io dapat berfungsi untuk aturan Anda.
- Jika aturan tidak tersedia atau tidak dapat dikonversi, aturan harus dibuat secara manual, menggunakan kueri KQL. Tinjau pemetaan aturan untuk membuat kueri baru.
Pelajari lebih lanjut tentang praktik terbaik untuk memigrasikan aturan deteksi.
Untuk memigrasikan aturan analitik Anda ke Microsoft Sentinel:
Verifikasi bahwa Anda memiliki sistem pengujian untuk setiap aturan yang ingin Anda migrasikan.
Siapkan proses validasi untuk aturan Anda yang dimigrasikan, termasuk skrip dan skenario pengujian lengkap.
Pastikan tim Anda memiliki sumber daya yang bermanfaat untuk menguji aturan Anda yang dimigrasikan.
Konfirmasi apakah Anda memiliki sumber data terhubung yang diperlukan, dan tinjau metode koneksi data Anda.
Verifikasi apakah deteksi Anda tersedia sebagai templat bawaan di Microsoft Sentinel:
Jika aturan bawaan cukup, gunakan templat aturan bawaan untuk membuat aturan untuk ruang kerja Anda sendiri.
Di Microsoft Sentinel, buka tab Konfigurasi > Analitik > Templat aturan, dan buat serta perbarui setiap aturan analitik yang relevan.
Untuk informasi selengkapnya, lihat Mendeteksi ancaman yang tidak biasa.
Jika Anda memiliki deteksi yang tidak dicakup oleh aturan bawaan Microsoft Sentinel, coba pengonversi kueri online, seperti Uncoder.io untuk mengonversi kueri ke KQL.
Identifikasi kondisi pemicu dan tindakan aturan, lalu bangun dan tinjau kueri KQL Anda.
Jika aturan bawaan atau pengonversi aturan online tidak cukup, Anda harus membuat aturan secara manual. Dalam kasus seperti itu, gunakan langkah-langkah berikut untuk mulai membuat aturan Anda:
Mengidentifikasi sumber data yang ingin Anda gunakan dalam aturan Anda. Anda akan membuat tabel pemetaan antara sumber data dan tabel data di MIcrosoft Sentinel untuk mengidentifikasi tabel yang ingin Anda kueri.
Mengidentifikasi atribut, bidang, atau entitas dalam data Anda yang ingin Anda gunakan dalam aturan Anda.
Mengidentifikasi kriteria dan logika aturan Anda. Pada tahap ini, Anda mungkin ingin menggunakan templat aturan sebagai sampel cara membangun kueri KQL Anda.
Pertimbangkan filter, aturan korelasi, daftar aktif, set referensi, daftar tonton, anomali deteksi, agregasi, dan sebagainya. Anda dapat menggunakan referensi yang disediakan oleh SIEM lama Anda untuk memahami cara terbaik memetakan sintaks kueri Anda.
Identifikasi kondisi pemicu dan tindakan aturan, lalu bangun dan tinjau kueri KQL Anda.l. Saat meninjau kueri Anda, pertimbangkan sumber daya panduan pengoptimalan KQL.
Uji aturan dengan masing-masing kasus penggunaan yang relevan. Jika tidak memberikan hasil yang diharapkan, Anda mungkin ingin mengulas KQL dan mengujinya lagi.
Ketika Anda puas, Anda dapat mempertimbangkan aturan yang dimigrasikan. Buat playbook untuk tindakan aturan Anda sesuai kebutuhan. Untuk mengetahui informasi selengkapnya, lihat Mengotomatiskan respons ancaman dengan playbook di Microsoft Sentinel.
Pelajari selengkapanya tentang aturan analitik:
- Membuat aturan analitik kustom untuk mendeteksi ancaman. Gunakan pengelompokan pemberitahuan untuk mengurangi kelelahan pemberitahuan dengan mengelompokkan pemberitahuan yang terjadi dalam kerangka waktu tertentu.
- Petakan bidang data ke entitas di Microsoft Sentinel untuk memungkinkan teknisi SOC menentukan entitas sebagai bagian dari bukti untuk melacak selama investigasi. Pemetaan entitas juga memungkinkan analis SOC untuk memanfaatkan intuitif [grafik investigasi (investigate-cases.md #use-the-investigation-graph-to-deep-dive) yang dapat membantu mengurangi waktu dan usaha.
- Selidiki insiden dengan data UEBA, sebagai contoh cara menggunakan bukti untuk memunculkan peristiwa, pemberitahuan, dan marka buku yang terkait dengan insiden tertentu dalam panel pratinjau insiden.
- Bahasa Kueri Kusto(KQL), yang dapat Anda gunakan untuk mengirimkan permintaan baca-saja ke database Log Analytics Anda untuk memproses data dan mengembalikan hasil. KQL juga digunakan di seluruh layanan Microsoft lainnya, seperti Pertahanan Microsoft untuk Titik Akhir dan Application Insights.
Membandingkan terminologi aturan
Tabel ini membantu Anda menjelaskan konsep aturan di Microsoft Sentinel dan perbandingannya dengan ArcSight.
ArcSight | Microsoft Sentinel | |
---|---|---|
Jenis aturan | • Aturan filter • Aturan gabung • Aturan daftar aktif • Dan banyak lagi |
• Kueri terjadwal • Fusion • Keamanan Microsoft • Analisis Perilaku Pembelajaran Mesin (ML) |
Kriteria | Ditentukan dalam kondisi aturan | Ditentukan dalam KQL |
Kondisi pemicu | • Ditentukan dalam tindakan • Ditentukan dalam agregasi (untuk agregasi peristiwa) |
Ambang: Jumlah hasil kueri |
Tindakan | • Mengatur bidang peristiwa • Mengirim pemberitahuan • Membuat kasus baru • Menambahkan ke daftar aktif • Dan banyak lagi |
• Buat peringatan atau insiden • Terintegrasi dengan Aplikasi Logic Apps |
Memetakan dan membandingkan sampel aturan
Gunakan sampel ini untuk membandingkan dan memetakan aturan dari ArcSight ke Microsoft Sentinel dalam berbagai skenario.
Aturan | Deskripsi | Sampel aturan deteksi (ArcSight) | Sampel kueri KQL | Sumber |
---|---|---|---|---|
Filter (AND ) |
Aturan sampel dengan kondisi AND . Peristiwa harus sesuai dengan semua kondisi. |
Contoh filter (AND) | Contoh filter (AND) | Filter string: • Operator string Filter numerik: • Operator numerik Filter tanggalwaktu: • ago • Datetime • between • now Penguraian: • parse • extract • parse_json • parse_csv • parse_path • parse_url |
Filter (OR ) |
Aturan sampel dengan kondisi OR . Peristiwa ini dapat sesuai dengan kondisi apa pun. |
Contoh filter (OR) | Contoh filter (OR) | • Operator string in |
Filter berlapis | Aturan sampel dengan kondisi pemfilteran berlapis. Aturan ini mencakup pernyataan MatchesFilter , yang juga mencakup kondisi pemfilteran. |
Contoh filter berlapis | Contoh filter berlapis | • Fungsi KQL sampel • Fungsi parameter sampel • join • where |
Daftar aktif (pencarian) | Aturan pencarian sampel yang menggunakan pernyataan InActiveList . |
Contoh daftar aktif (pencarian) | Contoh daftar aktif (pencarian) | • Daftar pantauan setara dengan fitur daftar aktif. Pelajari selengkapnya tentang daftar pantauan. • Cara lain untuk mengimplementasikan pencarian |
Korelasi (pencocokan) | Aturan sampel yang mendefinisikan kondisi terhadap sekumpulan peristiwa dasar, menggunakan pernyataan Matching Event . |
Contoh korelasi (pencocokan) | Contoh korelasi (pencocokan) | operator join: • join • join jendela waktu • shuffle • Siaran • Union pernyataan definisi: • let Agregasi: • make_set • make_list • make_bag • pack |
Korelasi (jendela waktu) | Aturan sampel yang mendefinisikan kondisi terhadap sekumpulan peristiwa dasar, menggunakan pernyataan Matching Event , dan kondisi filter Wait time . |
Contoh korelasi (jendela waktu) | Contoh korelasi (jendela waktu) | • join • Aturan Microsoft Sentinel dan pernyataan join |
Contoh filter (AND): ArcSight
Berikut adalah sampel aturan filter dengan kondisi AND
di ArcSight.
Contoh filter (AND): KQL
Berikut adalah aturan filter dengan kondisi AND
di KQL.
SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)
Aturan ini mengasumsikan bahwa MMA atau AMA mengumpulkan Peristiwa Keamanan Windows. Oleh karena itu, aturan menggunakan tabel SecurityEvent dari Microsoft Sentinel.
Coba praktik terbaik ini:
- Untuk mengoptimalkan kueri Anda, hindari operator yang tidak peka huruf besar/kecil jika memungkinkan:
=~
. - Gunakan
==
jika nilainya tidak peka huruf besar/kecil. - Urutkan filter dengan memulai pernyataan
where
, yang memfilter data terbanyak.
Contoh filter (OR): ArcSight
Berikut adalah sampel aturan filter dengan kondisi OR
di ArcSight.
Contoh filter (OR): KQL
Berikut adalah beberapa cara untuk menulis aturan filter dengan kondisi OR
pada KQL.
Sebagai opsi pertama, gunakan pernyataan in
:
SecurityEvent
| where SubjectUserName in
("Adm1","ServiceAccount1","AutomationServices")
Sebagai opsi kedua, gunakan pernyataan or
:
SecurityEvent
| where SubjectUserName == "Adm1" or
SubjectUserName == "ServiceAccount1" or
SubjectUserName == "AutomationServices"
Meskipun kedua opsi memiliki performa yang identik, kami merekomendasikan opsi pertama karena lebih mudah dibaca.
Contoh filter berlapis: ArcSight
Berikut adalah sampel aturan filter berlapis di ArcSight.
Berikut adalah aturan untuk filter /All Filters/Soc Filters/Exclude Valid Users
.
Contoh filter berlapis: KQL
Berikut adalah beberapa cara untuk menulis aturan filter dengan kondisi OR
pada KQL.
Sebagai opsi pertama, gunakan filter langsung dengan pernyataan where
:
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName) or
isnotempty(TargetDomainName)
| where SubjectUserName !~ "AutoMatedService"
Sebagai opsi kedua, gunakan fungsi KQL:
Simpan kueri berikut sebagai fungsi KQL dengan alias
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) | where SubjectUserName =~ "AutoMatedService" | project SubjectUserName
Gunakan kueri berikut untuk memfilter alias
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) or isnotempty(TargetDomainName) | where SubjectUserName !in (ExcludeValidUsers)
Sebagai opsi ketiga, gunakan fungsi parameter:
Buat fungsi parameter dengan
ExcludeValidUsers
sebagai nama dan alias.Tentukan parameter fungsi. Contohnya:
Tbl: (TimeGenerated:datatime, Computer:string, EventID:string, SubjectDomainName:string, TargetDomainName:string, SubjectUserName:string)
Fungsi
parameter
memiliki kueri sebagai berikut:Tbl | where SubjectUserName !~ "AutoMatedService"
Jalankan kueri berikut untuk memanggil fungsi parameter:
let Events = ( SecurityEvent | where EventID == 4728 ); ExcludeValidUsers(Events)
Sebagai opsi keempat, gunakan fungsi join
:
let events = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
or isnotempty(TargetDomainName)
);
let ExcludeValidUsers = (
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName)
| where SubjectUserName =~ "AutoMatedService"
);
events
| join kind=leftanti ExcludeValidUsers on
$left.SubjectUserName == $right.SubjectUserName
Pertimbangan:
- Kami menyarankan agar Anda menggunakan filter langsung dengan pernyataan
where
(opsi pertama) karena sederhana. Untuk performa yang lebih optimal, hindari penggunaanjoin
(opsi keempat). - Untuk mengoptimalkan kueri Anda, hindari operator
=~
dan!~
yang tidak peka huruf besar/kecil, jika memungkinkan. Gunakan operator==
dan!=
jika nilainya tidak peka huruf besar/kecil.
Contoh daftar aktif (pencarian): ArcSight
Berikut adalah aturan daftar aktif (pencarian) di ArcSight.
Contoh daftar aktif (pencarian): KQL
Aturan ini mengasumsikan bahwa terdapat daftar pantauan Akun Pengecualian Cyber-Ark dengan bidang Akun di Microsoft Sentinel.
let Activelist=(
_GetWatchlist('Cyber-Ark Exception Accounts')
| project Account );
CommonSecurityLog
| where DestinationUserName in (Activelist)
| where DeviceVendor == "Cyber-Ark"
| where DeviceAction == "Get File Request"
| where DeviceCustomNumber1 != ""
| project DeviceAction, DestinationUserName,
TimeGenerated,SourceHostName,
SourceUserName, DeviceEventClassID
Urutkan filter dengan memulai pernyataan where
yang memfilter data terbanyak.
Contoh korelasi (pencocokan): ArcSight
Berikut adalah aturan sampel ArcSight yang mendefinisikan kondisi terhadap sekumpulan peristiwa dasar, menggunakan pernyataan Matching Event
.
Contoh korelasi (pencocokan): KQL
let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2
on $left.TargetUserName==$right.TargetUserName
Praktik terbaik:
- Untuk mengoptimalkan kueri Anda, pastikan bahwa tabel yang lebih kecil berada di sisi kiri fungsi
join
. - Jika sisi kiri tabel relatif kecil (hingga 100 K baris), tambahkan
hint.strategy=broadcast
untuk performa yang lebih baik.
Contoh korelasi (jendela waktu): ArcSight
Berikut adalah sampel aturan ArcSight yang mendefinisikan kondisi terhadap sekumpulan peristiwa dasar, menggunakan pernyataan Matching Event
, dan kondisi filter Wait time
.
Contoh korelasi (jendela waktu): KQL
let waittime = 10m;
let lookback = 1d;
let event1 = (
SecurityEvent
| where TimeGenerated > ago(waittime+lookback)
| where EventID == 4728
| project event1_time = TimeGenerated,
event1_ID = EventID, event1_Activity= Activity,
event1_Host = Computer, TargetUserName,
event1_UPN=UserPrincipalName,
AccountUsedToAdd = SubjectUserName
);
let event2 = (
SecurityEvent
| where TimeGenerated > ago(waittime)
| where EventID == 4729
| project event2_time = TimeGenerated,
event2_ID = EventID, event2_Activity= Activity,
event2_Host= Computer, TargetUserName,
event2_UPN=UserPrincipalName,
AccountUsedToRemove = SubjectUserName
);
event1
| join kind=inner event2 on TargetUserName
| where event2_time - event1_time < lookback
| where tolong(event2_time - event1_time ) >=0
| project delta_time = event2_time - event1_time,
event1_time, event2_time,
event1_ID,event2_ID,event1_Activity,
event2_Activity, TargetUserName, AccountUsedToAdd,
AccountUsedToRemove,event1_Host,event2_Host,
event1_UPN,event2_UPN
Contoh agregasi: ArcSight
Berikut adalah sampel aturan ArcSight dengan pengaturan agregasi: tiga kecocokan dalam 10 menit.
Contoh agregasi: KQL
SecurityEvent
| summarize Count = count() by SubjectUserName,
SubjectDomainName
| where Count >3
Langkah berikutnya
Dalam artikel ini, Anda telah mempelajari cara memetakan aturan migrasi dari ArcSight ke Microsoft Sentinel.