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:

  1. Verifikasi bahwa Anda memiliki sistem pengujian untuk setiap aturan yang ingin Anda migrasikan.

    1. Siapkan proses validasi untuk aturan Anda yang dimigrasikan, termasuk skrip dan skenario pengujian lengkap.

    2. Pastikan tim Anda memiliki sumber daya yang bermanfaat untuk menguji aturan Anda yang dimigrasikan.

    3. Konfirmasi apakah Anda memiliki sumber data terhubung yang diperlukan, dan tinjau metode koneksi data Anda.

  2. 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:

      1. 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.

      2. Mengidentifikasi atribut, bidang, atau entitas dalam data Anda yang ingin Anda gunakan dalam aturan Anda.

      3. 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.

      4. Identifikasi kondisi pemicu dan tindakan aturan, lalu bangun dan tinjau kueri KQL Anda.l. Saat meninjau kueri Anda, pertimbangkan sumber daya panduan pengoptimalan KQL.

  3. Uji aturan dengan masing-masing kasus penggunaan yang relevan. Jika tidak memberikan hasil yang diharapkan, Anda mungkin ingin mengulas KQL dan mengujinya lagi.

  4. 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:

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.

Diagram yang mengilustrasikan aturan filter sampel.

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.

Diagram yang mengilustrasikan aturan filter sampel (atau).

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.

Diagram yang mengilustrasikan contoh aturan filter berlapis.

Berikut adalah aturan untuk filter /All Filters/Soc Filters/Exclude Valid Users.

Diagram yang mengilustrasikan filter Kecualikan Pengguna yang Valid.

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:

  1. Simpan kueri berikut sebagai fungsi KQL dengan alias ExcludeValidUsers.

        SecurityEvent
        | where EventID == 4728
        | where isnotempty(SubjectDomainName)
        | where SubjectUserName =~ "AutoMatedService"
        | project SubjectUserName
    
  2. 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:

  1. Buat fungsi parameter dengan ExcludeValidUsers sebagai nama dan alias.

  2. Tentukan parameter fungsi. Contohnya:

        Tbl: (TimeGenerated:datatime, Computer:string, 
        EventID:string, SubjectDomainName:string, 
        TargetDomainName:string, SubjectUserName:string)
    
  3. Fungsi parameter memiliki kueri sebagai berikut:

        Tbl
        | where SubjectUserName !~ "AutoMatedService"
    
  4. 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 penggunaan join (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.

Diagram yang mengilustrasikan contoh aturan daftar aktif (pencarian).

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.

Diagram yang mengilustrasikan contoh aturan korelasi (pencocokan).

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.

Diagram yang mengilustrasikan contoh aturan korelasi (jendela waktu).

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.

Diagram yang mengilustrasikan aturan agregasi sampel.

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.