Přeskočit obsah

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 aritmetiku
  • periodic/...: Analýza probíhá po zadaném intervalu v sekundách, například periodic/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 mezer
  • hopping: 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

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.