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.

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:
- updateForAllAnimations1(); // za vse možne scenarije
- updateAnimation1() // za izbrani scenarij 1 (podobno je updateAnimation2() na scenarij 2 itd)
- 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.