Składnia zapytań

XQL, język wyszukiwania na stronie Logs, w kolejce alertów i w regułach zapytań.

Wyrażenia

FormaZnaczenie
słowoWyszukiwanie pełnotekstowe. Pojedyncze słowa pasują do całych słów w dowolnym miejscu dokumentu.
"fraza w cudzysłowie"Dokładna fraza.
pole:wartośćRówność, bez rozróżniania wielkości liter. Wartości ze spacjami ujmij w cudzysłów.
pole:WKS-04*Symbole wieloznaczne: * zastępuje dowolny ciąg znaków, ? jeden znak.
pole>10 pole:>=200Porównania liczbowe: >, >=, <, <=.
pole in (a, b) lub pole:(a or b)Dowolna wartość z listy.
pole:/wyrażenie/Wyrażenie regularne.
pole:*Pole istnieje.
not pole:wartość, -pole:wartość, pole!=wartośćNegacja.
a and b, a or b, (a or b) and cLogika, wielkość liter bez znaczenia. Sąsiednie wyrażenia łączy and.

Pola

Nazwy pól to kanoniczne nazwy z kropkami ze słownika pól: host.name, user.name, process.command_line, source.ip. Pasek zapytania podpowiada je po jednym członie i pokazuje typ oraz opis każdego pola. Po znaku ; inicjały członów rozwijają się do pełnej nazwy: ;pe daje process.executable.

Pole, które źródło wysłało pod własną nazwą, możesz też wyszukiwać po tej nazwie.

Czas

Zakres czasu dla każdego zapytania ustawia selektor zakresu. Przeciągnięcie po histogramie zawęża go.

Potoki

Na stronie Logs zapytanie może mieć kolejne etapy po znaku |. Każdy działa na wyniku poprzedniego:

EtapDziałanie
stats count, dc(user.name) by host.nameAgregacje: count, dc, sum, avg, min, max.
top 10 user.name, rare process.executableNajczęstsze i najrzadsze wartości.
where count > 50Filtrowanie zagregowanego wyniku.
fields host.name, user.name, fields - messageWybór lub usunięcie kolumn.
dedup host.name, rename count as hitsJeden wiersz na klucz; zmiana nazwy kolumny.
sort count desc, head 50, tail 20Kształtowanie wyniku.
seq within 10m by user.name then event.code:4624Najpierw to, potem tamto, dla tego samego klucza.

Przykłady

text
event.severity:high host.name:NL-WS-0* "failed logon"
event.module:sysmon event.code:1 process.parent.executable:*\cmd.exe
event.code:4625 | stats count by user.name | where count > 20
event.type:logon_failed user.name:j.kowalski

W regułach detekcji

Reguły zapytań korzystają z tego samego języka, ale bez potoków. Do zliczania użyj reguły progowej. Reguły sekwencji i korelacji dodają etapy i okna czasowe; zobacz Pisanie reguł.