Window Correlator
Window correlator detekuje příchozí události na základě sekce predicate
a ukládá je do datových struktur na základě sekce evaluate
. Pokud je potom pravidlo test
v sekci analyze
shodné, je zavolána sekce trigger
.
Následující ukázka korelace detekuje více než nebo rovno 5 chybových připojení mezi dvěma IP adresami:
Ukázka
---
define:
name: "Network T1046 Network Service Discovery"
description: "Detects more than or equal to 5 error connections between two IP addresses"
type: correlator/window
logsource:
type: "Network"
mitre:
technique: "T1046"
tactic: "TA0007"
predicate:
!OR
- !EQ
- !ITEM EVENT log.level
- "error"
- !EQ
- !ITEM EVENT log.level
- "critical"
- !EQ
- !ITEM EVENT log.level
- "emergency"
evaluate:
dimension: [source.ip, destination.ip]
by: "@timestamp"
resolution: 60
analyze:
window: hopping
aggregate: sum
span: 10
test:
!GE
- !ARG
- 5
trigger:
- event:
threat.indicator.confidence: "Medium"
threat.indicator.ip: !ITEM EVENT source.ip
threat.indicator.port: !ITEM EVENT source.port
threat.indicator.type: "ipv4-addr"
Sekce define
Tato sekce obsahuje běžnou definici a metadata.
Položka name
Kratší název této deklarace srozumitelný lidem.
Položka type
Typ této deklarace, musí být correlator/window
.
Položka description
(volitelné)
Delší, případně víceliniový, popis deklarace srozumitelný lidem.
Sekce logsource
Specifikuje typy event lanes, z kterých by měly být čteny příchozí události.
Sekce predicate
Sekce predicate
filtruje příchozí události pomocí výrazu.
Pokud výraz vrátí True
, událost přejde do sekce evaluate
.
Pokud výraz vrátí False
, událost je přeskočena.
Ostatní vrácené hodnoty jsou nedefinované.
Vložení vnořených filtrů predikátů
Filtry predikátů jsou výrazy umístěné ve vyhrazeném souboru, které mohou být vloženy do mnoha různých predikátů jako jejich části.
Pokud chcete vložit externí filtr predikátů, umístěný buď v knihovně,
použijte klíčové slovo !INCLUDE
:
!INCLUDE /predicate_filter.yaml
kde /predicate_filter
je cesta k souboru v knihovně.
Obsah souboru predicate_filter.yaml
je výraz, který má být vložen, například:
---
!EQ
- !ITEM EVENT category
- "MyEventCategory"
Sekce evaluate
Sekce evaluate
specifikuje primární klíč, rozlišení a další atributy, které se aplikují na příchozí událost.
Funkce evaluate
je přidat událost do dvourozměrné struktury, definované časem a primárním klíčem.
Položka dimension
Specifikuje jednoduchý nebo složený primární klíč (nebo dimenzi) pro událost. Dimenze je definována názvy polí vstupní události.
Příklad jednoduchého primárního klíče:
evaluate:
dimension: [source.ip]
Note
Tenant je automaticky přidán do seznamu dimenzí.
Příklad složeného primárního klíče:
evaluate:
dimension: [source.ip, destination.ip]
Pokud je přesně jedna dimenze jako DestinationHostname
v původní události
a korelace by měla proběhnout pro každou hodnotu dimenze, dimenze by měla být uzavřena v [
]
:
evaluate:
dimension: [source.ip, destination.ip, [DestinationHostname] ]
Položka by
Specifikuje název pole vstupní události, které obsahuje informaci o datu/čase, která bude použita pro vyhodnocení. Výchozí hodnota je: @timestamp
.
Položka event_count
(volitelné)
Název atributu, který specifikuje počet událostí k korelaci v jedné události, čímž ovlivňuje "součet událostí" v analýze. Výchozí hodnota je 1.
Položka resolution
Specifikuje rozlišení časové agregace korelátoru. Jednotka je sekundy.
evaluate:
resolution: 3600 # 1 hodina
Výchozí hodnota: 3600
Položka saturation
(volitelné)
Specifikuje délku trvání intervalu silent
po vyvolání trigger.
Je specifická pro dimenzi.
Jednotka je resolution.
Výchozí hodnota: 3
Sekce analyze
(volitelné)
Sekce analyze
obsahuje konfiguraci časového okna, které je aplikováno na vstupní události.
Výsledek analýzy časového okna podléhá konfigurovatelnému testu. Když je test úspěšný (tedy vrátí True
), je spuštěn trigger
.
Poznámka: Tato sekce je volitelná, výchozí chování je spustit trigger
pokud je alespoň jedna událost v tumbling s span rovno 2.
Položka when
(volitelné)
Specifikuje, kdy by měla proběhnout analýza událostí v oknech.
Možnosti:
event
(výchozí): Analýza probíhá po příchodu události a jejím vyhodnocení, obvykle užitečné pro korelaci shody a aritmetikuperiodic/...
: Analýza probíhá po zadaném intervalu v sekundách, napříkladperiodic/10
(každých 10 sekund),periodic/1h
(každých 3600 sekund / jednu hodinu) atd. Obvykle užitečné pro vyhodnocení UEBA.
Periodická analýza vyžaduje správné nastavení rozlišení a rozsahu časového okna, aby analýza neprobíhala příliš často.
Položka window
(volitelné)
Specifikuje, jaký druh časového okna použít.
Možnosti:
tumbling
: Pevnýspan
(délka trvání), nepřekrývající se, souvislé časové intervaly bez mezerhopping
: Pevnýspan
(délka trvání), překrývající se souvislé časové intervaly
Výchozí hodnota: hopping
Položka span
Specifikuje šířku okna.
Jednotka je resolution
.
Položka aggregate
(volitelné)
Specifikuje jaké agregační funkce budou aplikovány na události v okně.
Funkce agregace
sum
: Součetmedian
: Mediánaverage
: Průměr (vážený)mean
: Aritmetický průměrstd
: Směrodatná odchylkavar
: Rozptylmean spike
: Pro detekci spike. Základní hodnota je průměr, vrací procento.median spike
: Pro detekci spike. Základní hodnota je medián, vrací procento.unique count
: Pro jedinečný počet atributů události: musí být poskytnutadimension
.
Výchozí hodnota: sum
Příklad jedinečného počtu:
analyze:
window: hopping
aggregate: unique count
dimension: client.ip
span: 6
test:
!GE
- !ARG
- 5
Spustí trigger, když je pozorováno 5 a více jedinečných client.ip
.
Položka test
(volitelné)
Sekce test
je výraz aplikovaný na výsledek výpočtu aggregate
.
Pokud výraz vrátí True
, trigger
bude spuštěn, pokud dimenze není již saturována.
Pokud výraz vrátí False
, žádná akce není přijata.
Ostatní vrácené hodnoty jsou nedefinované.
Sekce trigger
Sekce trigger
specifikuje druhy akcí, které mají být provedeny, když test
v sekci analyze
spustí trigger
.
Podrobnosti viz kapitola correlator triggers.