Udostępnij za pośrednictwem


Migrowanie reguł wykrywania usługi ArcSight do usługi Microsoft Sentinel

W tym artykule opisano sposób identyfikowania, porównywania i migrowania reguł wykrywania usługi ArcSight do reguł analizy usługi Microsoft Sentinel.

Identyfikowanie i migrowanie reguł

Usługa Microsoft Sentinel używa analizy uczenia maszynowego do tworzenia zdarzeń o wysokiej wierności i możliwości działania, a niektóre istniejące wykrycia mogą być nadmiarowe w usłudze Microsoft Sentinel. W związku z tym nie przeprowadzaj ślepej migracji wszystkich reguł wykrywania i analizy. Zapoznaj się z tymi 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ł usługi Microsoft Sentinel.
  • Sprawdź, czy rozumiesz terminologię dotyczącą reguł.
  • Przejrzyj wszystkie reguły, które nie wyzwoliły żadnych alertów w ciągu ostatnich 6–12 miesięcy, i ustal, czy są one nadal istotne.
  • Wyeliminuj zagrożenia niskiego poziomu lub alerty, które rutynowo ignorujesz.
  • Użyj istniejących funkcji i sprawdź, czy wbudowane reguły analizy usługi Microsoft Sentinel mogą dotyczyć bieżących przypadków użycia. Ponieważ usługa Microsoft Sentinel używa analizy uczenia maszynowego do tworzenia zdarzeń o wysokiej wierności i z możliwością 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. Ponownie zajmij się konwersacjami zbierania danych, aby zapewnić głębokość i szerokość danych w różnych przypadkach użycia, które mają być wykrywane.
  • Zapoznaj się z zasobami społeczności, takimi jak witryna Marketplace wykrywania zagrożeń SOC Prime, aby sprawdzić, czy reguły są dostępne.
  • Zastanów się, czy konwerter zapytań online, taki jak Uncoder.io, może działać w przypadku 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 migrowania reguł wykrywania.

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

  1. Sprawdź, czy masz system testowania dla każdej reguły, którą chcesz migrować.

    1. Przygotuj proces weryfikacji dla zmigrowanych reguł, w tym scenariusze i skrypty pełnego testu.

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

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

  2. Sprawdź, czy twoje wykrycia są dostępne jako wbudowane szablony w usłudze 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 usłudze Microsoft Sentinel przejdź do karty Szablony reguł analizy konfiguracji > > i utwórz i zaktualizuj każdą odpowiednią regułę analizy.

      Aby uzyskać więcej informacji, zobacz Tworzenie zaplanowanych reguł analizy na podstawie szablonów.

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

      Zidentyfikuj warunek wyzwalacza i akcję reguły, a następnie skonstruuj i przejrzyj zapytanie KQL.

    • Jeśli ani wbudowane reguły, ani konwerter reguł online nie są wystarczające, musisz ręcznie utworzyć regułę. 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. Chcesz utworzyć tabelę mapowania między źródłami danych i tabelami danych w usłudze Microsoft Sentinel, aby zidentyfikować tabele, których chcesz wykonać zapytanie.

      2. Zidentyfikuj wszystkie atrybuty, pola lub jednostki w danych, które mają być używane w regułach.

      3. Zidentyfikuj kryteria i logikę reguły. Na tym etapie możesz użyć szablonów reguł jako przykładów do konstruowania zapytań języka KQL.

        Rozważ filtry, reguły korelacji, aktywne listy, zestawy odwołań, listy kontrolne, anomalie wykrywania, agregacje itd. Możesz użyć odwołań dostarczonych przez starsze rozwiązanie SIEM, aby zrozumieć , jak najlepiej mapować składnię zapytań.

      4. Zidentyfikuj warunek wyzwalacza i akcję reguły, a następnie skonstruuj i przejrzyj zapytanie KQL. Podczas przeglądania zapytania rozważ zasoby wskazówek dotyczących optymalizacji języka KQL.

  3. Przetestuj regułę przy użyciu każdego z odpowiednich przypadków użycia. Jeśli nie podasz oczekiwanych wyników, możesz przejrzeć język KQL i przetestować go ponownie.

  4. Jeśli masz pewność, że reguła została zmigrowana, możesz rozważyć jej zmigrowanie. Utwórz podręcznik dla akcji reguły zgodnie z potrzebami. Aby uzyskać więcej informacji, zobacz artykuł Automatyzowanie reagowania na zagrożenia za pomocą podręczników w usłudze Microsoft Sentinel.

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

Porównanie terminologii dotyczącej reguł

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

ArcSight Microsoft Sentinel
Typ reguły • Reguła filtru
• Reguła sprzężenia
• Aktywna reguła listy
• I więcej
• Zaplanowane zapytanie
•Fuzja
• Zabezpieczenia firmy Microsoft
• Analiza zachowań uczenia maszynowego
Kryteria Definiowanie w warunkach reguły Definiowanie w języku KQL
Warunek wyzwalacza • Zdefiniuj w akcji
• Definiowanie w agregacji (na potrzeby agregacji zdarzeń)
Próg: liczba wyników zapytania
Akcja • Ustawianie pola zdarzenia
• Wysyłanie powiadomienia
• Utwórz nowy przypadek
• Dodaj do aktywnej listy
• I więcej
• Tworzenie alertu lub zdarzenia
• Integruje się z usługą Logic Apps

Mapuj i porównaj przykłady reguł

Skorzystaj z tych przykładów, aby porównać i mapować reguły z usługi ArcSight do usługi Microsoft Sentinel w różnych scenariuszach.

Reguła opis Przykładowa reguła wykrywania (ArcSight) Przykładowe zapytanie KQL Zasoby
Filtr (AND) Przykładowa reguła z AND warunkami. Zdarzenie musi być zgodne ze wszystkimi warunkami. Przykład filtru (AND) Przykład filtru (AND) Filtr ciągu:
Operatory ciągów

Filtr liczbowy:
Operatory liczbowe

Filtr daty/godziny:
temu
Data/godzina
między
teraz

Analizowania:
analizowanie
ekstrakt
parse_json
parse_csv
parse_path
parse_url
Filtr (OR) Przykładowa reguła z OR warunkami. Zdarzenie może być zgodne z dowolnymi warunkami. Przykład filtru (OR) Przykład filtru (OR) Operatory ciągów
w
Filtr zagnieżdżony Przykładowa reguła z zagnieżdżonymi warunkami filtrowania. Reguła zawiera instrukcję MatchesFilter , która zawiera również warunki filtrowania. Przykład filtru zagnieżdżonego Przykład filtru zagnieżdżonego Przykładowa funkcja KQL
Przykładowa funkcja parametru
sprzężenia
gdzie
Aktywna lista (wyszukiwanie) Przykładowa reguła wyszukiwania, która używa instrukcji InActiveList . Przykład aktywnej listy (odnośnik) Przykład aktywnej listy (odnośnik) • Lista do obejrzenia jest odpowiednikiem aktywnej funkcji listy. Dowiedz się więcej o listach do obejrzenia.
Inne sposoby implementowania odnośników
Korelacja (dopasowanie) Przykładowa reguła, która definiuje warunek dla zestawu zdarzeń podstawowych przy użyciu instrukcji Matching Event . Przykład korelacji (dopasowania) Przykład korelacji (dopasowania) operator sprzężenia:
sprzężenia
sprzężenia z oknem czasowym
mieszania
Emisja
Unia

define, instrukcja:
let

Agregacja:
make_set
make_list
make_bag
bag_pack
Korelacja (przedział czasu) Przykładowa reguła, która definiuje warunek dla zestawu zdarzeń podstawowych przy użyciu Matching Event instrukcji i używa warunku filtru Wait time . Przykład korelacji (przedziału czasu) Przykład korelacji (przedziału czasu) sprzężenia
Reguły usługi Microsoft Sentinel i instrukcja join

Przykład filtru (AND): ArcSight

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

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

Przykład filtru (AND): KQL

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

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

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

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

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

Przykład filtru (OR): ArcSight

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

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

Przykład filtru (OR): KQL

Oto kilka sposobów na napisanie reguły filtru z OR warunkami w języku KQL.

Jako pierwsza opcja użyj instrukcji in :

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

Jako drugą opcję użyj instrukcji or :

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

Chociaż obie opcje są identyczne w wydajności, zalecamy pierwszą opcję, która jest łatwiejsza do odczytania.

Przykład filtru zagnieżdżonego: ArcSight

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

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

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

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

Przykład filtru zagnieżdżonego: KQL

Oto kilka sposobów na napisanie reguły filtru z OR warunkami w języku KQL.

Jako pierwsza opcja użyj filtru bezpośredniego z instrukcją where :

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

Jako druga opcja 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 filtrować ExcludeValidUsers alias.

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

Jako trzecia opcja użyj funkcji parametru:

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

  2. Zdefiniuj parametry funkcji. Na 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 czwarta opcja 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

Zagadnienia do rozważenia:

  • Zalecamy użycie filtru bezpośredniego z instrukcją where (pierwsza opcja) ze względu na jej prostotę. W celu uzyskania zoptymalizowanej wydajności należy unikać używania join (czwarta opcja).
  • Aby zoptymalizować zapytania, należy unikać =~ operatorów bez uwzględniania wielkości liter i !~ , gdy jest to możliwe. == Użyj operatorów i!=, jeśli wartość nie jest uwzględniana w wielkości liter.

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

Oto aktywna reguła listy (odnośników) w usłudze ArcSight.

Diagram ilustrujący przykładową aktywną regułę listy (wyszukiwanie).

Przykład aktywnej listy (odnośnik): KQL

Ta reguła zakłada, że lista obserwowanych kont wyjątków cyber-ark istnieje w usłudze Microsoft Sentinel z polem Konto.

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

Porządkowaj filtry, zaczynając od where instrukcji , która odfiltruje najwięcej danych.

Przykład korelacji (dopasowania): ArcSight

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

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

Przykład korelacji (dopasowania): KQL

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 stronie join funkcji.
  • Jeśli lewa strona tabeli jest stosunkowo mała (do 100 K rekordów), dodaj, hint.strategy=broadcast aby uzyskać lepszą wydajność.

Przykład korelacji (przedziału czasu): ArcSight

Oto przykładowa reguła usługi ArcSight, która definiuje warunek dla zestawu zdarzeń podstawowych przy użyciu Matching Event instrukcji i używa warunku filtru Wait time .

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

Przykład korelacji (przedział czasu): 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

Przykład agregacji: ArcSight

Oto przykładowa reguła usługi ArcSight z ustawieniami agregacji: trzy dopasowania w ciągu 10 minut.

Diagram ilustrujący przykładową regułę agregacji.

Przykład agregacji: KQL

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

Następne kroki

W tym artykule przedstawiono sposób mapowania reguł migracji z usługi ArcSight na usługę Microsoft Sentinel.