Migrera ArcSight-identifieringsregler till Microsoft Sentinel
I den här artikeln beskrivs hur du identifierar, jämför och migrerar ArcSight-identifieringsregler till Microsoft Sentinel-analysregler.
Identifiera och migrera regler
Microsoft Sentinel använder maskininlärningsanalys för att skapa incidenter med hög återgivning och åtgärder, och vissa av dina befintliga identifieringar kan vara redundanta i Microsoft Sentinel. Migrera därför inte alla identifierings- och analysregler blint. Granska dessa överväganden när du identifierar dina befintliga identifieringsregler.
- Se till att välja användningsfall som motiverar regelmigrering, med hänsyn till affärsprioritet och effektivitet.
- Kontrollera att du förstår Microsoft Sentinel-regeltyper.
- Kontrollera att du förstår regelterminologin.
- Granska alla regler som inte har utlöst några aviseringar under de senaste 6–12 månaderna och ta reda på om de fortfarande är relevanta.
- Eliminera hot eller aviseringar på låg nivå som du regelbundet ignorerar.
- Använd befintliga funktioner och kontrollera om Microsoft Sentinels inbyggda analysregler kan hantera dina aktuella användningsfall. Eftersom Microsoft Sentinel använder maskininlärningsanalys för att skapa incidenter med hög återgivning och åtgärder är det troligt att vissa av dina befintliga identifieringar inte längre krävs.
- Bekräfta anslutna datakällor och granska dina dataanslutningsmetoder. Gå tillbaka till datainsamlingskonversationer för att säkerställa datadjup och bredd i de användningsfall som du planerar att identifiera.
- Utforska communityresurser som SOC Prime Threat Detection Marketplace för att kontrollera om dina regler är tillgängliga.
- Överväg om en onlinefrågekonverterare, till exempel Uncoder.io, kan fungera för dina regler.
- Om regler inte är tillgängliga eller inte kan konverteras måste de skapas manuellt med hjälp av en KQL-fråga. Granska regelmappningen för att skapa nya frågor.
Läs mer om metodtips för att migrera identifieringsregler.
Så här migrerar du dina analysregler till Microsoft Sentinel:
Kontrollera att du har ett testsystem för varje regel som du vill migrera.
Förbered en valideringsprocess för dina migrerade regler, inklusive fullständiga testscenarier och skript.
Se till att ditt team har användbara resurser för att testa dina migrerade regler.
Bekräfta att du har alla nödvändiga datakällor anslutna och granska dina dataanslutningsmetoder.
Kontrollera om dina identifieringar är tillgängliga som inbyggda mallar i Microsoft Sentinel:
Om de inbyggda reglerna är tillräckliga använder du inbyggda regelmallar för att skapa regler för din egen arbetsyta.
I Microsoft Sentinel går du till fliken Konfigurationsanalysregelmallar >> och skapar och uppdaterar varje relevant analysregel.
Mer information finns i Identifiera hot direkt.
Om du har identifieringar som inte omfattas av Microsoft Sentinels inbyggda regler kan du prova en frågekonverterare online, till exempel Uncoder.io för att konvertera dina frågor till KQL.
Identifiera utlösarvillkoret och regelåtgärden och skapa och granska sedan KQL-frågan.
Om varken de inbyggda reglerna eller en onlineregelkonverterare räcker måste du skapa regeln manuellt. I sådana fall kan du använda följande steg för att börja skapa regeln:
Identifiera de datakällor som du vill använda i regeln. Du vill skapa en mappningstabell mellan datakällor och datatabeller i Microsoft Sentinel för att identifiera de tabeller som du vill fråga efter.
Identifiera attribut, fält eller entiteter i dina data som du vill använda i dina regler.
Identifiera dina regelkriterier och logik. I det här skedet kanske du vill använda regelmallar som exempel för hur du skapar KQL-frågor.
Överväg filter, korrelationsregler, aktiva listor, referensuppsättningar, visningslistor, identifieringsavvikelser, aggregeringar och så vidare. Du kan använda referenser från din äldre SIEM för att förstå hur du bäst mappar din frågesyntax.
Identifiera utlösarvillkoret och regelåtgärden och skapa och granska sedan KQL-frågan. När du granskar din fråga bör du överväga KQL-optimeringsvägledningsresurser.
Testa regeln med vart och ett av dina relevanta användningsfall. Om det inte ger förväntade resultat kanske du vill granska KQL och testa det igen.
När du är nöjd kan du överväga att migrera regeln. Skapa en spelbok för din regelåtgärd efter behov. Mer information finns i Automatisera hotsvar med spelböcker i Microsoft Sentinel.
Läs mer om analysregler:
- Skapa anpassade analysregler för att identifiera hot. Använd aviseringsgruppering för att minska varningströttheten genom att gruppera aviseringar som inträffar inom en viss tidsram.
- Mappa datafält till entiteter i Microsoft Sentinel så att SOC-tekniker kan definiera entiteter som en del av beviset som ska spåras under en undersökning. Entitetsmappning gör det också möjligt för SOC-analytiker att dra nytta av ett intuitivt [undersökningsdiagram (investigate-cases.md#use-the-investigation-graph-to-deep-dive) som kan hjälpa till att minska tid och arbete.
- Undersök incidenter med UEBA-data, som ett exempel på hur du använder bevis för att visa händelser, aviseringar och bokmärken som är associerade med en viss incident i förhandsgranskningsfönstret för incidenter.
- Kusto-frågespråk (KQL) som du kan använda för att skicka skrivskyddade begäranden till Log Analytics-databasen för att bearbeta data och returnera resultat. KQL används också i andra Microsoft tjänster, till exempel Microsoft Defender för Endpoint och Application Insights.
Jämför regelterminologi
Den här tabellen hjälper dig att förtydliga begreppet regel i Microsoft Sentinel jämfört med ArcSight.
ArcSight | Microsoft Sentinel | |
---|---|---|
Regeltyp | • Filtrera regel • Kopplingsregel • Regel för aktiv lista • Och mycket mer |
• Schemalagd fråga •Fusion • Microsoft Säkerhet • Beteendeanalys för Machine Learning (ML) |
Kriterie | Definiera i regelvillkor | Definiera i KQL |
Utlösarvillkor | • Definiera i praktiken • Definiera i sammansättning (för händelseaggregering) |
Tröskelvärde: Antal frågeresultat |
Åtgärd | • Ange händelsefält • Skicka meddelande • Skapa nytt ärende • Lägg till i aktiv lista • Och mycket mer |
• Skapa avisering eller incident • Integrerar med Logic Apps |
Mappa och jämföra regelexempel
Använd de här exemplen för att jämföra och mappa regler från ArcSight till Microsoft Sentinel i olika scenarier.
Regel | Description | Exempel på identifieringsregel (ArcSight) | KQL-exempelfråga | Resurser |
---|---|---|---|---|
Filter (AND ) |
En exempelregel med AND villkor. Händelsen måste matcha alla villkor. |
Filterexempel (AND) | Filterexempel (AND) | Strängfilter: • Strängoperatorer Numeriskt filter: • Numeriska operatorer Datetime-filter: • sedan • Datetime • mellan • nu Parsning: • parsa • extrahera • parse_json • parse_csv • parse_path • parse_url |
Filter (OR ) |
En exempelregel med OR villkor. Händelsen kan matcha något av villkoren. |
Filterexempel (OR) | Filterexempel (OR) | • Strängoperatorer • i |
Kapslat filter | En exempelregel med kapslade filtreringsvillkor. Regeln innehåller -instruktionen MatchesFilter , som även innehåller filtreringsvillkor. |
Exempel på kapslat filter | Exempel på kapslat filter | • Exempel på KQL-funktion • Exempelparameterfunktion • Anslut • där |
Aktiv lista (uppslag) | En exempeluppslagsregel som använder -instruktionen InActiveList . |
Exempel på aktiv lista (sökning) | Exempel på aktiv lista (sökning) | • En visningslista motsvarar funktionen för aktiv lista. Läs mer om visningslistor. • Andra sätt att implementera sökningar |
Korrelation (matchning) | En exempelregel som definierar ett villkor mot en uppsättning bashändelser med hjälp av -instruktionen Matching Event . |
Exempel på korrelation (matchning) | Exempel på korrelation (matchning) | kopplingsoperator: • Anslut • koppla med tidsfönstret • blanda • Sänds • Unionen define-instruktion: • låt Aggregation: • make_set • make_list • make_bag • pack |
Korrelation (tidsfönster) | En exempelregel som definierar ett villkor mot en uppsättning bashändelser med hjälp av -instruktionen Matching Event och använder filtervillkoret Wait time . |
Exempel på korrelation (tidsfönster) | Exempel på korrelation (tidsfönster) | • Anslut • Microsoft Sentinel-regler och join-instruktion |
Filterexempel (AND): ArcSight
Här är en exempelfilterregel med AND
villkor i ArcSight.
Filterexempel (AND): KQL
Här är filterregeln med AND
villkor i KQL.
SecurityEvent
| where EventID == 4728
| where SubjectUserName =~ "AutoMatedService"
| where isnotempty(SubjectDomainName)
Den här regeln förutsätter att Microsoft Monitoring Agent (MMA) eller Azure Monitoring Agent (AMA) samlar in Windows-säkerhet-händelser. Därför använder regeln tabellen Microsoft Sentinel SecurityEvent.
Överväg följande rekommenderade metoder:
- Du kan optimera dina frågor genom att undvika skiftlägesokänsliga operatorer när det är möjligt:
=~
. - Använd
==
om värdet inte är skiftlägeskänsligt. - Sortera filtren genom att börja med -instruktionen
where
, som filtrerar ut mest data.
Filterexempel (OR): ArcSight
Här är en exempelfilterregel med OR
villkor i ArcSight.
Filterexempel (OR): KQL
Här följer några sätt att skriva filterregeln med OR
villkor i KQL.
Som ett första alternativ använder du -instruktionen in
:
SecurityEvent
| where SubjectUserName in
("Adm1","ServiceAccount1","AutomationServices")
Som ett andra alternativ använder du -instruktionen or
:
SecurityEvent
| where SubjectUserName == "Adm1" or
SubjectUserName == "ServiceAccount1" or
SubjectUserName == "AutomationServices"
Även om båda alternativen är identiska i prestanda rekommenderar vi det första alternativet, vilket är lättare att läsa.
Exempel på kapslat filter: ArcSight
Här är ett exempel på en kapslad filterregel i ArcSight.
Här är en regel för /All Filters/Soc Filters/Exclude Valid Users
filtret.
Exempel på kapslat filter: KQL
Här följer några sätt att skriva filterregeln med OR
villkor i KQL.
Som ett första alternativ använder du ett direktfilter med en where
-instruktion:
SecurityEvent
| where EventID == 4728
| where isnotempty(SubjectDomainName) or
isnotempty(TargetDomainName)
| where SubjectUserName !~ "AutoMatedService"
Som ett andra alternativ använder du en KQL-funktion:
Spara följande fråga som en KQL-funktion med aliaset
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) | where SubjectUserName =~ "AutoMatedService" | project SubjectUserName
Använd följande fråga för att filtrera aliaset
ExcludeValidUsers
.SecurityEvent | where EventID == 4728 | where isnotempty(SubjectDomainName) or isnotempty(TargetDomainName) | where SubjectUserName !in (ExcludeValidUsers)
Som ett tredje alternativ använder du en parameterfunktion:
Skapa en parameterfunktion med
ExcludeValidUsers
som namn och alias.Definiera parametrarna för funktionen. Ett exempel:
Tbl: (TimeGenerated:datatime, Computer:string, EventID:string, SubjectDomainName:string, TargetDomainName:string, SubjectUserName:string)
Funktionen
parameter
har följande fråga:Tbl | where SubjectUserName !~ "AutoMatedService"
Kör följande fråga för att anropa parameterfunktionen:
let Events = ( SecurityEvent | where EventID == 4728 ); ExcludeValidUsers(Events)
Som ett fjärde alternativ använder du join
funktionen :
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
Överväganden:
- Vi rekommenderar att du använder ett direktfilter med en
where
-instruktion (första alternativet) på grund av dess enkelhet. Undvik att användajoin
(fjärde alternativet) för optimerad prestanda. - Du kan optimera dina frågor genom att undvika de
=~
skiftlägeskänsliga!~
operatorerna när det är möjligt. Använd operatorerna==
och!=
om värdet inte är skiftlägeskänsligt.
Exempel på aktiv lista (sökning): ArcSight
Här är en aktiv lista (uppslagsregel) i ArcSight.
Exempel på aktiv lista (sökning): KQL
Den här regeln förutsätter att bevakningslistan Cyber-Ark undantagskonton finns i Microsoft Sentinel med ett kontofält.
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
Sortera filtren genom att börja med -instruktionen where
som filtrerar ut mest data.
Korrelationsexempel (matchning): ArcSight
Här är ett exempel på en ArcSight-regel som definierar ett villkor mot en uppsättning bashändelser med hjälp av -instruktionen Matching Event
.
Exempel på korrelation (matchning): KQL
let event1 =(
SecurityEvent
| where EventID == 4728
);
let event2 =(
SecurityEvent
| where EventID == 4729
);
event1
| join kind=inner event2
on $left.TargetUserName==$right.TargetUserName
Metodtips:
- Om du vill optimera frågan kontrollerar du att den mindre tabellen finns till vänster i
join
funktionen. - Om den vänstra sidan av tabellen är relativt liten (upp till 100 K poster) lägger du till
hint.strategy=broadcast
för bättre prestanda.
Exempel på korrelation (tidsfönster): ArcSight
Här är ett exempel på en ArcSight-regel som definierar ett villkor mot en uppsättning bashändelser med hjälp av -instruktionen Matching Event
och använder filtervillkoret Wait time
.
Exempel på korrelation (tidsfönster): 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
Sammansättningsexempel: ArcSight
Här är ett exempel på en ArcSight-regel med sammansättningsinställningar: tre matchningar inom 10 minuter.
Sammansättningsexempel: KQL
SecurityEvent
| summarize Count = count() by SubjectUserName,
SubjectDomainName
| where Count >3
Nästa steg
I den här artikeln har du lärt dig hur du mappar migreringsregler från ArcSight till Microsoft Sentinel.