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:
Sprawdź, czy masz system testowania dla każdej reguły, którą chcesz migrować.
Przygotuj proces weryfikacji dla zmigrowanych reguł, w tym scenariusze i skrypty pełnego testu.
Upewnij się, że zespół ma przydatne zasoby do testowania migrowanych reguł.
Upewnij się, że masz połączone wymagane źródła danych i przejrzyj metody połączenia danych.
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:
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.
Zidentyfikuj wszystkie atrybuty, pola lub jednostki w danych, które mają być używane w regułach.
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ń.
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.
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.
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:
- Reguły zaplanowanej analizy w usłudze Microsoft Sentinel. Grupowanie alertów umożliwia zmniejszenie zmęczenia alertów przez grupowanie alertów występujących w danym przedziale czasu.
- Mapowanie pól danych na jednostki w usłudze Microsoft Sentinel w celu umożliwienia inżynierom SOC definiowania jednostek w ramach dowodów do śledzenia podczas badania. Mapowanie jednostek umożliwia również analitykom SOC korzystanie z intuicyjnego grafu badania, który może pomóc skrócić czas i nakład pracy.
- Zbadaj zdarzenia przy użyciu danych UEBA, jako przykład użycia dowodów do wyświetlania zdarzeń, alertów i wszystkich zakładek skojarzonych z konkretnym zdarzeniem w okienku podglądu incydentu.
- język zapytań Kusto (KQL), których można użyć do wysyłania żądań tylko do odczytu do bazy danych usługi Log Analytics w celu przetwarzania danych i zwracania wyników. Język KQL jest również używany w innych usługi firmy Microsoft, takich jak Ochrona punktu końcowego w usłudze Microsoft Defender i Application Insights.
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.
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.
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.
Oto reguła filtru /All Filters/Soc Filters/Exclude Valid Users
.
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:
Zapisz następujące zapytanie jako funkcję KQL z aliasem
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) | where SubjectUserName =~ "AutoMatedService" | project SubjectUserName
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:
Utwórz funkcję parametru z
ExcludeValidUsers
nazwą i aliasem.Zdefiniuj parametry funkcji. Na przykład:
Tbl: (TimeGenerated:datetime, Computer:string, EventID:string, SubjectDomainName:string, TargetDomainName:string, SubjectUserName:string)
Funkcja
parameter
ma następujące zapytanie:Tbl | where SubjectUserName !~ "AutoMatedService"
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żywaniajoin
(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.
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
.
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
.
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.
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.