Dela via


Lär dig det avancerade frågespråket för jakt

Avancerad jakt baseras på Kusto-frågespråket. Du kan använda Kusto-operatorer och -instruktioner för att skapa frågor som hittar information i ett specialiserat schema.

Titta på den här korta videon för att lära dig några praktiska grunderna i Kusto-frågespråk.

Om du vill förstå dessa begrepp bättre kör du din första fråga.

Prova din första fråga

I Microsoft Defender-portalen går du till Jakt för att köra din första fråga. Använd följande exempel:

// Finds PowerShell execution events that could involve a download
union DeviceProcessEvents, DeviceNetworkEvents
| where Timestamp > ago(7d)
// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")
// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
 "DownloadFile",
 "DownloadData",
 "DownloadString",
"WebRequest",
"Shellcode",
"http",
"https")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

Kör den här frågan i avancerad jakt

En kort kommentar har lagts till i början av frågan för att beskriva vad den är till för. Den här kommentaren hjälper dig om du senare bestämmer dig för att spara frågan och dela den med andra i din organisation.

// Finds PowerShell execution events that could involve a download

Själva frågan börjar vanligtvis med ett tabellnamn följt av flera element som börjar med ett pipe (|). I det här exemplet börjar vi med att skapa en union med två tabeller och DeviceProcessEventsDeviceNetworkEvents, och lägger till pipade element efter behov.

union DeviceProcessEvents, DeviceNetworkEvents

Ange tidsintervallet

Det första piped-elementet är ett tidsfilter som är begränsat till de föregående sju dagarna. Genom att begränsa tidsintervallet ser du till att frågorna fungerar bra, returnerar hanterbara resultat och inte överskrider tidsgränsen.

| where Timestamp > ago(7d)

Obs!

Kusto-tidsfilter finns i UTC oavsett vilken tidszon du angav i inställningarna.

Kontrollera specifika processer

Tidsintervallet följs omedelbart av en sökning efter processfilnamn som representerar PowerShell-programmet.

// Pivoting on PowerShell processes
| where FileName in~ ("powershell.exe", "powershell_ise.exe")

Sök efter specifika kommandosträngar

Efteråt letar frågan efter strängar i kommandorader som vanligtvis används för att ladda ned filer med Hjälp av PowerShell.

// Suspicious commands
| where ProcessCommandLine has_any("WebClient",
    "DownloadFile",
    "DownloadData",
    "DownloadString",
    "WebRequest",
    "Shellcode",
    "http",
    "https")

Anpassa resultatkolumner och längd

Nu när frågan tydligt identifierar de data som du vill hitta kan du definiera hur resultatet ser ut. project returnerar specifika kolumner och top begränsar antalet resultat. De här operatorerna hjälper till att säkerställa att resultaten är välformaterade och relativt stora och enkla att bearbeta.

| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine,
FileName, ProcessCommandLine, RemoteIP, RemoteUrl, RemotePort, RemoteIPType
| top 100 by Timestamp

Välj Kör fråga för att se resultatet.

Tips

Du kan visa frågeresultat som diagram och snabbt justera filter. Mer information finns i arbeta med frågeresultat

Lär dig vanliga frågeoperatorer

Du har precis kört din första fråga och har en allmän uppfattning om dess komponenter. Det är dags att backa lite och lära sig några grunder. Kusto-frågespråket som används av avancerad jakt stöder en rad operatorer, inklusive följande vanliga.

Operatör Beskrivning och användning
where Filtrera en tabell till den delmängd av rader som uppfyller ett predikat.
summarize Skapa en tabell som aggregerar innehållet i indatatabellen.
join Sammanfoga raderna i två tabeller för att skapa en ny tabell genom att matcha värdena för de angivna kolumnerna från varje tabell. Titta på Ansluta tabeller i KQL för att lära dig hur.
count Returnera antalet poster i indatapostuppsättningen.
top Returnera de första N-posterna sorterade efter de angivna kolumnerna.
limit Återgå till det angivna antalet rader.
project Välj de kolumner som ska inkluderas, byt namn på eller släpp och infoga nya beräknade kolumner.
extend Skapa beräknade kolumner och lägg till dem i resultatuppsättningen.
makeset Returnera en dynamisk matris (JSON) med den uppsättning distinkta värden som Expr tar i gruppen.
find Hitta rader som matchar ett predikat i en uppsättning tabeller.

Om du vill se ett live-exempel på dessa operatorer kör du dem från avsnittet Kom igång i avancerad jakt.

Förstå datatyper

Avancerad jakt stöder Kusto-datatyper, inklusive följande vanliga typer:

Datatyp Beskrivning och frågekonsekvenser
datetime Data och tidsinformation representerar vanligtvis händelsetidsstämplar. Se datetime-format som stöds
string Teckensträng i UTF-8 omges av enkla citattecken (') eller dubbla citattecken ("). Läs mer om strängar
bool Den här datatypen stöder true eller false tillstånd. Se literaler och operatorer som stöds
int 32-bitars heltal
long 64-bitars heltal

Om du vill veta mer om dessa datatyper kan du läsa mer om kusto-skalärdatatyper.

Få hjälp när du skriver frågor

Dra nytta av följande funktioner för att skriva frågor snabbare:

  • Automatiska förslag – när du skriver frågor ger avancerad jakt förslag från IntelliSense.
  • Schematräd – en schemarepresentation som innehåller listan över tabeller och deras kolumner finns bredvid ditt arbetsområde. Hovra över ett objekt om du vill ha mer information. Dubbelklicka på ett objekt för att infoga det i frågeredigeraren.
  • Schemareferens – referens i portalen med tabell- och kolumnbeskrivningar samt händelsetyper som stöds (ActionType värden) och exempelfrågor

Arbeta med flera frågor i redigeraren

Du kan använda frågeredigeraren för att experimentera med flera frågor. Så här använder du flera frågor:

  • Avgränsa varje fråga med en tom rad.

  • Placera markören på valfri del av en fråga för att välja frågan innan du kör den. Detta kör endast den valda frågan. Om du vill köra en annan fråga flyttar du markören därefter och väljer Kör fråga.

    Ett exempel på körning av flera frågor på sidan **Ny fråga** i Microsoft Defender-portalen

    För en effektivare arbetsyta kan du också använda flera flikar på samma jaktsida. Välj Ny fråga för att öppna en flik för den nya frågan.

    Öppna en ny flik genom att välja Skapa ny i avancerad jakt i Microsoft Defender-portalen

    Du kan sedan köra olika frågor utan att behöva öppna en ny webbläsarflik.

    Köra olika frågor utan att någonsin lämna sidan för avancerad jakt i Microsoft Defender-portalen

Obs!

Om du använder flera webbläsarflikar med avancerad jakt kan du förlora dina frågor som inte har sparats. Om du vill förhindra detta använder du tabbfunktionen i avancerad jakt i stället för separata webbläsarflikar.

Använda exempelfrågor

Avsnittet Kom igång innehåller några enkla frågor med vanliga operatorer. Prova att köra dessa frågor och göra små ändringar i dem.

Avsnittet **Komma igång** på sidan **Avancerad jakt** i Microsoft Defender-portalen

Obs!

Förutom de grundläggande frågeexemplen kan du även komma åt delade frågor för specifika hotjaktscenarier. Utforska delade frågor till vänster på sidan eller GitHub-frågelagringsplatsen.

Dokumentation om åtkomst till frågespråk

Mer information om Kusto-frågespråk och operatorer som stöds finns i dokumentationen för Kusto-frågespråk.

Obs!

Vissa tabeller i den här artikeln kanske inte är tillgängliga i Microsoft Defender för Endpoint. Aktivera Microsoft Defender XDR för att söka efter hot med hjälp av fler datakällor. Du kan flytta dina avancerade jaktarbetsflöden från Microsoft Defender för Endpoint till Microsoft Defender XDR genom att följa stegen i Migrera avancerade jaktfrågor från Microsoft Defender för Endpoint.

Tips

Vill du veta mer? Interagera med Microsofts säkerhetscommunity i vår Tech Community: Microsoft Defender XDR Tech Community.