zavrŠni rad br. 5947 sustavi za otkrivanje...
TRANSCRIPT
Zagreb, lipanj 2019.
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
ZAVRŠNI RAD br. 5947
SUSTAVI ZA OTKRIVANJE I
SPRJEČAVANJE NAPADA
Andrea Alilović
Sadržaj
1. Uvod.................................................................................................................................... 1
2. Sustavi za otkrivanje i sprječavanje napada ....................................................................... 2
2.1. Otkrivanje i sprječavanje napada ................................................................................ 2
2.2. Opis i razvoj IDS-a i IPS-a ......................................................................................... 2
2.3. Podjela ........................................................................................................................ 3
3. Slobodno dostupni sustavi .................................................................................................. 5
3.1. Sustav Suricata ............................................................................................................ 5
3.2. Sustav Security Onion ................................................................................................ 5
3.3. Sustav WinPatrol ........................................................................................................ 5
4. Programski paket Snort ....................................................................................................... 7
4.1. Općenito ...................................................................................................................... 7
4.2. Pravila ......................................................................................................................... 7
4.3. Instalacija i konfiguracija ............................................................................................ 9
4.3.1. Instalacija i konfiguracija programskog paketa Snort na operacijskom
sustavu Windows .............................................................................................................. 10
4.3.2. Instalacija i konfiguracija programskog paketa Snort na operacijskom
sustavu Ubuntu ................................................................................................................. 11
4.4. Pokretanje i ispitivanje programskog paketa Snort .................................................. 12
4.4.1. Snimanje prometa na operacijskom sustavu Windows ..................................... 15
5. Praktični rad ...................................................................................................................... 17
5.1. Virtualno okruženje i instalacija ............................................................................... 17
5.2. Simulirani napadi ...................................................................................................... 20
5.3. Alat Nmap ................................................................................................................. 20
5.4. Alat Sparta ................................................................................................................ 22
5.5. Alat Nikto ................................................................................................................. 24
6. Zaključak .......................................................................................................................... 26
7. Literatura ........................................................................................................................... 27
1
1. Uvod
U današnje vrijeme sve je veći razvoj mnoštva organizacija kojima je bitna kvalitetna zaštita
poslovanja i privatnih podataka. Kako bi se to omogućilo, osmišljeni su mnogi sustavi za
otkrivanje i obranu od napada. Neki od njih su besplatni i slobodno dostupni, a neki ne. Pri
korištenju takvih sustava najvažnija je kvalitetna priprema i informiranje o mogućnostima
sustava, jer vrlo lako može doći do neželjenih posljedica ili npr. gubitka povjerljivih
informacija.
Vremenom napadi postaju sve kompliciraniji i razvijeniji, pa je neophodno osigurati se
sustavima koji mogu pratiti napredne specifikacije napada i omogućiti pravovaljanu zaštitu
kad god je to potrebno.
Sustavi za otkrivanje i sprječavanje napada su se počeli razvijati tek krajem 20. stoljeća, ali
unatoč tome, danas su veoma rasprostranjeni, kvalitetni i mnogobrojni. U ovom završnom
radu teorijski su opisane karakteristike tih sustava i nekoliko primjera rada i detekcije jednog
od tih sustava – Snorta.
Rad je sastavljen od sedam poglavlja. Nakon uvodnog poglavlja, je poglavlje u kojem su
opisani sustavi za otkrivanje i sprječavanje napada (engl. Intrusion Detection Systems, IDS
and Intrusion Prevention Systems, IPS) i navedena je njihova podjela.
U trećem poglavlju opisano je nekoliko slobodno dostupnih sustava za otkrivanje i
sprječavanje napada, te opisane su njihove mogućnosti. Sustavi koji su obrađeni su Suricata,
Security Onion i WinPatrol.
Četvrto poglavlje detaljno opisuje programski paket Snort. Također je korišten i u kasnijim
poglavljima, a njegovo testiranje predstavlja glavni dio ovog završnog rada. Nakon općenitog
opisa, prednosti, nedostataka i povijesti slobodno dostupnog sustava Snort, opisana su pravila
kojima raspolaže i pomoću kojih otkriva napade i zlonamjerne aktivnosti. Detaljno su
objašnjene i instalacija i konfiguracija na dva operacijska sustava, Windowsu i Ubuntu, te
pokretanje i testiranje Snorta. Dodatno je prikazano i pojašnjeno i snimanje prometa pomoću
Snorta instaliranog na Windowsu.
Peto poglavlje predstavlja praktični rad i prikaz otkrivanja raznih napada Snortom. U prvom
dijelu opisano je preuzimanje i konfiguracija potrebnih virtualnih mašina na VMware
Workstationu. Nakon toga su prikazana tri rezultata ispitivanja ranjivosti sustava, ovisno o
alatu koji smo koristili na Snortu. Prvi korišteni alat na operacijskom sustavu Kali je Nmap,
drugi alat je Sparta, a treći Nikto.
2
2. Sustavi za otkrivanje i sprječavanje napada
2.1. Otkrivanje i sprječavanje napada
Otkrivanje napada općenito podrazumijeva otkrivanje bilo kakvih akcija kojima je cilj narušiti
ispravan rad računalnih sustava i njihovu sigurnost. Procesom nadziranja i analize događaja u
mreži, odnosno mrežnog prometa, se otkrivaju znakovi mogućih zlonamjernih aktivnosti,
prekršaja ili neposrednih prijetnji sigurnosnim pravilima. Taj proces se može izvoditi ručno ili
automatski. Ručno otkrivanje napada je puno kompliciranije, dugotrajnije i podložnije
pogreškama, jer zahtijeva da osoba čita veliku količinu podataka i onda uglavnom ne stigne
na vrijeme otkriti napad. Drugi način su automatski sustavi koji mogu biti izvedeni kao
programski ili sklopovski uređaji, a njihov razvoj počinje krajem 20. stoljeća.
Sprječavanje napada također predstavlja proces detekcije, ali može zaustaviti isporuku paketa
na temelju otkrivenih prijetnji i incidenata.
2.2. Opis i razvoj IDS-a i IPS-a
Sustavi za otkrivanje napada (Intrusion detection systems - IDS) su sustavi praćenja, dok su
sustavi za sprječavanje napada (Intrusion prevention systems - IPS) sustavi kontrole. I IDS i
IPS su dio mrežne infrastrukture i uspoređuju trenutnu mrežnu aktivnost s poznatom bazom
podataka o prijetnjama kako bi se otkrile nepravilnosti. Glavna razlika je što će se dogoditi
nakon toga.
Razvoj IDS-a i IPS-a počinje već 1980. godine kada je opisan najraniji koncept IDS-a u
Nacionalnoj sigurnosnoj agenciji. Razvoj se nastavlja i 1986. objavom modela IDS-a koji se
danas koristi kao baza za mnoge sustave.
Sustavi za otkrivanje napada (IDS) mogu biti uređaji ili softverske aplikacije. Analiziraju i
prate mrežni promet tražeći znakove koji ukazuju da napadači koriste određene tehnike kako
bi infiltrirali ili ukrali podatke iz žrtvine mreže. IDS ne poduzimaju nikakve akcije i
zahtijevaju prisustvo čovjeka ili drugog sustava koji će odlučiti što dalje. Mogu se usporediti i
sa sigurnosnim štitom koji ograničava prijenos paketa između mreža, dok IDS mogu djelovati
i unutar mreže.
Svaka zlonamjerna aktivnost ili incident se prijavljuje administratoru ili se prikuplja centralno
pomoću sustava za upravljanje sigurnosnim informacijama i događajima (SIEM). SIEM
filtrira alarme kako bi razlikovao lažne dojave i upozorenja od stvarnih zlonamjernih
aktivnosti. IDS se mogu odnositi na pojedinačna računala, ali i na male i velike mreže.
3
2.3. Podjela
Sustave za otkrivanje napada najčešće klasificiramo u dvije skupine NIDS (Network intrusion
detection systems) i HIDS (Host intrusion detection systems). To je jedan od dva osnovna
načina klasifikacije, a temelji se na tome gdje je napad detektiran. Sustav koji nadzire važne
datoteke operacijskog sustava primjer je HIDS-a, dok je sustav koji analizira dolazni mrežni
promet primjer NIDS-a.[1] NIDS analiziraju dolazni mrežni promet na svim uređajima u
mreži i služe za otkrivanje napada u mreži. HIDS se koriste za otkrivanje napada na domaćinu
i nadgledaju važne datoteke operacijskog sustava prateći ulazne i izlazne pakete s uređaja, a
mogu upozoriti korisnika ili administratora ako se otkrije sumnjiva aktivnost. NIDS se dijeli
na on-line i off-line NIDS, odnosno inline i tap mode, a razlika je ta što on-line analizira
pakete u realnom vremenu, a off-line te podatke pohranjuje i kroz niz procesa odlučuje radi li
se o napadu ili ne.
Drugi način klasifikacije IDS-a je prema načinu otkrivanja napada gdje postoje 3 različita
slučaja:
• detekcija potpisom,
• otkrivanje na temelju anomalije i
• detekcija utemeljena na reputaciji.
Pri detekciji potpisom se uspoređuju promatrani događaji s potpisima i to je ujedno
najjednostavniji i najkorišteniji način otkrivanja, jer uspoređuje samo trenutno aktivnu
jedinicu (npr. paket) pomoću operacije usporedbe nizova. Time je omogućeno prepoznavanje
loših obrazaca, kao što su zloćudni programi (engl. malware). Detekcijom anomalije se
utvrđuje odstupanje od uobičajenog modela dobrog prometa, dok je treći slučaj uspoređivanje
općeprihvaćenih definicija za svako stanje protokola s opaženim događajima kako bi se
odredilo odstupanje.
Sustavi za sprječavanje napada (IPS) su varijacija IDS-a i imaju sposobnost odgovora na
otkrivene napade. Također su poznati i pod nazivom IDPS (sustavi za otkrivanje i
sprječavanje napada). Nalaze se između vanjskog svijeta i unutarnje mreže. IPS aktivno
odbijaju mrežni promet prije nego dođe do odredišta, oslanjajući se na pravila koja definiraju
predstavlja li taj paket poznatu sigurnosnu prijetnju. Odbijaju ga tako što zaustavljaju sami
napad, mijenjaju sadržaj napada ili mijenjaju sigurnosno okruženje te šalju alarm blokirajući
ili resetirajući promet s upitne IP adrese. IDPS se danas obavezno koriste u sigurnosnoj
infrastrukturi velike većine organizacija.
Sustavi za sprječavanje napada imaju jednaku klasifikaciju prema načinu otkrivanja napada
kao i sustavi za otkrivanje napada.
Kod IPS-a također postoji podjela na 4 različite vrste, a to su:
4
• mrežni sustavi za sprječavanje napada (engl. Network-based IPS),
• bežični sustavi za sprječavanje napada (engl.Wireless IPS),
• sustavi za sprječavanje napada zasnovani na analizi ponašanja na mreži (engl.
Network behavior analysis ,NBA) i
• računalni sustav za sprječavanje napada (engl. Host-based IPS, HIPS).
Prva navedena vrsta IPS-a analizira cijelu mrežu, Wireless IPS analizira samo bežičnu mrežu,
NBA ispituje mrežni promet tražeći neobične događaje, a posljednja vrsta služi za nadziranje
samo jednog računala i događaja unutar njega.
5
3. Slobodno dostupni sustavi
Danas postoji mnoštvo sustava za otkrivanje i prevenciju od napada, a u ovom radu su opisani
neki od najkorištenijih slobodno dostupnih sustava poput Suricate, Security Oniona,
WinPatrola i Snorta.
3.1. Sustav Suricata
Suricata je besplatan i slobodno dostupan brzi mehanizam za otkrivanje mrežnih prijetnji i
napada. Osim otkrivanja napada u stvarnom vremenu, može sprječavati napade i pratiti
mrežnu sigurnost. Provjerava i kontrolira mrežni promet koristeći mnoštvo pravila i Lua
podršku za otkrivanje složenijih prijetnji. Standardni inputi i outputi su YAML i JSON, a
koriste se s alatima poput SIEM-a, Splunka, Kibana i drugih. Projekt i kod Suricate su u
vlasništvu Fondacije za otvorenu informacijsku sigurnost (OISF) koja osigurava Suricatin
razvoj. Premda njen životni vijek nije toliko dugačak u usporedbi sa Snortom, sustavom koji
je detaljno opisan u 4. poglavlju, Suricata se utemeljila kao suvremeni odgovor ili alternativa
Snortu, isključivo zbog svojih višestrukih mogućnosti.
3.2. Sustav Security Onion
Security Onion je alat za otkrivanje pogrešaka i prijetnji, te ne može poduzimati nikakve
akcije bez potvrde korisnika. Pruža pregled mreže i prometa u njoj, te prikazuje upozorenja i
anomalije, ali je potrebna potvrda korisnika odnosno administratora kako bi se pregledale
prijetnje i promet, te poduzeli daljnji koraci. Security Onion ima tri osnovne funkcije, a to su:
• potpuno hvatanje paketa,
• mrežni sustavi i sustavi za otkrivanje napada na domaćinu i
• jaki alati za analizu.
Pruža više IDS opcija, NIDS, gdje se mogu koristiti Snort i Suricata ili Bro IDS i HIDS, gdje
se koristi OSSEC koji pruža vidljivost od krajnje do izlazne točke određene mreže.
3.3. Sustav WinPatrol
WinPatrol je treći primjerak slobodno dostupnog alata koji prati i kontrolira važne dijelove
sustava i upozorava korisnika ako se radi o zlonamjernim programima i prijetnjama. Korisnik
tada može prekinuti procese, upravljati programima za pokretanje i očistiti kolačiće.
WinPatrol postoji u dvije verzije, besplatna osnovna (Free) verzija i plaćena (Plus) verzija.
Omogućava poboljšan rad sustava i snimanje prometa u stvarnom vremenu, bez usporavanja
6
procesora, otkrivajući nepravilnosti (trojanske konje, crve, kolačiće, adware, spyware i druge
zlonamjerne programe). Preuzima se kao .exe datoteka i može se pokrenuti na Windows XP,
Vista, Windows 7, Windows 8 i Windows 10 uključujući x64 verzije, a još od 1997. godine
ima preko 2 000 000 preuzimanja. Na Slici 3.1 je prikaz detekcije trenutno pokrenutih
programa sustavom WinPatrol.
Slika 3.1 Sustav WinPatrol pokrenut na operacijskom sustavu Windows
7
4. Programski paket Snort
4.1. Općenito
Snort je najrašireniji besplatni slobodno dostupni sustav za otkrivanje i sprječavanje napada
(IDPS), a služi za analizu prometa u stvarnom vremenu i zapisivanje paketa. Može izvesti
analizu protokola, pretraživanje sadržaja i uparivanje i otkrivanje raznih napada. Postoje tri
osnovna načina rada u Snortu:
• sniffer,
• packet logger i
• network intrusion detection.
Dosad ima preko 5 milijuna preuzimanja. Prva verzija Snorta datira iz 1998. godine i napisana
je za operacijski sustav Linux. Autor Snorta je Martin Roesch i do 2001. godine se taj sustav
razvijao pod njegovom kontrolom. Nakon toga dolazi u posjed Sourcefire Inc. tvrtke koja je
odredila posebni tim koji će se baviti unaprjeđivanjem Snorta i samim time mu je poboljšala
kvalitetu, ugled i rasprostranjenost. Od 1998. godine izašlo je mnoštvo verzija Snorta, a
trenutna najnovija je Snort 2.9.13.0. U ovom radu se koristi verzija Snort-2.9.8.3.
Pri preuzimanju Snorta, dostupne su tri varijante: community, registered i subscription.
Community je osnovna verzija i može se preuzeti odmah, za registered verziju, koja ima veći
broj pravila i opširnija je, se potrebno registrirati. Za treću, naprednu varijantu se potrebno
pretplatiti na Snort.
Najveća prednost Snorta je što su prve dvije verzije besplatne i odmah dostupne pa se
automatski stvara velika baza mogućih budućih korisnika Snorta. Snort je otvoren za
primjedbe i svatko može sudjelovati u unaprjeđivanju i ispravljanju pogreški te je tako
omogućen konstantan razvoj i napredak sustava.
Jedini nedostatak je da je potrebno jako dobro poznavati sintaksu pravila i sve mogućnosti i
opcije pisanja novih pravila, kako bi se ista mogla učinkovito stvarati. Samim time što postoji
mnogo tutorijala i knjiga o radu sa Snortom, može se zaključiti da na prvu nije jednostavan i
trivijalan.
4.2. Pravila
Osnovni dio, tj. baza Snorta su pravila, koja omogućavaju niz različitih funkcija za analizu
mrežnih paketa, od IP adrese i pristupne točke do pretraživanja korisnog sadržaja paketa
regularnim izrazima. Naučiti sintaksu pravila je jednostavno, ali i neophodno za korištenje
8
Snorta. Svako pravilo podijeljeno je u dva dijela, tijelo i zaglavlje. U zaglavlju se definiraju
filtri za pretragu paketa, mrežni protokol, IP adrese izvorišta i odredišta i pripadajuće mrežne
maske, te pristupne točke izvorišta i odredišta, smjer koji može biti jednostran i obostran i
akcija koja će se obaviti nakon detekcije. Primjer pravila u najosnovnijem obliku prikazan je
na Slici 4.1, a u nastavku teksta je detaljno pojašnjen.
4.1 Primjer jednostavnog pravila
Prvo što se navodi pri pisanju pravila je akcija koja će se izvršiti, a to je u navedenom
primjeru alert. Osim alerta, koji se najčešće upotrebljava, postoje još i log (zapisivanje paketa
na disk), pass (ignoriranje paketa), activate (obavijest o dolasku i aktiviranje pravila), sdrop
(odbacivanje paketa) i drugi. Iduća opcija u zaglavlju pravila određuje mrežni protokol, ovdje
je to UDP, a inače postoje još i TCP, ICMP i IP protokoli. Nakon toga je potrebno definirati
IP adrese i usmjerenje u kojem će se obavljati analiza uhvaćenih paketa.
IP adrese se definiraju pomoću adrese mreže i adrese maske, npr. 192.168.52.0/24. Adresa je
prvi dio prije znaka “/”, a maska je broj nakon tog znaka. Osim uobičajenog navođenja
adrese, može se napisati i ključna riječ any, koja označava da se radi o bilo kojoj IP adresi i
pristupnoj točki. Adrese se također mogu napisati i u obliku liste, ali se trebaju odvojiti
zarezom i uokviriti uglatim zagradama. Uvijek je potrebno navesti dva para adresa koji
predstavljaju izvor i odredište.
Usmjerenje može biti jednostrano (kao u primjeru) i obostrano („<>“). Kod obostranog
smjera IP adrese s lijeve i desne strane znaka su u isto vrijeme i izvor i odredište, a inače je
odredište kod vrha strelice.
Tijelo pravila je drugi dio pravila, piše se unutar zagrada i sadrži tri vrste podataka: općenite
podatke, filtre povezane sa zaglavljem i filtre koji su vezani s podacima iz paketa.
Prva vrsta su općeniti podaci i potrebno ih je mapirati u obliku „ključna riječ:vrijednost”.
Općeniti podaci su:
• message,
• flow,
• reference,
• classtype i
• signature ID.
9
Message (msg) je dio u kojem se opisuje o kojem pravilu se radi i predstavlja ono što će se
prikazati pri otkrivanju tog pravila. Flow (flow) definira u kojem smjeru ide mrežni promet, a
omogućava da se pravila primjenjuju samo u određenom smjeru. Reference (ref) služi za
definiranje referenci na izvore koji pobliže opisuju napad koji pravilo definira. Classtype
(classtype) određuje učinkovitost i funkciju napada, a postoji oko 40 definiranih vrsta.
Signature ID (sid/rev) je jedinstveni Snort identifikator za svako pravilo, a dodatno se definira
i revision koji predstavlja trenutnu reviziju pravila. Primjer jednostavnog pravila koje korisnik
može definirati u datoteci local.rules je prikazan na Slici 4.1.
Druga vrsta su filtri koji otkrivaju pakete preko informacija iz zaglavlja i provjeravaju
vrijednosti (redni broj fragmenta, tip usluge broj paketa, veličinu korisnih podataka u paketu,
veličinu prozora i sl.).
Posljednja stavka su složeniji filtri, a u pravilu ih može biti više. Ovdje je najvažniji content
koji dozvoljava korisniku da postavi pravila koja traže specifičan sadržaj unutar sadržaja
paketa, a može sadržavati mješovite tekstualne i binarne podatke. Osim contenta postoji i
mnoštvo modifikatora, a ovdje su navedeni samo neki najvažniji. Distance/offset
omogućavaju korisniku koji piše pravilo da definira gdje započeti pretraživanje, u odnosu na
početak korisnog toka podataka ili u odnosu na početak podudaranja sadržaja. Whitin/depth je
ključna riječ koja omogućava korisniku koji piše pravilo da specificira koliko daleko (do koje
dubine) u korisnom sadržaju će tražiti definirani mješoviti niz tekstualnih znakova i okteta.
PCRE je ključna riječ koja dopušta pisanje pravila pomoću perl kompatibilnih regularnih
izraza, a time se omogućuju složenije pretraživanje korisnog sadržaja. Byte_test opcija
dopušta pravilu da testira određeni broj bajtova u odnosu na određenu binarnu vrijednost.
Nakon što korisnik napiše određeno pravilo (npr. pravilo sa slike 4.1), ako dođe do njegovog
prepoznavanja nakon pokretanja Snorta, u konzoli se pojavljuje ispis kao na slici 4.2.
Slika 4.2 Izvođenje Snorta
4.3. Instalacija i konfiguracija
Programski paket Snort dostupan je za veliku većinu operacijskih sustava, pa se i
konfiguracije i početne postavke Snorta razlikuju od sustava do sustava. Instalacija se također
razlikuje, ali je u globalu sve veoma slično. U ovom radu Snort je instaliran na operacijske
sustave Windows, Ubuntu i Kali, a u sljedećim potpoglavljima su detaljno opisane instalacije
na prva dva.
10
4.3.1. Instalacija i konfiguracija programskog paketa Snort na
operacijskom sustavu Windows
Instalacija na Windowsu započinje s preuzimanjem i pokretanjem instalacijske datoteke za
windows preuzete sa Snortove službene stranice https://www.snort.org/. Preporučljivo je
preuzeti zadnju najnoviju verziju Snorta i pripadajućih pravila.
Klikom na instalacijsku datoteku otvara se prozor s nekoliko pitanja o instalaciji. Prvo od njih
je odabir komponenti koje korisnik želi instalirati i po defaultu su odabrane sve komponente.
Zatim se odabire mjesto instalacijskog direktorija. Nakon toga se pojavi obavijest da je za
ispravan rad programskog paketa Snort na operacijskom sustavu Windows potrebna WinPcap
biblioteka funkcija za dohvat mrežnih paketa.
Prije samog pokretanja, nakon završene instalacije, potrebno je konfigurirati Snort kako bi bio
u mogućnosti ispravno raditi u trenutnoj okolini. Potrebno je obaviti više toga, ali jedna od
glavnih stavki konfiguracije je uređivanje pravila koja se nalaze u direktoriju rules unutar
Snorta. Osim njih postoji još jedan direktorij s preostalim pravilima, a to je preproc_rules.
Datoteku s pravilima koja se preuzme sa Snortove stranice potrebno je raspakirati u prethodno
navedene direktorije. Svaki direktorij predstavlja jednu skupinu sličnih svojstava. Takvom
podjelom se olakšava odabir koji se skup pravila unutar konfiguracijske datoteke želi koristiti.
Unutar direktorija rules nalazi se datoteka “local.rules“ u kojoj korisnik može pisati vlastita
pravila. Preuzimanjem sa Snortove službene stranice skine se 50-ak datoteka. Neki primjeri
grupiranja preuzetih datoteka su i pravila koja služe za nadzor HTTP prometa, SMTP
prometa, za otkrivanje DoS napada, za otkrivanje napada koji se provode SQL injekcijom i
sl.
Nakon raspakiravanja arhive (zip datoteke) u direktorij rules, potrebno je obaviti
konfiguraciju Snorta, kako bi se omogućio ispravan rad na konkretnom operacijskom sustavu.
Najviše promjena postavki unutar datoteke snort.conf treba odraditi ako se Snort instalira na
Windows operacijskom sustavu. Konfiguracija se provodi izmjenom nekih datoteka unutar etc
direktorija koji se nalazi u direktoriju programskog paketa, ali većinski dio se odradi
izmjenama u već spomenutoj datoteci snort.conf.
Prvo što je potrebno odraditi je definirati varijable poput $HOME_NET. Ta varijabla služi
kao zamjena za IP adresu korisnikovog računala i kasnije je u datoteci pri svakoj pojavi
određene IP adrese možemo koristiti umjesto nje.
11
Slika 4.3 Postavljanje varijabli u datoteci snort.conf
Sljedeći korak je uređivanje putanje do pravila i podešavanje globalnih postavki. One se
podešavaju korištenjem ključne riječi config nakon koje slijedi naziv toga što se podešava.
Zatim se trebaju urediti pretprocesorski i izlazni moduli, na sličan način kao i prethodna
stavka. Jedina je razlika što se u ovom slučaju umjesto ključne riječi config koriste ključne
riječi preprocessor, odnosno output.
Zadnji i najbitniji korak je uređivanje skupa pravila koje će Snort koristiti pri prepoznavanju
paketa. Pravila se uključuju ključnom riječi include nakon koje slijedi putanja do datoteke
koja sadrži potreban skup pravila. Pravila koja nisu potrebna se mogu zakomentirati tako što
se na početak retka stavi znak “#”. Kod ove konfiguracije Snorta je dodatno specifično i to što
je u svim prethodno definiranim putanjama do pravila potrebno sve znakove “/” zamijeniti s
“\” jer je instalacija na operacijskom sustavu Windows.
4.3.2. Instalacija i konfiguracija programskog paketa Snort na
operacijskom sustavu Ubuntu
Instalacija Snorta na operacijskom sustavu Ubuntu ima dosta sličnosti s prethodnom, koja je
opisana u potpoglavlju 4.3.1., ali je najlakše sve odraditi preko terminala. Prije instalacije
Snorta potrebno je obaviti određena ažuriranja, preuzeti nekoliko knjižnica i daq source code
koji je potreban za ispravan rad Snorta. Nakon stvaranja direktorija u koji se spremi i instalira
programski paket Snort, preuzimanja pravila i njihovog raspakiravanja u novostvorene
direktorije, potrebno ga je konfigurirati. Konfiguracija je u principu ista kao i na Windowsu.
Ako korisnik želi napisati vlastito pravilo, to će uraditi u datoteci /etc/snort/rules/local.rules.
Unutar te datoteke se doda proizvoljan broj pravila u obliku koji je definiran u poglavlju 4.2.,
a zatim se može pokrenuti i testirati Snort.
12
4.4. Pokretanje i ispitivanje programskog paketa Snort
Kao što je već rečeno, postoje 3 osnovna načina rada Snorta. Svaki od njih se pokreće na
drugačiji način i ima drugačije funkcionalnosti. Snort je osmišljen kao konzolna aplikacija i
pokretanje ova tri načina se svodi na pisanje različitih naredbi s dodatnim opcijama u konzoli.
Sniffer način rada je prvi koji je postojao u Snortu i najjednostavniji je od svih. Služi samo za
čitanje paketa s mrežnog sučelja i njihovo prikazivanje na ekranu.
Njegovo pokretanje je najjednostavnije, a potrebno je samo u konzolu upisati ”snort“ i jedan
od sljedeća tri parametra:
• -v - ispis zaglavlja paketa na ekran,
• -d - ispis sadržaje paketa na ekran i
• -e - ispis zaglavlja paketa s podatkovnog sloja.
Packet logger način rada je veoma sličan sniffer načinu rada, ali se ovdje uhvaćeni paketi ne
prikazuju na ekranu, nego se njihov sadržaj sprema u datoteku na disku. Potrebno je navesti
putanju do direktorija za pohranu podataka na tvrdom disku, a parametri za pokretanje Snorta
u ovom načinu rada su „–l“, „-h“ i „–b”.
Prvi parametar služi za definiranje direktorija u koji će se pohraniti rezultati, drugi parametar
određuje lokalnu mrežu, a treći omogućuje binarni zapis. Ako parametrom “-h” definiramo IP
adresu lokalne mreže, onda se u datoteku pohranjuju samo dolazni paketi koji kao IP adresu
odredišta imaju navedenu IP adresu.
Način rada Network intrusion detection je najsloženiji i ima najviše mogućnosti za
podešavanje. Njime se dohvaćeni paketi pregledavaju pomoću vrlo robusnog sustava pravila
koji može uređivati i nadopunjavati korisnik. Nakon što se paket prepozna, program izvodi
točno određenu akciju temeljenu na onome što je otkriveno. Za pokretanje u ovom načinu
rada je potrebno dodati parametar koji definira naziv konfiguracijske datoteke, a to je
snort.conf.
U ovom slučaju potrebno je omogućiti određivanje različitih vrsta dojave nakon otkrivanja
napada. Neki od parametara koji to omogućuju su: –A full (potpuna obavijest uz zaglavlje
paketa), -A none (bez obavijesti), -A fast (osnovni prikaz uz vrijeme, izvor i odredište), -A
console (jednak -A fast, ali je ispis u konzoli).
Primjer pokretanja Snorta u IDS načinu rada s nekoliko definiranih opcija prikazano je na
Slici 4.4.
13
Slika 4.4 Pokretanje Snorta u IDS načinu rada
Sustav Snort je u ovom slučaju pokrenut na sučelju eth0, određen je ispis osnovnog prikaza uz
vrijeme, izvor i odredište, u konzoli i definirana je putanja do konfiguracijske datoteke
snort.conf.
Pri pokretanju u IDS načinu rada, Snort u konzoli prikaže koliko je kojih pravila učitano, a to
se vidi na sljedećoj slici (Slika 4.5).
14
Slika 4.5 Broj učitanih pravila
Na slici iznad se vidi da je pročitano 4150 pravila, od kojih je 3476 pravila otkrivanja, a u
tablici odmah ispod toga su pravila raspodijeljena prema protokolima koje koriste.
Osim ova tri načina postoji i testna verzija Snorta koja se koristi za provjeru ispravne
konfiguracije Snorta. To se postiže dodavanjem parametra “-T” pri pisanju naredbe u konzoli.
Primjer uspješnog testiranja i prihvaćene konfiguracije Snorta je prikazan na slici ispod (Slika
4.6).
15
Slika 4.6 Testno pokretanje Snorta
4.4.1. Snimanje prometa na operacijskom sustavu Windows
I posljednji slučaj je prikaz rada Snorta na Windowsu. U datoteci local.rules su napisana
nekolika najosnovnija pravila koja Snort detektira odmah prilikom pokretanja. U pravilima su
kao izvor i odredište napisana dva para ključne riječi any, tako da se gleda promet unutar
cijele podmreže. Tako se prvi i drugi otkriveni UDP paketi prenose s IP adrese
192.168.52.129 na 192.168.52.255 sve jedinice unutar podmreže, treći detektirani UDP paket
ide sa 192.168.52.140 na 192.168.52.254, a četvrti sa 192.168.52.254 na 192.168.52.136.
Prekidom snimanja Snorta automatski se definira sažetak odnosno rezime snimanja gdje piše
koliko je Snort paketa obradio u koliko vremena, koliko ih je primljeno, a koliko analizirano i
kojem protokolu pripada koliko paketa, a to je vidljivo na Slici 4.7.
16
Slika 4.7 Snimanje Snortom na Windowsu
17
5. Praktični rad
Kako bi se ispitala učinkovitost i funkcionalnost programskog paketa Snort, u okviru ovog
završnog rada provedeno je testiranje otkrivanja napada pomoću najrasprostranjenijeg IDPS-a
u svijetu. Za potrebe testiranja neophodno je bilo omogućiti virtualno okruženje. Ispitna
okolina sastavljena je od tri virtualna računala Kali, Ubuntu i Metasploitable2. Kali je vršio
napade na Ubuntu i Metasploitable2, a ti napadi su detektirani prethodno opisanim Snortom
koji je instaliran na virtualnoj mašini Ubuntu.
5.1. Virtualno okruženje i instalacija
Za ispravno testiranje i prikaz funkcionalnosti IDPS-a, prvo je potrebno ostvariti virtualno
okruženje. To je ostvareno programskim paketom VMware Workstation koji je namijenjen za
rad i pokretanje virtualnih strojeva. Unutar tog programskog paketa su stvorene tri virtualne
mašine (dvije žrtve i jedan napadač). Žrtve su posebno kreirani ranjivi Linux sustav
Metasploitable2 i Ubuntu x64, a najpogodniji napadač, specijalno dizajniran za penetracijsko
testiranje je Kali. Penetracijsko testiranje su simulirani cyber-napadi na računalnom sustavu
koji se provode radi procjene sigurnosti sustava.
Prvo je instalirana virtualna mašina Metasploitable2 dostupna na linku
http://sourceforge.net/projects/metasploitable/files/Metasploitable2. Nakon raspakiravanja
preuzete zip datoteke, potrebno je otvoriti VMware i kliknuti na Create a new virtual
machine. U sljedećem prozoru je moguće odabrati količinu RAM-a koju će zauzimati
virtualka, a u ovom slučaju to je 512 MB i odabir tvrdog diska. Virtualna mašina je time
instalirana i osnovno korisničko ime i šifra su msfadmin : msfadmin.
Instalacija Ubuntu x64 je veoma slična, također je potrebno s linka preuzeti virtualnu mašinu i
u VMwareu odabrati Create a new virtual machine. Također slijedi odabir niza postavki u
novom prozoru, unos imena i šifre za prijavu i odabir veličine zauzimanja RAM-a, što je u
ovom slučaju 1 GB.
I posljednji u nizu je Kali, a njegova ISO datoteka se može preuzeti s
https://www.kali.org/downloads, koji se otvori pri kreiranju nove virtualke u VMwareu.
Odabiru se postavke i veličina zauzimanja RAM-a, a ona je 2 GB. Početni podaci za prijavu
na Kali (korisničko ime i lozinka) su root : toor. Kalijev operacijski sustav korišten za potrebe
ovog završnog rada je Debian 8.x 64-bit. Namijenjen je testiranju probojnosti i hakiranju, a
sadrži preko 600 instaliranih programa za testiranje ranjivosti. Od mnoštva alata koje
posjeduje, a vidljivi su na Slici 5.1, u praktičnom radu su odabrana 3: Nmap, Sparta i Nikto.
18
Slika 5.1 Alati dostupni na Kaliju
U sve tri virtualne mašine veoma je važno postaviti da je network adapter u modulu host-only
(privatna mreža). Početne postavke definiraju NAT (Network Address Translation) kao
mrežni način rada virtualke. Promjenom iz NAT u host-only, virtualne mašine neće moći
komunicirati s internetom, kao niti s glavnim računalom.
Sada je sve spremno za demonstraciju otkrivanja napada pomoću Snorta, a tri virtualke se
nalaze na VMwareu i spremne su za pokretanje što prikazuje Slika 5.2.
19
Slika 5.2 Pripremljeno okruženje za praktični rad
Tri virtualne mašine nalaze se u privatnoj mreži i određene su im IP adrese.
• Metasploitable2 : 192.168.52.129
• Kali-Linux : 192.168.52.135
• Ubuntu : 192.168.52.140
20
5.2. Simulirani napadi
Za potrebe ovog rada odabrana su tri alata na operacijskom sustavu Kali: Nmap, Sparta i
Nikto. Sva tri spadaju u skupinu alata za analizu ranjivosti (engl. Vulnerability Analysis) i
njima su simulirani napadi na ranjivi sustav.
Otkriveni su programskim paketom Snort i opisani su u nastavku.
5.3. Alat Nmap
Prvi napad obrađen u ovom radu je Nmap napad. Nmap („Network mapper”) je besplatna
slobodno dostupna funkcionalnost za istraživanje mreže i reviziju sigurnosti. Mnogi sustavi i
mrežni administratori smatraju da je koristan za zadatke kao što su praćenje rada računala ili
poslužitelja. Nmap upotrebljava IP pakete na različite načine kako bi odredio koji su hostovi
dostupni na mreži, koje usluge (naziv aplikacije i verzija) nude ti hostovi, koji operacijski
sustavi (i verzije OS-a) rade, koje vrste paketa filtera / vatrozida su u upotrebi i desetke drugih
obilježja. [8] Omogućava brzo skeniranje velikih mreža i ima jednog hosta (domaćina). Može
funkcionirati na većini operacijskih sustava, pa tako i na Linuxu, Windowsu i Mac OS X.
Nmap je čak proglašen i sigurnosnim proizvodom godine. To nije iznenađujuće jer je
fleksibilan, odnosno podržava desetke različitih naprednih tehnika mapiranja mreža, podržava
većinu operacijskih sustava, jednostavan je a pritom i funkcionalan, prilagođen radu i
skeniranju ogromnih mreža i besplatan.
Alati uključeni u Nmap paket su
• nping (alat za generiranje mrežnih paketa),
• ndiff (uslužni program za usporedbu rezultata Nmap skeniranja),
• ncat (uslužni program za umrežavanje) i
• nmap.
Alat nmap ima mnoštvo opcija, a najjednostavniji oblik pokretanja je da se u konzolu kalija
upiše Nmap i IP adresa virtualke koju želimo skenirati (Slika 5.3).
21
Slika 5.3 Primjer pokretanja Nmap snimanja
Prije pokretanja Nmapa potrebno je bilo na virtualnom stroju Ubuntu pokrenuti Snort u IDS
načinu rada, kako bi mogao otkriti sumnjive događaje. Nakon što započne Nmap skeniranje,
na Ubuntu dolaze obavijesti, prikazane na Slici 5.4, uz poruku (SNMP AgentX/tcp request) i
klasifikaciju napada (Attempted information leak – pokušaj curenja informacija), vrijeme
napada i IP adrese i portove napadača i žrtve (192.168.52.135:47993 ─>192.168.52.140:161).
Slika 5.4 Snort registrira Nmap snimanje
22
Drugi obrađeni Nmap napad je pokrenut s dodatnim opcijama –sP i –disable-arp-ping (Slika
5.5), te je za njega kreirano vlastito pravilo u local.rules Snort datoteci:
alert icmp any any -> 192.168.52.140 any (msg: "NMAP ping sweep Scan";
dsize:0;sid:10000004; rev: 1;)
Slika 5.5 Drugi primjer pokretanja Nmapa
5.4. Alat Sparta
Sparta je aplikacija u python grafičkom sučelju koja pojednostavljuje penetracijsko testiranje
mrežne infrastrukture pomažući tester penetracije u fazi skeniranja i nabrajanja. Omogućuje
testeru da uštedi vrijeme tako da ima pristup svojim alatima i da prikaže sve rezultate alata na
prikladan način. [9]
23
Sparta se može pokrenuti preko Kali Applications menija ili preko komandne linije u konzoli
(upisom ključne riječi sparta). Otvara se novi prozor u kojem je potrebno kliknuti na
dodavanje novog hosta i upisati IP adresu one virtualke koju želimo analizirati i dodati u
djelokrug, a to je u ovom slučaju 192.168.52.140 (Ubuntu). Početak rada Sparte na zadanom
djelokrugu prikazan je na slici ispod (Slika 5.6).
Slika 5.6 Pokretanje alata Sparta
24
Nakon dodavanja adrese, Sparta započinje skeniranje, a to otkriva unaprijed pokrenuti Snort
na Ubuntu. (Slika 5.7)
Slika 5.7 Otkrivanje Sparte pomoću Snorta, sustava za otkrivanje napada
Može se primijetiti kako dolazi do podudaranja u više različitih pravila i također su prikazane
IP adrese napadača i žrtve.
5.5. Alat Nikto
Nikto je slobodno dostupni skener web-poslužitelja i provodi mnogobrojne testove protiv
web-poslužitelja, uključujući opasne datoteke i probleme vezane uz zastarjele verzije. Nije
zamišljen kao nevidljivi alat, uspije testirati web-poslužitelj u veoma kratkom roku, ali je
primjetan u IDS i IPS. Ali postoji i podrška za anti-IDS metode za potrebe testiranja IDS-a.
Nikto ima SSL i HTTP Proxy podršku, sprema izvješća u XML-u, HTML-u ili CSV-u, može
skenirati više portova ili više poslužitelja i moguće ga je jednostavno ažurirati kroz konzolu.
Primjer Nikto napada obrađen u ovom radu prikazan je na slici ispod (Slika 5.8). Naredbom
“nikto –h 192.168.52.129” se pokreće Nikto v2.1.6, a meta, odnosno žrtva je virtualna mašina
Metsploitable2, čija je IP adresa zapisana u samoj naredbi.
Snort pokrenut u IDS načinu rada na Ubuntu prepoznaje više različitih pravila i ispisuje ih u
konzoli, a i ovdje je u svakom vidljivo vrijeme, protokol, naziv, klasifikacija i IP adrese i
portovi napadača (Kalija) i žrtve. Na Slici 5.8 je Snort detektirao „Unescaped space in http
uri“, „no content-length or transfer encoding in http response“ i druga pravila, a sva se
klasificiraju u grupu nepoznatog prometa. Prekid snimanja Snorta vrši se kombinacijom tipki
ctrl+c.
25
Slika 5.8 Otkrivanje zlonamjernih aktivnosti postignutih alatom Nikto
26
6. Zaključak
Demonstracijom nekih napada i snimanjem prometa u praktičnom dijelu ovog rada prikazano
je kako funkcionira glavni predstavnik sustava za otkrivanje i sprječavanje napada – Snort.
Danas je računalima definitivno potrebna vrlo visoka razina zaštite, jer su se napadi i
mogućnosti koje oni imaju veoma razvili i proširili. Jedini način obrane od nepoželjnih
aktivnosti je osigurati ispravan rad kvalitetnih sustava za detekciju.
U radu su prikazane mogućnosti sustava za otkrivanje i zaštitu od napada Snort, ali je i
opisana osnovna podjela tih sustava i nabrojeni su još neki drugi koji su također dobre
kvalitete.
Sustava za otkrivanje i sprječavanje napada ima mnogo, neki su besplatni i slobodno
dostupni, a neki ne. Iako se lako može zaključiti da su besplatni sustavi slabiji i lakše im
mogu promaći određene aktivnosti, najbolji primjer da se dokaže suprotno je upravo Snort
koji s preko 5 000 000 preuzimanja konkurira i kvalitetnim komercijalnim rješenjima, uz
uvjet da mu se proširi baza pravila.
27
7. Literatura
[1] Wikipedia.org: Intrusion detection, http://en.wikipedia.org/wiki/Intrusion_detection
[2] Modrić, Edi: Sigurnosni sustavi za otkrivanje napada, Diplomski rad br. 1729, Fakultet
elektrotehnike i računarstva, Zagreb, 2008.
[3] Ravnić, Dino: Otkrivanje i zaštita od napada u mrežnim sigurnosnim sustavima,
Diplomski rad br. 1703, Fakultet elektrotehnike i računarstva, Zagreb, 2008.
[4] IDS vs. IPS: What is the Difference, https://www.varonis.com/blog/ids-vs-ips/
[5] Suricata Homepage, https://suricata-ids.org/
[6] Security Onion Homepage, https://securityonion.net/
[7] WinPatrol Homepage, http://www.winpatrol.com/download.html
[8] Kali Linux Tools Nmap, https://tools.kali.org/information-gathering/nmap
[9] Kali Linux Tools Sparta, https://tools.kali.org/information-gathering/sparta
[10] Kali Linux Tools Nikto, https://tools.kali.org/information-gathering/nikto
[11] Ben Everard, Hacking: a beginner’s guide, 7. Travnja 2016.,
https://www.linuxvoice.com/hacking-a-beginners-guide/
[12] Snort vs Suricata, veljača 2019., https://tacticalflex.zendesk.com/hc/en-
us/articles/360010678893-Snort-vs-Suricata
[13] Wikipedia.org: Snort (software), https://en.wikipedia.org/wiki/Snort_(software)
[14] Snort rule infographic, https://snort-org-
site.s3.amazonaws.com/production/document_files/files/000/000/116/original/Snort_rule_inf
ographic.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=AKIAIXACIED2SPMSC7GA%2F20190525%2Fus-east-
1%2Fs3%2Faws4_request&X-Amz-Date=20190525T182529Z&X-Amz-
Expires=172800&X-Amz-SignedHeaders=host&X-Amz-
Signature=81a4443098cdb66c13b1979eb470269a9ebf2d7554d044fdcefe8992ef59f6d7
[15] Snort IDS Homepage, http://www.snort.org/
[16] What is IDS and IPS, https://www.juniper.net/us/en/products-services/what-is/ids-ips/
[17] Usman Nasir, 18. Srpnja 2016., How to install snort intrusion detection system on
Ubuntu, https://cyberpersons.com/2016/07/18/install-snort-ubuntu/
[18] Gavin Loughridge, 7. Travnja 2018., A Beginners Guide to Vulnhub,
https://medium.com/@gavinloughridge/a-beginners-guide-to-vulnhub-part-1-52b06466635d
[19] Studentski radovi iz računalne sigurnosti, dostupno na Internet adresi:
http://sigurnost.zemris.fer.hr/
28
[20] Use SecGen to Generate a Random Vulnerable Machine, 23. Kolovoza 2017.,
https://null-byte.wonderhowto.com/how-to/use-secgen-generate-random-vulnerable-machine-
0179567/
[21] Wikipedia.org: Cyberattack, https://en.wikipedia.org/wiki/Cyberattack#Types_of_attack
29
Sažetak
Sustavi za otkrivanje i sprječavanje napada
Sustavi za otkrivanje i sprječavanje napada imaju veliku ulogu u području računalne
sigurnosti. U ovom radu su opisani sklopovski i programski sustavi za otkrivanje i
sprječavanje napada te je navedena njihova podjela. Nabrojani su i ukratko opisani dostupni
alati za otkrivanje i sprječavanje napada. Provedeno je ispitivanje sustava uz simulacije
napada na proizvoljnim primjerima u virtualnom okruženju.
Ključne riječi: sustavi, otkrivanje, sprječavanje, računalna sigurnost, napad
Abstract
Intrusion Detection and Prevention Systems
Intrusion Detection and Prevention Systems play a major role in the domain of computer
security. The hardware and program Intrusion Detection and Prevention systems are described
in this thesis and their distribution is specified. Tools for detecting and preventing attacks are
listed and briefly described. Examination of system with simulation of attacks on arbitrary
examples in the virtual environment is carried out.
Keywords: systems, detection, prevention, computer security, attack