Vsakodnevno vse več ljudi uporablja internet. Vsi ti ljudje vedo, kako uporabljati internet, le redki pa razmišljajo tudi o varnosti. Internet se ne veliko razlikuje od resničnega življenja. Ima varna in nevarna mesta, obstajajo pa tudi kriminalci, ki napadajo uporabnike interneta. Edina razlika med napadom v resničnem življenju in kibernetskim napadom je, da v slednjem morda niti ne vemo, da smo napadeni.
Naloga je osredotočena na enega izmed napadov, v katerem nasprotnik dobi dostop do uporabnikove naprave in jo običajno uporablja za napade zavrnitve storitve (Denial of Service). V raziskavi se posebej osredotočamo na povezave, ustvarjene od odjemalca do napadalčevega strežnika. Ustvariti želimo napravo in razviti razvrščevalni model, ki temelji na algoritmih strojnega učenja, ki je sposoben zaznati omenjene zlonamerne povezave.
Za raziskavo smo najprej ustvarili nabor legitimnih in zlonamernih povezav, zajetih na vratih 443. Za vrata 443 smo se odločili, ker so ta zadnje čase zelo pogosto uporabljena za omenjene zlonamerne povezave, saj jih normalni uporabniki uporabljajo za brskanje po spletu in zato niso pogosto blokirana na požarnih pregradah in tako napadalcem omogočajo prost izhod v internet. Podatki so bili zajeti z napravo Zeek, ki omogoča zajem omrežnih podatkov iz omrežnega prometa v realnem času. Ustvarjen nabor podatkov je bil v začetku neuravnotežen, naša prva naloga pa je bila, da smo ga uravnotežili z ustvarjanjem sintetičnih vzorcev podatkov. Težava z učenjem algoritmov na neuravnoteženih naborih podatkov je ta, da lahko algoritem vse vzorce podatkov klasificira v en razred, kar ni pravilno, ampak zaradi neuravnoteženosti podatkov napaka razvrščanja ni visoka.
V naslednjem koraku smo ovrednotili algoritme strojnega učenja na podlagi nabora podatkov, da smo določili optimalen algoritem za naš razvrščevalni model. Algoritmi so bili najprej ovrednoteni s pomočjo programa Weka in kasneje v programskem jeziku Pythonu. Za program Weka smo se odločili, ker ima vgrajeno večje število algoritmov za razvrščanje in tako omogoča hitero testiranje večjega števila algoritmov strojnega učenja. Ko smo ugotovili kateri izmed algoritmov strojnega učenja prinašajo najboljše rezultate smo te implementirali v programskem jeziku Python. Za programski jezik Python smo se odločili zaradi visoke razširjenosti med raziskovalci v krogih podatkovnih znanosti. V programskem jeziku Python smo implementirali 4 algoritme strojnega učenja: naključni gozd, odločitveno drevo, naivni bayes in večslojni perceptron. Za implementacijo algoritmov smo uporabili scikit-learn knjižnico.
V programskem jeziku Python smo algoritme testirali z metodo, ki podatke razdeli na 10 delov in nato 1 del podatkov uporabi za testiranje algoritma, 9 delov podatkov pa za učenje, ter nato menja dele podatkov po vrstnem redu. Po končanem eksperimentu so rezultati povprečeni. Opisana metoda nam omogoča dobro predikcijo obnašanja algoritma v realnem svetu na neznanih podatkih.
Ocenjevanje algoritmov nam je pokazalo, da je optimalen algoritem za uporabo odločitveno drevo, saj je doseglo najvišjo oceno F1. Algoritem je sposoben pravilno razvrstiti več kot 99% vzorcev podatkov. Z algoritmom odločitvenega drevesa je bil ustvarjen model razvrščanja in postavljen nad napravo Zeek, ki je naprava za nadzor omrežnega prometa. Naša naprava je bila implementirana v realnem okolju. Rezultati testiranja v realnem okolju kažejo, da se zaradi velikega števila povezav pojavi tudi veliko napačnih razvrščanj, ki lahko predstavljajo težave.
Poleg generalnih rezultatov algoritmov nas je zanimalo še katere vzorce algoritma odločitveno drevo in nakjlučni gozd napačno razvrstita. Problema smo rešili grafično, tako da smo narisali graf napačno razporejenih vzorcev. Ugotovili smo, da so vzorci napačno razporejeni tam, kjer se vzorci enega razreda prekrivajo z vzorci drugega razreda. Tak rezultat lahko rečemo, da je bil pričakovan.
Ugotavljamo, da ustvarjeni model, ki za razvršanje uporablja naučen algoritem odločitveno drevo, deluje dobro, z visoko natančnostjo razvrščanja, vendar so za uporabo v resničnem življenju potrebene dodatne informacije, na primer informacije o grožnjah (threat intelligence), za filtriranje rezultatov razvrščanja.
|