Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD Br. 4844
ALATI ZA ISPITIVANJE RANJIVOSTI
RAČUNALNIH SUSTAVA
Konrad Višković
Zagreb, lipanj 2017.
Sadržaj
1. UVOD................................................................................................................................................. 1
2. OSNOVNI POJMOVI RAČUNALNE SIGURNOSTI .................................................................................. 3
2.1. SIGURNOSNI ZAHTJEVI .......................................................................................................................... 3 2.2. VRSTE NAPADA NA SIGURNOST ............................................................................................................... 3 2.3. VRSTE NAPADAČA ................................................................................................................................ 6 2.4. ZLOĆUDNI PROGRAMI ........................................................................................................................... 7 2.5. NAPADI NA INFRASTRUKTURE ................................................................................................................. 8
3. PROCJENA RIZIKA I PRAVNI DOKUMENTI SIGURNOSNE INFRASTRUKTURE U RH ............................. 10
3.1. PROCJENA RIZIKA ............................................................................................................................... 10 3.2. RAČUNALNA SIGURNOST U RH ............................................................................................................. 12
4. PROCES ISPITIVANJA RANJIVOSTI RAČUNALNOG SUSTAVA ............................................................. 17
4.1. ISPITIVANJE RANJIVOSTI ...................................................................................................................... 17 4.2. RAZLOZI PROVOĐENJA ISPITIVANJA RANJIVOSTI ........................................................................................ 18 4.3. KORACI ISPITIVANJA RANJIVOSTI ........................................................................................................... 18 4.4. OGRANIČENJA ISPITIVANJA RANJIVOSTI .................................................................................................. 21
5. RANJIVOSTI SUSTAVA I UZROCI NJIHOVOG NASTANKA ................................................................... 22
5.1. O RANJIVOSTIMA ............................................................................................................................... 22 5.2. VRSTE I UZROCI RANJIVOSTI ................................................................................................................. 24
6. PODJELA ALATA ZA ISPITIVANJE RANJIVOSTI ................................................................................... 34
6.1. ALATI ZA SAKUPLJANJE INFORMACIJA ..................................................................................................... 34 6.2. ALATI ZA ANALIZU RANJIVOSTI .............................................................................................................. 37 6.3. ALATI ZA BEŽIČNE NAPADE ................................................................................................................... 39 6.4. ALATI ZA WEB APLIKACIJE .................................................................................................................... 41 6.5. ALATI ZA ISKORIŠTAVANJE RANJIVOSTI .................................................................................................... 43 6.6. ALATI ZA FORENZIKU .......................................................................................................................... 44 6.7. ALATI ZA STRES ISPITIVANJE ................................................................................................................. 45 6.8. ALATI ZA PRISLUŠKIVANJE I LAŽNO PREDSTAVLJANJE .................................................................................. 45 6.9. ALATI ZA NAPADANJE LOZINKI .............................................................................................................. 47 6.10. ALATI ZA ZADRŽAVANJE PRISTUPA ......................................................................................................... 48 6.11. ALATI ZA REVERZNI INŽENJERING ........................................................................................................... 49
7. PRAKTIČAN RAD .............................................................................................................................. 52
7.1. ALAT METASPLOIT ............................................................................................................................. 52 7.2. ALAT OWASP ZAP ........................................................................................................................... 58 7.3. OPIS OKRUŽENJA ............................................................................................................................... 61 7.4. ISPITIVANJE FUNKCIONALNOSTI ALATA ................................................................................................... 63
8. ZAKLJUČAK ...................................................................................................................................... 75
9. LITERATURA ..................................................................................................................................... 77
1
1. Uvod
U današnje je doba modernizacije gotovo nezaobilazno biti u doticaju s informacijskim
tehnologijama koje nas povezuju i koje nam olakšavaju svakodnevan život. Pojavom
pametnih telefona njihova je primjena odavno nadišla jednostavno pozivanje i slanje
poruka, pa nam osim toga omogućavaju i povezanost putem društvenim mrežama, plaćanja
putem internet bankarstva, nadgledanje nadzornih kamera, korištenje telefona kao
pametnog upravljača televizora i slično. Uz pametne se telefone i osobna računala na
tržištu sve više pojavljuju i ostali pametni uređaji kao što su pametni hladnjaci i razni
kućanski aparati, pametni satovi, kamere i ostali uređaji koji imaju mogućnost povezivanja
s pametnim telefonima ili računalima putem aplikacija. Teško je zamisliti gospodarsku
djelatnost kojoj neki oblik informacijske tehnologije ne bi mogao pružiti potporu u radu, a
danas je kod većine i neophodan.
Iskorištavanje prednosti informacijskih tehnologija korisnicima omogućava bolje
organizacijske sposobnosti i manje vremenske gubitke, a tvrtke se njihovim uvođenjem i
korištenjem mogu brže razvijati i poslovati efikasnije, otvarajući u procesu i nova radna
mjesta na održavanju i razvijanju opreme. Široka primjena i velika dostupnost
informacijskih tehnologija osim navedenih prednosti ima i mane, a one su vezane uz njenu
sigurnosnu infrastrukturu.
Sigurnost proizvoda bi uvijek trebala biti prioritet kako bi se napadačima (zlonamjernim
korisnicima) onemogućilo korištenje proizvoda na način za koji taj proizvod nije predviđen
i da bi se korisnika osiguralo od vanjskih napadača. Zbog velike konkurentnosti u sektoru
informacijskih tehnologija, tvrtke teže ka što bržem razvoju kako bi i dalje mogle ostati
konkurentne, a to se reflektira i na kvalitetu njihovih proizvoda pa je tako izazov napraviti
kvalitetan, robustan i siguran proizvod u što kraćem vremenu. Tvrtke u procesu
proizvodnje (bilo fizičkih sustava ili računalnih programa) mogu namjerno ili nenamjerno
zanemarivati ili podcjenjivati sigurnosne zahtjeve uz izgovor da je trošenje financijskih
sredstava za sprječavanje prijetnji nepotrebno ili jer je procjena rizika pogrešno provedena,
ne shvaćajući da posljedice napada mogu biti katastrofalne.
Nakon izrade proizvoda i ispitivanja njegove funkcionalnosti potrebno je provesti i
sigurnosno ispitivanje. Neki od uobičajenih izraza koji se koriste kada se govori o
sigurnosnom ispitivanju i koji će detaljnije biti opisani kasnije su: otkrivanje (engl.
Discovery), skeniranje ranjivosti (engl. Vulnerability scan), procjena ranjivosti (engl.
Vulnerability assessment), sigurnosna procjena (engl. Security Assessment), ispitivanje
ranjivosti (engl. Penetration test), sigurnosna revizija (engl. Security Audit), sigurnosni
pregled (engl. Security Review). U okviru ovog rada bit će opisan postupak ispitivanja
ranjivosti računalnog sustava.
Ispitivanje ranjivosti je postupak kojim se simulira napad na neki računalni sustav. Alata za
ispitivanje ranjivosti računalnih sustava ima mnogo i najčešće se koriste zajedno u
kombinacijama kako bi se postigao željeni cilj. U ovome radu opisani su alati po
2
kategorijama kojim pripadaju, a detaljnije su opisana dva alata: Metasploit i OWASP Zap
te je provedenim ispitivanjem ranjivih sustava analiziran njihov rad.
3
2. Osnovni pojmovi računalne sigurnosti
Prije svega, potrebno je opisati neke osnovne pojmove računalne sigurnosti koji će nam
pomoći da jasnije shvatimo njenu ulogu i značaj. Cilj računalne sigurnosti je zaštita samog
računalnog sustava, kao i programa, operacijskog sustava i podataka od neovlaštenog
korištenja.
2.1. Sigurnosni zahtjevi
Glavni sigurnosni zahtjevi su:
1. povjerljivost ili tajnost
2. raspoloživost
3. besprijekornost
4. autentičnost
5. autorizacija
6. neporecivost
Tajnost podataka (engl. Confidentiality) zahtjeva da podacima mogu pristupati samo
ovlašteni korisnici. Raspoloživost (engl. Availability) zahtjeva da podaci moraju uvijek
biti na raspolaganju ovlaštenim korisnicima neovisno o mogućim nepredvidljivim
događajima kao što su nestanak struje ili zlonamjerni napad. Besprijekornost podataka
zahtjeva da se podaci u sustavu mogu mijenjati samo od strane ovlaštenih korisnika.
Autentičnost osigurava da se korisnici mogu jednoznačno prepoznati, obavlja se
postupkom autentifikacije. Autorizacija služi kako bi se ograničio pristup resursima samo
odabranim korisnicima. Neporicivost (engl. Nonrepudiation) nudi mogućnost zaštite od
opovrgavanja neke radnje koju je ovlašteni korisnik izveo. [1] Iako sigurnosnih zahtjeva
ima mnogo, nije ih uvijek potrebno sve implementirati, a odabir onih koje je potrebno
implementirati vrši se u ovisnosti o namjeni proizvoda i području u kojem se koristi.
Dublja analiza sigurnosnih zahtjeva nadilazi područje ovog rada.
2.2. Vrste napada na sigurnost
Računalni napad je napad sa ciljem narušavanja sigurnosnih zahtjeva, a najčešće
povjerljivosti, raspoloživosti ili besprijekornosti (integriteta) podataka. Izvorište i odredište
napada se mogu nalaziti u jednom računalu ili u različitim računalima raspodijeljenog
sustava.[1] Ispitivanje ranjivosti je po sebi vrsta napada na računalni sustav, no regulirana
sa strane ispitivača i korisnika koji odobrava ispitivanje.
Vrste napada na sigurnost:
1. prisluškivanje
2. prekidanje
4
3. promjena sadržaja poruka
4. izmišljanje poruka
5. lažno predstavljanje
6. poricanje
Prisluškivanje (engl. Eavesdropping) je najjednostavniji način napada na sigurnost jer ne
zahtjeva nikakvo aktivno sudjelovanje napadača. Napadač koji prisluškuje mrežu može
čitati podatke s nje, to može biti opasno ako su podaci koji se šalju nezaštićene lozinke ili
neki drugi osjetljivi podaci koji se šalju nekriptiranim kanalom. Prilikom prisluškivanja na
nezaštićenom kanalu napadač sve primljene pakete može pogledati i iz njih iščitati
osjetljive informacije koje nisu bile namijenjene njemu. Prisluškivanje je napad na
povjerljivost informacija.[1]
Slika 2.1. Prisluškivanje
U praksi se napad prisluškivanjem najčešće provode na mreži i naziva se sniffing. Napadač
može napisati program ili koristiti već gotove alate za prisluškivanje kako bi presreo
mrežni promet na svojoj mrežnoj kartici i čitao ga.
Prekidanje (engl. Interruption) je napad na raspoloživost informacija i izvodi se tako da se
prekine komunikacijski kanal čime se onemogućuje komunikacija između sugovornika.[1]
5
Slika 2.2. Prekidanje
U praksi se napadi prekidanjem zovu DoS napadi (engl. Denial of Service) i izvode se
najčešće preko mreže tako da napadač svojoj žrtvi šalje velik broj zahtjeva koje žrtva ne
stiže obraditi te se oni legitimni zahtjevi ne stignu obraditi i time se uskraćuje neka usluga.
Promjena sadržaja poruka (engl. Modification) izvodi se tako da napadač prekine
komunikacijski kanal tako da se on uključi u komunikaciju kao posrednik, lažno se
predstavljajući kao izvorište, što mu omogućava izmjenu sadržaja poslanih poruka i time i
utjecaj na integritet informacija.[1]
Slika 2.3. Promjena sadržaja
Promjena sadržaja se popularno naziva napad čovjekom u sredini (engl. Man In The
Middle) i može se izvesti tako da se presretne veza između dva sugovornika te se
izmjenom pošiljatelja ili primatelja IP paketa može zavarati sugovornike misleći da oni
pričaju jedan s drugim, no zapravo sav njihov promet dolazi indirektno preko napadača
koji u tom trenutku može svojevoljno izmjenjivati sadržaj poruke.
Izmišljanje poruka (engl. Fabrication) je napad u kojem napadač započinje komunikaciju
s jednim entitetom lažno se predstavljajući kao izvorište. Ovim napadom napadač može
slati izmišljene poruke ili ponavljati spremljene stare poruke što narušava integritet
informacija.[1]
6
Slika 2.4. Izmišljanje poruka
Poricanje (engl. Repudiation) je napad kod kojeg korisnik šalje poruku primatelju i potom
poriče autorstvo te poruke tvrdeći da je poruku poslao netko drugi, a ne on.[1]
Lažnim predstavljanjem napadač se može predstaviti kao neki drugi korisnik sustava ili
se namještanjem računala može pretvarati kao neko drugo računalo varajući računala
kojima se lažno predstavlja.[1]
2.3. Vrste napadača
Popularno, pod pojmom napadača najčešće se misli se na osobu koja je aktivni sudionik u
računalnom kriminalu i koja se računalnim kriminalom bavi isključivo za svoj profit, no to
nije uvijek istina. Postoje različiti tipovi napadača i oni ne moraju uvijek imati zle namjere.
Pojam haker prvi se puta pojavio na američkom sveučilištu MIT 1960-ih godina i
označavao je osobu koja je sposobna izmijeniti način rada nekog stroja ili naprave (ne
nužno računala) tako da radi nešto za što nije namijenjena, a s vremenom se taj pojam
počeo povezivati sa računalnim kriminalom i izrastao je u to što je danas, pojam za osobu
koja koristi računalo u maliciozne svrhe. Napadači se dijele na tri vrste:
• bijeli šeširi (engl. White Hat)
• sivi šeširi (engl. Grey Hat)
• crni šeširi (engl. Black Hat)
Bijeli šeširi su najčešće profesionalci ili entuzijasti koji računalne napade koriste za
ispitivanje sustava pokušavajući pri tome pronaći njegove ranjivosti i zakrpati ih.
Ispitivanje ranjivosti spada u aktivnosti bijelih šešira. Neke velike tvrtke kao što su
Facebook ili Google provode programe sigurnog ispitivanja gdje novčanim nagradama
potiču korisnike da ispitaju njihove proizvode i prijavljuju pronađene propuste i ranjivosti.
Crni šeširi su oni napadači koji sve svoje aktivnosti provode s ciljem vlastitog profita ili
štete korisnika. Postoje napadači koji djeluju samostalno i u grupama. Njihove su žrtve
najčešće nasumični korisnici koji pregledavanjem interneta nemaju instalirane antivirusne
7
programe ili preuzimaju sadržaj sa nesigurnih stranica. Najopasniji su oni napadači koji
djeluju u organiziranim skupinama napadajući pri tom ciljane mete koje mogu biti
određeni korisnici kao što su političari, mogu napadati određene ustanove kao što su
bolnice ili škole i krasti informacije o pacijentima ili osoblja, a mogu napadati i tvrtke i
kasnije ih iznuđivati ili prodavati poslovne tajne i slično. Kao svoje alate koriste vlastito
razvijene maliciozne programe ili alate dizajnirane za dostavljanje malicioznih programa.
Sivi šeširi su svi oni napadači koji ne spadaju u bijele ili crne šešire, to mogu biti aktivisti
čiji su ciljevi napada politički, mogu biti znatiželjnici koji isprobavaju alate pronađene na
internetu ne znajući pritom moguće posljedice i ostali.
I crne i bijele šešire povezuje to što se radi o pojedincima visokog znanja rada računala,
programa i računalne sigurnosti općenito.
2.4. Zloćudni programi
Zloćudni programi su programi koji su napisani sa strane napadača i mogu imati više
namjena. Crni šeširi ih redovito koriste kako bi postigli svoje ciljeve: kompromitirali
računala i stekli osobnu korist.
Vrste zloćudnih programa:
• Računalni virus: maliciozni programi s ciljem stvaranja štete na računalu. Jednom
kada stigne na računalo inficira datoteke i programe izmjenjujući ih i u njih
ubacujući zlonamjeran kod koji se pokreće prije pokretanja programa.
• Računalni crv: maliciozni program koji se širi mrežom i to im je primarna
namjena. Najčešće se šire putem elektroničke pošte, a mogu i putem društvenih
mreža. Čini štetu tako što koristi resurse ili u sebi sadrže druge maliciozne dijelove.
• Špijunski programi (eng. Spyware): maliciozni programi koji sakupljaju
korisničke informacije i informacije o korištenju računala i mogu ih slati na
udaljeni poslužitelj kojim upravlja napadač. Informacije koje kradu mogu biti
financijski podaci kao što su brojevi kartica i lozinke.
• Trojanski konj: tip malicioznog programa koji se prikriva kao legitimni program
na računalu s namjerom da prevari korisnika da ga pokrene. Jednom kada je
pokrenut, trojanski konj može dalje instalirati ili preuzeti druge maliciozne
programe, krasti podatke, izmjenjivati podatke i slično.
• Oglašivački programi (engl. Adware): programi koji korisniku prikazuju oglase
čak i kada korisnik nije spojen na internet. Šire se preko besplatnih aplikacija i time
autorima omogućuju zaradu.
• Keylogger: maliciozni program koji se pokreće u pozadini i bilježi korisnikov unos
preko tipkovnice koje kasnije može internetom poslati napadaču.
• Rootkit: tip malicioznog programa dizajniran tako da napadaču omogućuje pristup
ili kontrolu računala putem interneta bez da ga korisnik ili antivirusni programi
detektiraju.
8
• Ucjenjivački programi (engl. Ransomware): danas možda najopasnija prijetnja, to
je tip malicioznog programa koji koristeći napredne kriptografske algoritme kriptira
podatke na računalu i nakon toga putem poruke o tome obavještava korisnika i traži
ga otkupninu.
2.5. Napadi na infrastrukture
Sve veće prisustvo računalnog kriminala u svijetu i njegova fleksibilnost i mogućnosti
dovode do pitanja skalabilnosti napada. Zabilježeni su napadi organiziranih skupina koje
kao mete napada osim visoko rangiranih pojedinaca ili organizacija odabiru i čitave
zemlje. Kao u doba konflikata, svaka zemlja ima svoje kritične točke u obliku određenih
infrastruktura koje ako su napadnute ili onemogućene, mogu imati velike posljedice na
način života ili sigurnost neke zemlje. Kritične infrastrukture mogu biti: kontrolni sustavi,
energetska infrastruktura, financije, telekomunikacije, prijevoz i ostale.
• Kontrolni sustavi: zaduženi su za nadgledanje i aktiviranje industrijskih ili
mehaničkih kontrola. Takvi se sustavi mogu nalaziti u raznim postrojenjima i
sastoje se od mnogo fizičkih uređaja međusobno povezanih u mrežu. Samim time
što je tih uređaja mnogo, teško je kvalitetno provesti mjere sigurnosti i ako je
moguće doprijeti do unutarnje mreže kontrolnog sustava, napadači mogu
prouzročiti velike štete. Primjer takvog napada je napad na iranska nuklearna
postrojenja koji je ujedno i najpoznatiji primjer takvog napada. Stuxnet je naziv
malicioznog programa, računalnog crva uvedenog u iranska nuklearna postrojenja
koja su radila na procesu obogaćivanja uranija. Kao rezultat, nuklearno je
postrojenje izgubilo 984 centrifuga za obogaćivanje uranija sa procjenom od 30%
smanjenja efikasnosti obogaćivanja. [2]
• Energetska infrastruktura: energetska infrastruktura jedna je od najbitnijih
infrastruktura bilo koje zemlje, iako je mala vjerojatnost uspješnog napada s
velikim posljedicama, najgore posljedice mogu biti gašenje infrastrukture,
ekonomski i financijski poremećaji ili gubici života i masovne prirodne štete.[3]
Primjer napada na energetsku infrastrukturu dogodio se 2013. godine slučajno,
kada se dio austrijske i njemačke energetske mreže skoro ugasio zbog pogrešno
upućene kontrolne poruke. Vjeruje se da je određeni zahtjev poslan razašiljanjem
putem novopostavljene mreže iz njemačke energetske kompanije kao ispitivanje
njihove novopostavljene mreže slučajno dospio do austrijske mreže za kontrolu
električne energije, a kao posljedicu je imao stvaranje tisuće novi zahtjeva koji su
se širili mrežom i time prepunili mrežu. Da bi se zaustavio tako nastali DDoS
napad, dio kontrolne mreže morao je biti isključen, a na sreću, nikakvih većih
posljedica nije bilo.[4]
• Financijska infrastruktura: financijska infrastruktura je povezana računalnim
sustavima i zbog toga je najotvorenija za napade. U financijskim institucijama
većina dnevnog toka novca prolazi računalnim sustavima, a ne u obliku gotovine,
pa to daje motiv napadačima za napad. Ako bi se financijske usluge prekinule pa
čak i na kratak vremenski period, posljedice bi mogle biti velike. Posljedice koje
mogu nastati prekidom financijskih usluga mogu biti narušavanje ugleda tvrtki ili
9
prekid financiranja sa strane ulagača, mogu utjecati na dionice i slično. Primjer
napada na financijsku infrastrukturu je napad na centralnu banku u Bangladešu.
Sofisticirana skupina napadača uspjela je ući u bankovnu unutarnju komunikacijsku
mrežu krađom korisničkih imena i lozinki. Šteta koju su napadači prouzročili
krađom procjenjuje se na preko 80 milijuna dolara.[5]
• Telekomunikacijska infrastruktura: napadi na telekomunikacijsku infrastrukturu
imaju jasne rezultate, sve je više VoIP (engl. Voice over IP) mreža i osim običnog
uskraćivanja usluge klasičnim DoS napadima, svakim danom razvijaju se sve
kompleksniji napadi koji bi potencijalno mogli ciljati fizičke strukture za prijenos
telekomunikacijskih signala. Takav prekid signala bi za posljedicu imao gubitak
mogućnosti komunikacije, a u doba konflikata to bi za napadača značila jasna
prednost pred protivnikom.
• Prijevoz: onemogućavanje prijevozne infrastrukture moglo bi dovesti do utjecaja
na prijevoz robe i sukladno s time i na ekonomiju zemlje. Primjer ovakvog napada
je razdoblje u 2003. godini kada je računalni virus po imenu Slammer prisilio tvrtku
Continental Airlines da zaustavi letove zbog poteškoća s računalima. [6]
10
3. Procjena rizika i pravni dokumenti sigurnosne
infrastrukture u RH
3.1. Procjena rizika
Rizike u računalnoj sigurnosti predstavljaju sve neostvarene prijetnje, odnosno svi
otkriveni ili neotkriveni neispravljeni propusti ili ranjivosti koje napadači mogu
potencijalno iskoristiti za napad na računalni sustav. Procjenom rizika određuje se što mora
biti zaštićeno, koje su opasnosti ili ranjivosti prisutne na sustavu, koje su implikacije ako
dođe do napada na sustav, kolika je vrijednost rizika za tvrtku i ostalo. Rezultat provedbe
procjene rizika unutar neke tvrtke su preporuke za maksimizaciju zaštite integriteta,
povjerljivosti, integriteta i dostupnosti uz pružanje funkcionalnosti i korisnosti.
Ključna područja procjene rizika su:
• doseg (engl. Scope)
• prikupljanje podataka (engl. Data Collection)
• analiza politika i procedura (engl. Analysis of Policies and Procesures)
• analiza prijetnji (engl. Threat Analysis)
• analiza ranjivosti (engl.Vulnerability Analysis)
• korelacija i procjena prihvatljivosti rizika (engl. Correlation and assessment of Risk
Acceptability)
Identificiranje dosega je najbitniji korak u procesu procjene rizika. Doseg ispitivaču pruža
informacije o tome što procjena pokriva a što ne. Identificira što sve treba biti zaštićeno,
osjetljivost onoga što mora biti zaštićeno i do koje razine i detalja. Prilikom određivanja
dosega potrebno je imati na umu publiku završnih preporuka (npr. Senior menadžeri, IT
odjel ili certifikacijski autoritet). Doseg treba određivati vrši li se analiza s unutarnjeg ili
vanjskog stajališta ili oboje. Razina detalja izravno je povezana sa planiranim primateljem
završne analize.
Prikupljanje podataka uključuje prikupljanje svih politika i procedura koje su trenutno
na snazi i identificiranje onih koje fale ili su nedokumentirane. Razgovori s djelatnicima
mogu pomoći u ovom koraku. Sustavi i aplikacije identificirani dosegom numeriraju se i
prikupljaju se svi podaci o trenutnom statusu tih sustava:
• pokrenute usluge
• razine uslužnih paketa
• instalirani operacijski sustavi
• pokrenute mrežne aplikacije
• fizičke lokacije sustava
11
• kontrola pristupa
• skeniranje portova
• ispitivanje otkrivanja upada
• ispitivanje vatrozida
• …
Analiza politika i procedura provodi se s ciljem provjere razine usklađenosti unutar
organizacije. Izvori za usklađivanje pravila koji se mogu koristiti su:
• ISO 17799
• BSI 7799
• ISO 15504
Potrebno je prepoznati dijelove za koje se smatra da nisu u skladu s obzirom na specifičnu
industriju ili organizaciju. Zbog toga što postoji toliko sigurnosnih standarda, teško je
odrediti koji se najbolje primjenjuju unutar organizacije. Općeniti standardi pružaju najširi
pogled ali nekada zahtijevaju implementaciju sigurnosnih mjera koje su neprimjerene za
određenu industriju na koju se standard želi primijeniti.
Cilj analize ranjivosti je uzimanje svega identificiranog u prikupljanju informacija i
provesti ispitivanja kako bi se utvrdila trenutna razina izloženosti i jesu li trenutne mjere
sigurnosti dovoljne u smislu povjerljivosti, integriteta i dostupnosti. Postoje razni alati koji
se mogu koristiti za identificiranje ranjivosti sustava, a jedan od najpoznatijih je Nessus.
Korak analize ranjivosti uključuje ispitivanje ranjivosti sa ciljem prikupljanja nečega od
velike vrijednosti kao što je tekstualna datoteka, datoteka s lozinkama, povjerljiva datoteka
i slično, a prije provedbe ispitivanja ranjivosti potrebno je unaprijed odrediti o kojim će se
datotekama raditi. Ispitivanje ranjivosti može se izvoditi kao eksterno ispitivanje u kojem
se pretpostavlja nepoznavanje informacija vezanih za sustav koji se napada i interno
ispitivanje u kojem se preuzima uloga nekog zaposlenika. Pronađene ranjivosti mogu se
klasificirati s obzirom na razinu ozbiljnosti i rizika kojeg pružaju organizaciji.
Analiza prijetnji bavi se bilo kojim elementom rizika koji se može dogoditi. Prijetnje su
opisane kao bilo što može pridonijeti izmjenjivanjem, uništenjem ili prekidom bilo koje
usluge ili vrijednosne stvari. Prijetnje se mogu podijeliti na ljudske kao što su napadači
(hakeri), krađa, neadekvatno obučeno osoblje i ostale, te na neljudske kao što su poplave,
grmljavina, virusi, požari, kontrola temperature itd. Prijetnje idu ruku pod ruku sa
ranjivostima i identificirane prijetnje moraju se analizirati u relaciji s radnim okruženjem i
kakav im je utjecaj na organizaciju. Primjer je neadekvatno obučeno osoblje koje nije jako
motivirano za maliciozne radnje dok s druge strane, napadači-hakeri jesu.
Analiza prihvatljivih rizika je završni korak u postupku procjene rizika. Procjenjuje jesu
li trenutne politike koje se provode adekvatne. Provodi se pregled postojećih i planiranih
zaštitnih mjera koje treba provesti kako bi se utvrdilo je li utjecaj poznatih i novootkrivenih
prijetnji ublažen. Posao analitičara nije da utvrdi što je prihvatljivi rizik za određenu
organizaciju već da koristi pronalaske pri analizi kako bi asistirao određivanju koje su
razine rizika prihvatljive organizaciji. Rezultat je temelj za odabir primjerenih sigurnosnih
12
mjera ili da se uklone one neefikasne. Prije preporuke proizvoda ili postupaka potrebno je
uzeti u obzir i veličinu organizacije i njihovog IT odjela kako bi se utvrdilo hoće li
organizacija moći održavati novopostavljenu sigurnosnu infrastrukturu.
Organizacije koje ne provode analizu rizika i prijetnji ostaju otvorene situacijama koje
mogu prouzročiti štetu, prekid usluge ili uništenje sposobnosti poslovanja stoga se važnost
provedbe analize rizika mora shvatiti sa strane samog odjela organizacije koje održava
infrastrukturu i korisnika usluga organizacije čije poslovanje o njoj ovisi. [7]
3.2. Računalna sigurnost u RH
Datuma 13. srpnja 2007. godine Hrvatski je sabor donio Zakon o informacijskoj sigurnosti.
Tim se zakonom utvrđuje pojam informacijske sigurnosti, mjere i standardi informacijske
sigurnosti, područja računalne sigurnosti, te nadležna tijela za donošenje, provođenje i
nadzor mjera i standarda informacijske sigurnosti. Ovim se zakonom također nalaže da se
minimalni kriteriji za zaštitu klasificiranih i neklasificiranih podataka utvrđuju mjerama i
standardima informacijske sigurnosti. Standarde za provedbu tih mjera propisuju pravilnici
koje donose čelnici središnjih državnih tijela za informacijsku sigurnost.[9]
Mjere i standardi informacijske sigurnosti su propisane za slijedeća područja informacijske
sigurnosti:
• sigurnosna provjera
• fizička sigurnost
• sigurnost podataka
• sigurnost informacijskog sustava
• sigurnost poslovne suradnje
Sigurnosna provjera je područje informacijske sigurnosti unutar kojeg se utvrđuju mjere i
standardi informacijske sigurnosti koji se primjenjuju na osobe koje imaju pristup
klasificiranim podacima. [9] Primjer je utvrđivanje prava pristupa podacima po
stupnjevima tajnosti: „Povjerljivo“, „Tajno“ i „Vrlo tajno“.
Fizička sigurnost je područje informacijske sigurnosti unutar kojeg se određuju mjere i
standardi za zaštitu objekata, prostora i uređaja u kojem se nalaze klasificirani podaci.
Izvodi se kategorizacija objekata i prostora na sigurne zone koje su propisane mjerama i
standardima informacijske sigurnosti.[9]
Sigurnost podataka je područje informacijske sigurnosti za koje se utvrđuju mjere i
standardi informacijske sigurnosti koje se primjenjuju kao opće zaštitne mjere za
prevenciju, otkrivanje i otklanjanje štete od gubitaka ili neovlaštenog otkrivanja
klasificiranih i neklasificiranih podataka.[9]
Sigurnost informacijskog sustava je područje informacijske sigurnosti unutar kojeg se
utvrđuju mjere i standardi informacijske sigurnosti klasificiranog i neklasificiranog
podatka koji se obrađuje, pohranjuje ili prenosi u informacijskom sustavu, te zaštite u
13
cjelovitosti i raspoloživosti informacijskog sustava u procesu planiranja, projektiranja,
izgradnje, uporabe, održavanja i prestanka rada informacijskog sustava.
Sigurnost poslovne suradnje je područje informacijske sigurnosti u kojem se primjenjuju
propisane mjere i standardi informacijske sigurnosti za provedbu natječaja ili ugovora s
klasificiranom dokumentacijom koji obvezuju pravne i fizičke osobe.[9]
Središnja državna tijela za informacijsku sigurnost su:
• Ured Vijeća za nacionalnu sigurnost: središnje državno tijelo za informacijsku
sigurnost koje koordinira i usklađuje donošenje i primjenu mjera i standarda
informacijske sigurnosti u Republici Hrvatskoj i u razmjeni klasificiranih i
neklasificiranih podataka između Republike Hrvatske i stranih zemalja i
organizacija. On donosi pravilnike o standardima fizičke sigurnosti, sigurnosti
podataka, o standardima organizacije i upravljanja područjem sigurnosti
informacijskih sustava te sigurnosti poslovne suradnje. [9]
• Zavod za sigurnost informacijskih sustava: središnje državno tijelo za tehnička
područja sigurnosti informacijskih sustava u tijelima i pravnim osobama. Ovaj
zavod zadužen je za usklađivanje standarda tehničkih područja sigurnosti
informacijskih sustava u Republici Hrvatskoj s međunarodnim standardima i
preporukama te sudjeluje u nacionalnoj normizaciji područja sigurnosti
informacijskih sustava.
U skladu s ovim zakonom 2008. godine osnovan je Nacionalni CERT. Nacionalni CERT je
tijelo za prevenciju i zaštitu od računalnih ugroza sigurnosti javnih informacijskih sustava
u Republici Hrvatskoj. To je zasebna ustrojstvena jedinica koja se ustrojava u Hrvatskoj
akademskoj i istraživačkoj mreži (CARNet). CERT i Zavod za sigurnost informacijskih
sustava surađuju na prevenciji i zaštiti od računalnih ugroza sigurnosti te sudjeluju u izradi
preporuka i normi u Republici Hrvatskoj iz područja sigurnosti informacijskih sustava.[9]
Neke usluge koje nudi Nacionalni CERT:
• informiranje javnosti o novostima vezanih uz informacijsku sigurnost
• edukacija ciljanih skupina
• izdavanje sigurnosnih preporuka
• provjere ranjivosti javnih sustava
• obrada i koordinacija incidenata
• prikupljanje informacija o kompromitiranim računalima i incidentima u RH
• forenzika malicioznih programa i poslužitelja
Vrste incidenata koji su u nadležnosti Nacionalnog CERT-a:
• onemogućavanje rada pojedine usluge (DoS/DDos)
• kompromitiranje poslužitelja
• nedozvoljene mrežne aktivnosti (port scan)
14
• slanje spama
• phishing i ostale prijevare
Incidenti se odnose na računala koja imaju statičke ili dinamičke IP adrese. Nacionalni
CERT obrađuje incidente sa statičkim IP adresama jer je vlasnik računala poznat, a
informacije o računalima s dinamičkom IP adresom šalju se ISP-u, te se vodi statistička
obrada incidenata na računalima s dinamičkom IP adresom.
Nacionalni CERT također nudi uvid u nedavnu statistiku obrađenih incidenata temeljem
njihovog pravilnika, Slika 3.1. prikazuje broj registriranih botova (računalnih programa
koji se izvršavaju samostalno) koji mogu služiti za automatsko slanje spama (neželjene
elektroničke pošte) ili druge neželjene i maliciozne radnje:
Slika 3.1. Kretanje broja registriranih botova
Slika 3.2. opisuje postotak obrađenih incidenata u periodu od 24.3.2017. do 24.4.2017.
koje je obradio Nacionalni CERT:
15
Slika 3.2. Obrađeni incidenti u periodu od 24.3.2017. do 24.4.2017.
Slika 3.3. opisuje kretanje broja incidenata na poslužiteljima koje je detektirao Nacionalni
CERT:
Slika 3.3. Kretanje broja incidenata na poslužiteljima
Još jedan dokument koji nije detaljno opisan u ovome radu je Nacionalna strategija
kibernetičke sigurnosti donesena 7. listopada 2015. godine. Nacionalna strategija
kibernetičke sigurnosti je dokument kojim Republika Hrvatska nastoji započeti sustavno i
sveobuhvatno planiranje najvažnijih aktivnosti u svrhu zaštite svih korisnika suvremenih
16
elektroničkih usluga, kako u javnom i gospodarskom sektoru, tako i u građanstvu u cjelini.
Strategijom se želi postići uravnotežen i koordiniran odgovor niza institucija koje
predstavljaju sve sektore društva, na sigurnosne prijetnje u suvremenom kibernetičkom
prostoru. [13] U njoj se navode načela, opći ciljevi strategije, sektori društva i oblici
suradnje dionika računalne sigurnosti, područja kibernetičke sigurnosti i ostalo.
Zainteresirani čitatelj upućuje se na [11] i [12] za daljnje istraživanje.
17
4. Proces ispitivanja ranjivosti računalnog sustava
4.1. Ispitivanje ranjivosti
Ispitivanje ranjivosti je proces pokušavanja dobivanja pristupa određenim resursima bez
poznavanja korisničkih imena, lozinki i ostalih normalnih pristupnih podataka. Primjer
uspješnog ispitivanja ranjivosti bio bi dohvaćanje nedovoljno zaštićenih povjerljivih
dokumenata ili baza podataka s računala, stoga se može reći da je ispitivanje ranjivosti
vrsta sigurnosnog ispitivanja koja se koristi za ispitivanje nesigurnosti određene aplikacije
ili resursa. Glavna razlika između zlonamjernog napada i ispitivanja ranjivosti je dozvola
za obavljanje takve radnje koju daje vlasnik resursa nad kojim se vrši ispitivanje. Osoba
zadužena za ispitivanje ranjivosti obavezna je napisati detaljan izvještaj pronađenih
propusta i nesigurnosti sustava tijekom ispitivanja kako bi se rezultati mogli potvrditi i
razriješiti. Cilj ispitivanja ranjivosti je povećanje sigurnosti ispitivanih resursa. U većini
slučajeva osoba koja provodi ispitivanje ranjivosti ima pristup resursu kao i običan
korisnik i cilj je da danim takvim pristupom, uspije uzdignuti svoja korisnička prava ili na
neki drugi način pristupiti resursima za koje inače ne bi imala pravo pristupa. Bitno je
razumjeti da osoba koja provodi ispitivanje ranjivosti najčešće ne može pronaći sve
propuste i sigurnosne probleme zato što se programi i njihovo okruženje često mijenjaju
zbog različitih zakrpa i poboljšanja koja mogu stvoriti nove propuste koji nisu bili
pristupni prilikom posljednjeg ispitivanja.[14]
Razlika između ispitivanja ranjivosti i procjene rizika ponekad može biti zbunjujuća. Ta su
dva pojma blisko povezana ali ispitivanje se ranjivosti fokusira na konkretan pokušaj
pristupa nekim resursima za koja trenutna korisnička prava nisu predviđena, a procjena
rizika se svodi na otkrivanje i analiziranje svih mjesta koja potencijalno mogu postati meta
napada.
Postupci identificiranja ranjivosti koje koriste osobe ovlaštene za ispitivanje ranjivosti
slični su onima koje koriste neovlašteni napadači. Razlika između njihovih postupaka je ta
što za razliku od ovlaštenog ispitivača, napadač još mora paziti kako ne bi ostavljao
tragove kojim bi ga se kasnije moglo identificirati što ga čini sporijim. Prvi korak
ispitivanja ranjivosti je izviđanje. Izviđanjem ispitivač nastoji upoznati sustav kojeg
ispituje i naučiti što više informacija kao što su: koji se operacijski sustav koristi, koji su
portovi otvoreni i koje se usluge koriste, informacije o programima koji se nalaze na
sustavu i slično. Nakon sakupljanja informacija o sustavu, ispitivač može pregledati bazu
podataka ranjivosti i pretražiti koje su sve ranjivosti pronađene za određenu uslugu,
program ili operacijski sustav pronađen postupkom izviđanja. Neke od stranica koje
pružaju takve informacije su:
• National Vulnerability Database: https://nvd.nist.gov/
• Security Focus: http://www.securityfocus.com/vulnerabilities
• IBM X-Force Exchange: https://exchange.xforce.ibmcloud.com/
• OSVDB: https://blog.osvdb.org/
• Common Vulnerabilities and Exposures: https://cve.mitre.org/
18
Nakon pronalaska neke ranjivosti, ispitivač provodi ispitivanje ranjivosti za koju sumnja da
je prisutna na sustavu pomoću javno dostupnih alata ili vlastitih alata i programa.[14]
4.2. Razlozi provođenja ispitivanja ranjivosti
Postoji više razloga zašto bi se ispitivanje ranjivosti trebalo provoditi. Najbitniji od tih
razloga je pronalazak ranjivosti prije napadača kako bi se sustav stigao na vrijeme zaštititi
da bi se spriječila šteta. Ponekad su IT odjeli u tvrtkama svjesni propusta u svojim
proizvodima ali je potreban vanjski stručnjak koji će službeno izjaviti postojanje propusta
kako bi menadžment tvrtke odobrio resurse potrebne za ispravljanje propusta. Još jedan
razlog je ispitivanje sustava prije nego što mu se omogući pristup internetu. Neki standardi
i regulacije zahtijevaju obavezno vanjsko sigurnosno ispitivanje. Rutinska ispitivanja su
važna jer determinirani napadači mogu konstantno izviđati mrežni pristup tvrtki čekajući
da se stvori neispravljena ranjivost sustava koja će im pružiti priliku za napad. Iako
nekolicina ljudi ima pristup tzv. „0-day“ ranjivostima, odnosno još neotkrivenim
ranjivostima koje ne postoje u javno dostupnim bazama ranjivosti, većina zlonamjernih
napadača koristi one dobro poznate ranjivosti za napad na sustav pa se stoga rutinska
ispitivanja preporučuju.[14]
Osim tehničkih razloga, još jedan razlog zbog kojeg postoje ranjivosti na sustavima neke
tvrtke proizlazi od menadžerskog i izvršnog dijela tvrtke, naime često su te osobe svjesne
postojećih ranjivosti ali odbijaju pružiti resurse za njihovo rješavanje jer smatraju da osobe
bez internih znanja ne mogu iskoristiti te ranjivosti ili je vjerojatnost za njihovo otkrivanje
dovoljno mala da bi taj rizik ostao prihvatljiv. Ispitivanje ranjivosti izvršeno od treće strane
moglo bi izvršnom dijelu tvrtke promijeniti mišljenje ustanovi li se suprotno i ako se
pokaže obujam štete koja može nastati iskorištavanjem te ranjivosti.
4.3. Koraci ispitivanja ranjivosti
Planiranje i pripremanje
Kako bi izvedba ispitivanja ranjivosti bila uspješna, prethodno je potrebno provesti
planiranje i pripremanje. Idealno, potrebno je sazvati sastanak između organizacije i osoba
koje provode ispitivanje ranjivosti, a sastankom se trebaju utvrditi doseg i cilj ispitivanja
ranjivosti kao i osobe uključene u samu provedbu ispitivanja. Mora se utvrditi i oblik u
kojem će se rezultati ispitivanja prezentirati. Vitalna stvar koju treba dogovoriti na
sastanku je vrijeme trajanja i provedbe ispitivanja jer se time omogućava da se svi ostali
poslovi tvrtke mogu nastaviti izvoditi nesmetano. U slučajevima kada se izvođenje
ispitivanja podudara s vremenom nekih poslova organizacije tijekom kojih na mreži dolazi
do povećanog prometa mogu nastati konflikti između potrebe da su svi dijelovi sustava
ispitani i potrebe za održavanjem normalne količine mrežnog prometa. Ispitivanja
ranjivosti ponekad koriste neobičan mrežni promet mogu prouzročiti rušenje sustava
organizacije, a ako se takav rizik ne može tolerirati, neki će sustavi morati biti izostavljeni
iz procesa ispitivanja. Na sastanku se također trebaju utvrditi i vrste ispitivanja koje će se
19
izvoditi nad sustavom jer niti jedna organizacija ne želi da im ispitivanje izravno utječe na
poslovanje. Kao loš primjer: zamislimo si provedbu ispitivanja DoS ispitivanjem na mreži
sveučilišta u trenutku kada većina studenata piše ispite na računalima spojenim na tu
mrežu, to je primjer loše vremenske procjene i loše komunikacije između sveučilišta i
ispitivača. Još jedna bitna odluka kod provođenja ispitivanja je određivanje koje se osoblje
mora, i mora li se uopće, informirati prije provođenja ispitivanja unutar organizacije. Ovo
je bitna odluka jer nepotrebno informiranje osoblja može izmijeniti njihovo ponašanje koje
bi kao posljedicu moglo imati utjecaj na rezultate ispitivanja, a s druge strane bi
neinformiranje osoblja moglo izazvati njihovo reagiranje i provedbu određenih postupaka
koji bi mogli imati utjecaja na rad organizacije. Primjer takve situacije je očekivanje
sigurnosnog tima organizacije da reagira tako da prekine mrežnu vezu između tvrtkine
unutarnje mreže s vanjskom internetskom mrežom i time onemogući normalan rad nekih
usluga. Najbitnija stvar u procesu provedbe ispitivanja ranjivosti je pravna zaštita, tvrtke
moraju shvatiti da je ono što ispitivači rade često ilegalno i kako bi se oni mogli zaštititi,
obavezno je da organizacija potpiše dokument s kojim će se odobriti ispitivanja i da će se
svi ispitivanjem dohvaćeni podaci smatrati povjerljivima te da će se na kraju ispitivanja
uništiti ili vratiti. Ovo je bitan korak koji se ne smije izostaviti pa makar se ispitivanja
provode u vlastitoj tvrtki jer se time ispitivači štite ako se tijekom ispitivanja desi nešto
neočekivano ili loše. [15]
Prikupljanje informacija i analiza
Nakon potrebnih dogovora i planiranja, sljedeći korak je prikupljanje što više informacija o
sustavima i mrežama koje su meta ispitivanja. Ako ispitani subjekt raspolaže online
stranicom, to je dobro mjesto za započeti prikupljanje informacija. Sve informacije
prikupljene u ovom koraku mogu biti od koristi u kasnijim koracima. Postoji mnogo alata
koji mogu biti od pomoći u ovom koraku koji će biti navedeni u kasnijim poglavljima. U
ovom koraku provodi se istraživanje mreže koje nam pruža uvid u pristupačne sustave,
očekivane informacije koje mogu biti od koristi su: domenska imena, imena poslužitelja,
informacije o pružatelju internetske usluge (ISP), IP adrese domaćina i ostale. Ovime
možemo saznati opseg IP adresa koje organizacija koristi. Najpoznatiji alat za provođenje
istraživanja mreže zove se Nmap i on će također biti naveden u kasnijem poglavlju.
Sljedeći korak kod prikupljanja informacija je skeniranje vrata (engl. Port) da vidimo koja
su sva vrata otvorena i zatvorena na sustavima unutar mreže. U ovom koraku, ako postoje
neke IP adrese koje organizacije ne žele ispitati, nad njima se skeniranje vrata ne provodi.
Bitno je napraviti provjeru pripadaju li IP adrese koje skeniramo organizaciji. Postoji
65,536 vrata. Neki alati u ovom koraku nude i mogućnost informiranja o operacijskom
sustavu koji se nalazi na ispitivanom računalu. [15]
Otkrivanje ranjivosti
Nakon spoznaje relevantnih informacija o ciljanim sustavima idući je korak određivanje
postoje li na tim sustavima neke ranjivosti. Na temelju informacija prikupljenih u
prethodnom koraku ispituje se postojanje ranjivosti na manualan ili automatizirani način.
Manualan način od ispitivača zahtjeva dobro znanje o konkretnim uslugama, programima i
drugim prisutnostima na sustavu kako bi znao pronaći ranjivosti dok se automatizirani
20
način provodi putem alata koji ispisuju listu svih pronađenih ranjivosti. Ustanovi li se
prisutnost ranjivosti ide se na idući korak.
Pokušaj napada
Nakon što se ustanovilo postojanje ranjivosti u sustavu, idući korak je identifikacija
prikladnih meta za napad. Potrebno je dobro procijeniti potrebno vrijeme i resurse potrebne
za izvođenje napada. Ispitivači često imaju ograničeno vrijeme unutar kojeg moraju izvršiti
ispitivanje pa se stoga nepotrebno trošenje vremena mora izbjeći ako je to moguće. Jedan
primjer kod kojeg bi se utrošak nepotrebnog vremena smanjio je prepoznavanje imena
računala na mreži ako postoji posebno imenovanje koje odražava njihovu svrhu,
prepoznavanje takvih računala ispitivaču govori koja računala mogu imati veći prioritet,
npr. radi li se o poslužiteljima ili običnim korisničkim računalima. Nakon odabira
prikladnih meta izvodi se pokušaj napada. Postoje alati koji omogućuju napade na
ranjivosti no često zahtijevaju dodatne korisničke prilagodbe. Iako je ustanovljeno da
ranjivosti postoje, neke će ranjivosti bili teško napasti pa će neki napadi ostati samo
mogući u teoriji, a problem može biti zahtijevanje prevelike količine resursa za napad ili
posebna oprema. Pokušaji napada ne moraju se isključivo svoditi na one računalne,
korištenjem tzv. socijalnog inženjeringa napad se usmjeruje na slabost ljudskog elementa
unutar organizacije tako da se napadač predstavi kao netko iz tvrtke i uz pomoć laži i
manipulacije zaposlenika dođe do nekih povjerljivih podataka. [15] Jedan od najpoznatijih
socijalnih inženjera i hakera je Kevin Mitnick. Mitnick je napisao nekoliko knjiga koje
opisuju njegove dogodovštine i načine manipulacije ljudima koje je iskorištavao kako bi
došao do zanimljivih i korisnih informacija, neke knjige koje se zainteresiranom čitatelju
preporučuju su: Ghost in the Wires, The Art of Deception, The Art of Intrusion i ostale.
Analiza i izvještavanje
Nakon provedbe svih prethodno opisanih koraka, sljedeći zadatak je pisanje detaljnog
izvještaja za organizaciju. Izvještaj bi trebao sadržavati pregled provedenog procesa
ispitivanja ranjivosti, analizu pronađenih ranjivosti i komentar na njih. Prilikom navođenja
pronađenih ranjivosti preporučuje se korištenje jasnih oznaka koje su ranjivosti bitnije a
koje manje, takvo označavanje pomaže organizaciji kod odlučivanja koje ranjivosti moraju
ispraviti prije ili koje ranjivosti moraju ostaviti ako nemaju dovoljno resursa da ih u tom
trenutku isprave sve.[15]
Čišćenje
U ovom koraku se čisti sav nered nastao kao posljedica izvođenja ispitivanja ranjivosti.
Primjer nereda mogu biti stvoreni korisnički računi tijekom provođenja ispitivanja ili drugi
slični događaji koji su bili korišteni pri napadu. Bitno je sačuvati sav detaljan opis
provedenih koraka kod provođenja ispitivanja kako bi se postupak čišćenja mogao provesti
ispravno. U najgorem slučaju postupak čišćenja može biti potpuni backup i vraćanje
podataka. Ispitivačeva je odgovornost da obavijesti organizaciju o svim izmjenama u
sustavu nastalim provedbom ispitivanja.[15]
21
4.4. Ograničenja ispitivanja ranjivosti
Glavna ograničenja ispitivanja ranjivosti su ta što ispitivači ne poznaju sve detalje o
sustavima koje ispituju. One ranjivosti koje ispitivači nisu niti detektirali, zaposlenicima
koji imaju pristup svim informacijama te ranjivosti mogu biti očigledne. Drugi problem je
taj što je provedba ispitivanja vremenski ograničena što nam omogućuje da saznamo tek
„sliku sigurnosti“ sustava i ne osigurava nas da smo pronašli sve ranjivosti. Neke se
ranjivosti mogu otkriti danima, mjesecima ili čak godinama kasnije, stoga je preporučljivo
da se ovakvi ispitivanja izvode redovito.
22
5. Ranjivosti sustava i uzroci njihovog nastanka
5.1. O ranjivostima
Ranjivosti računalnih sustava općenito opisuju slabosti sustava koje računalni sustav izlažu
rizicima od napada. Definiranje pojma ranjivosti nije jednostavno pa stoga postoji više
definicija od kojih su neke:
„Sigurnosna ranjivost je slabost u proizvodu koja napadaču može omogućiti
kompromitiranje integriteta, dostupnosti ili povjerljivosti tog proizvoda“
– Microsoft [16]
„Slabost imovine koja može biti iskorištena sa strane jedne ili više prijetnji“
– ISO 27005 [17]
Gdje je imovina bilo što predstavlja vrijednost organizaciji.
„Nedostatak ili slabost u dizajnu sustava, implementacije ili rada i upravljanja koja se
može iskoristiti za narušavanje sigurnosne politike sustava“
– IETF RC 2828 [18]
Postoje još mnoge definicije koje je moguće pronaći u različitim radovima, no sve se u
suštini svode na isto: potencijalnu otvorenost sustava za napade. Ranjivosti nije uvijek lako
otkriti jer i oni najiskusniji programeri ponekad rade greške za čije je otkrivanje potrebno
puno znanja o konkretnoj domeni i sposobnosti da mislimo kao napadač, odnosno da
razmišljamo o tome kako bi neki sustav koji je namijenjen da radi na jedan način natjerali
da se ponaša drugačije, a da je to nama korisno, neovisno radi li se o malicioznoj svrsi ili
ne. Iz tih razloga nije neobično da se neke ranjivosti otkriju nakon više dana, mjeseci ili
godina, što je za tvrtke noćna mora jer se ne može znati je li neki zloćudni napadač znao za
tu ranjivost puno prije nego je ona otkrivena i iskorištavao je kako bi na primjer krao
podatke organizacije ili prisluškivao zaposlenike. Organizacije imaju dužnost
obavještavanja javnosti ako na njihovim sustavima dođe do napada što ih dovodi u vrlo
neugodan položaj jer time gube kredibilitet i povjerenje klijenata, a time i poslovanje.
Ekonomski utjecaj računalnih napada na organizacije analiziran je u [8] i [19]. Iz razloga
jer kompanije često žele zataškati propuste u svojim proizvodima ili napade koji su
rezultirali nekim propustima, osmišljen je način otkrivanja ranjivosti javnosti.
Kada treća strana (na primjer korisnik usluga organizacije) otkrije ranjivost, postavlja se
složeno pitanje tko, što i kada reći. Informacije o ranjivostima programa, jednom puštene,
mogu prouzročiti to da organizacija reagira brzo i ispravi nedostatke, no međutim ta ista
radnja može povećati rizike za korisnike jer to omogućuje zlonamjernim napadačima da
iskoriste ranjivosti prije nego li se one stignu zakrpati. Postoje različite vrste otkrivanja
ranjivosti:
• neotkrivanje ranjivosti
23
• potpuno otkrivanje
• odgovorno otkrivanje
Neotkrivanje ranjivosti
Najjednostavniji oblik otkrivanja, kod ovakvog otkrivanja istraživač nakon otkrivanja
ranjivosti, ranjivost drži tajnom i ne otkriva je nikome. Ovakvo je ponašanje
karakteristično za crne šešire (black-hat hakere) koji takvo znanje koriste u svoju korist
iskorištavajući ranjivosti sustava za provođenje napada. Drugi razlog neotkrivanja (engl.
Non-Disclosure) ranjivosti je lijenost istraživača da kontaktira proizvođača ili organizaciju.
Neotkrivanje ranjivosti je često kritizirano jer dopušta da sustav ostane nezakrpan i ne
motivira proizvođače da zakrpaju ranjivost. Ostale varijacije neotkrivanja ranjivosti mogu
imati još gori rezultat, na primjer informacije o pronađenoj ranjivosti mogu biti prodane
zlonamjernim napadačima za velik novac na crnom tržištu.[20]
Potpuno otkrivanje
U ovom modelu, prilikom otkrivanja ranjivosti istraživač informira javnost tako da odmah
objavi specifikacije pronađene ranjivosti kao što su: kako je ona pronađena, koji su
programski proizvodi i verzije njome pogođeni, ponekad kako se ranjivost iskorištava i
kako se sustavi mogu zaštititi od te ranjivosti. Postoje brojni argumenti za i protiv
potpunog otkrivanja (engl. Full-Disclosure), jedan argument je da je takvo otkrivanje
širokoj zajednici etički korektno kako bi ostali korisnici ili organizacije mogli na vrijeme
zakrpati ranjivost ako postoji, a drugi argument je da takav postupak motivira proizvođače
i organizacije da što prije zakrpaju svoje ranjivosti. Osim navedenih prednosti, potpuno
otkrivanje istraživaču koji je prvi pronašao ranjivost pridaje zasluge i postaje cjenjeniji
unutar istraživačke zajednice. S druge strane, potpuno otkrivanje može povećati rizik
napada na tu ranjivost jer proizvođači ili organizacije ne stignu na vrijeme donijeti
potrebne zakrpe, što je potpuno suprotno mišljenje od onoga da potpuno otkrivanje štiti
korisnike koji često nisu toliko svjesni sigurnosti sustava jer ih to ne zanima. Iako potpuno
otkrivanje tjera organizacije da što brže reagiraju na pronalazak ranjivosti i donesu zakrpe,
ispitivanje zakrpi, ispitivanje i dostupnost mogu potrajati danima, tjednima ili mjesecima
ako se radi o velikoj organizaciji, što ostavlja veliki vremenski raspon unutar kojeg je
ranjivost poznata, a nije zakrpana. Postoje jasni slučajevi gdje ima smisla potpuno otkriti
neku ranjivosti široj javnosti radi njihove sigurnosti: ako je proizvođač nedovoljno
odgovoran i često ne reagira na vrijeme ili u slučaju kada je ranjivost široko poznata
zlonamjernoj zajednici pa ju je moralno ispravno otkriti [20]
Odgovorno otkrivanje
Odgovorno otkrivanje (engl. Responsible-Disclosure) je kompromis između prethodno
navedenih vrsta otkrivanja. To je djelomično otkrivanje kod kojeg se ranjivost nakon što je
otkrivena, prezentira organizaciji ili proizvođaču i daje se razuman vremenski period (na
primjer 30 dana) unutar kojeg bi organizacija trebala zakrpati ranjivost i zakrpe učiniti
dostupnima svojim korisnicima. Unutar tog perioda ranjivost se ne otkriva široj javnosti, a
ako taj period istekne, istraživač potpuno otkriva ranjivost široj javnosti no bez detaljnih
24
opisa kako bi se ta ranjivost mogla iskoristiti. Odgovorno otkrivanje je najprihvatljiviji
oblik otkrivanja unutar istraživačke zajednice te se i najčešće koristi. [20]
Istraživači i organizacije dijele isti cilj: smanjenje rizika informacijskim sustavima i
zaustavljanje zlonamjernih aktivnosti nad njima. Oboje žele informirati javnost o
ranjivostima ali dolazi do neslaganja kada se treba odlučiti oko nekih ključnih pitanja kao
što su kada, kome i kako otkriti ranjivosti, stoga su organizacije i pojedinci predložili i
osmislili različite politike otkrivanja, od kojih su neke:
• NTBugtraq (Cooper, Srpanj 1999.)
• Full Disclosure Policy (RP, Lipanj 2000.)
• Vulnerability disclosure (CERT/CC, Listopad 2000.)
• Responsible Vulnerability Disclosure Process (Christey i Wysopal, Veljača 2002.)
• Vulnerability Disclosure Framework (NIAC, Siječanj 2004.)
• Guidelines for Security Vulnerability Reporting and Response (OIS, Rujan 2004.)
5.2. Vrste i uzroci ranjivosti
Neispravna validacija unosa
Prepunjenje spremnika
Validacija unosa koristi se kako bi se osiguralo da podaci uneseni u program napadaču ne
omogućavaju pristup nenamijenjenim funkcionalnostima ili eskalaciju njegovih privilegija.
Uzrok ranjivosti preljeva spremnika (engl. Buffer Overflow) je programerska greška.
Ovakve se ranjivosti dešavaju najčešće jer programer u toku programiranja razmišlja o
tome što bi se trebalo predati kao unos, ili što bi se moglo unijeti kao greška, ne
razmišljajući na način „izvan kutije“ te što bi se desilo da je umjesto očekivanog
korisničkog imena unos bio niz od 1000 specifičnih znakova. Preljev spremnika dešava se
kada se u programu u nekakav spremnik pokušava upisati više podataka nego što u njega
stane, odnosno više od prostora koji je za neki spremnik rezervirano u memoriji. Dodatni
podaci mogu se preliti iz tog spremnika u susjednu memoriju i pregaziti njen sadržaj,
rezultirajući neispravnim ili neočekivanim radom programa. Pažljivim i uspješnim
prelijevanjem spremnika napadač može postići izvršavanje napadačevog vlastitog koda ili
barem srušiti program. Ovo je jedna od najčešćih ranjivosti. [21]
Preporuke za sprječavanje ranjivosti: Sav kod bi trebao biti napisan tako da provjerava
unesene podatke, svi programeri bi trebali biti upoznati i znati primijeniti praksu sigurnog
kodiranja, te bi se svi dijelovi koda čija je zadaća primanje korisničkih podataka trebali
provjeravati i ispitati. Treba se provjeravati duljina unosa, a duljina spremnika ne smije biti
određena posebnom unesenom vrijednošću. Ove mjere je posebno bitno provoditi u
programima pisanim u C/C++ jer sadrže funkcije za upravljanje memorijom koje se
jednostavno mogu koristiti na nesiguran način. [21]
25
Jednostavan primjer ranjivosti preljeva spremnika:
1. #include <stdio.h> 2. 3. int main(int argc, char **argv){ 4. 5. char buf[8]; // spremnik za 8 znakova 6. gets(buf); // čitaj sa standardnog ulaza u spremnik 7. printf("%s\n", buf); // prikaži podatke spremljene u spremniku "buf" 8. 9. return 0; 10. }
U kodu iznad postoji ranjivost. Analizirajući dio po dio može se ustanoviti gdje se
ranjivost nalazi. Na 5. liniji nalazi se spremnik koji može sadržavati 8 znakova, na 6. liniji
je poziv funkcije gets koja kao argument prima pokazivač na spremnik unutar kojeg će se
spremiti podaci pročitani sa standardnog ulaza, odnosno tipkovnice. Naredba na 7. liniji
jednostavno ispisuje sadržaj spremnika. Pokretanjem programa uz unos „ABCD“
dobivamo sljedeći ispis:
Slika 5.1. Ispis programa uz argument „ABCD“
Sve se čini dobro. Ako se u spremnik spreme podaci duljine veće od osam znakova dogodi
se slijedeće:
26
Slika 5.2. Ispis programa uz argument „ABCDEFGHIJKLM“
Vidimo da se u ovome slučaju program srušio. Ovaj je primjer jednostavan i služi samo za
prikaz ranjivosti, u praksi su takvi programi puno složeniji.
Nedostatak provjera granica
Ranjivost nedostatka provjere granica (engl. Lack of Bounds Checking) slična je
prethodnoj. Nedostatak provjere jesu li unesene vrijednosti u očekivanom rasponu. Ovakva
vrsta ranjivosti može nastati tijekom pristupa listama. Ako se unese neprovjerena
vrijednost izvan očekivanih granica, može doći do rušenja programa i usluga. [21]
Preporuke za sprječavanje ovakvih ranjivosti iste su kao i kod ranjivosti preljeva
spremnika, potrebna je validacija svih kritičnih mjesta kod kojih se obavlja interakcija
između korisnika i programskih objekata.
Umetanje naredbi
Umetanje naredbi (engl. Command Injection) omogućuje izvršavanje proizvoljnih naredbi i
koda po izboru napadača. Primjer takvog napada dešava se ako zlonamjerni korisnik unese
znak, na primjer dvotočku koja odvaja kraj jedne naredbe i početak druge i time
omogućuje napadaču unos potpuno nove i nepovezane naredbe koja se ne bi smjela
izvoditi. Ovakve ranjivosti dešavaju se na sljedeći način:
1. podaci koji ulaze u sustav dolaze iz neprovjerenih izvora
2. podaci su dio niza znakova koji se izvodi kao programska naredba
3. izvođenjem naredbe aplikacija napadaču pruža prava ili sposobnosti koje
napadaču inače ne bi bile dostupne
Preporuke za sprječavanje ranjivosti: Ako je moguće, koristiti knjižnične pozive umjesto
vanjskih procesa za reprodukciju željene funkcionalnosti. Koristiti whitelisting (dopuštanje
onoga za što smo sigurni da je ispravno), to jest prihvaćati samo one naredbe za koje smo
sigurni da su dobre i koje odgovaraju zadanoj specifikaciji, a ako ne odgovaraju tada ih
treba ignorirati. [21]
Primjer ubrizgivanja naredbi [22]:
27
Pretpostavimo da imamo web aplikaciju koja korisnicima omogućava pretragu tekstualnih
datoteka na disku, korisnik upisuje termin kojeg želi pronaći unutar datoteka, a aplikacija
ispisuje datoteke u kojima je termin pronađen. Kod koji omogućuje ovakvu funkcionalnost
može izgledati ovako:
1. $direktorij = "datoteke/"; 2. $termin = $_POST['termin']; 3. 4. $rezultat = shell_exec('grep ' . $termin . ' ' . $direktorij . '*'); 5. 6. echo $rezultat;
Riječ za pretraživanje se aplikaciji šalje putem POST zahtjeva. Uobičajen i očekivan način
primjene bio bi ga se putem POST zahtjeva pošalje termin danas, pa će naredba koja se
izvodi u ljusci operacijskog sustava izgledati ovako:
grep danas datoteke/*
Ova će naredba u datotekama koje se nalaze u direktoriju datoteke tražiti sve datoteke koje
sadrže riječ danas. Zlonamjerni korisnik mogao bi tražiti riječ test test; cat/etc/passwd #.
Ovakav unos nije očekivan i naredba koja se izvršava izgledala bi ovako:
grep test test; cat/etc/passwd # datoteke/*
Ovakvim unosom se naredba dijeli na dvije naredbe, prva naredba koja traži riječ test u
datoteci test i druga naredba koja prikazuje sadržaj datoteke passwd koja sadrži podatke o
korisničkim računima. Ovaj primjer pokazuje koliko su zapravo opasne ovakve ranjivosti
jer dopuštaju izvođenje proizvoljnog koda na udaljenom računalu.
Umetanje programskog koda SQL
Danas su SQL baze prisutne gotovo svugdje. Internetske stranice koje koriste baze
podataka često su mete napada na ovakve ranjivosti. Ranjivosti se jednostavno detektiraju i
iskorištavaju. Ranjivost leži u tome što SQL ne razlikuje podatke i kod, pa se stoga na
primjer u polja za unos korisničkih podataka na stranici mogu ubrizgivati specifično
napravljeni nizovi znakova koje bi SQL protumačio kao kod i time izvršio radnje korisne
za napadača. Ovakvim se napadima mogu ukrasti čitave baze podataka koje sadrže
osjetljive podatke kao što su korisničke lozinke, ključevi i slično.
Preporuke za sprječavanje ranjivosti: Izvršavati SQL naredbe korištenjem pripremljenih
naredbi, parametriziranih upita ili spremljenih procedura. Ako je moguće, koristiti
strukturirane mehanizme koji automatski primjenjuju odvajanje između podataka i koda
tako da dodaju dodatno kodiranje i validaciju. [21]
Jednostavan primjer SQL umetanja (engl. SQL Injection) [22]:
U praksi, SQL upiti koji se izgrađuju na stranici nastaju miješanjem programerskog koda i
korisničkog unosa, zamislimo da imamo web aplikaciju koja služi za autentifikaciju
korisnika provjeravajući korisničko ime i lozinku:
1. function provjeri_korisnika(){ 2. $upit = "SELECT * FROM korisnici WHERE kor_ime='".$_POST['kor_ime']."' 3. AND lozinka='".$_POST['lozinka']."'"; 4.
28
5. $rez = mysql_query($upit); 6. 7. if(mysql_num_rows($upit) == 0) 8. // podaci nisu dobri 9. return FALSE; 10. else 11. // podaci su dobri 12. return TRUE; 13. }
Primjer očekivanog unosa podataka je na primjer da korisnik upiše ime „pero“ i lozinku
„123“, tada je upit koji će se obaviti sljedeći:
1. SELECT * FROM korisnici WHERE kor_ime='pero' AND lozinka='123'
Drugi primjer unosa je neočekivani unos koji može izmijeniti namjenu i ponašanje upita:
1. SELECT * FROM korisnici WHERE kor_ime='pero' AND lozinka='' OR 1=1 -- '
U ovome će slučaju upit vratiti sve redove iz tablice „korisnici“ jer se predana lozinka: „'
OR 1=1 -- ' “ interpretira kao dio koda koji predstavlja uvjet koji će uvijek bit istinit.
Vidimo da ovakve ranjivosti napadaču omogućuju prikupljanje osjetljivih informacija iz
baze podataka.
Podvaljivanje web programa
Ranjivosti podvaljivanja web programa (engl. XSS, Cross-Site Scripting) napadaču
omogućavaju umetanje koda u ranjive web stranice. Napadačev kod izvodi se na klijentu
sa privilegijama servera. Glavni uzrok XSS ranjivosti isti je kao i kod SQL ubrizgavanja,
nedovoljna provjera unesenih podataka. Napadač može ubrizgati maliciozan kod na neku
poveznicu na stranici koja će taj isti kod vratiti internet pregledniku žrtve koji će taj kod
izvršiti, te potencijalno iskorištavajući neke od ranjivosti preglednika (ako postoje)
kompromitirati računalo žrtve. XSS napadi oslanjaju se na interakciju sa žrtvom pa se
stoga najčešće pojavljuju kao poveznice poslane od strane napadača. Najčešći napad
izvršen uz pomoć XSS-a uključuje otkrivanje informacija korisničkih kolačića. Zbog toga
što stranica koja zahtijeva pokretanje zlonamjernog koda ima pristup korisničkim
kolačićima i maliciozan kod ima također. Krađom kolačića napadač može slati zahtjeve
predstavljajući se kao korisnik-žrtva. Drugi napadi koji iskorištavaju ovu ranjivost mogu
biti:
• otkrivanje korisničkih informacija
• instaliranje trojanskih konja
• preusmjeravanje korisnika na druge stranice
• pokretanje Active X kontrola (pod Microsoft Internet Explorerom)
• …
Preporuke za zaštitu od ranjivosti: Web stranice se trebaju temeljito provjeravati i ispitati
na deformirane unose. [21]
Primjer ranjivosti [22]:
29
Pretpostavimo da imamo web aplikaciju koja omogućuje unos i pregled komentara.
Sljedeći kod korisnikov komentar prihvaća i upisuje u bazu podataka:
1. $upit = "INSERT INTO komentar (datum,sadrzaj) VALUES (NOW(), '." 2. .$_POST['komentar_sadrzaj']."')"; 3. $rez = mysql_query($upit);
Aplikacija ima i kod koji prikazuje sve upisane komentare u obliku redova iz baze
podataka:
1. $upit = "SELECT * FROM komentar"; 2. $rez = mysql_query($upit); 3. 4. while($red = mysql_fetch_array($rez)){ 5. echo '<p>' . $red['sadrzaj'] . '</p>'; 6. echo '<hr>'; 7. }
Ovakav je kod ranjiv na XSS. Ranjivost dolazi do izražaja kada neki zlonamjerni korisnik
kao unos u obliku komentara napiše slijedeće znakove:
1. <script type="text/javascript"> 2. alert("Pozdrav!!!"); 3. </script>
HTML datoteka koja se prikazuje korisniku može izgledati ovako:
1. <p>Prvi komentar</p> 2. <hr> 3. <script type="text/javascript">alert("Pozdrav!!!");</script> 4. </hr> 5. <p>Drugi komentar</p>
To znači da će web preglednik sadržaj drugog paragrafa protumačiti kao HTML kod, a ne
tekstualni komentar, što će rezultirati izvršavanjem JavaScript funkcije alert i preglednik
će izbaciti ovakav prikaz:
Slika 5.3. HTML stranica s neispravnim prikazom
Ispravan prikaz trebao bi biti:
30
Slika 5.4. HTML stranica s ispravnim prikazom
Nepravilno ograničavanje putanje do direktorija s ograničenim pristupom
Ovakve se ranjivosti dešavaju kada se putanje do datoteka ne provjeravaju. Ovakve se
ranjivosti najčešće povezuju s web aplikacijama iako se ovakve ranjivosti mogu pojaviti i
kod drugih aplikacija. Do ovih ranjivosti dolazi kada se vanjski unos koristi da bi se
izgradila putanja do određene datoteke ili direktorija koji se nalazi unutar nekog zaštićenog
direktorija-roditelja. Program koji prima vanjski unos ne neutralizira posebne elemente i
znakove koji se prilikom izgradnje mogu pretvoriti u lokaciju koja bi trebala biti
nepristupačna. Napadač tada može čitati, stvarati ili izmjenjivati datoteke i time izvršavati
određeni kod ili naredbe, srušiti sustav i izvršavati DoS napade.
Preporuke za zaštitu od ranjivosti: Kao i kod ranijih ranjivosti, najbitnije je koristiti
validaciju unesenih podataka, koristiti listu prihvatljivih unosa koji odgovaraju određenim
specifikacijama i odbiti bilo kakav unos koji ne odgovara tim specifikacijama. [21]
Slaba sigurnost koda
Slaba sigurnost koda odnosi se na probleme u kodu koji nisu nužno ranjivosti, ali ukazuju
na to da se proizvod ne izrađuje pravilno te da ovakvi proizvodi puno češće sadrže
ranjivosti.
Korištenje potencijalno opasnih funkcija
Potencijalno opasne funkcije unutar programa omogućavaju nastanak ranjivosti ako se
koriste na pogrešan način. U dokumentacijama jezika često je jasno napomenuto ako se
radi o opasnoj funkciji i koji su načini korištenja takvih funkcija ili se navode zamjenske
funkcije. Problem kod ovakvih funkcija je taj što je provjera unosa zadatak programera.
Primjer takve funkcije je funkcija strcpy u C/C++. Ako se na ikakav način može utjecati na
parametre predane toj funkciji, postoji rizik od nastanka ranjivosti prelijevanja spremnika.
Većina takvih funkcija ima svoje druge sigurne oblike, u ovom slučaju to je funkcija
strncpy koja kao parametre osim izvora i odredišta prima i veličinu niza znakova koje je
potrebno kopirati. [21]
Zaštita od opasnih funkcija se radi tako da se sav napisani kod kontrolira ručnim i
automatiziranim procesima.
31
Neispravna uporaba NULL pokazivača
Neispravna uporaba NULL pokazivača kao posljedicu može imati rušenje i izlaz iz
programa. Sprječavanje ovakvih problema može se izvoditi tako da se rade provjere
prilikom korištenja pokazivača ili implementacijom upravljanja iznimkama. Tim bi se
provjerama trebali spriječiti gotovo svi problemi nastali neispravnom uporabom NULL
pokazivača. [21]
Dopuštenja, privilegije i kontrola pristupa
Ovo poglavlje također ne opisuje izravne ranjivosti već propuste ili loše prakse koje
potencijalno mogu dovesti do stvaranja ranjivosti.
Neispravna kontrola pristupa (autorizacija)
Neispravna kontrola pristupa korisnicima koji ne moraju nužno biti zlonamjerni dopušta
pristup resursima za koje inače nemaju pristup i time ih mogu kompromitirati. Kontrola
pristupa može sadržavati više računa na jednom računalu i pridavanje minimalno potrebnih
dopuštenja korisnicima za obavljanje svog posla.
Izvođenje s nepotrebnim privilegijama
Naredbe ili usluge koje korisnici računa mogu koristiti trebaju biti ograničeni pravima tog
korisnika. Nepotrebno izvođenje naredba kao administrator sustava može dovesti do
iskorištavanja takvog pristupa i namjernog ili nenamjernog pristupa određenim podacima.
U privilegiranom načinu rada trebaju se pokretati samo one usluge i programi za koje je
takav način rada nužno potreban za njihov ispravan rad i željeni učinak.
Neispravna autentifikacija
Neispravna autentifikacija uzrok je mnogim ranjivostima sustava. Usluge koje sadrže slabe
autentifikacijske metode postaju nesigurni i mogu biti iskorišteni za dobivanje većih
privilegija na sustavu.
Zaobilaženje autentifikacije
Računalni program ne provodi ispravno proces provjere korisničkih podataka dopuštajući
zaobilaženje postupka autentifikacije. Postupak zaštite uključuje temeljito ispitivanje web
aplikacija i programa ispitujući kako ponašanje prilikom davanja deformiranog unosa. [21]
Klijentska provjera poslužiteljske sigurnosti
Aplikacije koje provjeravaju autentičnost korisnika na klijentskoj strani dopuštaju
zlonamjernim napadačima da ukradu korisničke podatke ili zaobiđu proces lokalne
autentifikacije npr. reverznim inženjerstvom. Sprječavanje ovakvih situacija rješava se
implementacijom robusne autentifikacije na strani poslužitelja, a one provjere koje se
provjeravaju lokalno na klijentu trebaju se udvostručiti i provjeravati i na poslužitelju. [21]
Kanal pristupačan trećoj strani
Napad čovjekom u sredini (engl. Man in the middle attack)moguć je ako se u tijeku
komunikacije ne vrši ispravna provjera identiteta obje strane ili integritet kanala nije dobro
32
osiguran, tako da je dostupan akteru koji nije dio te komunikacije koji može utjecati na
kanal ili podatke koji se njime prenose i time manipulirati komunikacijom. Napad
čovjekom u sredini već je opisan ranije. [21] Ovakvi nedostaci u sustavu mogu se ispraviti
tako da se uvede bolja autentifikacija oba aktera koja sudjeluju u komunikaciji i da se
kanal osigura primjenom sigurnih kriptografskih algoritama. Treba se provoditi i provjera
integriteta poruka kako bi se ustanovilo ako su podaci bili mijenjani tijekom prijenosa.
Nedovoljna provjera autentičnosti podataka
Cross-Site Request Forgery (CSRF)
Kada je poslužitelj dizajniran tako da može primiti zahtjev od klijenta bez dodatne provjere
da je zahtjev bio namjerno poslan, moguće je da napadač prevari klijenta da nenamjerno
pošalje zahtjev web poslužitelju koji bi ga interpretirao kao valjani zahtjev i time bi
napadaču bilo omogućeno izvođenje bilo kakvih aktivnosti kao i običnom korisniku.
Prijedlog za sprječavanje ovakvih scenarija može biti dodavanje nasumičnog tokena svakoj
formi na stranici i provjeravati odgovara li token klijenta tokenu spremljenom na
poslužitelju za tu sesiju. Token bi trebao biti dovoljno dugačak za sprječavanje napada
grubom silom (engl. Brute Force) stoga je duljina od 15 znakova preporučljiva. [21]
Nepostojanje provjere integriteta podataka
Integritet podataka provjerava se sažetkom (engl. Hash ili Checksum) koji jednom
izračunat nad nekim nizom podataka jednoznačno određuje te podatke. Ako je provjera
integriteta nepostojeća, napadač može izmjenjivati podatke u prijenosu i time ostvariti
korist. Pojednostavljeni primjer bio bi kada osoba A iz banke A' prebacuje neki iznos na
račun u banku B' osobi B. Ako osoba C u toku prijenosa može presresti podatke (napadom
čovjeka u sredini) i izmijeniti odredište podataka tako da umjesto banke B' iznos ide u
banku C' osobe C, tada bi se zbog neprovjeravanja integriteta podataka ovakva transakcija
uspješno provela sa bankovnog računa osobe A na račun osobe C. Provjera integriteta
mora se provoditi na što je moguće nižem sloju komunikacije kako bi se u kasnijim, višim
slojevima mogle vršiti druge provjere. Rješenje ovakvog problema je dodavanje sažetka u
komunikacijski protokol što osigurava da se integritet podataka može provjeriti prije
njihove uporabe. Računanje sažetka mora se izvoditi primjenom sigurnih kriptografskih
algoritama za izračunavanje sažetka, primjer takvih algoritama je algoritam SHA3.
Naglasak je na sigurnim algoritmima jer ako je napadač može izmisliti podatke čiji sažetak
odgovara sažetku originalne poruke, sustav za provjeru sažetaka prihvatio bi napadačeve
podatke ne znajući sadrže li zlonamjeran sadržaj. U vrijeme pisanja ovog rada Google je
uspio pronaći koliziju primjenom algoritma SHA1 te se stoga taj algoritam službeno
smatra nesigurnim.
Preuzimanje koda bez provjere integriteta
Nesigurnost ovakvog postupka očigledna je, napadač s pristupom poslužitelju na kojem se
nalazi preuzimani kod može izmijeniti taj kod ili ga zamijeniti sa nekim proizvoljnim
kodom koji će se kasnije, nakon što je preuzet sa strane korisnika, izvršiti na njegovom
računalu. [21] Ovakvim se napadima vrlo efikasno mogu napraviti mreže računala koje
napadaču mogu koristiti za daljnje napadanje njegovih žrtava napadom uskraćivanja
33
usluge. Rješenje ovakvom problemu je dodavanje kriptografskih sažetaka u ažuriranim
verzijama koda kojima se provjerava njegov integritet.
Kriptografski problemi
Nepostojanje enkripcije osjetljivih podataka
Samo ime govori kako nepostojanje enkripcije takvih podataka podatke čini dostupnima
svima koji ih uspiju dohvatiti. Jednostavan primjer je slanje nekriptiranih lozinki putem
nesigurnog kanala što omogućuje napadaču da presretne podatke i jednostavno ih pročita.
Rješenje je jednostavno: kanale preko kojih se šalju osjetljive informacije potrebno je
zaštititi enkripcijom, a kao dodatan sloj zaštite preporučuje se kriptirati i podatke kako bi
se zaštitili od napada na rubnim točkama komunikacije.
Korištenje probijenih ili rizičnih kriptografskih algoritama
Kao prethodno navedeni SHA1 algoritam, neki su algoritmi visokog rizika zato što mogu
sadržavati ranjivosti zbog njihove implementacije ili zato što su otkriveni novi napadi na
njih ili je trenutna računalna oprema dovoljno snažna da provede napad grubom silom u
razumnom vremenu. Pojam razumnog vremena varira, postoje napadi koje trenutno mogu
izvršiti samo neke organizacije koje raspolažu s dovoljno resursa i računalne snage da
takve napade uspiju provesti kroz tjedne ili mjesece, dok će takva snaga široj javnosti biti
nedostupna možda narednih par stoljeća. Neovisno o tome, napadi koji su uspješno
izvedeni prestaju biti teorijski te se algoritmi koji su tim napadima probijeni smatraju
nesigurnim i ne bi se smjeli više koristiti.
34
6. Podjela alata za ispitivanje ranjivosti
Tijekom ručne analize ranjivosti, programeri i ispitivači su razvijali vlastite programe za
ispitivanje ranjivosti koji su prerasli u ozbiljne alate prihvaćene od strane istraživačke
zajednice koji služe kao osnovni alati za ispitivanje. Uvijek je moguće napisati svoje
programe za ispitivanje ranjivosti, a ovi alati obuhvaćaju najčešće primjenjivane prakse za
postizanje određenog cilja ili se koriste kao pomoćni programi za dostavu glavnog
programa kojeg piše programer. Alati za ispitivanje ranjivosti dijele se na više kategorija, u
okviru ovog rada neće biti navedeni isključivo alati za ispitivanje ranjivosti već i oni koji
potpomažu samom procesu ispitivanja ranjivosti. U svakome će poglavlju biti naglasak na
neke poznatije alate dok će drugi alati biti samo navedeni. Neki se alati mogu pojavljivati u
više kategorija iz razloga jer imaju više namjena od kojih su neke sporedne, a neke
primarne.
6.1. Alati za sakupljanje informacija
Alati za sakupljanje informacija pružaju potporu prvom koraku procesa ispitivanja
ranjivosti. Ovi alati služe kako bi ispitivač dobio korisne informacije o sustavu kojeg želi
ispitati, neke od informacija uključuju: IP adresu, otvorena i zatvorena vrata (port),
operacijski sustav i ostali.
Alat Nmap
Nmap je program koji primarno služi za otkrivanje domaćina i usluga na računalnim
mrežama, time mapirajući mrežu. Ovo je jedan od najpoznatijih alata koji se danas koriste
u ispitivanju ranjivosti u tu svrhu. Nmap nudi mnogo ugrađenih opcija za ispitivanje
ranjivosti kao i opcija za podržavanje korisničkih skripti. Počeo je s razvojem kao alat za
Linux operacijski sustav, a danas je dostupan i za Windows, Solaris i ostale. Zenmap je
naziv za grafičko sučelje za upravljanje Nmap-om. Autor programa je Gordon Lyon.
35
Slika 6.1. Zenmap grafičko sučelje
Alat Wireshark
Uz Nmap, ovaj je alat na vrhu ljestvice popularnosti u industriji ispitivanja ranjivosti. On je
program otvorenog koda koji služi za analizu paketa tako da presreće sve pakete koji su
dostupni mrežnoj kartici. Ima mnogo opcija filtriranja i prikazuje jako detaljne informacije
o uhvaćenim paketima, a osim toga prepoznaje i mnogo komunikacijskih protokola.
Dostupan je na Linux, Windows, BSD, Solaris i ostalim operacijskim sustavima. Glavni
autor je Gerald Combs.
36
Slika 6.2. Grafičko sučelje Wiresharka
Alat DMitry
DMitry je program dostupan na UNIX operacijskim sustavima koji se izvodi preko
naredbenog retka. Osnovna funkcionalnost dozvoljava prikupljanje poddomena, adresa
elektroničke pošte, TCP skeniranje vrata, skeniranje domena i više. Autor je James Greig.
Alat Maltego Teeth
Ovo je pridodana funkcionalnost programu Maltego koja istraživačima omogućuje
utvrđivanje veza u stvarnome svijetu između: ljudi, grupa ljudi, organizacija i kompanija,
web stranica, domena, IP adresa i omogućuje prikaz tih veza. Autor aplikacije je Paterva.
Alat Miranda
Miranda je program dizajniran za otkrivanje, ispitivanje i interakciju usmjeritelja.
Omogućuje otkrivanje usmjeritelja, kontrolu IP adresa i vrata, jednostavno prebrojavanje
usmjeritelja, sposobnost slanja naredba na usmjeritelje i slično. Program je napisan u
programskom jeziku Python i dostupan je za Linux operacijski sustav. Autor aplikacije je
Craig Heffner.
Alat P0f
P0f je alat koji koristi pasivne metode uzimanja otisaka kako bi identificirao aktere u
TCP/IP komunikacijama. Podržava vrlo brzu i skalabilnu identifikaciju operacijskog
sustava i programa na obje strane nove TCP konekcije. Alat je dostupan za Linux
operacijski sustav. Autor aplikacije je Michal Zalewski.
37
Alat Netcat
Ovaj vrlo poznati alat osim za izradu konekcija i povezivanje može poslužiti i za
skeniranje vrata, što ga čini korisnim kod ispitivanja ranjivosti.
Ostali alati za sakupljanje informacija:
Amap, acccheck, ace-voip, Automater, bing-ip2hosts,braa, CaseFile, CDPSnarf, cisco-
torch, Cookie Cadger, copy-router-conig, dnmap, dnsenum, dnsmap, DNSRecon,
dnstracer, dnswalk, DotDotPwn, enum4linux, enumIAX, Fierce, Firewalk, fragroute,
fragroute, Ghost Phisher, GoLismero, goofile, hping3, InTrace, iSMTP, lbd, masscan,
Metagoofil, nbtscan-unixwiz, ntop, Parsero, Recon-ng, SET, smtp-user-enum, snmp-check,
sslcaudit, SSLsplit, sslstrip, SSLyze, THC-IPV6, theHarvester, TLSSLed, twofi, URLCrazy,
WOL-E, Xplico. [23]
6.2. Alati za analizu ranjivosti
Ovi alati služe za analizu sustava i pretragu za poznatim ranjivostima. Primjenjuju se u
drugom koraku procesa ispitivanja ranjivosti. Njihova je uloga dati što više informacija o
pronađenim ranjivostima i stvaranje izvješća koje je korisno menadžerskom dijelu firme
kako bi im pomoglo prilikom daljnjih odluka.
Alat Burp suite
Ovaj alat napisan u Javi koristi se kao platforma za sigurnosno ispitivanje web aplikacija.
Skup uključenih programa može se koristiti za ručno ili automatizirano ispitivanje. Vlasnik
je PortSwiger. Dostupne su plaćena i besplatna verzija.
Slika 6.3. Sučelje Burp Suite-a
Alat Nessus
Nessus je jedan od najpopularnijih skenera ranjivosti na tržištu. Namijenjen je za UNIX
sustave. Ima više od 70 000 priključaka koji mu proširuju funkcionalnost. Ključne
38
mogućnosti su mu udaljene i lokalne provjere sigurnosti, podrška za pisanje skripti u
vlastitom jeziku.
Slika 6.4. Nessus sučelje
Alat OpenVAS
Open Vulnerability Assessment System je okvir koji se sastoji od više usluga i alata i nudi
opsežnu mogućnost skeniranja ranjivosti i njihovim upravljanjem. Sadrži oko 33,000
ranjivosti. Proizvod je besplatan za Linux i Windows operacijski sustav. Nastao je kao
kopija Nessusa 2005. godine kada je Nessus prestao biti besplatan.
Slika 6.5. OpenVAS sučelje
Alat SAINT
SAINT je komercijalni alat za analizu ranjivosti. Kao i Nessus, neko je vrijeme bio
besplatan no danas postoji samo komercijalna verzija. SAINT je napravljen za Linux i Mac
OS X operacijske sustave.
39
Alat OWASP ZAP
Ovaj alat je besplatan alat za Linux, Windows i Mac OS X operacijske sustave koji služi
kao skener ranjivosti web aplikacija. Lakoća korištenja čini ga korisnim novim
ispitivačima kao i onim profesionalnim. Napisan je u Javi. Neke od mogućnosti su:
automatizirano skeniranje, pasivno skeniranje, podržava skriptne jezike i služenje kao
proxy poslužitelj.
Alat Retina
Retina je alat aktivan od 1998. Ovaj je program jedan od starijih i najsofisticiranijih alata
za analizu ranjivosti dostupnih na tržištu. Dostupna je kao samostalan program ili kao dio
Retina CS upraviteljske platforme. Omogućava efikasno identificiranje ranjivosti, zakrpa
koje nedostaju, slabosti u konfiguracijama i ostale. Ne postoji besplatna verzija i dostupan
je za Windows operacijski sustav.
Ostali alati za analizu ranjivosti:
BBQSQL, BED, cisco-auditing-tool, cisco-global-exploiter, cisco-ocs, cisco-torch, copy-
router-config, DBPwAudit, Doona, DotDotPwn, Greenbone Security Assistant, GSD,
HexorBase, Inguma, jSQL, Lynis, Nmap, ohrwurm, Oscanner, Powerfuzzer, sfuzz,
SidGuesser, SIPArmyKnige, sqlmap, Sqlninja, sqlsus, THC-IPV6, tnscmd10g, unix-
privesc-check, Yersinia, Acutnetix WVS, AppScan, App Scanner, AppSpider, Nexpose
6.3. Alati za bežične napade
Alati za bežične napade koriste se u trećem koraku procesa ispitivanja ranjivosti, odnosno
u koraku koji slijedi nakon pronalaska ranjivosti. Neki od popularnih alata za bežične
napade su:
Alat Aircrack-ng
Ovaj program je jedan od najpoznatijih programa koji se koristi u području bežičnih
napada. Služi za probijanje 802.11 WEP i WPA-PSK ključeva. Probija ključeve nakon što
uspješno dohvati određeni broj paketa s mreže. Implementira FMS, KoreK i PTW napade.
Dostupan je za Linux operacijski sustav. Autori alata su: Thomas d'Otreppe i Christophe
Devine.
Alat Reaver
Reaver je program za napad na bežične mreže koji implementira napad grubom silom na
bežičnu mrežu zaštićenu WPS zaštitom. U prosjeku, Reaveru je potrebno od 4 do 10 sati
kako bi probio WPA/WPA2 lozinke. Autor programa je Craig Heffner.
40
Alat AirSnort
Ovo je još jedan popularan alat za napad na bežične mreže. Može napadati WEP ključeve
Wi-Fi 802.11b mreže. Ima isti način rada kao i Aircrack-ng, uspijeva pronaći ključ nakon
dovoljno prikupljenih mrežnih paketa. Ovaj je alat besplatan i dostupan je na Linux i
Windows operacijskim sustavima.
Alat Kismet
Još jedan alat za napad 802.11 bežičnih mreža. Može hvatati 802.11 a/b/g/n mrežni
promet, javljati zvukovnim alarmima ako dođe do određenog događaja na mreži i time
služiti kao sustav za detekciju upada, te davati GPS koordinate. Autor programa je Mike
Kershaw.
Alat Cain & Abel
Ovaj dobro poznati program služi za probijanje lozinki putem napada grubom silom. Osim
probijanja mrežnih lozinki, može koristiti za probijanje i ostalih. Popularno se koristi kao
program za probijanje Windows lozinki. Dostupan je za Windows operacijski sustav.
Slika 6.6. Cain&Abel grafičko sučelje
Ostali alati za bežične napade: Asleap, Bluelog, BlueMaho, Bluepot, BlueRanger,
Bluesnarger, Bully, coWPAtty, crackle, eapmd5pass, Fern Wifi Cracker, Ghost Phisher,
Gqrx, gr-scan, KillerBee, mdk3, mfcuk, mfoc, mfterm, redfang, Spooftooph, Wifi Honey,
wifiphisher, Wifitap, Wifite, Wifitap
41
6.4. Alati za web aplikacije
Alat Arachni
Arachni je okvir koji pomaže ispitivanju ranjivosti web aplikacija napisan u jeziku Ruby.
On je pametan alat i uči trenirajući na HTTP odgovorima tijekom procesa revizije kako bi
mogao procijeniti vrijednost rezultata i identificirati lažne rezultate. Pogodan je za
korištenje kao jednostavan alat iz komandnog retka i u mreži skenera. Autor ovog alata je
Tasos Laskos.
Alat Grabber
Grabber je skener web aplikacija koji može identificirati ranjivosti na manjim stranicama.
Može ispitati aplikacije XSS napadima ili napadima SQL injekcijom. Program je
jednostavan i spor ali vrlo prilagodljiv. Pogodan je za skeniranje foruma. Autor programa
je Romain Gaucher.
Alat Vega
Vega je besplatan okvir za ispitivanje sigurnosti web aplikacija. Vega pomaže pri
pronalasku i ispitivanju SQL i XSS ranjivosti kao i identificiranja postoje li negdje
nezaštićene osjetljive informacije. Napisana je u Javi, a podržana je na Linux, OS X i
Windows operacijskim sustavima.
Slika 6.7. Vega sučelje
42
OWASP ZAP
Ovaj je alat prethodno naveden i opisan u alatima za analizu ranjivosti. Detaljnija analiza
ovog alata uslijedit će u kasnijim poglavljima.
Alat W3af
Ovaj je alat namijenjen za napadanje web aplikacija. Pruža grafičko sučelje, a ako korisnik
želi, može instalirati i verziju w3af-console koja se pokreće iz naredbenog retka. Program
je pisan u jeziku Python i podržava više od 130 dodataka. Omogućava identifikaciju i
napade na SQL i XSS napade i ostale. Autor ovog programa je Andres Riancho
Slika 6.8. w3af grafičko sučelje
Alat SQL Map
Ovaj alat služi za automatiziranu identifikaciju i napad na SQL injekcijom. Ima snažan
mehanizam detekcije i može napadati MySQL, Oracle, PostgreSQL, Microsoft SQL, IBM
DB2, SQLite i ostale upravitelje za baze podataka. Implementira šest različitih tehnika
napada na SQL ranjivosti te automatsko prepoznavanje sažetaka lozinki. Autori ovog alata
su Miroslav Štampar i Bernardo Damele Assumpcao Guimaraes.
Alat Burp suite
Ovaj je alat već prethodno opisan ali je zbog svoje široke primjene svrstan i u ovu
kategoriju.
43
Ostali alati za ispitivanje web aplikacija: apache-users, BBQSQL, BlindElephant,
CutyCapt, DAVTest, deblaze, DIRB, DirBuster, fimap, FunkLoad, Gobuster, jboss-
autopwn, joomscan, jSQL, Maltego Teeth, PadBuster, Paros, Parsero, Recon-ng, Skipfish,
WebSlayer, WebSploit, Webshag, Wfuzz, WPScan, XSSer
6.5. Alati za iskorištavanje ranjivosti
Iako su neki od ovih alata već navedeni u prethodnim kategorijama, dobri alati za
iskorištavanje ranjivosti pokazuju svoju široku primjenjivost u više područja. Osnovna
primjena ovih alata je iskorištavanje ili potpora iskorištavanju ranjivosti.
Alat Armitage
Armitage je alat za korištenje u Metasploit okviru koji omogućava vizualizaciju meta,
preporučuje načine kako iskoristiti ranjivosti te ima još nekih naprednih mogućnosti za
korištenje nakon procesa iskorištavanja ranjivosti.
Slika 6.9. Armitage sučelje
Alat Maltego Teeth
Ovaj je alat već opisan u ranijim dijelovima i neće se opisivati ponovno.
Alat SQL Map
Već opisani alat široke primjene i velikih mogućnosti.
44
Alat Metasploit
Metasploit je jedan od najpoznatijih programa za razvoj i izvođenje programa za
iskorištavanje ranjivosti na udaljenom računalu. Sadrži alate za izbjegavanje otkrivanja i
forenzike. Postoje besplatna i plaćena verzija koja uz osnovnu funkcionalnost nudi i neke
naprednije opcije. Ovaj će alat detaljnije biti opisan u kasnijim poglavljima.
Slika 6.10. Izgled Metasploit sučelja
Ostali alati za iskorištavanje ranjivosti: Backdoor Factory, BeEF, cisco-auditing-tool,
cisco-ocs, cisco-torch, Commix, crackle, exploitdb, jboss-autopwn, SET, ShellNoob,
Yersinia
6.6. Alati za forenziku
Alati za forenziku potpomažu procesu ispitivanja ranjivosti u smislu da olakšavaju
najčešće ručnu analizu sustava. Neki se od ovih alata koriste za pretraživanje memorije i
omogućuju izvlačenje raznih informacija iz sustava ili slika memorije. Koriste i za
dobivanje raznih informacija iz statičke i dinamičke analize datoteka kao što su ponašanje
datoteka unutar reguliranog okruženja, utjecaj datoteka na sustav i interakciju datoteka s
ostalim knjižnicama operacijskog sustava.
Alat Volatility
Volatiliry okvir je potpuno besplatan skup alata napisanih u Pythonu koji služi za
ekstrakciju digitalnih artefakata iz slika promjenjive memorije (RAM). Iako se forenzika
vodi odvojeno od sustava kojeg se ispituje (na slikama memorije), ovaj alat omogućava
detaljan pregled stanja izvođenja sustava u vrijeme nastanka memorijske slike. Podržava
sve poznate operacijske sustave.
45
Alat Binwalk
Ovaj alat služi za pretraživanje binarnih datoteka u potrazi za uključenim datotekama ili
izvršnog koda. Specifično, koristi se za traženje koda ili drugih datoteka unutar firmware
datoteka. Zahvaljujući tome što koristi libmagic knjižnicu, može prepoznati većinu tipova
datoteka. Autor ovog programa je Craig Heffner.
Alat Cuckoo
Cuckoo Sandbox je sustav za dinamičku analizu zloćudnih programa. Za svoj rad koristi
virtualno okruženje unutar kojeg izvodi sumnjivu datoteku i analizira rezultate izvođenja
kao što su promjene registra, stvaranje ili izmjena datoteka na sustavu, pozivanje drugih
programa i slično, također nudi i mogućnost stvaranja izvještaja.
Alat P0f
Ovaj je alat već opisan ranije no naveden je kao popularan predstavnik skupine alata za
računalnu forenziku TCP/IP komunikacije.
Ostali alati za forenziku su: bulk-extractor, Capstone, chntpw, dc3dd, ddrescue, DFF,
diStorm3, Dumpzilla, Foremost, Galleta, Guymager, pdf-parser, pdfid, peepdf, RegRipper,
Xplico
6.7. Alati za stres ispitivanje
Alati za stres ispitivanje nisu direktno vezani uz ranjivosti ali mogu pružiti povratnu
informaciju koliko je neki poslužitelj ili web stranica stabilna.
Alat FunkLoad
FunkLoad je alat koji služi za ispitivanje funkcionalnosti web stranica i njihove
podnošljivosti na promet. Program je napisan u jeziku Python. Ovaj program omogućuje:
funkcionalno ispitivanje web projekata, ispitivanje performansi tako da optereti web
aplikaciju i nadzire potrošnju resursa, visoko opterećenje web stranice kako bi se ispitale
mogućnosti oporavka i druge.
Ostali alati za stres ispitivanje: DHCPig, iaxflood, Inundator, inviteflood, opv6-toolkit,
mdk3, Reaver, rtpflood, SlowHTTPTest, t50, Termineter i o stali.
6.8. Alati za prisluškivanje i lažno predstavljanje
Alat Burp Suite
Ovaj prethodno navedeni i opisani multifunkcionalan alat je jedan od najboljih alata na
tržištu za primjenu u ovoj kategoriji i neće biti ponovno opisan.
46
Alat Wireshark
Isto vrijedi i za Wireshark, ovaj smo alat već opisali i svoju primjenu također pronalazi i u
napadima prisluškivanja.
Alat Mitmproxy
Mitmproxy je alat koji se koristi za izvršavanje napada čovjekom u sredini. Koristi HTTP
protokol i nudi sučelje prema korisniku putem naredbenog retka. Ovaj alat može presresti i
izmjenjivati HTTP promet, spremati HTTP promet za kasnije napade ponavljanjem, vršiti
napade ponavljanjem i ostale. Autor programa je Aldo Cortesi.
Alat ApateDNS
Služi za kontroliranje DNS odgovora preko jednostavnog grafičkog sučelja. Predstavlja se
kao lažni DNS poslužitelj i preusmjerava DNS zahtjeve prema proizvoljno odabranoj IP
adresi. Prilikom svog rada on automatski podešava lokalni DNS poslužitelj na localhost,
odnosno adresu 127.0.0.1 pa se sav DNS promet preusmjerava na lokalno računalno.
Koristi se često u analizi zloćudnih programa kada je bitno analizirati potencijalne
pokušaje komunikacije s udaljenim poslužiteljima.
Slika 6.11. ApateDNS sučelje
Ostali alati za prisluškivanje i lažno predstavljanje su: DNSChef, fiked, hamster-sidejack,
HexInject, iaxflood, inviteflood, iSMTP, isr-evilgrade, mitmproxy, ohrwurm, protos-sip,
47
rebind, responder, SSLsplit, Sniffjoke, SIPVicious, Wifi Honey, xspy, Yersinia, zaproxy i
ostali.
6.9. Alati za napadanje lozinki
Alati za napadanje lozinki mogu napadati lozinke koristeći više različitih tehnika kao što
su napad grubom silom, korištenje dugine tablice, napadi specifični za protokol i ranjivosti
i ostali. Neki od najpoznatijih alata za napadanje lozinki su:
Alat THC-Hydra
Ovo je jedan od najefikasnijih alata za probijanje lozinki pristupa. Koristi paralelni način
rada što ga čini boljim od ostalih alata. Nudi širok spektar podržanih protokola kao što su:
CVS, FTP, IMAP, HTTP(S), ICQ, POP3, SMTP i još mnogo drugih. Dostupan je za
Linux, Windows, Solaris i OS X operacijske sustave. Autori programa su Van Hauser i
Roland Kessler.
Slika 6.12. Hydra sučelje
Alat John the ripper
Ovaj dobro poznati alat, najčešće zvan samo John, je fleksibilan i višeplatformski alat za
probijanje lozinki. Najčešće se koristi za probijanje lozinki UNIX sustava. Ima sposobnost
prepoznavanja sažetaka lozinki i u svome radu koristi vlastite optimizirane funkcije i
48
module specifične za arhitekturu na kojoj se pokreće. Dostupan je za Linux, Mac i
Windows. Postoje besplatna i plaćena verzija koja nudi još dodatnih mogućnosti.
Slika 6.13. John the Ripper sučelje
Alat RainbowCrack
RainbowCrack je implementacija Phillippe Oechslin-ovog algoritma za probijanje lozinki
koristeći dugine tablice. Za usporedbu: napad grubom silom mora generirati sve moguće
nizove znakova i njihove sažetke, zatim sažetke uspoređuje sa sažetkom lozinke koju
pokušavamo probiti i ako pronađe odgovarajući sažetak, tada znamo i lozinku. Napad
duginim tablicama koristi dodatnu obradu prije samog postupka uspoređivanja, a to je da
unaprijed izračuna listu svih mogućih znakova i sažetaka zauzimajući više prostora ali
smanjujući vrijeme potrebno za usporedbu jer je na ovaj način usporedba brža od
usporedbe koja se obavlja prilikom napada grubom silom. Ovaj je program besplatan.
Ostali alati za napadanje lozinki: acccheck, BurpSuite, CeWL, cisco-auditing-tool, Cain
and Abel, CmosPwd, creddump, crunch, findmyhash, Maltego Teeth, Ncrack, patator,
SQLdict, TrueCrack i ostali.
6.10. Alati za zadržavanje pristupa
Ovi alati se koriste nakon procesa iskorištavanja ranjivosti kako bi se napadaču omogućila
stalna dostupnost napadnutog računala. Ovo se postiže stvaranjem stražnjih vrata koja
omogućuju diskretno povezivanje napadača i ranjivog stroja kako bi napadač mogao
upravljati udaljenim strojem.
49
Alat Weevely
Ovaj alat omogućuje skrivenu vezu putem PHP web ljuske koja simulira protokol telnet.
Osim za ispitivanje, može se koristiti i za administrativne radnje na udaljenim
poslužiteljima.
Alat PowerSploit
PowerSploit je niz Microsoft PowerShell skripti koje se mogu iskoristiti nakon
iskorištavanja ranjivosti sustava za stvaranje stražnjih vrata i slično. Autor je Matthew
Graeber.
Alat Nishang
Nishang je okvir i skup skripti namijenjenih za korištenje u postupcima nakon
iskorištavanja ranjivosti i koji sadrži zanimljive skripte kao što su zapisnici unosa
tipkovnice (engl. Keylogger), HTTP stražnja vrata i ostale.
Ostali alati za zadržavanje pristupa su: CryptCat, Cymothoa, dbd, dns2tcp, http-tunnel,
Intersect, polenum, pwnat, RidEnum, sbd, U3-Pwn i ostali.
6.11. Alati za reverzni inženjering
Alati za reverzni inženjering omogućuju i olakšavaju proces reverznog inženjerstva, a to je
da se iz nekog već prevedenog programa saznaju informacije o njegovom načinu rada,
kodu ili nekim drugim informacijama koje bi napadaču mogle biti zanimljive. Alati koji se
najčešće koriste u praksi su:
Alat OllyDbg
Osnovna namjena OllyDbg programa je analiza izvođenja programa. OllyDbg omogućuje
kontrolirano koračanje prilikom izvođenja programa najčešće s namjenom otklanjanja
grešaka, no nudi i mogućnost izmjene koda tijekom izvođenja kako bi se potencijalno
zaobišle sigurnosne mjere i time kompromitirao sustav. OllyDbg je besplatan i nudi
raznorazne dodatke koji proširuju njegovu funkcionalnost.
50
Slika 6.14. OllyDbg sučelje
Alat IDA Pro
Ida je program koji omogućuje disasembliranje programa, odnosno omogućuje
strukturirani pregled njegovog asemblerskog koda. Ovaj je program koristan jer se ovim
procesom može doći do zanimljivih podataka koji su zapisani u programu kao konstante
kao što su lozinke, IP adrese raznih poslužitelja ili neke druge osjetljive informacije.
Postoje besplatna i plaćena verzija ovog programa.
51
Slika 6.15. IDA Pro sučelje
Alat YARA
Iako se YARA ne koristi izravno u nekom od postupaka ispitivanja ranjivosti, YARA nam
omogućuje pisanje pravila kojima možemo detektirati datoteke određene tim pravilima.
Pravila se mogu sastojati od nizova znakova pa čak i dijelova koda u obliku
heksadecimalnog zapisa okteta, a stvorena se pravila mogu povezivati logičkim pravilima.
Alat Dex2jar
Ovaj se alat koristi kao međukorak u analizi Android aplikacija. Dex2jar nam služi kako bi
se datoteka formata Dex (engl. Dalvik Executable) mogla pretvoriti u jar format koji se
kasnije može lakše analizirati kroz neki drugi alat kao što je Jad ili JD-GUI.
Alat Jad
Jad, odnosno Java Decompiler je program koji omogućuje prikaz Java koda iz Java
izvršnih datoteka. Često se koristi u praksi i vrlo je točan.
Ostali alati za reverzno inženjerstvo su: apktool, diStorm3, edb-debugger, javasnoop, JD-
GUI, smali, Valgrind i ostali.
52
7. Praktičan rad
U okviru praktičnog dijela ovog završnog rada odabrana su dva alata koja će biti detaljnije
opisana i ispitana na proizvoljno odabranim primjerima. Odabrani alati su Metasploit okvir
za ispitivanje ranjivosti i OWASP ZAP, program za ispitivanje ranjivosti web aplikacija.
7.1. Alat Metasploit
Povijest
Metasploit je 2003. godine napisao H.D.Moore kao prenosivi alat napisan u jeziku Perl. Do
2007. godine alat je potpuno prepisan u jeziku Ruby. 2009. godine je projekt kupila tvrtka
Rapid7 koja ga dalje nastavlja razvijati. Metasploit se koristi za ispitivanje ranjivosti
sustava ili za napadanje iskorištavanjem tih ranjivosti. Uz osnovnu i besplatnu verziju,
tvrtka Rapid7 dodaje i dvije vlastite verzije pod imenom Metasploit Express i Metasploit
Pro koje sadrže i dodatne naprednije mogućnosti. Metasploit je toliko popularan alat da se
uz objave ranjivosti, najčešće priloži i Metasploit modul kojim se prikazuje iskorištavanje
te ranjivosti, rizik i način njenog ispravljanja.
Terminologija
U daljnjem tekstu su navedeni često korišteni termini uz dodatno pojašnjenje. Ti će se
termini nakon ovog poglavlja koristiti bez dodatnih objašnjenja.
• Exploit: sredstvo kojim se koristi napadač ili ispitivač ranjivosti koje omogućuje
iskorištavanje određene ranjivosti sustava, aplikacije ili usluge. Koristi se kako bi
se napadom na sustav moglo sustav navesti na neočekivano i ponašanje za koje
sustav nije bio zamišljen ali od kojeg napadač ima koristi.
• Payload: kod koji napadač želi izvršiti na kompromitiranom sustavu i kojeg okvir
mora dostaviti. Tako je na primjer reverse shell tip payloada koji se jednom
pokrenut na žrtvinom stroju, pokušava spojiti nazad na računalo koje kontrolira
napadač.
• Shellcode: skup instrukcija koji se koristi kao payload u trenutku iskorištavanja
ranjivosti. Obično je napisan u asemblerskom jeziku. Naziv je dobio po rezultatu
izvođenja koji je najčešće prikaz ljuske (engl. Shell).
• Modul: u kontekstu Metasploit Frameworka, modul je program koji Metasploit
Framework može koristiti u svome radu. Primjer modula je exploit modul koji je
programska komponenta za provođenje napada. Moduli su razlog zbog kojeg je
Metasploit tako snažan alat.
• Listener: komponenta unutar Metasploita kojoj je svrha čekanje na konekciju od
strane napadnutog stroja.
53
Instalacija
Instalacija – Windows
U ovome će se radu Metasploit alat pokretati na Linux operacijskom sustavu pa je
postupak instalacije naveden samo radi potpunosti. Instalacija besplatnog Metasploit
Framework okvira za operacijski sustav Windows jednostavna je:
1. Potrebno je otići na stranicu s preuzimanjima: https://github.com/rapid7/metasploit-
framework/wiki/Nightly-Installers i odabrati poveznicu odmah ispod „Windows
installation“ poglavlja.
2. Nakon preuzimanja datoteke za instalaciju, potrebno je dodati datoteku u listu
izuzetaka unutar antivirusnog programa ako on postoji. Ovaj je korak potreban jer
većina antivirusnih programa detektira Metasploit kao maliciozan program zbog
njegovih mogućnosti.
3. Otvorit će se klasični instalacijski prozor koji izgleda kao na slici 7.1.:
Slika 7.1. Početni instalacijski prozor
4. Nakon uspješne instalacije, program se pokreće naredbom msfconsole.bat.
Instalacija – Linux
1. Otvoriti terminal.
2. Upisati slijedeću naredbu koja će dodati repozitorij i instalirati Metasploit
Framework paket:
curl https://raw.githubusercontent.com/rapid7/metasploit-
omnibus/master/config/templates/metasploit-framework-
wrappers/msfupdate.erb > msfinstall && chmod 755 msfinstall &&
./msfinstall
3. Nakon instalacije, za pokretanje programa potrebno je upisati slijedeću naredbu:
54
$ ./msfconsole
Knjižnice
Srž Metasploit Framework-a čini skup knjižnica koje sadrže niz razreda i alata za
upravljanje različitim dijelovima samog programa kao što su moduli, dodaci i sučelja.
Rex
Rex (engl. Ruby Extension Library) je temeljna komponenta samog Metasploit alata. Rex
knjižnica sastoji se od komponenata koje su potrebne za izvršavanje najosnovnijih zadaća.
Rex knjižnica nudi omotače oko socket podsustava, klijente za protokole i poslužitelje,
sustav vođenja evidencije i slično.
Core
Core knjižnica omogućuje exploit-ima, dodacima i sesijama interakciju sa različitim
sučeljima.
Base
Base knjižnica pruža rutine omotače i alatne klase za olakšavanje rada s Core knjižnicom.
Ove rutine i klase dostupne su korisniku.
Moduli
Moduli su ključne komponente Metasploita, oni omogućuju izvođenje specifičnih zadataka
kao što su iskorištavanje ranjivosti, skeniranje i ostali. Svaki zadatak koji se može izvesti
Metasploit alatom definiran je unutar nekog modula. Postoji par tipova modula koji ovise o
namjeni modula, a tipovi su sljedeći:
• Exploit: modul koji izvršava slijed naredbi kako bi napao specifičnu ranjivost
pronađenu na nekom sustavu ili aplikaciji.
• Pomoćni: ovi moduli ne pokreću payload i izvode razne zadaće koje ne moraju
nužno biti povezane s iskorištavanjem ranjivosti. Oni mogu biti skeneri, vršiti
napade uskraćivanjem usluge i slično.
• Post-Exploitation: koriste se nakon koraka iskorištavanja ranjivosti. Omogućavaju
daljnje iskorištavanje kompromitiranog računala. Mogu spremati sažetke lozinki i
enumerirati aplikacije ili usluge.
• Payloads: kod koji se pokreće kako bi se uspješno kompromitirao ciljani sustav.
Omogućava definiranje načina povezivanja s ljuskom i radnje koje treba provesti
jednom kada je sustav kompromitiran.
• NOP generator: stvara niz nasumičnih okteta koji se mogu iskoristiti za
zaobilaženje sustava za detekciju upada.
• Payload enkoder: omogućuje zaobilaženje sustava za detekciju upada i sustava koji
traže specifične potpise payload-a.
55
Sučelja prema korisniku
Metasploit nudi više od jednog sučelja prema korisniku, a mogući je odabir između
konzolnog i grafičkog sučelja. Vrste sučelja koje nudi Metasploit i njihovi nazivi navedeni
su u daljnjem tekstu.
MSFconsole
Ovo je najpopularnije sučelje Metasploit Frameworka. Fleksibilno je i sadrži mnogo
dodataka. Ovo sučelje može iskoristiti sve funkcionalnosti Metasploita, uključujući
pokretanje exploit-a, dodavanje vanjskih modula, stvarati slušače-listener-e i ostale radnje.
Za pokretanje ovog sučelja potrebno je upisati naredbu msfconsole. Nakon pokretanja
otvara se konzola:
Slika 7.2. Metasploit MSFconsole sučelje
Armitage
Armitage komponenta Metasploit alata je potpuno interaktivno grafičko sučelje. Nudi
skoro sve mogućnosti kao i MSFconsole sučelje. Pokreće se naredbom armitage.
Slika 7.3. Armitage sučelje
56
Iako nudi skoro identične mogućnosti kao i MSFconsole, preporučuje se koristiti
MSFconsole sučelje jer nudi više mogućnosti.
Uobičajeni koraci korištenja
Osnovni koraci pri korištenju Metasploita:
Prvi korak: odabir modula
U prvom koraku potrebno je utvrditi svrhu zadatka, a ona određuje tip modula koji je
potreban za uspješno ispitivanje sustava. Ako još analiziramo ciljani sustav bit će nam
potreban modul za skeniranje kako bi pobrojali sva otvorena vrata i usluge, ako smo već
utvrdili ranjivosti sustava potrebno je odabrati modul za biranja exploit-a itd. Najlakši
način za odabir modula je ako pogledamo listu svih mogućih modula koje imamo na
raspolaganju, to radimo naredbom show all. Ako korisnik zna koji tip modula želi
iskoristiti može suziti pretragu korištenjem naredbe show i jednog od argumenata:
• exploit
• auxiliary
• post
• nops
• payloads
Kada se odlučimo za konkretan modul, odabiremo ga naredbom use <modul>. Na primjer
odaberemo modul smb_login koji omogućava napad grubom silom:
Slika 7.4. Odabir modula
Konfiguracija modula
Sad kada smo odabrali modul, možemo napisati naredbu show options kako bi dobili
prikaz svih mogućnosti prilikom konfiguracije modula:
Slika 7.5. Pregled mogućnosti konfiguracije modula
57
Ako u stupcu „Required“ piše „yes“, tada je tu opciju potrebno postaviti, inače se njeno
postavljanje može izostaviti. Korisne opcije koje možemo postavljati su: RHOSTS,
RPORT, LHOST, LPORT, THREADS, TIMEOUT, WORKSPACE i GWHOST.
Postavljanje mogućnosti
Postavljanje opcija modula vrši se korištenjem set i unset naredba. Ove naredbe rade u
trenutnom kontekstu modula, što znači da ako se nakon postavljanja opcija izađe iz
konteksta odabranog modula, postavljane opcije bit će izgubljene, slično kao i s
varijablama deklariranim u programskim blokovima. Primjer postavljanja brzine izvođenja
napada grubom silom nad prethodno odabranim modulom:
Slika 7.6. Postavljanje opcija
Odabir mete
Prije pokretanja exploit modula, moramo potvrditi ranjive mete koje je moguće napasti tim
exploit-om. Moramo potvrditi da se naša meta koju želimo ispitati nalazi na listi mogućih
ranjivih meta. To radimo naredbom show targets:
Slika 7.7. Odabir exploit-a i mete
Odabir payload-a
Želimo li pokrenuti exploit modul, moramo odabrati payload za taj napad. Listu mogućih
payload-a prikazujemo naredbom show payloads, a zatim payload odaberemo naredbom
set payload <payload>:
Slika 7.7. Odabir payload-a
58
Pokretanje modula
Nakon svih podešenih mogućnosti i modula, možemo pokrenuti napad naredbom exploit.
Slika 7.8. Pokretanje modula
Prije izvođenja ovih osnovnih koraka potrebno je imati neke informacije o ciljanom
sustavu kao što su verzija operacijskog sustava ili instalirane mrežne usluge. Ove
informacije se mogu dohvatiti putem ostalih alata kao što su Nmap, Nexpose, Nessus ili
OpenVAS. Metasploit podržava izlazne podatke ovih alata pa ih može jednostavno
iskoristiti u svom radu bez dodatnog korisničkog prilagođavanja. Konkretni primjeri
korištenja bit će opisani u kasnijem poglavlju.
7.2. Alat OWASP ZAP
O alatu
OWASP Zed Attack Proxy ili skraćeno OWASP ZAP je alat za ispitivanje ranjivosti web
aplikacija. Nudi mogućnost automatskog i ručnog ispitivanja pomoću različitih alata.
Idealan je za programere web aplikacija kao i za profesionalce s iskustvom u području
ispitivanja ranjivosti računalnih sustava. Alat je dostupan od rujna 2010. godine. Prioritet
prilikom njegove izrade imala je jednostavnost uporabe i dobra dokumentacija. Ovaj je alat
besplatan i dostupan je za više platformi. Mogućnosti koje alat nudi su:
• Aplikacija za presretanje HTTP prometa (eng. Intercepting Proxy): služi kao
posrednik u komunikaciji između klijenta i poslužitelja i omogućava izmjenu i
pregled prometa koji kroz nju prolazi.
• Alati za aktivno i pasivno skeniranje ranjivosti.
• Pauk (engl. Web Spider): alat za automatsko pretraživanje interneta ili web
aplikacija. Automatski obrađuje HTML kod i poveznice u potrazi za određenim
resursom.
• Generiranje izvješća.
• Napad grubom silom.
• Fuzzing: postupak automatskog unošenja nasumičnih podataka u aplikaciju za
potrebu ispitivanja validacije ulaza.
Ostale mogućnosti alata su: skeniranje vrata, podrška za pametne kartice, pozivanje
vanjskih aplikacija i druge.
59
Sučelje prema korisniku
OWASP ZAP nudi jednostavno sučelje prema korisniku kako je vidljivo na slici ispod.
Slika 7.9. OWASP ZAP sučelje
Pregled grafičkog sučelja po komponentama:
1. Osnovna alatna traka: omogućuje pristup raznim automatiziranim ili ručnim
alatima.
2. Alatna traka: omogućuje brzi pristup često korištenim mogućnostima.
3. Prozor stabla: prikazuje stablastu strukturu stranice i posjećenih poveznica.
4. Prozor radnog prostora: prikazuje zahtjeve i omogućava njihovu izmjenu.
5. Prozor informativnog sadržaja: prikazuje informacije o korištenim alatima.
6. Traka koja prikazuje sažetak upozorenja i stanja trenutno korištenih
automatskih alata.
Iznad prozora s prikazom zahtjeva nalaze se kartice:
60
• Quick start: prozor za osnovno korištenje alata.
• Request: prikaz podataka koje naš preglednik šalje aplikaciji.
• Response: prikaz podataka koje aplikacija šalje našem pregledniku.
• Break (dodatan prozor): omogućuje izmjenu podataka.
U prozoru sa prikazom upozorenja i stanja alata također mogu postojati različite kartice:
• History: prikaz kronološki poredanih zahtjeva.
• Search: pretraga zahtjeva.
• Break Points: prikazuje skup breakpoint-ova.
• Alerts: prikaz upozorenja.
• Active Scan: prikaz aktivnih skeniranja.
• Spider: prikaz neposjećenih URL-ova.
• Params: prikaz parametara koje stranica koristi.
• Output: prikaz različitih informativnih poruka.
Instalacija
Za instaliranje OWASP ZAP alata potrebno je otići na službenu stranicu projekta:
https://github.com/zaproxy/zaproxy/wiki/Downloads i s nje skinuti verziju za određenu
platformu. Postupak instalacije je standardan za Linux i Windows i neće biti dalje
opisivan.
Uobičajeni koraci korištenja
Uobičajen način korištenja alata vrlo je jednostavan. Ovo je osnovni način prilikom kojeg
se pokreće automatizirano ispitivanje ranjivosti danog mrežnog odredišta. Ispitivanje se
provodi na sljedeći način:
1. Iznad prozora s prikazom zahtjeva potrebno je odabrati osnovni način rada Quick
Start
2. Upisati URL web aplikacije koju ispitujemo u za to predviđeno mjesto.
3. Klikom na „Attack“ pokreće se aktivno ispitivanje aplikacije.
4. Nakon završetka ispitivanja aplikacije moguće je vidjeti generirana upozorenja u
„Alert“ kartici u prozoru s informativnim sadržajem.
Ovaj će postupak biti detaljnije prikazan u kasnijem poglavlju.
BITNO: Aktivno ispitivanje aplikacije izvodi se tako da se provode svi poznati napadi na
tu stranicu. Nemojte provoditi aktivno ispitivanje nad stranicom nad kojom nemate ovlasti
da to radite od strane njenog vlasnika.
61
7.3. Opis okruženja
Prije ispitivanja rada odabranih alata potrebno je konfigurirati okruženje unutar kojeg će se
ti alati izvoditi. Odabir okruženja nam omogućava odabir ranjivih virtualnih strojeva nad
kojima se provodi ispitivanje alata i omogućuje kontrolirano i izolirano izvršavanje napada
kod kojih ne postoji opasnost da će napad utjecati na stroj domaćin unutar kojeg je
konfigurirano virtualno okruženje. Program za stvaranje virtualnog okruženja koji se
koristi u ovom radu je Virtualbox jer ne zahtijeva nikakve posebne licence.
Okruženje za ispitivanje Metasploit alata
Okruženje koje se koristi za ispitivanje Metasploit alata uključuje:
• Virtualni stroj s instaliranim Kali Linux operativnim sustavom.
• Virtualni stroj s instaliranim Metasploitable operativnim sustavom.
Program Virtualbox se instalira na računalo domaćina koje koristi Windows operacijski
sustav, no to i nije toliko bitno jer se sva komunikacija vodi unutar virtualnog okruženja
unutar Virtualbox-a. Kali Linux je operacijski sustav namijenjen za ispitivanje sigurnosti
sustava temeljen na Linux Debian operacijskom sustavu. Bogat je alatima za ispitivanje
ranjivosti i svim ostalim skupinama ranije navedenih alata. Danas se smatra uobičajenim
odabirom za većinu ispitivanja u praksi. Metasploitable je Ubuntu Linux operacijski sustav
koji sadrži namjerno ranjive programe i usluge kako bi se nad njime mogla vršiti
ispitivanja i vježbanje korištenja alata Metasploit.
Instalacija Kali Linux virtualnog stroja unutar Virtualbox programa
Pretpostavljeno je da se korisnik već susreo s instalacijom virtualnih strojeva pa će stoga
ovaj postupak biti opisan ukratko:
1. Potrebno je preuzeti Virtualbox program sa stranice:
https://www.virtualbox.org/wiki/Downloads.
2. Sljedeći upute sa stranice: https://www.virtualbox.org/manual/ch02.html instalirati
Virtualbox program.
3. Preuzeti Kali Linux operacijski sustav sa stranice: https://www.kali.org/
4. Instalirati Kali Linux u Virtualbox okruženju sljedeći detaljne upute sa stranice:
https://www.blackmoreops.com/2014/04/08/detailed-guide-installing-kali-linux-on-
virtualbox/
5. Pokrenuti virtualni stroj i provjeriti je li sve u redu.
62
Slika 8.1. Virtualbox program
Slika 8.2. Kali Linux operacijski sustav
Instaliranje Metasploitable virtualngo stroja unutar Virtualbox programa
63
1. Pretpostavljamo da je program Virtualbox već instaliran sljedeći upute iz instalacije
Kali Linux virtualnog stroja navedenog iznad.
2. Preuzeti Metasploitable 2 virtualni stroj sa stranice:
https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
3. Sljedeći upute sa stranice https://community.rapid7.com/thread/2007 instalirati i
podesiti Metasploitable 2 virtualni stroj.
4. Pokrenuti virtualni stroj i provjeriti je li sve u redu.
Slika 8.3. Metasploitable 2 operacijski sustav
Okruženje prilikom ispitivanja OWASP ZAP alata
Kako će se za ispitivanje OWASP ZAP alata koristiti isti ranjivi virtualni stroj
Metasplitable 2 čija je instalacija opisana u prethodnom poglavlju, potrebno je samo
instalirati OWASP ZAP alat na vlastiti virtualni stroj, a ako se koristi Kali Linux virtualni
stroj to nije potrebno jer je OWASP ZAP alat na njemu već instaliran.
7.4. Ispitivanje funkcionalnosti alata
Primjeri primjene alata Metasploit za ispitivanje sigurnosti
računalnih sustava
Prije samog pokretanja Metasploit alata, zbog mrežnih pravila Kali operacijskog sustava da
se prilikom pokretanja ne smiju izvršavati nikakve mrežne usluge uključujući i usluge baza
podataka, prije samog ispitivanja potrebno je pokrenuti neke usluge:
64
1. Metasploit koristi PostgreSQL bazu podataka za spremanje raznih konfiguracija pa
ju je stoga potrebno pokrenuti naredbom: service postgresql start. Naredbom ss -
ant možemo provjeriti jesmo li uspjeli pokrenuti tu uslugu, ako postoji slušać (engl.
Listener) na vratima 5432 to znači da je usluga uspješno pokrenuta.
2. Ako se radi o prvom pokretanju Metasploit alata, potrebno je inicijalizirati bazu
podataka naredbom msfdb init.
Nakon što smo izvršili ove naredbe, moći ćemo pokrenuti Metasploit alat naredom
msfconsole.
Primjer 1: stražnja vrata
Na Metasploitable operacijskom sustavu, na vratima 6667 pokrenut je UnrealRCD IRC
demon koji sadrži stražnja vrata koja su se pokretala ako bi se poslao znakovni niz „AB“.
Metasploit sadrži modul koji omogućuje dobivanje interaktivne ljuske.
Neovisno o tome znamo li da se na 6667 vratima nalazi ranjiva usluga, pokrenuti ćemo
Nmap alat kako bi utvrdili koja su sve vrata otvorena, to radimo naredbom: nmap -v -sV
<ip_adresa>. IP adresu možemo saznati naredbom ifconfig na Metasploitable virtualnom
stroju ili na drugi način, prvo saznati IP adresu Kali stroja naredbom ifconfig, pa zatim
Nmap alatom naredbom nmap -sn <Kali_IP_adresa>/24 izlistati sve spojene uređaje.
Pronađena IP adresa Metasploit stroja je: 192.168.56.101.
Slika 9.1. Rezultat naredbe: nmap -v -sV 192.168.56.101
Na slici 9.1. može se vidjeti detektirana usluga UnrealIRCd na vratima 6667. Sljedeći
korak koji moramo napraviti je postavljanje exploit-a kojeg želimo koristiti za određenu
ranjivost. Znamo da je usluga na tim vratima ranjiva, pa pronađemo exploit koji je
iskorištava i postavimo ga naredbom: use /exploit/unix/irc/unreal_ircd_3271_backdoor.
Sada je potrebno još postaviti i odredišnu IP adresu računala nad kojim želimo provesti
napad odabranim exploit-om, a to radimo naredbom: set RHOST 192.168.56.101. Sada
kada smo sve uspješno postavili, naredbom exploit pokrećemo napad i ako je napad
uspješno izveden, trebali bi dobiti prikaz ljuske u kojoj možemo pisati naredbe koje će se
65
izvršiti na udaljenom računalu, naredbom id možemo dokazati da je napad uspio i da
imamo pristup udaljenom računalu kao administrator odnosno Root.
Slika 9.2. Uspješno iskorištena ranjivost usluge UnrealRCD
Primjer 2: Ranjivi poslužitelj dRuby
dRuby RMI poslužitelj koji je pokrenut na sustavu ima par ranjivosti koje omogućuju
udaljeno izvršavanje koda. Cilj je pronaći modul koji nam omogućuje iskorištavanje te
ranjivosti i uspješno provesti napad.
Znamo naziv ranjivog programa pa naredbom search dRUby možemo potražiti sve exploit-
e koji su vezani za taj program.
Slika 9.3. Rezultat naredbe: search dRuby
U rezultatima vidimo da postoji modul koji možemo iskoristiti za izvršavanje napada na tu
ranjivost. Prije izvršavanja potrebno je pogledati postoje li određene postavke koje je
potrebno postaviti, to se radi naredbom show options.
66
Slika 9.4. Prikaz postavki za odabrani exploit
Vidi se da je postavka URI obavezna i nije postavljena, u opisu vidimo kako bi ona trebala
izgledati, pa vodeći se time, postavljamo je naredbom: set URI
druby://192.168.56.101:8787. Nakon toga, potrebno je postaviti i payload, odnosno kod
koji će se izvršiti jednom kada iskoristimo ranjivost na sustavu. Postavljanje payload-a
radimo naredbom set payload, a naš će payload biti kod koji će se spojiti nazad k nama i
time stvoriti vezu između našeg stroja i Metasploitable stroja pa će prema tome naredba
izgledati ovako: set payload cmd/unix/reverse_ruby. Potrebno je i vidjeti mogućnosti
payload-a i vidjeti jesu li sve obavezne postavke odabrane.
Slika 9.5. Prikaz postavki za odabrani payload
Na slici 9.5. vidimo da će se izvršavajući kod pokušati spojiti na adresu 127.0.0.1 i vrata
4444. IP adresu odredišta na koje će se kod spojiti trebali bi izmijeniti na onu koja
odgovara IP adresi našeg stroja s kojeg izvršavamo napad, izmjenu radimo naredbom: set
LHOST <IP_adresa_Kali_stroja>. Nakon uspješnog postavljanja sve je spremno za
izvršavanje napada kojeg pokrećemo naredbom run.
Primjer 3: Ranjivi Apache httpd poslužitelj
U ovom primjeru, napad se izvodi nad ranjivim Apache httpd poslužiteljem koji sadrži
ranjivu verziju jezika PHP. Ova se ranjivost identificira kao CVE-2012-1823.
Ovoga puta demonstrirati ćemo da exploit-e možemo tražiti i referenciranjem na njihov
CVE identifikator. Naredbom search CVE-2012-1823 obavljamo pretragu za svim exploit-
ima koji iskorištavaju tu ranjivost.
67
Slika 9.6. Pretraga exploit-a prema CVE identifikatoru
Jednom kada smo pronašli željeni exploit, slijedimo standardne korake za provođenje
napada.
Slika 9.7. Rezultat napada na httpd poslužitelj
Za razliku od prethodnih primjera, u ovom se primjeru nakon uspješno provedenog napada
otvara napredna ljuska Metasploita zvana meterpreter, za razliku od ostalih ljuska koje se
tipično otvaraju kao što su /bin/sh, meterpreter se koristi jer ima sposobnost boljeg
skrivanja zato što se za razliku od ostalih ljuska koje stvaraju nove procese pri pokretanju,
meterpreter pokreće direktno iz memorije napadnutog procesa koristeći naprednu tehniku
daljinskog ubrizgavanja knjižnica koja u ovome radu neće biti opisana. Neke osnovne
naredbe unutar meterpreter-a su:
• help: naredba za dobivanje pomoći
• background: stavlja trenutnu meterpreter sesiju u pozadinu
• cat: prikazuje sadržaj datoteke predan kao argument
• download: preuzimanje datoteke predane kao argument sa napadnutog stroja
• execute: izvršava naredbu predanu kao argument na napadnutom stroju
• …
Primjer 4: Ručna pretraga ranjivosti
U ovome ćemo primjeru vidjeti primjer ručnog pronalaženja ranjivosti koristeći Internet
izvore. Za razliku od prijašnjih primjera, u ovome primjeru pretpostavljamo da ne znamo
ništa o nikakvoj ranjivoj usluzi na Metasploitable virtualnom stroju. Sljedeći korake
ispitivanja ranjivosti, najprije obavljamo postupak prikupljanja podataka o sustavu kojeg
želimo ispitati. Pokrećemo Nmap alat kako bi istražili otvorena vrata i usluge pokrenute na
Metasploitable stroju naredbom nmap -v -sV 192.168.56.101.
68
Slika 9.8. Prikaz otvorenih vrata i usluga na ciljanom stroju
Možemo vidjeti da je na Metasploitable stroju pokrenuto više usluga. Odaberimo jednu od
njih, na primjer uslugu Samba. Samba je implementacija Server Message Block protokola
aplikacijskog sloja. Server Message Block protokol pruža dijeljeni pristup datotekama,
pisačima i komunikaciju između ostalih različitih krajnjih točaka mreže. Iz rezultata
izvršavanja naredbe možemo vidjeti da je verzija Samba usluge neka između verzije 3 i 4.
što nije dovoljno detaljno.
Potražimo na internetu postoje li neke već poznate, već otkrivene ranjivosti Samba usluge.
Dobar izvor informacija nam može biti i jednostavna Google pretraga.
Slika 9.10. Pretraga ranjivosti Samba usluge
Google pretraga nas je uputila na stranicu sa bazom svih Samba ranjivosti koje su
detektirane po različitim Samba verzijama. Kako bi znali koje bi ranjivosti potencijalno
mogli iskoristiti, potrebne su nam detaljnije informacije o Samba verziji koja je instalirana
69
na Metasploitable sustavu. Za bolju detekciju verzije od one koje nam je dao alat Nmap,
možemo iskoristiti neki od Metasploit modula za skeniranje ako takav modul postoji.
Slika 9.11. Pretraga Samba modula za skeniranje
Brzom pretragom možemo vidjeti da postoji modul smb_version za analiziranje verzije
Samba usluge na sustavu. Željeni modul koristimo naredbom: use
auxiliary/scanner/smb/smb_version.
Slika 9.12. Postavljanje modula za analiziranje Samba verzije
Naredbom options vidimo da atribut RHOSTS nije postavljen pa ga stoga moramo
postaviti. Postavljanje atributa postavljamo naredom: set RHOSTS 192.168.56.101. Nakon
postavljanja IP adrese ciljanog računala, započinjemo ispitivanje naredbom exploit.
Slika 9.13. Rezultat analize Samba verzije
Vidimo da je analiza bila uspješna i da je prava verzija Samba usluge 3.0.20. Sljedeći
korak je pretraga ranjivosti za ovu verziju Sambe. Pretragom baze Samba ranjivosti
tražimo ranjivosti koje imaju visoku ocjenu, odgovaraju našoj verziji Sambe, te su
dovoljno općenite da njihovo iskorištavanje ne uvjetuju posebne Samba postavke. Jedna od
takvih ranjivosti je ranjivost CVE-2007-2447 u verzijama od 3.0.0 do 3.0.25rc3. Detaljima
ranjivosti se ne moramo zamarati jer nam modularnost Metasploit alata to dozvoljava.
70
Jedan od mogućih koraka bio bi samostalno pisanje exploit-a za odabranu ranjivost, no to
je napredna tema kojom se ovaj rad neće baviti. Metasploit već sadrži exploit za odabranu
ranjivost ali cilj ovog primjera je demonstriranje samostalnog uključivanja vanjskog
modula za iskorištavanje ranjivosti. Stranica https://www.exploit-db.com sadrži bazu
exploit-a za raznorazne objavljene ranjivosti različitih sustava. Pretraga exploit-a za
traženu ranjivost pokazuje da u bazi postoje exploit-i koje možemo iskoristiti u Metasploit
modulu.
Slika 9.14. Rezultat pretrage za odabranu Samba ranjivost
Vidimo da postoje tri različita exploit-a za traženu ranjivost. Nama je potreban prvi jer taj
odgovara našoj Linux platformi. Odabirom prvog rezultata pretrage i klikom na gumb
„Download“ preuzimamo željeni Metasploit exploit kojeg ćemo u slijedećem koraku
uključiti u sam Metasploit alat.
Kako bi mogli dodati vlastite exploit module, moramo prvo napraviti zrcalnu presliku
metasploit direktorija naredbom mkdir -p $HOME/.msf4/modules/exploits. Unutar exploits
direktorija možemo stvoriti proizvoljan broj vlastitih direktorija za kategorizaciju exploit-a
ako to želimo, u ovome primjeru koristimo samo jedan pa ćemo stoga stvoriti samo jedan
poddirektorij pod nazivom Moj_exploit.
Kako bi ispitali vlastiti exploit modul, pokrenemo Metasploit naredbom msfconsole i zatim
odaberemo vlastiti modul naredbom: use /exploit/moj_exploit/moj_modul.
Slika 9.15. Učitavanje vlastitog modula i prikaz opcija
71
Slika 9.15. prikazuje uspješan odabir vlastitog exploit modula i prikaz opcija koje je
potrebno predati za uspješan rad modula. Da naš exploit radi, potrebno je postaviti opciju
RHOST na IP adresu Metasploitable stroja naredbom: set RHOST 192.168.56.101. Sada
nam samo preostaje da pokrenemo exploit.
Slika 9.16. Uspješno pokretanje vlastitog modula
Na slici 9.16. možemo vidjeti kako smo uspjeli dobiti pristup udaljenom stroju kao
administrator čime je naš napad gotov.
U ovih par primjera prikazali smo osnovne mogućnosti Metasploit alata i način na koji se
on koristi. Metasploit alat nudi i druge puno naprednije mogućnosti koje su izvan dosega
ovog rada kao što je pisanje vlastitih exploit-a, automatiziranje radnji, alati za socijalno
inženjerstvo i razne druge.
Primjer primjene alata OWASP ZAP za ispitivanje sigurnosti
računalnih sustava
Primjer: Osnovno aktivno ispitivanje mete
Prilikom ispitivanja, naša će meta biti Metasploitable 2 virtualni stroj kojeg moramo
pokrenuti prvog. Nakon pokretanja i ulaska u stroj sa korisničkim podacima i lozinkom
„msfadmin“, pokrećemo naredbu ifconfig kako bi saznali IP adresu dodijeljenu
Metasploitable stroju.
72
Slika 9.17. IP adresa stroja Metasploitable 2
Nakon što smo saznali adresu ranjivog stroja, pokrećemo Kali Linux virtualni stroj i
otvaramo program OWASP ZAP. Nakon što se program otvori, trebali bi dobiti njegovo
sučelje. Sada kada znamo IP adresu ranjivog stroja, odaberemo Quick Start karticu i u
radnom prozoru upišemo IP adresu. Pritiskom na gumb „Attack“ pokrećemo aktivno
ispitivanje.
Slika 9.18. Prvedba aktivnog ispitivanja
(Slika 9.18.) prikazuje završetak ispitivanja stranice, klikom na „Alerts“ karticu možemo
vidjeti izvješće o pronađenim ranjivostima web aplikacije.
73
Slika 9.19. Pregled pronađenih ranjivosti
Iz slike iznad možemo vidjeti da se ispitivanjem web aplikacije ustanovilo postojanje
kritične ranjivosti, prikazane crvenom zastavicom i nazivom „Path Traversal“ što
označava tu ranjivost. „Path Traversal“ ranjivost je ranjivost do koje dolazi kada web
aplikacija ne vodi računa o putanjama koje joj se predaju preko kao URL parametri i koje
koristi za pristup resursima. U opisu ranjivosti vidimo da se do nje došlo koristeći URL:
http://192.168.56.101/mutillidae/index.php?page=%2Fetc%2Fpasswd. Opasnost u ovoj
poveznici leži u tome što se pristupa datoteci /etc/passwd koja na UNIX platformama
sadrži popis korisnika i sažetaka njihovih lozinki. Ovaj direktorij ne bi trebao moći biti
dostupan običnim korisnicima web aplikacije ali se zbog neispravnog provjeravanja
putanje, proizvoljnim poslanim zahtjevom njemu moglo pristupiti. Nakon što se izvrši
dekodiranje zahtjeva, %2Fetc%2Fpasswd prelazi u /etc/passwd i prikazuje se korisniku.
Za prikaz pronađene ranjivosti, u ovom slučaju možemo otići u naš internet preglednik i
upisati taj URL.
74
Slika 9.20. Prikaz sadržaja datoteke Passwd
Nakon odlaska na navedenu poveznicu, korisniku se prikazuje sadržaj datoteke Passwd sa
različitim korisničkim podacima koji inače ne bi trebao biti dostupan.
Za naprednije korištenje ovog alata čitatelj se usmjerava na njegovu službenu stranicu na
kojoj je moguće pronaći više informacija o alatu i upute za korištenje njegovih ostalih
mogućnosti: https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project.
75
8. Zaključak
Zbog sve šire primjene programskih rješenja u različitim djelatnostima, složenosti njihove
izrade i njihovog uklapanja u složene sustave teško je voditi računa o svim sigurnosnim
zahtjevima koje bi ti programi morali pokrivati pa je stvaranje ranjivosti gotovo
neizbježno. Zbog količine resursa koja je potrebna da bi se provela detaljna ispitivanja
složenijih sustava ona su nepraktična i skupa pa se iz tog razloga provodi analiza rizika čiji
je rezultat popis svih poznatih rizika prisutnih na tom sustavu. Uvijek se teži potpunom
otklanjanju tih rizika no kada to postane nepraktično ili nemoguće zbog načina rada
sustava, tada je potrebno odrediti koji su rizici prihvatljivi i koji nisu kako bi se raspodjela
resursa za njihovo rješavanje mogla djelotvorno rasporediti za njihovo otklanjanje ili
smanjivanje.
Rizici se u računalnim sustavima pojavljuju u obliku propusta i neispravnih
implementacija koji se, ako se pronađe način da se iskorištavanjem njihovog postojanja
nanese šteta sustavu pretvaraju u ranjivosti tog sustava. Ako se te ranjivosti ustanove
dovoljno rano mogu se zakrpati i time spriječiti njihovo iskorištavanje od strane zloćudnih
korisnika. Velika složenost sustava omogućuje veću površinu unutar koje se mogu pronaći
ranjivosti pa se nerijetko događa da ranjivosti pronađu upravo zloćudni korisnici koji ih
kasnije mogu iskorištavati za svoju dobit ili ih prodavati na crnom tržištu po visokim
cijenama. Ovo su razlozi zbog kojih je sigurnosno ispitivanje računalnih sustava potrebno
provoditi redovito i to svakih par godina u ovisnosti o veličini sustava kojeg se ispituje.
Sigurnosna ispitivanja provode ovlašteni stručnjaci računalne sigurnosti koristeći za to
namijenjene alate. Sve detalje ispitivanja potrebno je prethodno dogovoriti s izvršnim
dijelom organizacije kako bi se osigurao njen normalan rad tijekom samog ispitivanja.
Osim samog ispitivanja potrebno je koristiti dogovorene načine izvještavanja o
pronađenim rizicima i njihovog dijeljenja s javnošću kako bi i druge organizacije mogle
provesti ispitivanje svojih sustava za pronađenim rizicima.
Područje ispitivanja ranjivosti računalnih sustava sve je popularnije, a time i skup
korištenih alata postaje sve veći. Ponuda alata dovoljno je velika da se za svako područje
ispitivanja mogu pronaći alati koji odgovaraju potrebama korisnika, od onih jednostavnijih
koji se koriste specifično u određenom koraku ispitivanja i koji su većinom besplatni, do
većih i skupih komercijalnih alata i radnih okvira koji služe kao potpora u više koraka ili
cijelom ispitivanju sustava.
U praktičnom dijelu prikazani su osnovni postupci sigurnosnih ispitivanja web aplikacija i
umreženih računalnih sustava koristeći odabrane alate. Skup besplatnih dostupnih alata sve
je veći te se svi programeri mogu uključiti u zajednicu odgovornu za njihov aktivan razvoj.
Ne postoji univerzalni alat koji bi pokrio sve korake sigurnosnog ispitivanja pa smo stoga
prisiljeni koristiti više različitih alata kako bi uspješno i temeljito proveli ispitivanje
sustava. Korišteni alati osim prikazanih osnovnih, nude i neke dodatne mogućnosti koje
mogu ubrzati proces ispitivanja objedinjavanjem koraka na način da implementiraju više
pod-alata koji pružaju potporu u njihovom provođenju ili povezivanju. Ovakvi pod-alati
mogu ubrzati proces ispitivanja ali često mogu biti ograničeni ili nepouzdani pa se, ukoliko
je potrebno, za izvođenje određenog koraka ipak preporučaju posebni alati specijalizirani
za taj korak.
76
Moguća buduća proširenja ovog rada uključuju razvijanje vlastitih modula za alate opisane
u ovome radu. Znanja i vještine potrebne za njihovo proširenje su napredna znanja u
područjima: računalnih mreža i protokola, asemblerskog jezika, operacijskih sustava i
razvoja web aplikacija.
77
9. Literatura
[1] Budin, L. et al. Operacijski sustavi. 2.izdanje. Zagreb: ELEMENT, 2011.
[2] Michael Holloway, Stuxnet Worm Attack on Iranian Nuclear Facilities, 16. Srpnja
2015., http://large.stanford.edu/courses/2015/ph241/holloway1/, 24. Veljače 2017.
[3] New cyber resilience report: energy sector prime target for cyber-attacks,
https://www.worldenergy.org/news-and-media/press-releases/new-cyber-report-
energy-sector-prime-target-for-cyber-attacks/, 24. Veljače 2017.
[4] Candid Wueest, SECURITY RESPONSE: Targeted Attacks Against the Energy
Sector, 13. Siječanj 2014.,
http://www.symantec.com/content/en/us/enterprise/media/security_response/whitepa
pers/targeted_attacks_against_the_energy_sector.pdf, 24. Veljače 2017.
[5] 2016 Financial Industry Cybersecurity Report,
https://cdn2.hubspot.net/hubfs/533449/SecurityScorecard_2016_Financial_Report.pd
f, 24.Veljače 2017.
[6] Lyons, Marty. Homeland Security. Threat Assessment of Cyber Warfare, 2005.
[7] James Bayne, SANS Institute InfoSec Reading Room: An Overview of Threat and
Risk Assessment, https://www.sans.org/reading-room/whitepapers/auditing/overview-
threat-risk-assessment-76, 25. Veljače 2017.
[8] Brian Cashell, William D. Jackson, Mark Jickling, Baird Webel The Economic
Impact of Cyber-Attacks, 1. Travnja 2004., https://fas.org/sgp/crs/misc/RL32331.pdf,
25. Veljače 2017.
[9] Stjepan Mesić, Zakon o informacijskog sigurnosti, 13. srpanj 2007., http://narodne-
novine.nn.hr/clanci/sluzbeni/2007_07_79_2484.html, 27. Veljače 2017.
[10] Jagor Čakmak, Računalna sigurnost na Internetu u RH,
http://www.cis.hr/files/Cakmak-Rac_sigurnost_na_internetu.pdf, 27. Veljače 2017.
[11] Nacionalna strategija kibernetičke sigurnosti,
http://www.uvns.hr/UserDocsImages/dokumenti/Nacionalna%20strategija%20kibern
eticke%20sigurnosti%20(2015.).pdf, 27.Veljače 2017.
[12] Akcijski plan za provedbu nacionalne strategije kibernetičke sigurnosti,
http://www.uvns.hr/UserDocsImages/dokumenti/Nacionalna%20strategija%20kibern
eticke%20sigurnosti%20(2015.).pdf, 27. Veljače 2017.
[13] Nacionalna strategija kibernetičke sigurnosti i Akcijski plan za provedbu Strategije:
Sažetak, 7. listopada 2015.,
78
http://www.uvns.hr/UserDocsImages/dokumenti/SazetakNSKSiAP_hrv%20(2015).p
df, 27. Veljače 2017.
[14] Stephen Northcutt et.al., Penetration Testing: Assessing Your Overall Security
Before Attackers Do, Svibanj 2006, https://www.sans.org/reading-
room/whitepapers/analyst/penetration-testing-assessing-security-attackers-34635, 1.
Ožujka 2017.
[15] Chan Tuck Wai, Conducting a Penetration Test on an Organization, 2002.,
https://www.sans.org/reading-room/whitepapers/auditing/conducting-penetration-
test-organization-67, 1. Ožujka 2017.
[16] Microsoft, Definition of a Security Vulnerability, https://msdn.microsoft.com/en-
us/library/cc751383.aspx, 3. Ožujka 2017.
[17] ISO/IEC, Information technology: Security techniques-Information security risk
management, http://www.pqm-online.com/assets/files/lib/std/iso_iec_27005-
2008.pdf, 3. Ožujka 2017.
[18] Internet Engineering Task Force, RFC 2828: Internet Security Glossary,
https://tools.ietf.org/html/rfc2828, 3. Ožujka 2017.
[19] Ponemon Institute, The Impact of Cybercrime on Business, Svibanj 2012.,
https://www.ponemon.org/local/upload/file/Impact_of_Cybercrime_on_Business_FI
NAL.pdf, 3. Ožujka 2017.
[20] Andrew Cencini, Kevin Yu, Tony Chan, Software Vulnerabilities: Full-,
Responsible-, and Non-Disclosure, 7. Prosinac 2005.,
https://courses.cs.washington.edu/courses/csep590/05au/whitepaper_turnin/software
_vulnerabilities_by_cencini_yu_chan.pdf, 3. Ožujka 2017.
[21] Homeland Security, Common Cybersecurity Vulnerabilities in Industrial Control
Systems, Svibanj 2011., https://ics-cert.us-
cert.gov/sites/default/files/recommended_practices/DHS_Common_Cybersecurity_V
ulnerabilities_ICS_2010.pdf, 4. Ožujka 2017.
[22] Nacionalni CERT, Najčešće web ranjivosti,
http://www.cert.hr/sites/default/files/NCERT-PUBDOC-2011-03-325.pdf, 4. Ožujka
2017.
[23] Kali Linux Tools Listing, http://tools.kali.org/tools-listing , 6. Ožujka 2017.
[24] Metasploit Framework User Guide Version 3.1.,
http://cs.uccs.edu/~cs591/metasploit/users_guide3_1.pdf, 13. Ožujka 2017.
79
[25] Metasploit community User Guide Release 4.9,
https://community.rapid7.com/docs/DOC-1563, 13. Ožujka 2017.
[26] David Kennedy et al., Metasploit: The Penetration Tester's Guide, No starch press.
[27] OWASP ZAP 2.6 Getting Started Guide,
https://github.com/zaproxy/zaproxy/releases/download/2.6.0/ZAPGettingStartedGuid
e-2.6.pdf, 8. Travnja 2017.
Sažetak
Alati za ispitivanje ranjivosti računalnih sustava
U ovome su radu opisani osnovni pojmovi računalne sigurnosti potrebni za bolje
razumijevanje rada. Opisan je postupak procjene rizika te pravni dokumenti sigurnosne
infrastrukture u Republici Hrvatskoj. Opisan je postupak provođenja ispitivanja ranjivosti
računalnih sustava i razlozi za njegovo provođenje. Opisane su najčešće ranjivosti
računalnih sustava i uzroci njihovog nastanka. Opisana je podjela alata za ispitivanje s
obzirom na područje njihove primjene. U praktičnom djelu ovoga rada uspostavljeno je
radno okruženje za potrebe ispitivanja ranjivosti nezaštićenog virtualnog stroja, detaljnije
su opisani alati Metasploit i OWASP ZAP, te su provedena različita ispitivanja uporabom
tih alata.
Ključne riječi: sigurnost, rizik, ranjivosti, alati, ispitivanje.
Abstract
Computer System Penetration Testing Tools
This paper describes the basic concepts of computer security required for a better
understanding. The risk asessment procedure and the legal documents of the security
infrastructure in the Republic of Croatia are described. The procedure of conducting
vulnerability testing of computer systems is described as well as the reasons for its
implementation. The most common computer systems vulnerabilities are described and the
causes of their ocurrence. The distribution of testing tools is described with respect to the
scope of their application. In the practical part of this paper, a working environment is
established for vulnerability testing of an unprotected virtual machine. Vulnerability
testing tools Metasploit and OWASP ZAP are described in more detail and various tests
have been carried out using these tools.
Keywords: security, risk, vulnerabilities, tools, testing.