Ändra innehåll så att det använder ASIM (Advanced Security Information Model) (offentlig förhandsversion)
Normaliserat säkerhetsinnehåll i Microsoft Sentinel innehåller analysregler, jaktfrågor och arbetsböcker som fungerar med enhetlig normaliseringsparsers.
Du kan hitta normaliserat, out-of-the-box-innehåll i Microsoft Sentinel-gallerier och -lösningar, skapa ditt eget normaliserade innehåll eller ändra befintligt anpassat innehåll för att använda normaliserade data.
Den här artikeln beskriver hur du konverterar befintliga Microsoft Sentinel-analysregler för att använda normaliserade data med ASIM (Advanced Security Information Model).
Information om hur normaliserat innehåll passar in i ASIM-arkitekturen finns i ASIM-arkitekturdiagrammet.
Dricks
Titta också på webbseminariet djupdykning på Microsoft Sentinel Normalisera parsers och normaliserat innehåll eller granska bilderna. Mer information finns under Nästa steg.
Viktigt!
ASIM är för närvarande i förhandsversion. Tilläggsvillkoren för Azure Preview innehåller ytterligare juridiska villkor som gäller för Azure-funktioner som är i betaversion, förhandsversion eller på annat sätt ännu inte har släppts i allmän tillgänglighet.
Ändra anpassat innehåll så att det använder normalisering
Så här gör du så att ditt anpassade Microsoft Sentinel-innehåll kan använda normalisering:
Ändra dina frågor så att de använder enande parsers som är relevanta för frågan.
Ändra fältnamn i frågan så att de normaliserade schemafältnamnen används.
När det är tillämpligt ändrar du villkoren för att använda normaliserade värden för fälten i din fråga.
Exempelnormalisering för analysregler
Tänk till exempel på den sällsynta klienten som observerats med hög omvänd DNS-sökningsregel för DNS-analys, som fungerar på DNS-händelser som skickas av Infoblox DNS-servrar:
let threshold = 200;
InfobloxNIOS
| where ProcessName =~ "named" and Log_Type =~ "client"
| where isnotempty(ResponseCode)
| where ResponseCode =~ "NXDOMAIN"
| summarize count() by Client_IP, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (InfobloxNIOS
| where ProcessName =~ "named" and Log_Type =~ "client"
| where isnotempty(ResponseCode)
| where ResponseCode =~ "NXDOMAIN"
) on Client_IP
| extend timestamp = TimeGenerated, IPCustomEntity = Client_IP
Följande kod är den källagnostiska versionen, som använder normalisering för att tillhandahålla samma identifiering för alla källor som tillhandahåller DNS-frågehändelser. I följande exempel används inbyggda ASIM-parsare:
_Im_Dns(responsecodename='NXDOMAIN')
| summarize count() by SrcIpAddr, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (imDns(responsecodename='NXDOMAIN')) on SrcIpAddr
| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr
Om du vill använda arbetsytedistribuerade ASIM-parsers ersätter du den första raden med följande kod:
imDns(responsecodename='NXDOMAIN')
Skillnader mellan inbyggda och arbetsytedistribuerade parsers
De två alternativen i exemplet ovan är funktionellt identiska. Den normaliserade, källagnostiska versionen har följande skillnader:
De
_Im_Dns
ellerimDns
normaliserade parsarna används i stället för Infoblox Parser.De normaliserade parsarna hämtar endast DNS-frågehändelser, så det finns inget behov av att kontrollera händelsetypen, vilket utförs av
where ProcessName =~ "named" and Log_Type =~ "client"
i Infoblox-versionen.Fältet
SrcIpAddr
används i stället förClient_IP
.Parserparameterfiltrering används för ResponseCodeName, vilket eliminerar behovet av explicita
where
satser.
Kommentar
Förutom att stödja alla normaliserade DNS-källor är den normaliserade versionen kortare och enklare att förstå.
Om schemat eller parsarna inte stöder filtreringsparametrar är ändringarna liknande, förutom att filtreringsvillkoren sparas från den ursprungliga frågan. Till exempel:
let threshold = 200;
imDns
| where isnotempty(ResponseCodeName)
| where ResponseCodeName =~ "NXDOMAIN"
| summarize count() by SrcIpAddr, bin(TimeGenerated,15m)
| where count_ > threshold
| join kind=inner (imDns
| where isnotempty(ResponseCodeName)
| where ResponseCodeName =~ "NXDOMAIN"
) on SrcIpAddr
| extend timestamp = TimeGenerated, IPCustomEntity = SrcIpAddr
Mer information om följande objekt som används i föregående exempel finns i Kusto-dokumentationen:
- let-instruktion
- där operatorn
- utöka operatorn
- kopplingsoperator
- summarize-operator
- funktionen isnotempty()
- sammansättningsfunktionen count()
Mer information om KQL finns i översikten över Kusto-frågespråk (KQL).
Andra resurser:
Nästa steg
I den här artikeln beskrivs ASIM-innehållet (Advanced Security Information Model).
Mer information finns i:
- Titta på webbseminariet för djupdykning i Microsoft Sentinel, normalisera parsare och normaliserat innehåll eller granska bilderna
- Översikt över Advanced Security Information Model (ASIM)
- Asim-parsers (Advanced Security Information Model)
- ASIM-scheman (Advanced Security Information Model)
- Asim-innehåll (Advanced Security Information Model)