Magazín KPI
Časopis Katedry počítačov a informatiky FEI TUKE
kpi

SIEM systém HELK

SIEM (Security information and event management) systémy slúžia na zbieranie bezpečnostných dát zo sieťových zariadení, serverov, osobných počítačov a iných zariadení. Vykonávajú ich normalizáciu, agregáciu a analýzy s cieľom objavovať trendy a detegovať ohrozenia. Týmto spôsobom je možné včas odhaliť ohrozenie bezpečnosti a zmierniť následky prienikov. Tento článok sa venuje popisu, inštalácii a ukážke niektorých funkcií systému HELK (The Hunting ELK). Jedná sa o open source SIEM systém, ktorý ako základ využíva ELK stack, ale navyše umožňuje pokročilú analýzu dát.

Predstavenie systému HELK

The Hunting ELK je SIEM systém vytvorený Robertom Rodriguezom, ktorý sa skladá z viacerých komponentov, kde ako základ slúži Elastic (ELK) stack. Tento systém bol vytvorený pre výskumné účely, ale samozrejme je možné ho využívať aj v reálnej prevádzke. Projekt bol založený v roku 2017 a je stále v aktívnom vývoji, preto ho nie je možné považovať za úplne stabilný.

Medzi hlavné výhody tohto systému patria:

  • SQL rozhranie pre spracovanie a obohatenie vstupných prúdov údajov,
  • štrukturovaný jazyk podobný SQL umožňujúci analýzu dát,
  • možnosť vykonávania analýz grafov,
  • štrukturovaná dokumentácia detekcie hrozieb,
  • strojové učenie využitím Apache Spark modulov.

Popis komponentov

Komponenty systému HELK (zdroj)
Komponenty systému HELK (zdroj)
  • Beats — jednoduché moduly nainštalované na sledovaných zariadeniach, ktoré sa starajú o odosielanie bezpečnostných dát do HELK-u.
  • Kafka — technológia pre distribúciu (prúdov) dát. Umožňuje publikovať a odoberať dáta v rôznych témach (topic).
  • KSQL — pomocou SQL umožňuje spracovávať prúdy dát zo systému kafka. Toto umožňuje obohatenie dát využitím napr. SQL JOIN ešte pred uložením do dátového úložiska, namiesto vykonávania JOIN-ov v elasticsearch nad tisícami záznamov pri analýzach.
  • LogStash — sa stará o agregáciu, normalizáciu dát. Cez tento komponent prúdia dáta z kafka do elasticsearch.
  • ElasticSearch — open source nástroj pre full-textové vyhľadavánie a ukladanie dát.
  • Kibana — sa stará o vizualizáciu uložených dát.
  • ElastAlert — framework pre vykonanie upozornenia na prednastavené udalosti. Možnosť odsledovať frekvenciu, zvýšenie/zníženie výskytu udalosti, upozornenie na výskyt konkrétnych parametrov udalosti/ich zmenu a pod.
  • ES-Hadoop — umožňuje obojsmerné prepojenie medzi elasticsearch a Spark.
  • Spark — systém pre distribuované výpočty, pre ktoré poskytuje vysokoúrovňové programovacie rozhranie.
  • GraphFrames — nástroj pre vykonanie grafových algoritmov a dotazov nad grafmi.
  • Jupyter — umožňuje vytvárať dokumenty so živým kódom a vygenerovanými výstupmi. Veľmi užitočný nástroj na dokumentáciu a prezentáciu.

Inštalácia

Preferovaným operačným systémom je Ubuntu Linux vo verzii 18.04. Požiadavky a inštalácia sú detailne popísané vo wiki sekcii projektu. Keďže pre jednotlivé komponenty sú využívané docker kontajnery, systém docker bude tiež nainštalovaný v rámci inštalácie HELK-u. Pre plnú inštaláciu (KAFKA + KSQL + ELK + NGNIX + SPARK + JUPYTER + ELASTALERT) je potrebných minimálne 8GB RAM a 20GB diskového priestoru. Inštalačný program skontroluje, či stroj spĺňa minimálne požiadavky.

Najprv je potrebné stiahnúť HELK projekt z githubu. Ak máme nainštalovný git, je možné to vykonať týmto príkazom:

git clone https://github.com/Cyb3rWard0g/HELK.git

Obsah repozitára sa stiahne do priečinka HELK, do ktorého vstúpime a spustíme inštalačný skript.

cd HELK/docker
sudo ./helk_install.sh

Ďalej nasledujeme inštrukcie inštalačného programu.

Vyberieme si variantu inštalácie. Pre potreby tohto článku je postačujúca varianta 1.

*****************************************************
*      HELK - Docker Compose Build Choices          *
*****************************************************
 
1. KAFKA + KSQL + ELK + NGNIX
2. KAFKA + KSQL + ELK + NGNIX + ELASTALERT
3. KAFKA + KSQL + ELK + NGNIX + SPARK + JUPYTER
4. KAFKA + KSQL + ELK + NGNIX + SPARK + JUPYTER + ELASTALERT
 
Enter build choice [ 1 - 4]: 4

Zvolíme prístupové heslo do systému Kibana:

Set HELK Kibana UI Password: hunting

Inštalácia trvá dlhšiu dobu a inštalačný program vypisuje zámerne minimálne množstvo informácii. Pre detailnejší výpis môžeme počas inštalácie v inom termináli spustiť príkaz:

tail -f /var/log/helk-install.log 

Nakoniec nám inštalačný program vypíše prístupové údaje k jednotlivým komponentom. Napríklad:

HELK KIBANA URL: https://172.17.1.243
HELK KIBANA USER: helk
HELK KIBANA PASSWORD: hunting
HELK SPARK MASTER UI: https://172.17.1.243:8080
HELK JUPYTER SERVER URL: https://172.17.1.243/jupyter
HELK JUPYTER CURRENT TOKEN: 8e755f66dc7a105805006de2532cbbccc144fdb6b5624916
HELK ZOOKEEPER: 172.17.1.243:2181
HELK KSQL SERVER: 172.17.1.243:8088

Po úspešnej inštalácii si môžeme otvoriť Kibana URL pre vizualizáciu dát uložených v elasticsearch. Globálny informačný panel zobrazíme kliknutím na Dashboards v ľavom menu a následne na Global Dashboard (HELK).

Informačný panel Global Dashboard (HELK)
Informačný panel Global Dashboard (HELK)

Samozrejme v tomto momente nie sú dostupné žiadne dáta na vizualizáciu. Je potrebné nastaviť beats modul pre odosielanie dát do HELK-u. Pre odosielanie dát zo systému Windows napr. winlogbeat. Alebo môžeme použiť predpripravené dáta so zaznamenanými pokusmi o ohrozenie bezpečnosti. V tomto článku bude popísaná druhá možnosť.

Obohatenie vstupných dát spracovaním vstupného prúdu údajov

Autor projektu takúto možnosť opisuje v osobitnej sérii článkov a pripravil skript pre systém KSQL, ktorý k Sysmon udalosti 3 (vytvorenie sieťového pripojenia) priradí zodpovedný proces, sledovaním Sysmon udalosti 1 (vytvorenie procesu). Tento predpripravený skript je možné spustiť pomocou docker kontajnera helk-ksql-cli, ktorý obsahuje CLI pre prácu s KSQL. Najprv skopírujeme predpripravený skript do /tmp priečinka kontajnera:

cd HELK/docker
sudo docker cp helk-ksql/sysmon-join.commands helk-ksql-cli:/tmp/

Potom spustíme program ksql v spomínanom docker kontajneri:

sudo docker exec -ti helk-ksql-cli ksql http://helk-ksql-server:8088

A spustíme skript z priečinka /tmp:

ksql> run script '/tmp/sysmon-join.commands';
ksql> exit

Týmto bolo nastavené obohatenie vstupných prúdov dát pomocou KSQL.

Využitie dát z projektu Mordor

Projekt Mordor poskytuje predpripravené datasety vo forme JSON súborov, obsahujúce udalosti vygenerované simulovanými útokmi. Dáta sú kategorizované podľa platformy, typu útočníka, taktiky a techniky útoku definovanými rámcom Mitre ATT&CK. Projekt obsahuje dáta z dvoch prostredí. Nami importované dáta pochádzaju z prostredia „The Shire“.

Prostredie „The Shire“. Zdroj: mordordatasets.com
Prostredie „The Shire“. Zdroj: mordordatasets.com

Získanie Mordor datasetov

Všetký dáta je možné získať klonovaním Mordor github projektu:

git clone https://github.com/Cyb3rWard0g/mordor.git

Konzumácia dát

Mordor datasety potrebujeme odoslať do komponentu kafka Na to využijeme program kafkacat, ktorý dokáže dátový súbor publikovať. V parametri príkazu je uvedená IP adresa HELK systému.

cd mordor/datasets/small/windows/credential_access/
tar -xzvf empire_dcsync.tar.gz
kafkacat -b 172.17.1.243:9092 -t winlogbeat -P -l empire_dcsync_2019-03-01174830.json

V prípade neprítomnosti programu kafkacat v systéme je možné ho doinštalovať:

sudo apt-get install kafkacat

Vykonáme import ďalšieho datasetu, potrebného pre demonštráciu obohatenia vstupných dát.

tar -xzvf empire_rubeus_asktgt_ptt.tar.gz
kafkacat -b 172.17.1.243:9092 -t winlogbeat -P -l empire_rubeus_asktgt_ptt_2019-03-19145126.json

Vizualizácia dát v Kibana

Importované dáta je možné zobraziť kliknutím na Discover v ľavom menu. Následne je nutné nastaviť zobrazenie dát v dostatočnom časovom intervale pre zobrazenie dát z marca 2019, pretože importované dáta pochádzajú z tohto obdobia.

Zobrazenie dát z importovaného Mordor datasetu v Kibana
Zobrazenie dát z importovaného Mordor datasetu v Kibana

Informácie je možné získať už aj z globálneho informačného panela.

Globálny informačný panel po importe dát
Globálny informačný panel po importe dát

Zobrazenie obohatených dát

Na podstránke Discover, po zvolení index patternu sysmon-join-* v ľavej časti, je možné vidieť spojenie vytvoreného sieťového pripojenia s procesom Rubeus.net4.5.exe.

Informačný panel Mitre ATT&CK

Kibana obsahuje aj prednastavený informačný panel pre útoky kategorizované podľa rámca MITRE ATT&CK. Zobrazíme ho kliknutím na Dashboards v ľavom menu a následne kliknutím na ALL-MITRE-ATTACK (HELK). Na tomto informačnom paneli môžeme vidieť prehľad útokov podľa rôznych parametrov. Kliknutím na ktorúkoľvek kategóriu sa vieme vnoriť (drill down) do tejto kategórie.

Informačný panel Mitre attack
Informačný panel Mitre attack

Odinštalácia

Ak už systém HELK necheme ďalej používať, je možné ho odinštalovať predpripraveným skriptom.

cd HELK/docker
sudo ./helk_remove_containers.sh

Záver

Zaznamenávanie udalostí a centralizácia kolekcie rôznych zdrojov dát a ich následná analýza SIEM systémami sa dnes stáva štandardom. Veľké spoločnosti analyzujú záznamy zo svojich systémov a snažia sa takto odhaliť prelomenie bezpečnosti v reálnom čase a minimalizáciu reakčnej doby.

Článok predstavil open source SIEM systém HELK a jeho komponenty, jeho inštaláciu, nastavenie obohatenia vstupného prúdu dát pred uložením do úložiska a import dát z projektu Mordor. Tento systém sa skladá z veľmi rozsiahlych komponentov a samozrejme nie je možné ich detailnejšie popísať v rámci jedného článku.

Systém HELK pokladám za jedno z najlepších open-source SIEM riešení, vzhľadom na jeho možnosti, jednoduchosť inštalácie, ale aj snahu autora pripraviť dokumentáciu, nástroje a popisy pre prácu s týmto systémom.

V ďalšom článku si môžete prečítať o praktickom využití systému HELK na detekciu ransomvéru.

Linkovať