Kiberleti

Jedro kiberletov je JavaScript Animator.js, ki predstavlja sceno, v katero vnesemo različne komponente, kot so delovne postaje (uporabniški računalniki), strežniki, napadalci ipd. Te komponente so dejansko instance razreda Component.
Iz tega razreda sta izpeljana razreda Person in Asset. Prvi predstavlja osebe, ki v simulaciji nastopajo, drugi pa opremo (računalnike, tiskalnike, strežnike itd.). Diagram razredov ponazoruje spodnja slika.

razredni diagram

Vsaki komponenti je prirejena ustrezna slika (ikona) in oznaka (opis). Komponente imajo na sceni svoj položaj, ki ga lahko med potekom simulacije tudi spreminjamo. Komponente imajo tudi attribut "isDraggable". Če tega nastavimo na true, lahko tako komponento izberemo s klikom miške in jo tudi premikamo po sceni (morda zaradi boljšega pregleda).
Položaj ikone in oznake vsake komponente lahko prirejamo s parametri sghapeDx, shapeDy, nameDx, nameDy, relativno na virtualni položaj komponente  na sceni) (kakor ga uporabljamo pri naslavljanju komponente)
Vsaki komponenti izrazreda Asset (torej oprema)  pripada še nekaj "računalniških" lastnosti:  IP, isInfected, antiVirus, data. Slednji parameter se običajno uporablja pri prenašanju sporočil med komponentami.

V simulacijah uporabljamo tudi druge razrede, predvsem sporočila ( instance razreda Message) in dogodke (instance razreda Event).
 
Sporočila so instance razreda Message. in pomnjena v polju messages. Nastajajo med simulacijo in zaradi vidnosti potekajo  (se širijo od izvorane k cilni komponenti) nekaj časovnih korakov (odvisno od nastavljene hitrosti širjenja, kar določimo s simulacijskim parametrom messageSpeed).

Tudi po dosegu ciljne komponente (ta trenutek pomni obvestilo v spremenljivki timeDelivered)  si morda želimo, da še nekaj časa vidimo sled sporočila (od izvorne do ciljne komponente). To nastavljamo s spremenljivko  messageTrackDuration.  To spremenljivko lahko nastavljamo tudi vsakemu obvestilu posebej.

Medtem ko je razred Message skupen vsem simulacijam, se razred Event od simulacije do simulacije razlikuje in je torej definiran v vsaki simulaciji posebej.

Instance iz posameznih razredov pomnimo v poljih persons, assets, events, messages glede na tip razreda.

Simulacija teče v diskretnih korakih. in pri tem povečuje števec tStep.
V nekaterih simulacijah si dogodki (events) sledijo

Simulacija lahko poteka po enem od 6 možnih scenarijev (za več je potrtebno popraviti Animator.js), ki jih določimo s parametrom selectedAnimation. Običajno nam en scenarij zadošča (selectedAniomation = 1).

Pred začetkom simulacije (če ni še izbran noben scenarij) se stalno izvaja (in s tem osvežuje sceno) funkcija

updateBeforeAnimations(); // scene before any selected animation

V vsakem koraku se v naslednjem zaporedju izvedejo naslednje funkcije:
  1. updateForAllAnimations1(); //  za vse možne scenarije
  2. updateAnimation1() // za izbrani scenarij 1 (podobno je  updateAnimation2() na scenarij 2 itd)
  3. updateForAllAnimations2(); // scene for all selected animation


Simulacije kažejo vnaprej konfigurirano mrežo strežnikov, delovnih postaj (uporabniških računalnikov, notesnikov ipd) in napadalca.

Delovne postaje med seboj komunicirajo s sporočili.

Posebnost strežnikov je, da na vsako prejeto sporočilo (zahtevek) pošljejo odgovor (izvedejo storitev, kar ponazorijo s svojim sporočilom) .


Napadalci so tudi računalniki, ki pa le pošiljajo sporočila, ne morejo pa jih prejemati (so omrežju neznani).

Računalniki se lahko okužijo, lahko jih tudi razkužimo in lahko jim dodajamo protivirusno zaščito. Računalnike lahko tudi vklapljamo (privzeto) ali izklapljamo.

Dodajamo lahko nove strežnike, delovne postaje in tudi napadalce. Mrežo lahko (tudi med potekom simulacije) poljubno širimo.

V animacijah je sled sporočil pobarvana modro (privzeto), po koncu sporočila pa ostane še nekaj časa vidna svetlomodro. Zaradi večje nazornosti lahko sledi pobarvamo tudi drugače.

Simulacija Varnost pisarne

Ta simulacija sicer temelji na prej navedenih razredih oziroma objektih, dodane pa ima še dogodke, ki naj bi predstavljali varnostne incidente.Posamezen dogodek je primerek iz razreda Event. Ta ima kot lastnosti tip dogodka, njegov opis in tarčo (to je lahko žrtev napada).
Dogodke hranimo kot ločeno JSON datoteko z imenom scenario.json, ki jo preberemo v polje events. Zamenjava te JSON datoteke v bistvu smremeni scenarij simulacije.
Med potekom simulacije "korakamo" od dogodka do dogodka.
Vsak dogodek obdelujemo v funkciji precessEvent, ki dejansko predstavlja odločitveno drevo. Prva delitev v tem drevesu je narejena v skladu z naborom vseh možnih dogodkov. Naslednje delitve pa predstavljajo nabore možnih akcij  ob nastopu posameznega dogodka.

Trenutno imamo v odločitvenem drevesu predvideno obravnavo naslednjih tipov varnostnih dogodkov (vsi niso napadi):

DOS/DDOS, MITM, Phishing, Whale-phishing, Spear-phishing, Snooping, Ransomware, Password, Traffic analysis, TCP/SYN, UDP, ICMP, Data diddling, SQL Injection, URL Interpretation,

Cross-site scripting, DNS Spoofing, Session Hijacking, Brute force, Web, HTTP, Insider Threat, Trojan Horse, Keylogger, Drive-by, XSS, Eavesdropping, Birthday,  Malware,  Salami,

Data thief visit, Asset thief visit ,  New employee, Social Engineering, HW selfrepair, SW selfrepair.

Vsi navedeni tipi dogodkov še niso implementirani.



Posebnost simulacije varnosti v pisarni je še, da omogoča 3D predstavitev pisarne, ki je realizirana s tehnologijo Babylon.js. 3D predstavitev pisarne omogoča različne poglede(projekcijas, fokusirana na osebek, ki ga izberemo s klikom) ali pogled na pisartno s strani te osebe (takoimenovani pogled v prvi osebi). 3D predstavitev pisatne lahko povežemo oziroma sinhroniziramo s samo simulacijo.