Migrowanie reguł wykrywania usługi ArcSight do Microsoft Sentinel

W tym artykule opisano, jak identyfikować, porównywać i migrować reguły wykrywania ArcSight do reguł analitycznych platformy Microsoft Sentinel.

Identyfikowanie i migrowanie reguł

Microsoft Sentinel używa analizy uczenia maszynowego do tworzenia zdarzeń o wysokiej wierności i możliwych do działania, a niektóre z istniejących wykryć mogą być nadmiarowe w Microsoft Sentinel. W związku z tym nie należy ślepo migrować wszystkich reguł wykrywania i analizy. Zapoznaj się z poniższymi zagadnieniami, aby zidentyfikować istniejące reguły wykrywania.

  • Pamiętaj, aby wybrać przypadki użycia, które uzasadniają migrację reguł, biorąc pod uwagę priorytet biznesowy i wydajność.
  • Sprawdź, czy rozumiesz typy reguł Microsoft Sentinel.
  • Sprawdź, czy rozumiesz terminologię reguł.
  • Przejrzyj wszystkie zasady, które nie wywołały żadnych powiadomień w ciągu ostatnich sześciu do dwunastu miesięcy i sprawdź, czy nadal są aktualne.
  • Eliminuj zagrożenia niskiego poziomu lub alerty, które są rutynowo ignorowane.
  • Użyj istniejących funkcji i sprawdź, czy wbudowane reguły analizy Microsoft Sentinel mogą dotyczyć bieżących przypadków użycia. Ponieważ Microsoft Sentinel używa analizy uczenia maszynowego do generowania zdarzeń o wysokiej wierności i możliwych do działania, prawdopodobnie niektóre istniejące wykrycia nie będą już wymagane.
  • Potwierdź połączone źródła danych i przejrzyj metody połączenia danych. Wróć do rozmów dotyczących zbierania danych, aby zapewnić odpowiednią szczegółowość i zakres danych dla przypadków użycia, które planujesz wykrywać.
  • Zapoznaj się z zasobami społecznościowymi, takimi jak SOC Prime Threat Detection Marketplace, aby sprawdzić, czy Twoje reguły są dostępne.
  • Zastanów się, czy internetowy konwerter zapytań, taki jak Uncoder.io, może sprawdzić się w przypadku Twoich reguł.
  • Jeśli reguły nie są dostępne lub nie można ich przekonwertować, należy je utworzyć ręcznie przy użyciu zapytania KQL. Przejrzyj mapowanie reguł , aby utworzyć nowe zapytania.

Dowiedz się więcej o najlepszych rozwiązaniach dotyczących migracji reguł wykrywania.

Aby przeprowadzić migrację reguł analizy do Microsoft Sentinel:

  1. Sprawdź, czy masz wdrożony system testowy dla każdej reguły, którą chcesz przenieść.

    1. Przygotowanie procesu weryfikacji dla zmigrowanych reguł, w tym pełnych scenariuszy testowych i skryptów.

    2. Upewnij się, że twój zespół ma przydatne zasoby do testowania zmigrowanych reguł.

    3. Upewnij się, że masz podłączone wymagane źródła danych i przejrzyj metody połączenia danych.

  2. Sprawdź, czy twoje wykrycia są dostępne jako wbudowane szablony w Microsoft Sentinel:

    • Jeśli wbudowane reguły są wystarczające, użyj wbudowanych szablonów reguł, aby utworzyć reguły dla własnego obszaru roboczego.

      W Microsoft Sentinel przejdź do karty Szablony reguł analizy > konfiguracji > i utwórz i zaktualizuj każdą odpowiednią regułę analizy.

      Aby dowiedzieć się, jak tworzyć reguły z wbudowanych szablonów, zobacz Stwórz reguły planowanej analityki z szablonów.

    • Jeśli masz wykrycia, które nie są objęte wbudowanymi regułami Microsoft Sentinel, wypróbuj konwerter zapytań online, taki jak Uncoder.io, aby przekonwertować zapytania na KQL.

      Zidentyfikuj warunek wyzwalacza i akcję reguły, a następnie utwórz i sprawdź zapytanie KQL.

    • Jeśli ani wbudowane reguły, ani konwerter reguł online nie są wystarczające, należy utworzyć regułę ręcznie. W takich przypadkach wykonaj następujące kroki, aby rozpocząć tworzenie reguły:

      1. Zidentyfikuj źródła danych, których chcesz użyć w regule. W Microsoft Sentinel warto utworzyć tabelę mapowania między źródłami danych a tabelami, aby określić, które tabele chcesz odpytywać.

      2. Zidentyfikuj wszystkie atrybuty, pola lub jednostki w danych, których chcesz użyć w regułach.

      3. Określ kryteria i logikę swojej reguły. Na tym etapie warto użyć szablonów reguł jako przykładów do konstruowania zapytań KQL.

        Należy wziąć pod uwagę filtry, reguły korelacji, aktywne listy, zestawy odwołań, listy obserwowanych, anomalie wykrywania, agregacje itd. Możesz użyć referencji udostępnionych przez starszy SIEM do mapowania składni zapytań ArcSight do KQL.

      4. Zidentyfikuj warunek wyzwalacza i akcję reguły, a następnie utwórz i przejrzyj swoje zapytanie KQL. Analizując zapytanie, skorzystaj z materiałów zawierających zalecenia dotyczące optymalizacji języka KQL.

  3. Przetestuj regułę dla każdego odpowiedniego przypadku użycia. Jeśli nie daje oczekiwanych wyników, możesz przejrzeć zapytanie KQL i przetestować je ponownie.

  4. Gdy uznasz, że wszystko jest w porządku, możesz uznać regułę za zmigrowaną. W razie potrzeby utwórz podręcznik procedur dla działania reguły. Aby tworzyć i używać playbooków do akcji reguł, zobacz Automate threat response with playbooks in Microsoft Sentinel.

Dowiedz się więcej o regułach analizy:

Porównanie terminologii reguł

Ta tabela ułatwia wyjaśnienie koncepcji reguły w Microsoft Sentinel w porównaniu z usługą ArcSight.

ArcSight Microsoft Sentinel
Typ reguły - Reguła filtrów
- Reguła łączenia
- Reguła aktywnej listy
- I więcej
- Zaplanowane zapytanie
- Fuzja
- rozwiązania zabezpieczające firmy Microsoft
- Machine Learning (ML) analiza zachowań
Kryteria Zdefiniuj w warunkach reguły Definiuj w języku KQL
Warunek wyzwalacza - Definiuj w akcji
- Zdefiniuj w agregacji (dla agregacji zdarzeń)
Próg: liczba wyników zapytania
Akcja - Ustaw pole wydarzenia
- Wyślij powiadomienie
- Utworzenie nowej sprawy
- Dodaj do listy aktywnej
- I więcej
- Utworzenie alertu lub incydentu
- Integruje się z aplikacjami logicznymi

Mapowanie i porównywanie przykładów reguł

Użyj poniższych przykładów, aby porównać reguły wykrywania ArcSight z równoważnymi zapytaniami Microsoft Sentinel napisanymi w Kusto Query Language (KQL).

Reguły Opis Przykładowa reguła wykrywania (ArcSight) Przykładowe zapytanie KQL Zasoby
Filtr (AND) Przykładowa reguła z warunkami AND . Zdarzenie musi spełniać wszystkie warunki. Przykład filtru (AND) Przykład filtru (AND) Filtr ciągów:
- Operatory ciągów znaków

Filtr liczbowy:
- Operatory numeryczne

Filtr daty/godziny:
- ago
- Czas na spotkanie
- pomiędzy
- teraz

Parsowanie:
- Parse
- Ekstrakt
- parse_json
- parse_csv
- parse_path
- parse_url
Filtr (OR) Przykładowa reguła z warunkami OR . Zdarzenie może odpowiadać dowolnemu z warunków. Przykład filtru (OR) Przykład filtru (OR) - Operatory ciągów znaków
- w
Filtr zagnieżdżony Przykładowa reguła z zagnieżdżonymi warunkami filtrowania. Reguła zawiera instrukcję MatchesFilter , która obejmuje również warunki filtrowania. Przykład zagnieżdżonego filtru Przykład zagnieżdżonego filtru - Użyj funkcji KQL do przyspieszenia analizy
- Wzbogacaj zdarzenia bezpieczeństwa Windows o funkcję parametryzowaną
- dołącz
- gdzie
Aktywna lista (wyszukiwanie) Przykładowa reguła wyszukiwania, która używa instrukcji InActiveList. Przykład aktywnej listy (wyszukiwanie) Przykład aktywnej listy (wyszukiwanie) - Lista obserwacyjna jest odpowiednikiem funkcji aktywnej listy. Dowiedz się więcej o listach obserwowanych.
- Inne sposoby implementacji wyszukiwania
Korelacja (dopasowywanie) Przykładowa reguła definiująca warunek dla zbioru zdarzeń bazowych przy użyciu instrukcji Matching Event. Przykład korelacji (dopasowania) Przykład korelacji (dopasowania) operator złączenia:
- dołącz
- Dołącz do Time Window
- tasuj
- Emisja
- Unia

instrukcja definicji:
- niech

Agregacja:
- make_set
- make_list
- make_bag
- bag_pack
Korelacja (przedział czasu) Przykładowa reguła, która definiuje warunek dla zestawu zdarzeń podstawowych za pomocą instrukcji Matching Event oraz warunku filtrowania Wait time. Przykład korelacji (przedział czasu) Przykład korelacji (przedział czasu) - dołącz
- Reguły Microsoft Sentinel i oświadczenie o dołączeniu

Przykład filtru (AND): ArcSight

Oto przykładowa reguła filtru z warunkami AND w usłudze ArcSight.

Diagram przedstawiający przykładową regułę filtru.

Przykład filtru (AND): KQL

Oto reguła filtrowania z warunkami AND w języku KQL.

SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)

Ta reguła zakłada, że agent monitorowania Azure (AMA) zbiera zdarzenia Zabezpieczenia Windows. W związku z tym reguła używa tabeli Microsoft Sentinel SecurityEvent.

Rozważmy następujące najlepsze rozwiązania:

  • Aby zoptymalizować zapytania, unikaj operatorów bez uwzględniania wielkości liter, gdy jest to możliwe: =~.
  • Użyj ==, jeśli wielkość liter w wartości nie ma znaczenia.
  • Uporządkuj filtry, zaczynając od instrukcji where, która odfiltrowuje najwięcej danych.

Przykład filtru (OR): ArcSight

Oto przykładowa reguła filtru z warunkami OR w usłudze ArcSight.

Diagram przedstawiający przykładową regułę filtru (lub).

Przykład filtru (OR): KQL

Poniżej przedstawiono kilka sposobów zapisu reguły filtru z warunkami OR w języku KQL.

Jako pierwszą opcję użyj in instrukcji:

SecurityEvent
| where SubjectUserName in
 ("Adm1","ServiceAccount1","AutomationServices")

Jako drugą opcję użyj or instrukcji:

SecurityEvent
| where SubjectUserName == "Adm1" or 
SubjectUserName == "ServiceAccount1" or 
SubjectUserName == "AutomationServices"

Obie opcje są identyczne pod względem wydajności, ale zalecamy pierwszą opcję, która jest łatwiejsza do odczytania.

Przykład zagnieżdżonego filtru: ArcSight

Oto przykładowa reguła zagnieżdżonego filtru w usłudze ArcSight.

Diagram przedstawiający przykładową regułę filtru zagnieżdżonego.

Oto reguła dla filtru /All Filters/Soc Filters/Exclude Valid Users .

Diagram przedstawiający filtr Wyklucz prawidłowych użytkowników.

Przykład zagnieżdżonego filtru: KQL

Poniżej przedstawiono kilka sposobów zapisu reguły filtru z warunkami OR w języku KQL.

Jako pierwszą opcję użyj filtru bezpośredniego z instrukcją where :

SecurityEvent
| where EventID == 4728 
| where isnotempty(SubjectDomainName) or 
isnotempty(TargetDomainName) 
| where SubjectUserName !~ "AutoMatedService"

Jako drugą opcję użyj funkcji KQL:

  1. Zapisz następujące zapytanie jako funkcję KQL z aliasem ExcludeValidUsers .

        SecurityEvent
        | where EventID == 4728
        | where isnotempty(SubjectDomainName)
        | where SubjectUserName =~ "AutoMatedService"
        | project SubjectUserName
    
  2. Użyj następującego zapytania, aby odfiltrować ExcludeValidUsers alias.

        SecurityEvent    
        | where EventID == 4728
        | where isnotempty(SubjectDomainName) or 
        isnotempty(TargetDomainName)
        | where SubjectUserName !in (ExcludeValidUsers)
    

Jako trzecią opcję użyj funkcji parametru:

  1. Utwórz funkcję parametru z nazwą i aliasem ExcludeValidUsers .

  2. Zdefiniuj parametry funkcji. Przykład:

        Tbl: (TimeGenerated:datetime, Computer:string, 
        EventID:string, SubjectDomainName:string, 
        TargetDomainName:string, SubjectUserName:string)
    
  3. Funkcja parameter ma następujące zapytanie:

        Tbl
        | where SubjectUserName !~ "AutoMatedService"
    
  4. Uruchom następujące zapytanie, aby wywołać funkcję parametru:

        let Events = (
        SecurityEvent 
        | where EventID == 4728
        );
        ExcludeValidUsers(Events)
    

Jako czwartą opcję użyj join funkcji:

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

Considerations

  • Zalecamy użycie filtru bezpośredniego z instrukcją where (pierwsza opcja) ze względu na jego prostotę. Aby uzyskać zoptymalizowaną wydajność, unikaj używania join (czwarta opcja).
  • Aby zoptymalizować zapytania, w miarę możliwości unikaj operatorów =~ i !~, które są niewrażliwe na wielkość liter. Użyj operatorów == i !=, jeśli wielkość liter w wartości nie ma znaczenia.

Przykład aktywnej listy (odnośnika): ArcSight

Oto reguła listy aktywnej (wyszukiwanie) w ArcSight.

Schemat ilustrujący przykładową regułę aktywnej listy (wyszukiwanie).

Przykład listy aktywnej (wyszukiwanie): KQL

Ważna

Zanim uruchomisz to zapytanie, stwórz listę obserwacji Cyber-Ark Konta Wyjątkowe w Microsoft Sentinel i dołącz pole Konta.

Poniższe zapytanie KQL wykorzystuje listę obserwacji Cyber-Ark Exclusive Accounts do filtrowania wyników wyszukiwania.

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

Uporządkuj filtry, zaczynając od instrukcji where, która odfiltrowuje najwięcej danych.

Przykład korelacji (dopasowywania): ArcSight

Oto przykładowa reguła ArcSight, która definiuje warunek dla zestawu zdarzeń podstawowych przy użyciu instrukcji Matching Event.

Diagram przedstawiający przykładową regułę korelacji (dopasowanie).

Przykład korelacji (dopasowania): KQL

Poniższy przykład w języku KQL pokazuje, jak zaimplementować regułę korelacji dopasowującej ArcSight w usłudze Microsoft Sentinel.

let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2 
on $left.TargetUserName==$right.TargetUserName

Najlepsze rozwiązania

  • Aby zoptymalizować zapytanie, upewnij się, że mniejsza tabela znajduje się po lewej join stronie funkcji.
  • Jeśli lewa strona tabeli jest stosunkowo mała (do 100 tys. rekordów), dodaj hint.strategy=broadcast, aby uzyskać lepszą wydajność.

Przykład korelacji (przedział czasu): ArcSight

Oto przykładowa reguła ArcSight, która definiuje warunek dla zestawu zdarzeń podstawowych za pomocą instrukcji Matching Event i używa warunku filtrowania Wait time.

Diagram przedstawiający przykładową regułę korelacji (przedział czasu).

Przykład korelacji (przedział czasu): KQL

Poniższy przykład języka KQL implementuje regułę korelacji z oknem czasu odpowiadającym przykładowi usługi ArcSight.

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

Przykład agregacji: ArcSight

Oto przykładowa reguła ArcSight z ustawieniami agregacji: trzy wystąpienia w ciągu 10 minut.

Diagram przedstawiający regułę agregacji przykładowej.

Przykład agregacji: KQL

Poniższe zapytanie KQL pokazuje, jak wykryć trzy lub więcej dopasowań przy użyciu agregacji.

SecurityEvent
| summarize Count = count() by SubjectUserName, 
SubjectDomainName
| where Count >3

Następny krok