SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA ZAVRŠNI RAD br. 3486 ODREĐIVANJE KVALITETE ZAPORKI Matea Pejčinović Zagreb, lipanj 2014. Zahvaljujem se mentoru prof.dr.sc. Marinu Golubu na svim sugestijama, vodstvu i pomoći prilikom izrade ovog rada. Zahvaljujem se i svojoj majci i sestri koje su me tijekom čitavog školovanja podupirale i poticale moju težnju k ostvarivanju svih ciljeva. SADRŽAJ 1. Uvod .............................................................................................................................. 1 2. Uporaba zaporki .......................................................................................................... 2 3. Entropija kao mjera jačine zaporki ........................................................................... 4 4. Jačina zaporki.............................................................................................................. 7 4.1. Slabe zaporke ....................................................................................................... 7 4.1.1. Primjeri slabih zaporki .................................................................................. 8 4.2. Jake zaporke ......................................................................................................... 9 4.3. Pravila i upute za stvaranje jakih zaporki ....................................................... 10 4.3.1. Primjeri jakih zaporki .................................................................................. 12 5. Napadi na zaporke ................................................................................................... 14 5.1. Pogađanje zaporki ............................................................................................. 14 5.1.1. Napadi grubom silom ................................................................................. 14 5.1.2. Napadi rječnikom ........................................................................................ 15 5.1.3. Hibridni pokušaji pogađanja zaporki ........................................................ 16 5.2. Resetiranje zaporki ............................................................................................ 16 5.3. Probijanje zaporki ............................................................................................... 16 5.3.1. Vrijeme potrebno za probijanje ................................................................. 17 5.4. Zabilježeni incidenti............................................................................................ 18 6. Alati za probijanje zaporki........................................................................................ 20 6.1. Cain and Abel ..................................................................................................... 20 6.2. Hashcat ................................................................................................................ 21 6.3. John the Ripper .................................................................................................. 22 6.3.1. Mogućnosti alata ......................................................................................... 23 6.3.2. Načini rada ................................................................................................... 26 6.3.3. Pravila korištenja naredbi i znakova ........................................................ 28 6.3.4. Rezultati pokušaja probijanja zaporki korištenjem alata John the Ripper ........................................................................................................................30 7. Programsko rješenje ................................................................................................ 33 7.1. Program za određivanje jačine zaporke ......................................................... 33 7.1.1. Tehničke značajke ...................................................................................... 33 7.1.2. Upute za korištenje ..................................................................................... 35 7.2. Simulacija rada alata za probijanje zaporki.................................................... 37 7.2.1. Tehničke značajke ...................................................................................... 38 7.2.2. Upute za korištenje ..................................................................................... 39 8. Zaključak .................................................................................................................... 41 Literatura ............................................................................................................................ 42 Sažetak ............................................................................................................................... 44 Summary ............................................................................................................................ 45 1. Uvod Većini današnjih računalnih i mrežnih operacijskih sustava omogućeno je ograničavanje pristupa aplikacijama, podacima, ali i samim operacijskim sustavima korištenjem zaporki. One predstavljaju tajni niz znakova koji se odabire proizvoljno i najčešći su način autentikacije korisnika. No, pitanje je jesu li one zaista sigurne i može li netko doći do podataka kojima inicijalno nema dozvolu pristupa? Danas postoje mnogi već gotovi alati koji omogućuju „probijanje“ zaporki i dolazak do podataka koje bi one trebale štititi pa su one u vrhu liste kritičnih računalnih slabosti. Kompromitirana zaporka omogućuje onome koji ju je priskrbio pretraživanje datoteka i osobnih računa bez prevelike mogućnosti otkrivanja pregledavanja podataka. Stoga je kreiranje zaporke koja se teško može „probiti“ jedan od preduvjeta zaštite korisničkih računa od hakera. No, jačina zaporki ne igra veliku ulogu jednom kad je se napadač domogne stoga je potrebno voditi računa o više aspekata zaštite zaporki. Iako se pokušalo smanjiti ljudsku ovisnost o zaporkama korištenjem biometrije, pametnih kartica, otisaka prstiju i slično, svi su ti pokušaji i dalje u manjoj upotrebi zbog cijene, ali i pouzdanosti pa su zaporke i dalje primarni način zaštite podataka i kontrole pristupa. 1 2. Uporaba zaporki Kad se stvori korisnički račun, potrebno je za korisničko ime odrediti zaporku koja služi kao autentikacija korisnika. U tu svrhu se pohranjuju kombinacije korisničkih imena i zaporki u bazu podataka ili datoteku. Kad se korisnik želi prijaviti, po unosu korisničkog imena i lozinke radi se provjera s podacima u bazi ili datoteci s vrijednostima lozinki. Ukoliko se dogodi podudarnost, pristup je omogućen. Bitno je naglasiti da se za pohranjivanje zaporki u datoteku koriste kriptografski algoritmi, uobičajeno hashing. Hash vrijednosti zaporki se koriste najviše jer ih je praktički nemoguće dekriptirati. Nova zaporka će nastati na način da se korisničkom unosu doda salt vrijednost što je proizvoljno, no ukoliko se koristi, napadač jako teško može izračunati sažetak. To vrijedi čak i za slabe i učestale zaporke(npr. password). Zatim se izračuna sažetak nekim od uobičajenih kriptografskih postupaka kao što su MD5 i SHA1. Bitno svojstvo funkcija za izračunavanje sažetka je otpornost na koliziju što znači da je nemoguće pronaći dvije ulazne poruke istog sažetka. Slika 1. Zaporke i pripadni sažeci[2] Slika 1. predstavlja prikaz zaporki u jednoj datoteci u kojoj su pohranjene zajedno s izračunatim sažecima. Uočljivo je da su prve dvije zaporke poprilično slične, no drugoj je dodan broj 9 i samim time se izračunati sažetak bitno promijenio što je bilo za očekivati jer je to svojstvo funkcije za izračun sažetka poruke [2]. 2 Podaci u bazi se nikad ne kriptiraju za razliku od gore navedenih zaporki pohranjenih u datoteci i upravo u tome leži razlog zašto su oni izloženiji potencijalnim hakerima. Uglavnom je moguće i odabrati opciju da se unosi sačuvaju pa nije potrebno konstantno unositi kombinaciju korisničkog imena i pripadajuće zaporke. Ovakvo rješenje je u redu ukoliko se vodi računa od zaključavanju računala prilikom odsustva korisnika, inače omogućujemo pristup svojim podacima svima koji koriste računalo s pohranjenim podacima. Postoje mnogi načini koji služe za zaštitu zaporki na razini samog sustava i oni se uvelike primjenjuju. Jedan od njih je i zastarijevanje zaporki što je dostupno na većini operacijskih sustava i različitih programa koji su izrađeni za točno određenu poslovnu namjenu. Ovakva metoda traži izmjenu zaporki nakon određenog vremenskog roka što katkad nailazi na velik otpor korisnika tih sustava i programa. Učestalo mijenjanje zaporki traži memoriranje izmjena što onda vodi tome da mnogi korisnici tek neznatno izmijene zaporku pa svrha ove metode obično nije postignuta, tj. male promjene i dalje predstavljaju sigurnosnu prijetnju, pogotovo za administratorske zaporke. Slika 2. Postavljanje parametara za aktiviranje zaporke[17] Slika 2. prikazuje kako se mogu postaviti određeni parametri za zastarijevanje zaporki kao što su prikazivanje upozorenja, zahtijevanje promjene zaporke i drugi [17]. 3 3. Entropija kao mjera jačine zaporki Uobičajeno je koristiti entropiju kao mjeru jačine zaporki u računalnoj industriji. Ona se izražava u bitima što je ustaljena praksa u teoriji informacije, no mogu se koristiti i druge mjerne jedinice. Sama entropija određuje broj potrebnih bita za predstavljanje svih zaporki duljine L u skupu od N znakova pa je i definirana na sljedeći način: H L * log 2 (2.1) N gdje je H standardna oznaka za entropiju. Uočljivo je da entropija zapravo predstavlja složenost same zaporke kao broj bita, a služi kao mjera za predviđanje koliko je zaporka otporna na brute-force napade. Što je entropija veća, to je veća jačina zaporki i nije ih lako probiti jer je potrebno jako puno vremena. Ukoliko napadač ne zna ništa o zaporki, a odluči izvesti brute-force napad, broj kombinacija koje bi trebao uzeti u obzir bio bi povezan s entropijom zaporke, odnosno s informacijskom entropijom: n H ( X ) p x * log i 2 px i (2.2) i 1 Informacijska entropija određuje koliko je nasumično izabrani skup znakova blizak stvarnoj zaporci pa X predstavlja skup mogućih vrijednosti (0 – 255) dok vrijednosti px i su vjerojatnosti pojavljivanja znakova iz skupa X. Pretpostavka je da napadač samo zna koje vrsta znakova je korištena u zaporki, tj. ne zna kako zaporka točno izgleda, ali zna da je čini neka kombinacija npr. velikih i malih slova te brojeva. Pri tome on ne zna koliko se puta ti znakovi koriste, ima li možda u zaporci od 8 znakova samo jedan broj ili više njih što znači da mora ispitati sve moguće kombinacije jer su sve jednako vjerojatne iz njegove perspektive. Svaka vrijednost u skupu X bit će vjerojatnosti ⁄ , gdje N predstavlja broj znakova koji su sadržani u zaporci. n H ( X ) p x * log i i 1 px i 1 N 2 px i (2.3) (2.4) 4 Koristeći gore navedeno, dobiva se: n H (X ) i 1 H (X ) N * 1 * log 2 * log 2 N 1 N H ( X ) log 2 1 N (2.5) 1 N (2.6) N (2.7) Ovako je izraz za entropiju sveden na puno jednostavniji oblik. Ukoliko se uzme da zaporku čine velika i mala slova engleske abecede te brojevi, vrijednost N će iznositi 53 (26 malih slova + 26 velikih slova + 10 znamenaka). Entropija će tada iznositi H ( X ) log 53 5 . 728 bit / simbol 2 . Za dobivanje procjene jačine zaporke, trebamo koristiti formulu H L * log 2 N , tj. nužno je pomnožiti H(X) vrijednost duljinom zaporke pa bi za duljinu od 8 znakova uz H(X) = 5.728 bit/simbol, procjena jačine zaporke, odnosno entropija bila H = 45.824 bit. Uz ovakvu vrijednost entropije, očito je da zaporke ne mogu kvalitetno zaštititi podatke ukoliko se na njih ne primjenjuju kriptografski algoritmi koji uvelike povećavaju zaštitu, a bez kojih zaporke predstavljaju jednu od najslabijih karika u računalnoj sigurnosti. Ukoliko se želi odrediti entropiju za točno određenu zaporku, potrebno je koristiti kalkulator za entropiju. On funkcionira na način da je nužno odrediti broj pojavljivanja određenog znaka u zaporki i podijeliti ga duljinom zaporke čime se dobije vrijednost p x . Time se dobije dosta manja entropija što znači da napadač i ima manje kombinacija za ispitivanje. U prvom slučaju je entropija iznosila 45.824 bita što znači da napadač mora ispitati 245.824 kombinacija, ali u velikom broju slučajeva zaporka se nađe u prvoj polovici ukupnog broja kombinacija[15]. Zanimljivo je da zaporke koje su inače izuzetno jake poput a$H)*Tkl89 imaju manju entropiju nego kad se za zaporku koristi više riječi odvojenih prazninom kao što je to substitution logon carrot, a ova činjenica je prikazana i na sljedećoj slici Randalla Munroea: 5 Slika 3. Odnos entropije i jačine zaporke[18] NIST Special Publication 800-63 donosi preporuke za zaporke koje stvara čovjek, a tiču se entropije: entropija prvog znaka treba biti 4 bita, entropija sljedećih sedam znakova treba biti 2 bit/znak, znakovi od devetog do dvadesetog mjesta trebaju imati entropiju 1.5 bit/znak, svi znakovi iznad 21., uključujući i njega, imaju entropiju vrijednosti 1 bit/znak, dodatnih šest bitova se dodaju ako se koriste i velika slova i znakovi koji nisu iz abecede, dodatnih šest bitova dodaje se zaporkama duljine 1 do 19 znakova dok se zaporkama duljine 20 znakova i više ne dodaje ništa. 6 4. Jačina zaporki Cilj je stvoriti zaporku koja se jednostavno pamti, ali ju je jako teško pogoditi. Zaporke omogućuju pristup web stranicama na kojima su obično povjerljivi podaci poput financijskih informacija koje omogućuju provođenje brojnih transakcija. U slučaju da neovlašteni korisnik dođe do takvih podataka, može doći do različitih prijevara, ilegalnih aktivnosti ili sličnih zloporaba osobnih podataka. U svrhu sprječavanja takvih nezakonitih aktivnosti potrebno je biti oprezan pri izboru zaporki. Izbor jake zaporke nije jamstvo potpunog izbjegavanja rizika po pitanju sigurnosti pristupa podacima, no ona u svakom slučaju smanjuje šanse hakerima da je probiju i tako zlorabe osobne podatke. Nije moguće stvoriti zaporku koja se ne može probiti, no što je ona jača, to je potrebno više vremena i snažniji računalni sustavi za probijanje. Dva se faktora obično razmatraju kad se određuje jačina zaporke, a to su prosječan broj pokušaja pogađanja zaporke koje mora načiniti napadač kako bi uspio naći ispravnu zaporku za određeni korisnički račun te lakoća s kojom napadač može provjeriti ispravnost zaporke pri testiranju. Prvi faktor je određen duljinom zaporke te koliko je komplicirana kombinacija znakova koja se koristi za zaporku pri čemu je nebitno je li zaporka kreirana korištenjem za to predviđenih generatora ili pomoću nekih predvidljivijih procesa. Drugi je pak faktor određen načinom spremanja i korištenja zaporke, odnosno načinom organizacije sustava za zaporke i nije nešto na što korisnik može utjecati[1]. 4.1. Slabe zaporke Mnoge organizacije vjeruju da sigurnosne računalne mjere adekvatno štite njihove informacije i podatke, no sve je više primjera u kojima se pokazuje upravo suprotno. Vrlo je jednostavno preko interneta doći do računalnih programa koji dekodiraju zaporke, a koji su inače vrlo učinkoviti. Ta njihova osobina pogotovo dolazi do izražaja kod slabih zaporki. 7 Najveći faktor koji vodi slabosti zaporke jest sam čovjek. Budući da je zaporke potrebno zapamtiti,a i preporučeno je njihovo učestalo mijenjanje, one se ne bi trebale zapisivati na nekim mjestima koja su dostupna mnogim osobama. Ovakvo što se često događa u mnogim tvrtkama gdje je poprilično jednostavno doći do zaporke samo pregledavanjem radnog stola. Mnogi korisnici računalnih usluga kao svoje zaporke stavljaju imena članova obitelji, datume rođenja, obljetnice važnih događaja pa čak i osobne identifikacijske brojeve vjerujući da je jako teško pogoditi takvu zaporku. No, stvar je u tome da se takvi podaci skupljaju od strane mnogih organizacija i do njih je relativno jednostavno doći korištenjem upita na bazu podataka ili ako napadač poznaje korisnika. Neke od zaporki se spremaju u datoteke u kriptiranom ili nekriptiranom obliku, no ukoliko netko uspije doći do tih datoteka, lako je ući u bilo čiji korisnički račun i pregledati podatke bez da osoba koja je vlasnik korisničkog računa ikad sazna za takvo što, osim ako se ne dogode neke nedozvoljene radnje. Slaba jačina lozinki se također odnosi i na duljinu zaporke. Ukoliko je ona jako kratka, hakeri nemaju problema s probijanjem jer je malo kombinacija znakova. Sve ove značajke slabih zaporki su potencijalne sigurnosne prijetnje. 4.1.1. Primjeri slabih zaporki Neke zaporke su slabije od drugih zbog niza razloga. Iako bi nam se neke od njih mogle učiniti jako dobrim izborom, bilo bi ih bolje izbjegavati jer zapravo ne obavljaju svoju funkciju, tj. ne mogu zaštiti podatke od osoba kojima nisu namijenjeni. Koliko samo mala promjena zaporke može utjecati na njezinu jačinu pokazuje činjenica da ukoliko riječ iz rječnika neznatno promijenimo ubacivanjem neke zamjene (npr. umjesto goldfish stavimo g0ldfish), vrijeme potrebno za probijanje zaporke bit će duže što povećava jačinu zaporke. Slaba jačina zaporki uglavnom proizlazi iz njihove jako male entropije pa stoga one mogu biti ispitane velikom brzinom. Neke od takvih zaporki su: riječi iz rječnika bilo kojeg jezika (prikladne za napade rječnikom), 8 unaprijed postavljene (default) zaporke koje se postave na početku rada sa sustavima i pretpostavlja se da će ih korisnik promijeniti (password, admin, default, guest... i njihove izvedenice), riječi koje se spajaju s brojevima, a koje se mogu testirati u jako kratkom vremenu (deer2000, john1234...) nizovi slova u istom redu na tipkovnici (12345, asdfgh...), imena poznatih ljudi, pojmova ili gradova (npr. KatyPerry), stare zaporke, zaporka i korisničko ime su isti, duplicirane riječi (stopstop, passpass...) riječi s malim izmjenama (p@ssw0rd, Pr0d@dm1n), sljedovi brojeva bazirani na poznatim vrijednostima (911, 314159 (π vrijednost)...), bilo što to je povezano s osobom (OIB, JMBAG, broj telefona, imena članova obitelji...). Zanimljivo je da je Microsoft Hotmail 18. srpnja 2011. zabranio korištenje zaporke 123456. 4.2. Jake zaporke Jačina zaporki se uglavnom odnosi na njihovu duljinu. Želimo li povećati jačinu, ponekad je dovoljno povećati njezinu duljinu za samo jedan znak jer se time hakerima poveća vrijeme koje im je potrebno za probijanje budući da je dodavanjem samo jednog znaka povećan i broj kombinacija znakova koje se moraju razmotriti. Jačina nije određena isključivo duljinom. Pokazalo se da su bolje i jače one zaporke koje su kombinacija velikih i malih slova te interpunkcijskih znakova udruženih s brojevima. Graf prikazuje kako entropija, kao mjera jačine zaporki, raste s povećanjem broja znakova, ali i da je puno brži porast entropije ako se koristi kombinacija više znakova. 9 Slika 4. Odnos entropije i duljine zaporki Ključ uspjeha u oblikovanju jakih zaporki leži u dužini i složenosti zaporki. Naime, što je zaporka duža i složenija, to će napadač imati više poteškoća pri probijanju pa se često događa da je ne može probiti ili može, ali uz veliki napor i dug vremenski period. Složenost zaporke je pojam koji se odnosi na tehnike koje se koriste da bi se stvorila zaporka. Pitanje je li kompleksnost same zaporke dovoljna za zaštitu od hakera. S jedne se strane može reći da jest zbog utrošenog vremena i kombinacija koje se moraju proći kako bi se saznala zaporka. U velikom broju slučaja doći će do blokiranja korisničkog računa u situacijama kad se pređe dozvoljeni broj pokušaja pa se obavještava administrator sustava da se nešto čudno događa. Tada je moguće poduzeti neke dodatne akcije zaštite pa i obavijestiti korisnike da bi bilo dobro promijeniti zaporke. S druge strane, ako je napadač uspio doći do zaporke koja pripada administratoru, tada može saznati i zaporke svih korisnika i doći do svih podataka koji ga zanimaju pa tada jačina zaporki ne igra veliku ulogu u zaštiti.[4][14] 4.3. Pravila i upute za stvaranje jakih zaporki Pravila za stvaranje jakih zaporki je jako mnogo. Ona se uglavnom odnose na način stvaranja zaporki koje su dovoljno jake da uspiju izdržati mnoge vrste 10 napada. Osim što je moguće veće duljine i složenosti, pravila se odnose i na potrebu učestalog mijenjanja zaporki. Neka od najpoznatijih pravila su navedena u nastavku. Preporučuje se korištenje barem osam znakova za zaporku, a idealno bi bilo 8 – 14 znakova za korisničke računa. Za administratorske potrebe bilo bi poželjno stvoriti i duže zaporke. Svaki znak koji se doda povećava zaštitu zbog većeg broja kombinacija koje se moraju razmotriti prilikom pokušaja probijanja. Pri tome treba imati na umu da bi to trebala biti zaporka koja se može zapamtiti. Za stvaranje jakih zaporki u upotrebi su različite kombinacije brojeva, velikih i malih slova abecede zajedno s interpunkcijskim znakovima. Pri tome se ne misli na kombinacije koje su se već mnogo puta pokazale kao vrlo jednostavne za probijanje, poput '12345678', 'password', 'admin' ... Čak nije dobro koristiti ni broj telefona kao ni osobni identifikacijski broj jer je do takvih informacija poprilično lako doći pa ni zaporke temeljene na njima ne predstavljaju zaštitu pristupa podacima. Korištenje kombinacije slova iz istog redu na tipkovnici također nije dobro rješenje. Iako se ne koristi često, metoda zamjene nekih znakova drugim znakovima dodatno povećava razinu sigurnosti zaporke. To se odnosi na zamjenu, primjerice slova E brojem 3, slova O brojem 0 ili pak slova I brojem 1. Ovakva metoda donosi korist isključivo kad je kombinirana s drugim načinima zaštite kao što je velika duljina zaporke. Ukoliko se primjenjuje sam, ovaj način ne smanjuje mogućnost probijanja zaporki jer zaporka poput 'p@ssw0rd' umjesto 'password' ne može zavarati napadače. Jedna od često upotrebljavanih metoda koje se koriste pri smišljanju zaporke jest da se smisli neka rečenica ili fraza koju samo ta osoba zna i koju je jednostavno zapamtiti. Potom se uzmu prva slova riječi i brojevi kao zamjene za neke riječi (npr. once se zamijeni s 1) i dobije se zaporka koja je poprilično jaka. Poprilično dobro rješenje za kreiranje jake zaporke je sricanje slova fonetski, npr. inicijali ABO postaju AyBeeOh. Također bi se trebalo izbjegavati korištenje brojeva na početku i kraju zaporke. Ne bi trebalo koristiti riječi iz rječnika bilo kojeg jezika budući da takve zaporke ne pružaju nikakvu zaštitu prilikom napada rječnikom. Naime, napadači rabe sofisticirane alate koji vrlo brzo i učinkovito uspijevaju pogoditi zaporke nastale na 11 ovaj način. Pri tome se ne radi samo o ispravno napisanim riječima već i riječima napisanim u obrnutom redoslijedu, učestale pogreške u pisanju riječi kao i neke zamjene za riječi. Zaporke koje se višestruko koriste nisu nikako dobra opcija. Ukoliko jedan račun bude kompromitiran, svi računi koji koriste istu zaporku bit će isto kompromitirani. Zaporke koje se koriste za neke igrice ili Internet forume nikako ne bi smjele biti iste kao zaporke za elektroničko poštu ili prijavu na računalo. Možda i najbolji način stvaranja jake zaporke je korištenje alata koji se i razvijaju u tu svrhu (različiti password generators i password checkers). 4.3.1. Primjeri jakih zaporki U današnjem svijetu je nužno zaštiti svoje podatke od raznih zloporaba pa je stoga potrebno imati i zaporku odgovarajuće jačine. Korištenje nekih znakova pri kreiranju zaporki može značajno pridonijeti povećanju jačine zaporke i smanjenju rizika od probijanja. Neki od znakova koji se preporučuju pri stvaranju zaporki i način njihova korištenja su: ( - slovo c, ) - bilo što povezano s mjesecom; ludo, % - dio nečega, $ - novac, slovo S, < - manje od, mlađe od, > - veće od, starije od, ! - uzbuđenost, jaka emocija, @ - slovo a, riječ 'at ', ^ - okrenuto slovo V, # - broj, & - riječ 'and ', blizanci, + - dodavanje jedne riječi drugoj, * - sunce, zvijezda, = - jednakost, ravnoteža, ~ - voda, vjetar, ? - nepoznato, upitno, varijabilno 12 Primjer korištenja ovih znakova pri kreiranju zaporke može biti sljedeći: 1. Osoba ima blizanca brata. 2. Njihovi inicijali su IGK i ABK. 3. Zadnja dva broja u OIB-u te osobe su 43. Zaporka koja se može kreirati na temelju gore navedenih činjenica je Igk43&ABk. U ovom slučaju se koriste inicijali u kombinaciji velikih i malih slova, brojevi iz OIBa i znak & čija se značenja mogu naći u gore navedenom popisu. Sljedeći primjer bi mogao biti: 1. Najstarije dijete korisnika nekog računa koji treba smisliti zaporku ima inicijale IBM. 2. Drugo dijete je s inicijalima IM. 3. Oni su rođeni 1991. i 1992. godine. Sad je moguće kreirati zaporku izgleda: IbM91>92iM. Slijedeći i gore navedena pravila, jednostavno je kreirati zaporke koje se teško probijaju, a moguće ih je zapamtiti. Zaporka RDkFh0982 je jaka zaporka nastala kombinacijom slova iz „Rain Drops Keep Falling on my Head“ i osobi važnog datuma iz rujna 1982. Moguće je iskoristiti i športove ili hobije pa bi rečenica „I love to play badminton“ mogla postati ILuv2PlayB@dmint()n. 13 5. Napadi na zaporke Potrebno je shvatiti način na koji funkcioniraju napadi na zaporke kako bi se znalo stvoriti zaporku koja će biti efikasna za odgovarajuću upotrebu. 5.1. Pogađanje zaporki Pogađanje zaporki je najčešća vrsta napada. Mnoge mreže nisu konfigurirane tako da zahtijevaju jako duge i složene zaporke pa je očito da napadač samo treba naći vrlo slabe zaporke kako bi dobio pristup mreži ili resursu kojeg želi. Slaba karika u mrežnoj sigurnosti su i mnogi protokoli. Primjerice, LAN Manager autentikacija ne razlikuje velika i mala slova pa napadač ne mora uložiti dodatan napor za probijanje zaporki jer je poznato da razlikovanje veličine slova poprilično uvišestručuje broj kombinacija za pogađanje. Mnogi se alati koriste za automatizaciju postupka pogađanja zaporki na način da probava jednu za drugom dok ne nađe onu koja odgovara (npr. Hydra za pogađanje svih vrsta zaporki kao što su i one za prijavljivanju u sustave bazirane na HTTP-u, Telnetu..., TSGrinder i SQLRecon za brute-force napade...). Ovakvi alati koriste različite pristupe, ali najčešće se izvode brute-force napadi. 5.1.1. Napadi grubom silom Napadi grubom silom (eng. brute-force) su poznati i pod nazivom iscrpno pretraživanje zbog potpunog pretraživanja i isprobavanja svih mogućih kombinacija znakova uzimajući u obzir i maksimalnu duljinu zaporke. Problem za napadače kod ovakvih napada predstavlja nužnost postojanja velike količine resursa, ali i vremena potrebnog za isprobavanje tih brojnih kombinacija pa je nerijetko slučaj da su resursi potrebni za probijanje zaporki zapravo vrjedniji nego informacije do kojih se može doći nakon što se napadač domogne odgovarajuće zaporke. 14 Ovom metodom se moraju isprobati sve moguće opcije neovisno jesu li logične ili ne, za razliku od backtracking metode koja predstavlja derivaciju brute-force metode i koristi se ako su neke kombinacije povezane pa se smanji vrijeme ispitivanja i broj kombinacija. Ukoliko želi provesti napad ove vrste, napadač će najčešće ručno unositi kombinacije korisničkog imena i zaporke dok se ne pogodi tražena zaporka. Mogu se koristiti već spomenuti automatizirani programi, ali i slučajno generirani korisnički računi pomoću kojih se pokušava pristupiti sustavu. Pregledom dnevničkih zapisa računala moguće je uočiti ove napade jer ako su zabilježeni mnogi neuspješni pokušaji prijavljivanja u sustav, vrlo se vjerojatno radi o pokušaju izvođenja brute-force napada. Kako bi se zaštitili od njega, možemo ograničiti broj neuspjelih pokušaja pristupa sustavu, zabraniti pristup s IP adrese s koje dolaze neuspjeli pokušaji, kreirati samo jedan korisnički račun s najvišim ovlastima... 5.1.2. Napadi rječnikom Napad rječnikom (eng. dictionary attack) varijacija je brute-force napada u kojima je izbor mogućih kombinacija sveden na riječi koje su sastavni dio rječnika nekog jezika. Veća je vjerojatnost da će netko izabrati riječ koja ima neko značenje za zaporku u usporedbi s nasumično izabranim znakovima. Za ovakav napad je potreban popis riječi iz rječnika što ne predstavlja neki poseban problem za napadače budući da je velik dio rječnika (čak i onih koji uključuju samo športsku terminologiju, ali i rječnici riječi koje predstavljaju žargon) dostupan na internetu besplatno. Ovakvi napadi se koriste u kriptoanalizi kako bi se otkrio ključ za dekriptiranje, ali i kako bi se mogla saznati zaporka i ostvariti neovlašteni pristup. Zanimljivo je da se napadi rječnikom često koriste kad se želi poslati neželjene poruke (eng. e-mail address harvesting) pa se koriste rječnici da bi se izgenerirale adrese elektroničke pošte (npr. [email protected]). U slučaju da se uspije dostaviti poruka na 15 generiranu adresu elektroničke pošte, ta će se adresa zabilježiti kao važeća i koristit će se za kontinuirano slanje tih neželjenih poruka. 5.1.3. Hibridni pokušaji pogađanja zaporki Ovi pokušaji se temelje na tome da mrežni administrator traži od korisnika da načini zaporku tako da bude neznatno izmijenjena u odnosu na riječ koja se pojavljuje u rječniku. Pravila za hibridne pokušaje pogađanja zaporki variraju ovisno o alatu koji se koristi, ali većina razlikuje velika i mala slova, dodaju brojeve na kraj zaporke, mogu sricati zaporke obrnutim redoslijedom i uključuju pri provjeri neke učestale pogreške u pisanju riječi koje se koriste kao zaporke. 5.2. Resetiranje zaporki Mnogi programi koji služe za probijanje zaporki zapravo ih resetiraju jer je napadačima jednostavnije resetirati nego pogoditi zaporku. U tu svrhu se koriste besplatni i često korišteni Peter Nordahl-Hagen program, ali i Winternals ERD Commander 2005. Ovaj se napad najčešće izvodi tako da napadač koristi podizanje s diska radi zaobilaženja uobičajenih zaštita za Windows operacijski sustav. Većina programa za resetiranje sadrže i verziju Linux operacijskog sustava koja prilikom podizanja može pomoći napadaču pri lociranju i resetiranju administratorskih zaporki. 5.3. Probijanje zaporki Probijanje zaporki je proces korištenja uočene hash vrijednosti zaporke i njezina pretvaranja u riječ kakva je bila prije kriptiranja. Za probijanje zaporki napadaču su potrebne mnoge metode, no najčešća se svodi na pogađanje hash vrijednosti. 16 Većina današnjih računalnih uređaja, ali i online poslužitelja za autentikaciju koriste već navedene kriptografske postupke kako bi se zaporka zaštitila i dobio se zapis niza znakova nepromjenjive duljine koji je poznat kao digitalni potpis i upravo se on sprema u uređaju ili poslužitelju. Svaki put kad se korisnik prijavljuje u sustav, pokreće se hash funkcija i dobiveni izlaz se usporedi sa spremljenim digitalnim potpisom. Ovakav postupak je doveo do toga da stvaraju liste izračunatih hash vrijednosti nekih učestalih zaporki. Tako se uvelike olakšava pokušaj probijanja zaporki jer je dovoljno samo pronaći podudaranje između unaprijed izračunatih vrijednosti zaporki koje se često koriste i pohranjenih vrijednosti zaporki iz određenog sustava. Za sprječavanje ovakvih napada koriste se već navedene salt vrijednosti, ali ipak je najbolje kreirati zaporku točno određene jačine. Moguće je koristiti mnoge alate koje mogu skupiti hash vrijednosti Windows zaporki, kao što su Pwdump programi različitih verzija. Najčešći programi koji koriste zapise hash vrijednosti za probijanje zaporki su John the Ripper i Cain & Abel. Prvi se može koristiti i na Windowsima i na Unixu dok drugi program može probiti više od 20 vrsta zaporki, uključujući i Cisco te RDP. 5.3.1. Vrijeme potrebno za probijanje U kriptoanalizi i računalnoj sigurnosti probijanje zaporki se koristi kako bi se došlo do zaporki pohranjenih u vidu podataka ili se prenose računalnim sustavom. Osim što se može koristiti za napade, može i pomoći korisnicima da dođu do zaporki koje su zaboravili, no i kao preventivna mjera za administratore sustava kako bi provjerili koriste li se u sustavu možda neke zaporke koje se lako mogu probiti. Vrijeme koje je potrebno da se zaporka probije povezano je s jačinom zaporke koja je pak u vezi s entropijom zaporke. Današnja računala mogu testirati preko sto milijuna zaporki u sekundi koristeći mnoge alate za probijanje zaporki. Zaporke koje kreiraju korisnici u duljini od 8 znakova kombinacijom brojeva, velikih i malih slova te različitih simbola obično dosegnu 30 bita entropije pa je broj kombinacija koje napadači trebaju ispitati veličine 230. To znači da je prosječno vrijeme 17 potrebno računalima za probijanje takvih zaporki 16 minuta. 2002. godine distributed.net je pronašao 64-bitni RC5 ključ nakon četiri godine pokušaja probijanja u kojima se, u različitim vremenskim razmacima, koristilo i do 300 000 različitih računala što je dovelo do generiranja preko 12 milijardi ključeva u sekundi u prosjeku. Grafički procesori mogu ubrzati proces probijanja zaporki čak 50 do 100 puta što se pokazalo 2011. godine kad su komercijalni proizvodi dosegnuli sposobnost testiranja do 2.8 milijardi zaporki u sekundi na standardnim računalima koji su koristili grafičke procesore. Takvi uređaji mogu probiti zaporku od deset znakova u jednom danu, prvenstveno zbog toga što se rad podijeli na više računala kako bi se postiglo ubrzanje postupka probijanja. 5.4. Zabilježeni incidenti CERT je 16. srpnja 1998. godine prijavio slučaj probijanja zaporki. Napadači su uspjeli doći do 186 126 kriptiranih zaporki, a dok ih nisu otkrili, uspjeli su probiti čak 47 624 zaporki. Sljedeći veliki incident zabilježen je u prosincu 2009.godine, a bio je vezan s Rockyou.com web stranicom. Tada je u javnost „procurilo“ 32 milijuna zaporki time što ih je napadač stavio na internet. Zaporke su bile spremljene u čitljivom obliku i do njih se došlo korištenjem napada pomoću SQL-a. Koliko su zaporke slaba karika u sigurnosti, pokazuje napad u okviru „Operation AntiSec“ koji je bio usmjeren na NATO, a izveden je u suradnji Anonymousa, LulzSec i drugih hakerskih grupa i pojedinaca. U javnost su dospjela imena, prezimena, korisnička imena te zaporke više od 11 000 registriranih korisnika njihove web knjižare. Hakeri najčešće napadaju velike organizacije i one koje su u sklopu vlada različitih država. To potvrđuje i napad na Booz Allen Hamilton, veliku američku konzultantsku tvrtku koja obavlja velik dio posla za Pentagon. Napad je izveden 11.srpnja 2011. od strane Anonymousa, a njime se došlo do 90 000 zaporki i korisničkih imena vojnog osoblja USCENTCOM-a, SOCOM-a, Air Forcea, State Departmenta i Homeland Securityja. Zanimljivo je da su te zaporke bile zaštićene tako što su bile kriptirane sažetkom koji je izračunat korištenjem SHA-1 algoritma koji se do tada smatrao jako sigurnim. 18 5. lipnja 2012. ruski hakeri su napali društvenu mrežu LinkedIn čime su došli do zaporki cca 6.5 milijuna korisnika. Nakon tog incidenta korisnici neko vrijeme nisu mogli pristupiti svojim računima, a web stranica ih je upozoravala da promijene svoje zaporke. Ukradene zaporke su bile kriptirane pa su ih hakeri dekriptirali i stavili ih u tom obliku na ruski forum dekripiranih zaporki. LinkedIn je obavijestio javnost da korisnici kojima su ukradene zaporke neće moći pristupiti svojim računima koristeći stare zaporke, ali i da ne mogu utvrditi jesu li hakeri uspjeli doći i do adresa elektroničke pošte tih istih korisnika. Istraga je utvrdila da se ovaj incident dogodio jer se nije koristio protokol HTTPS, a pozornost istrage je privukla iOS aplikacija koja je prikupljala imena, adrese elektroničke pošte i bilješke iz mobilnog kalendara bez odobrenja korisnika. Koliko opasni napadi mogu biti, pokazuje onaj izveden na Adobe za kojeg se saznalo 3. listopada 2013. Napadači su uspjeli otkriti, po prvim procjenama, 3 milijuna kriptiranih zapisa o kreditnim karticama korisnika kao i podatke potrebne za prijavljivanje na korisničke račune. Bilo je jako teško u potpunosti ispitati koliko je zapisa bilo hakirano jer je većina direktorija bila zaštićena zaporkama. U istom se mjesecu na AnonNews.org pojavila ogromna datoteka pod nazivom „users.tar.gz“ koja sadrži više od 150 milijuna korisničkih imena i hashiranih zaporki preuzetih s Adobea iako je Adobe do tada uspio utvrditi hakiranje tek 38 milijuna računa. Nešto kasnije se na istoj web stranici pojavila datoteka koja sadrži source code za Adobe Photoshop do kojeg su očito napadači uspjeli doći. 19 6. Alati za probijanje zaporki Danas su na internetu dostupni mnogi alati za probijanje zaporki, od kojih je velik dio čak i besplatan. Neki od najčešće korištenih su: Cain and Abel, John the Ripper, Hashcat, Hydra, DaveGrohl i ElcomSoft. Mnogi od njih pri pokušaju probijanja zaporki koriste mnoge strategije i napade od kojih su se najproduktivnijim pokazali brute-force napadi i napadi rječnikom. 6.1. Cain and Abel Cain and Abel je alat koji se koristi za zaporke za Microsft Windows. Omogućuje saznavanje mnogih vrsta zaporki korištenjem različitih metoda za probijanje zaporki u obliku sažetka. Neki od najčešćih su brute-force napadi, napadi rječnikom te napadi korištenjem kriptoanalize. Posljednja vrsta napada se izvodi korištenjem unaprijed pripremljenih tablica za inverzne operacije koje koriste funkcije za izračunavanje sažetka poruke, a koje se mogu izgenerirati korištenjem programa winrtgen.exe u sklopu Caina & Abela. Neki antivirusni programi detektiraju ovaj alat za probijanje zaporki kao potencijalno opasnog ili onog koji se može ponašati na korisniku neželjen način. To je primjerice slučaj s Avast!om koji je čak neko vrijeme blokirao Caina & Abela, no novije inačice to ne rade. Neke funkcionalnosti koje ovaj alat omogućuje su: izračunavanje sažetka, sposobnost snimanja VoIP razgovora, izvođenje tracerouta, ARP spoofing, Sposobnost probijanja: o LM i NTLM sažetaka, o NTLMv2 sažetaka, o Microsoft Windows PWL datoteka, o MySQL sažetaka, 20 o MSSQL sažetaka, o Oracle i SIP sažetaka, o MD2 sažetaka, o MD4 sažetaka, o MD5 sažetaka, o SHA-1 sažetaka, o SHA-2 sažetaka itd. Sažetke zaporki je vrlo jednostavno izvući nakon što se instalira ovaj alat na Windows operacijskom sustavu. Potrebno ga je pokrenuti kao administrator i kliknuti na opciju „Cracker“, a zatim dodati NT sažetke kojima Microsoft ne dodaje „salt“ dodatak kako bi dodatno zaštitio zaporke pa ih je dosta jednostavno probiti jednostavnim pretraživanjem interneta, čak nije potrebno za učestale zaporke koristiti ovakve alate. Te je izvučene sažetke potom moguće spremiti u tekstualnu datoteku[16]. 6.2. Hashcat Hashcat je jedan od najbržih alata za otkrivanje zaporki razvijen za Linux, OSX, ali i Windows, a trenutno podržava velik skup različitih algoritama za računanje sažetka uključujući LM Hashes, MD4, MD5, skup SHA algoritama, formate Unix Crypt, MySQL, Cisco PIX i mnoge druge. Dolazi u dvije glavne varijante: Hashcat – temelji se na CPU, oclHashcat – GPU-ubrzani alat. Zaporke koje su zaštićene algoritmima poput MD5, SHA-1 i sl. mogu biti jako brzo probijene ukoliko se koristi oclHashcat, ali ne može se na sve algoritme primijeniti ova verzija (npr. Bcrypt). Hashcat je dostupan za Linux, OSX i Windows, dok se oclHashcat može koristiti na Linuxu i Windowsu. Kako bi otkrio što više zaporki, Hashcat koristi mnoge vrste napada: napadi grubom silom (eng. brute-force), 21 napadi rječnikom, hibridni napadi, napadi otiskom prsta, napadi temeljeni na pravilima, napad maskiranjem, napad permutacijama itd. Napad grubom silom se smatra zastarjelim pa se novije verzije Hashcata baziraju ma napadima maskiranjem kao potpunom zamjenom za brute-force napade[3]. 6.3. John the Ripper John the Ripper je besplatno programsko ostvarenje Solar Designera koji služi za dobivanje zaporki iz njihovih sažetaka, a glavna mu je funkcija otkriti slabe zaporke. Inicijalno je bio razvijen za operacijski sustav Unix, a danas ga je moguće pokrenuti na čak petnaest platformi. Jedanaest njih predstavljaju tek specifična ostvarenja Unixa, DOS-a, Win32, BeOS-a i OpenVMS-a. Jedan je od najpopularnijih programa za testiranje i razbijanje zaporki, ponajviše zbog kombiniranja različitih načina za probijanje zaporki, ali i autodetekcije tipova sažetaka zaporki. Učinkovit je pri probijanju zaporki koje se štite različitim kriptografskim postupcima pa i različitim funkcijama za izračunavanje sažetka koje se uglavnom nalaze u primjeni na različitim Unix verzijama (MD5, Blowfish...), Kerberos AFS i Windows NT/2000/XP/2003 LM sažetku. Nedavno su dodane i mogućnosti za probijanje sažetaka zaporki izračunatih korištenjem MD4, kao i zaporki spremljenih u LDAP-u, MySQL-u ... Ovo programsko ostvarenje podržava izvođenje mnogih vrsta napada. Jedan od najčešće korištenih je ipak napad rječnikom koji se izvodi korištenjem uzoraka riječi. Oni su najčešće u datoteci koja se zove wordlist, a sastoji se od riječi iz rječnika ili zaporki koje se stvarno koriste, a do njih se došlo nekim prethodnim napadima. Te se riječi potom kriptira korištenjem istog kriptografskog algoritma i ključa koji su korišteni pri kriptiranju zaporki koje se pokušavaju probiti da bi nakon kriptiranja sljiedila usporedba izlaza. John the Ripper je poznat po tome što može 22 izvesti ovaj postupak i na varijacijama riječi iz rječnika tako što modificira nekriptirani tekst (obično korisničko ime s kriptiranom zaporkom) i ponavlja postupak kriptiranja i usporedbe s već izračunatim sažecima. Kao i većina alata za probijanje zaporki, tako i John the Ripper izvodi brute-force napad. Program isprobava sve moguće varijacije nekriptiranog teksta izračunavajući sažetak za svaku od varijacija i uspoređuje te sažetke s ulaznim sažetkom koji pripada nekoj zaporci koju se nastoji saznati. Za takvu upotrebu su mu potrebne tablice učestalosti pojave različitih znakova kako bi prvo isprobavao varijacije koje sadrže češće korištene znakove zbog veće mogućnosti otkrivanja zaporki. Ovaj pristup je poprilično koristan za proces probijanja zaporki koje se ne nalaze u rječniku, ali kao što je već navedeno, oduzima jako puno vremena[11]. 6.3.1. Mogućnosti alata John the Ripper se pokreće iz komandne linije i moguće je koristiti mnoge argumente koji se odnose na specifičnost postupka probijanja zaporke. Ukoliko se upiše samo john, ispiše se sažetak korištenja ovog besplatnog alata. Prvi argument koji se treba spomenuti je naziv datoteke koja sadrži zaporke, a koja služi za testiranje. Sve opcije razlikuju velika i mala slova pa je time broj kombinacija za testiranje jako velik. Umjesto punog imena moguće je koristiti kratice iz kojih program može prepoznati o kojoj se opciji radi. One se obično kombiniraju s dvije crtice ili jednom crticom, mogu koristiti znak jednakosti ili dvotočku kako bi se dodao još jedan argument. Neke od opcija uključuju i uglate zagrade kao još jedan način za unos dodatnih argumenata. Opcije koje podržava John the Ripper su: --single, single način probijanja zaporki koji koristi već zadana pravila, --wordlist=FILE, način probijanja zaporki koji koristi listu riječi, a one se čitaju iz datoteke navedene u dijelu FILE, --stdin, riječi se čitaju sa standardnog ulaza, 23 --rules, određivanje pravila koja se koriste kad se zaporke koje se koriste za probijanje učitavaju korištenjem liste riječi, --incremental[=MODE], inkrementalni način rada; ukoliko MODE nije naveden, za većinu tipova sažetaka koristi se ASCII, dok se za LM sažetke koristi LM_ASCII, --external=MODE, eksterni način rada ili filter riječi, --stdout[=LENGTH], ispis mogućih zaporki; u svim načinima rada, osim u single načinu, ova opcija omogućuje ispis kandidata za zaporku umjesto uobičajenog načina usporedbe generiranih sažetaka i sažetaka korištenih zaporki; ako se koristi ova opcija, nije potrebno navesti datoteku sa zaporkama; zada li se duljina u području LENGTH, John the Ripper će generirati kandidate za zaporku samo te duljine čime se smanjuje broj kombinacija, --restore[=NAME], omogućuje nastavak prekinute sjednice, a potrebne informacije o stanju prekinutog procesa probijanja dobivaju se iz posebne datoteke ili iz $JOHN/john.rec, --session=NAME, pokrenutoj sjednici se dodjeljuje ime što je pogodno kad se pokrene više njih paralelno ili kad želimo nastaviti baš određenu sjednicu različitu od one koju smo posljednju prekinuli, --status[=NAME], ispisuje status prekinute ili trenutno pokrenute sjednice koja može imati i ime navedeno u dijelu NAME; na Unix-u je moguće osvježiti status pokrenute sjednice slanjem SIGHUP odgovarajućem procesu, --make-charset=FILE, generiranje skupa znakova na temelju učestalosti pojave znakova iz $JOHN/john.pot kad se koristi inkrementalni način rada; moguće je uvesti restrikcije na skup zaporki koje se pojavljuju specificiranjem datoteka zaporki, korištenjem opcija –format i –external, --show, za zadanu datoteku zaporki se prikazuje zaporke do kojih je John the Ripper uspio doći; moguće je ovu opciju koristiti i dok se analizira datoteka kako bi se saznalo dokle je program uspio doći; želi li se doći do najnovijih informacija, potrebno je najprije poslati odgovarajućem procesu SIGHUP, 24 --test[=TIME], pokreće testiranje, a –format opcija se zajedno s –test koristi da bi se testiranje ograničilo testiranje na točno određenu funkciju za računanje sažetka, --users=[-]LOGIN|UID[,..], služi za izbor korisničkih računa koje se želi probiti; crtica u uglatim zagradama se može koristiti za invertiranje provjere, --groups=[-]GID[,..], učitava korisnike određene grupe; crtica služi za invertiranje, tj. za učitavanje korisnika koji nisu iz određene grupe, --shells=[-]SHELL[,..], učitava korisnike iste ljuske, --salts=[-]N, učitava dodatke na zaporke gdje se učitani dodatak koristi kod barem N zaporki; služi za bolje performanse jer je katkad brže probiti neke zaporke korištenjem npr. --salts=2, a zatim ostale s –salts=2 (ukupno vrijeme potrebno za probijanje bit će jednako kao i da se ne koristi ova opcija, ali neke zaporke će se probiti brže), --save-memory=LEVEL, omogućuje spremanje memorije na 1., 2. i 3. razini; ova se opcija koristi ako korisnik nema dovoljno memorije ili ne želi da ovaj program utječe na druge procese; razina 1 znači da John the Ripper ne smije trošiti memoriju na nazive logina, a koristi se samo kad je način hakiranja single; više razine memorije utječu na izvedbu programa i trebale bi se izbjegavati osim ako John the Ripper ne radi, --node=MIN[-MAX]/TOTAL, ova opcija se koristi za konfiguriranje paralelnog i distribuiranog procesiranja; čvorovi su obično iste brzine, a učinkovitost ovog pristupa varira ovisno o tome koji se način rada izabere i njegovim postavkama, vrsti sažetka, dodatku za izračun sažetka (eng. salt) te broju čvorova; budući da nema komunikacije između čvorova, sažeci koji se uspješno hakiraju na jednom čvoru, i dalje se pokušavaju probiti na drugim čvorovima što ne smeta ukoliko se koristi samo jedan dodatak za izračun sažetka, no ozbiljno usporava rad kad se koristi više različitih dodataka, --fork=N, ova je opcija dostupna samo na Unix-u, a omogućuje dijeljenje rada na N procesa, --format=NAME, omogućuje izbor funkcije za računanje sažetka; u verziji 1.8.0 dopušteni formati su: descrypt, bsdicrypt, md5crypt, bcrypt, LM, AFS, tripcode, dummy i crypt; ova se opcija može kombinirati s 25 opcijama: --test, --show i --make-charset; ako se koristi datoteka sa zaporkama kojima su sažeci izračunati korištenjem različitih funkcija, potrebno je koristiti ovu opciju kako bi John the Ripper mogao pokušati probiti svaku zaporku, --format=crypt, određivanje hakiranja crypt (3) sažetaka. Neke dodatne mogućnosti su uključene u direktorij za pokretanje ovog programa: unshadow PASSWORD-FILE SHADOW-FILE, kombinira datoteku sa zaporkama i „shadow“ datoteku, unafs DATABASE-FILE CELL-NAME, iz AFS baze dohvaća sažetke i zapisuje izlaz u datoteku, unique OUTPUT-FILE, uklanja duplikate iz liste riječi pročitane sa standardnog ulaza bez mijenjanja poretka. John the Ripper nudi mogućnost korištenja i nekih skripti: relbench BENCHMARK-FILE-1 BENCHMARK-FILE-2, Perl skripta koja omogućuje usporedbu dva C kompajlera, optimizacijskih opcija ili verzija ovog programa, mailer PASSWORD-FILE, skripta za slanje poruke elektroničke pošte svim korisnicima čije su zaporke probijene što nije baš uvijek dobra ideja budući da mnogo korisnika uopće ne provjerava elektroničku poštu ili ignorira ovakve poruke, makechr, skripta za generiranje .chr datoteke korištenjem zaporki iz john.pot datoteke[13]. 6.3.2. Načini rada Način rada „Wordlist“ je najjednostavniji način koji je koristi kako bi se probile zaporke. Samo se treba specificirati lista riječi što je obično tekstualna datoteka koja sadrži jednu riječ po retku pri čemu se ne smiju pojavljivati duplikati, a zatim se izabere datoteka koja sadrži zaporke. Riječi u listi se nikad ne sortiraju jer bi to oduzelo još dodatno vremena, a i onemogućilo bi programu da prvo ispita one zaporke koje se češće pojavljuju. Katkad je dobro posložiti riječi abecednim redom 26 jer za neke sažetke John the Ripper radi brže ako se sljedeći kandidat neznatno razlikuje od prethodnog. S druge strane, ako je lista riječi posložena abecedno , nije potrebno voditi računa o riječima koje su dulje od maksimalno dozvoljene duljine zaporke. Primjerice, za crypt (3) sažetke bazirane na DES-u značajnih je samo prvih osam znakova što znači da, ako postoji više riječi s istih osam prvih znakova, one predstavljaju istog kandidata za zaporku koji se probava samo jedanput. Svejedno se ne preporučuje skratiti lozinke na odgovarajuću duljinu jer ostatak znakova bi se ipak mogao koristiti ukoliko se počne raditi probijanje zaporki korištenjem nekih od pravila. Preporučeni način sortiranja liste riječi je: tr A – Z a – z < SOURCE | sort -u > TARGET Način rada „Single“ je prvi način s kojim treba početi raditi na probijanju zaporki. Koristi login, polja „GECOS“ / „Full Name“, korisnički direktorij za kandidate zaporki te skup pravila. Ovaj način rada je puno brži od prethodno navedenog, a i dopušta korištenje većeg skupa pravila. Zaporke koje se uspješno pogode prolaze postupak hakiranja za sve moguće funkcije za izračunavanje sažetka za slučaj da neki korisnici imaju istu zaporku, ali sažetak je različit. Ukoliko se koristi single način rada istodobno za više datoteka sa zaporkama, katkad se probije više zaporki nego da se pokuša svaka zasebno. Inkrementalni način rada je najobuhvatniji od svih jer pokušava sve moguće kombinacije znakova kao zaporke. Međutim, ovaj način rada traje jako dugo i moguće je da ne završi u razumnom vremenu (desetak i više dana) pa većina korisnika mora prekinuti proces probijanja zaporki prije kraja. Jedino u slučaju da se koristi jako mala duljina zaporke ili mali skup znakova, John the Ripper će završiti s radom u inkrementalnom načinu. Da bi se koristio ovaj način rada, trebaju se zadati dodatni parametri rada: duljina i skup znakova koji se koristi, a koji su definirani u konfiguracijskoj datoteci za inkrementalni način. Skup znakova koji se koristi varira, a neki od najčešće korištenih su: ASCII (95 ASCII znakova), LM_ASCII (za uporabu na LM sažecima), Alpha (svih 52 slova engleske abecede), LowerNum (mala slova engleske abecede i brojevi), UpperNum (velika slova engleske abecede i brojevi), LowerSpace (27 znakova), Lower (26 malih slova engleske abecede), Upper (26 velikih slova engleske abecede) i Digits (znamenke). 27 Eksterni način probijanja zaporki može se zadati korištenjem programskog ostvarenja nekih funkcija koje koristi program kako bi generirao kandidate za zaporke. Funkcije su ostvarene u C-u i kompajlirane kad se zatraži eksterni način rada od strane korisnika. Funkcije koje John the Ripper koristi su: init(), za inicijalizaciju globalnih varijabli, filter(), za svaku riječ koja se probava, može filtrirati neke riječi, generate(), za generiranje riječi, restore(), za ponovno pokretanje prekinute sjednice. Sve funkcije su tipa void(), nemaju argumenata i koriste globalnu varijablu word (prethodno definiranu s int word[ ]), a init() se poziva prije njezine definicije. Varijabla word sadrži trenutnog kandidata za zaporku pri čemu je u svakom elementu polja po jedan znak, a završni je 0. Funkcije mogu definirati globalne i lokalne varijable, uključujući i jednodimenzionalna polja, koristiti operacije s cijelim brojevima i komentare. Dozvoljeno je koristiti while petlje, int i void tipove podataka, ali ne i pokazivače i višedimenzionalna polja, kao ni pozive funkcija iz neke funkcije eksternog načina rada. 6.3.3. Pravila korištenja naredbi i znakova U sklopu pravila koriste se brojne zastavice koje zapravo služe da se odbaci određeno pravilo koje se koristi u nekim posebnim slučajevima: -, zastavica koja sprječava odbacivanje pravila, -c, zastavica za odbacivanje pravila osim ako se u tipu sažetka koji se trenutno koristi razlikuju velika i mala slova abecede, -8, zastavica za odbacivanje pravila osim ako se u tipu sažetka koriste 8-bitni znakovi, -s, zastavica za odbacivanje pravila osim kada su hash vrijednosti nekih zaporki razdvojene pri učitavanju, 28 Numeričke konstante se mogu tvoriti, a varijable referencirati korištenjem sljedećih znakova: 0...9 za vrijednosti 0...9, A...Z za 10...35, * za max_length, - za (max_length - 1), + za (max_length + 1), A...k za numeričke varijable koje definira korisnik, l za inicijalnu ili osvježenu duljinu riječi, m za inicijalnu ili posljednju zapamćenu poziciju znaka unutar riječi itd. max_length se ovdje odnosi na najveću dopuštenu duljinu nekodiranog teksta koja je određena tipom funkcije za izračun sažetka. Gornji znakovi se mogu koristiti za određivanje pozicije znakova, duljine dijelova riječi i sl. Inicijalna pozicija za određivanje položaja znakova je 0 pa je početna vrijednost za m uvijek za jedan manja od l. Ukoliko se želi odrediti je li znak simbol, veliko ili malo slovo i sl., koriste se sljedeće mogućnosti koje pruža John the Ripper: ??, ispitivanje podudarnosti sa znakom ?, ?v, provjera je li znak samoglasnik, ?c, provjera je li znak suglasnik, ?w, provjera praznine, ?p, ispitivanje je li znak interpunkcijski, ?s, provjera podudarnosti s nekim od sljedećih znakova: " $ % ^ & * ( ) - _ + = | \ < > [ ] { } # @ / ~ ", ?l, ispitivanje je li znak malo slovo, ?u, ispitivanje je li znak veliko slovo abecede, ?d, provjera podudarnosti s brojevima, ?a, provjera podudarnosti sa slovima, ?x, ispitivanje podudara li se znak sa slovima ili znamenkama, ?z, provjera podudarnosti sa svim vrstama znakova. Ukoliko se želi ispitati komplementarna opcija, npr. je li znak bilo što osim broja, dovoljno je opciju napisati velikim slovom (u ovom slučaju bi bilo „?D“). 29 Moguće je zadati jednostavne naredbe koje je po želji mogu kombinirati s drugim opcijama: :, ne raditi ništa s riječi koja se provjerava, l, pretvoriti u mala slova, u, pretvoriti u velika slova, C, prvi znak pretvoriti u malo slovo, ostale znakove u velika slova, r, obrnuti riječ (npr. Kate etaK), d, duplicirati riječ (npr. Kate KateKate), f, reflektirati riječ (npr. Kate KateetaK), $X, dodati X analiziranoj riječi, sXY, zamijeniti sve znakove X zna0kom Y, !X, odbaciti riječ ukoliko sadrži znak X, (X, odbaciti riječ osim ako joj nije prvo slovo X, %NX, odbaciti riječ osim ako ne sadrži slovo X barem N puta itd. Mogu se koristiti i specijalne naredbe kao što su one za kontrolu duljine ( <N (za odbacivanje riječi osim ako joj duljina nije manja od N), >N (za odbacivanje riječi osim ako joj duljina nije veća od N), 'N (za skraćivanje riječi na duljinu N)), pravila vezana uz gramatiku engleskog jezika (p za množinu riječi, P za prošlo vrijeme (crack cracked)...)[6]. 6.3.4. Rezultati pokušaja probijanja zaporki korištenjem alata John the Ripper Kao što je već i navedeno, ovaj alat se najjednostavnije pokreće upisivanjem john pass.txt u terminal nakon pozicioniranja u odgovarajući direktorij. Pri tome se podrazumijeva da je pass.txt datoteka sa zaporkama koje se pokušava probiti. Prvo se pokušava single način probijanja, zatim wordlist način s popisom pravila i na kraju inkrementalni način rada. John the Ripper je korišten za pokušaj probijanja zaporki koje su koristili korisnici društvene mreže LinkedIn. Nakon 600 sati probijanja, uspješno je probijeno 30 zaporki od njih 6419. Pokušano je probijanje s većinom navedenih opcija pri čemu 30 se probijanje korištenjem wordlist načina pokazalo najuspješnijim budući da se njime uspjelo probiti 10 zaporki. Slika 5. Probijene zaporke korisnika s LinkedIna Korišteni su različiti rječnici, a dosta uspjeha je postignuto pokušavanjem s riječima koje su korištene na Wikipediji jer se radi o riječima koje se svakodnevno koriste i veća je vjerojatnost da se neka od njih koristi kao zaporka. Slika 6. pokazuje jednu od probijenih zaporki dobivenih korištenjem napada rječnikom. Slika 6. Probijena zaporka korištenjem riječi s Wikipedije Single način korištenja je dosta dugotrajan jer sustavno pretražuje pa je stoga većina vremena probijanja i provedena korištenjem ovog načina. Zanimljivo je da su neke zaporke pronađene odmah pri pokretanju alata, a radi se o najčešće 31 korištenim zaporkama. Tako su probijene zaporke: password, admin, 12345678, 1234... To što se password pojavljuje dva puta nije greška jer se radi o različitim algoritmima računanja sažetaka pa se zapravo radi o različitim zaporkama jer se probijanje temelji na usporedbi hash vrijednosti. Kako bi se ubrzao single način probijanja, korištene su mnoge varijante kao što je probijanje zaporki koje su sastavljene samo od znamenki (naredba koja je korištena je john –i=digits passwords.txt), a prvu zaporku probijenu na taj način prikazuje i slika 7. Slika 7. Probijena zaporka korištenjem opcije idigits John the Ripper se nije pokazao uspješnim na vlastitoj ispitnoj datoteci gdje su primjerima zaporki izračunati sažeci korištenjem MD5 algoritma. Naime, u 300 sati, koliko je trajalo probijanje zaporki, ovaj alat nije uspio otkriti ni jednu. 32 7. Programsko rješenje U okviru završnog rada razvijena su dva programa. 7.1. Program za određivanje jačine zaporke Program za određivanje jačine zaporki je napravljena u C# programskom jeziku kao Windows Form aplikacija. Služi za analizu jačine unesene zaporke korištenjem četiri klase: entropija.cs, Rjecnik.cs, Program.cs, Form1.cs. 7.1.1. Tehničke značajke Program se temelji na izračunu entropije kao mjeri za određivanje jačine zaporke. No najprije se provjeri je li zaporka jedna od najčešće korištenih jer tada entropija ne igra veliku ulogu budući da je zaporku moguće probiti u jako kratkom vremenu. Ukoliko zaporka nije jedna od najčešće korištenih, provjerava se je li možda korisnik kao zaporku odredio neku riječ iz rječnika jer je u tom slučaju zaporka podložna napadu rječnikom. Tada se također ne gleda entropija kao mjera jačine zaporke jer takve zaporke ne predstavljaju zaštitu za informacije i podatke. U slučaju da riječ nije ni u rječniku, potrebno je pokrenuti izračun entropije radi određivanja jačine zaporki. 7.1.1.1. Razred Rjecnik.cs Razred Rjecnik.cs služi za provjeru je li unesena riječ jedna od najčešće korištenih. Pri tome se pretražuje baza od 500 riječi koje su najčešće korištene prošlih godina za zaporke. Ukoliko se pronađe podudaranje, potrebno je završiti 33 pretragu i vratiti informaciju o podudaranju u obliku povratne vrijednosti 1 u razred Form1.cs. U slučaju da podudaranja nema, kreće se na pretraživanje rječnika engleskog jezika koji sadrži 58 110 riječi. Opet se traži podudaranje s nekom od riječi u rječniku radi provjere je li zaporka podložna napadu rječnikom te tako ne predstavlja zadovoljavajuću razinu zaštite podataka. U slučaju da je podudaranje pronađeno, pretraga se prekida i vraća se povratna vrijednost 2 u razred Form1.cs. Nula se kao povratna vrijednost koristi kada unesena zaporka ne postoji kao jedna od najčešće korištenih ni kao riječ iz rječnika. 7.1.1.2. Razred entropija.cs Ovaj se razred koristi za izračun entropije unesene zaporke. Njega se pokreće samo u slučaju da riječ nije u rječniku niti je jedna od najčešće korištenih. Unesena zaporka se iz razreda Form1.cs šalje u metodu Ulaz koja prima niz znakova, a vraća polje realnih brojeva koji će predstavljati izračunatu vrijednost entropije. Najprije se rječnik zapiše broj pojavljivanja za svaki korišteni znak. Pri tome se određuje o kojoj se vrsti znaka radi da bi se moglo znati koliko kombinacija zaporki ima. Ukoliko je riječ o malom ili velikom slovu, broj mogućih znakova je 26, za brojeve je 10, dok se u zaporkama može kombinirati 33 specijalna znaka. Kad je dobiven broj pojavljivanja svih znakova, računa se vjerojatnost njihova pojavljivanja. Izračun se radi tako da se broj pojavljivanja znaka dijeli s duljinom unesene zaporke, a zatim se ta izračunata vjerojatnost koristi za izračun entropije korištenjem izraza navedenih u poglavlju 3. ovog rada. Vjerojatnost pojavljivanja se množi s logaritmom vjerojatnosti i potom se dijeli s logaritmom po bazi 2. To se napravi za svaki znak i dobije se iznos entropije u bit/simbol jedinicama. To je dosta bitan podatak jer ako se dobije da je entropija npr. 3 bit/simbol, to znači da za svaki znak prosječno treba 8 pokušaja da bi se pogodio. Ta se vrijednost može pomnožiti s mogućim brojem kombinacija znakova da se dobije entropija u bitima. Za jake zaporke obično se dobije vrijednost cca 200 bita što znači da je broj mogućih kombinacija, tj. broj mogućih zaporki koje dolaze u obzir 2 200. Vrijednost entropije u bit/simbol i bit jedinicama se spremi u polje realnih brojeva i vrati u razred Form1.cs. 34 7.1.1.3. Razred Form1.cs U ovom razredu se definira ponašanje aplikacije za unesene zaporke. On poziva razrede Rjecnik.cs i entropija.cs šaljući unesenu riječ te poduzima daljnje korake ovisno o povratnoj vrijednosti.Ukoliko je riječ pronađena u rječniku ili je jako često korištena kao zaporka, u ovom razredu će se postaviti ispisivanje odgovarajuće poruke upozorenja te će vrijednost entropije biti 0 bita. U suprotnom se ispisuje procjena jačine zaporki te grafički indikator pokaže postotak jačine zaporke. 7.1.2. Upute za korištenje U pokrenutom programu je predviđeno mjesto za unos zaporke kako bi se pokrenula analiza. Po završetku upisivanja, a klikom na gumb Izračunaj, pokreće se analiza. Ukoliko se riječ pojavi kao jedna od najčešće korištenih, ispiše se poruka: „Zaporka koju ste unijeli je jedna od najčešće korištenih. Radi sigurnosti vaših podataka, najbolje je promijeniti je.“ Također se ispiše vrijednost entropije 0 bit/simbola i 0 bita, a i grafički indikator pokaže vrijednost 0% što je vidljivo na slici 8. Slika 8. Jedna od najčešće korištenih zaporki je unesena U slučaju da je riječ u rječniku, također se ispiše poruka upozorenja: „Vašu zaporku je moguće probiti napadom rječnikom. Radi sigurnosti vaših podataka, 35 najbolje je promijeniti je“, a entropija i grafički indikator su postavljeni na iste vrijednosti kao i u prošlom slučaju. Slika 9. Unesena je riječ iz rječnika Ako riječ nije ni u rječniku ni među najčešće korištenim, izračunava se entropija i grafički indikator pokazuje koliko je jaka zaporka izračunato u postotcima s obzirom na vrijednost entropije zaporke. Slika 10. Slaba zaporka 36 Slika 11. Zaporka srednje jačine Slika 12. Jaka zaporka Želi li se ponovno pokrenuti analiza, dovoljno je kliknuti na gumb Ponovni unos, a za kraj rada, klikne se na gumb Kraj. 7.2. Simulacija rada alata za probijanje zaporki Program je napravljen u C# programskom jeziku kao Windows Form aplikacija. Razvijen je radi simulacije rada alata za probijanje zaporki i sastoji se od sedam klasa: 37 Check.cs, Form1.cs, Generator.cs, Hash.cs, Program.cs, Unos.cs, Zapis.cs. 7.2.1. Tehničke značajke Program simulira rad alata za probijanje zaporki korištenjem napada rječnikom. Kao i u pravim alatima, i o ovom simulatoru se traži podudaranje sažetaka zaporki koji su dobiveni korištenjem MD5 algoritma za sažimanje. U tu svrhu je potrebno za cijeli rječnik izračunati sažetke te potom tražiti podudaranje za unesene zaporke. Ukoliko se ono i dogodi, program će pokazati za koju zaporku se dogodilo uz ispisivanje izračunatog sažetka. 7.2.1.1. Razred Check.cs Razred Zapis.cs poziva metodu provjeri razreda Check.cs predajući kao parametar unesene zaporke za analizu. Svaka unesena zaporka se potom pretvara u polje okteta i analizira joj se duljina. Ukoliko ona odgovara parametrima za MD5 algoritam, potrebno je dodati salt te pozvati metodu izracun razreda Hash.cs radi izračuna sažetka da bi se potom pokrenula provjera podudaranja sa sažecima riječi iz rječnika. U slučaju da se ono dogodi, vraćaju se pripadajući sažetak i zaporka. 7.2.1.2. Razred Generator.cs Ovaj se razred poziva iz Form1.cs razreda samo u slučaju da se odabere generiranje zaporki za analizu umjesto unošenja. U metodi generiraj koja prima broj zaporki za generiranje, generira se zadani broj zaporki nasumične duljine (1 – 14 znakova) te se one zapišu u datoteku. 38 7.2.1.3. Razred Hash.cs Ovaj razred služi za generiranje sažetka za predani niz znakova. Ukoliko salt nije zadan, izabere se neki nasumični duljine između 4 i 8 okteta da bi nakon toga uslijedilo generiranje MD5 sažetka za uneseni niz s dodatkom. Prije izlaska iz funkcije potrebno je provesti pretvorbu dobivene vrijednosti iz polja okteta u podatkovni tip string. 7.2.1.4. Razred Unos.cs U metodi unesi ovog razreda se unose zaporke za analizu te se potom pohrane u datoteku da bi se kasnije mogle analizirati. 7.2.1.5. Razred Zapis.cs U ovom se razredu provodi glavni dio usporedbe sažetaka zaporke i vrijednosti iz rječnika. Za svaku unesenu zaporku potrebno je proći kroz čitav rječnik i tražiti podudaranje svih vrijednosti u sažetku što se radi pozivom metode provjeri razreda Check.cs. Ako se ono dogodi, zapišu se vrijednosti u datoteku i nastavlja se s usporedbom za ostale zaporke ako one postoje. 7.2.2. Upute za korištenje Program je oblikovan tako da se zaporke ili generiraju ili da ih korisnik unese sam. Ukoliko ih odluči unijeti sam, može upisati proizvoljan broj zaporki u prvo crveno polje. Po završetku unosa, potrebno je kliknuti na gumb Unesi zaporke za početak analize. Kad ona završi, u drugom crvenom polju se prikažu rezultati analize. 39 Slika 13. Korisnik je sam unio zaporke Želi li se analizirati nasumično generirane zaporke, potrebno je zadati broj zaporki za generiranje i kliknuti na gumb Generiraj zaporke. Ako se nađe podudaranje, rezultati će se prikazati u drugom crvenom polju dok će u prvom biti prikaz generiranih zaporki. Želi li se ponovno pokrenuti analiza, dovoljno je kliknuti na gumb Ponovni unos, dok se za kraj rada odabire Kraj. Slika 14. Korisnik je zadao da se izgenerira 100 zaporki i jedna od njih je bila u rječniku 40 8. Zaključak U današnjem svijetu sve više do izražaja dolazi problem zaštite informacija. Potrebno je koristiti raznolike metode zaštite kako povjerljivi podaci ne bi postali dostupni onima koji za njihovo pregledavanje i korištenje nemaju dozvolu. U tu svrhu se najčešće koriste zaporke čija je kvaliteta i obrađivana u ovom radu. Pokazalo se kako je potrebno imati što dulju zaporku te kombinirati različite znakove kako bi zaporke ostvarile svoju svrhu. Navedene su bitne razlike između slabih i jakih zaporki te obrasci za njihovo stvaranje koje je potrebno slijediti radi postizanja zadovoljavajuće jačine. Time se informacijski sustav čini što manje ranjivim na hakerske napade. Ukoliko se ne slijede obrasci za stvaranje zaporki već se koriste riječi iz rječnika ili neke ustaljene riječi, vrlo je jednostavno probiti zaporku različitim vrstama napada od kojih je dosta rasprostranjen napad rječnikom, pogotovo u mnogobrojnim alatima za probijanje, kao što su John the Ripper, Cain and Abel, Hashcat i drugi. Kao mjera za ispitivanje jačine zaporki koristi se entropija. Njezin iznos treba biti što veći jer veća entropija znači i veći broj mogućih kombinacija, ali i dulje vrijeme probijanja što opterećuje računalne resurse te čini zaporku jakom i praktički nemogućom za probijanje u realnom vremenu. Budući da je danas sve veći naglasak na nepovredivost privatnosti informacija korisnika u globalnim mrežnim sustavima, ključno je da i sami korisnici doprinesu zaštiti podataka u što većoj mjeri. Krajnje jednostavan način na koji oni to mogu učiniti jest kreirati dovoljno jaku zaporku koja će u svakoj situaciji dodatno otežati pristup njihovim korisničkim računima i podacima. Ukoliko se slijede dani naputci, korisnik će u velikom broju slučajeva i imati zajamčenu sigurnost i privatnost tijekom rada. 41 Literatura [1] „Kako napraviti kvalitetnu lozinku“, dostupno na Internet adresi: http://www.bug.hr/forum/topic/sigurnosni-softver/tut-kako-napraviti-kvalitetnulozinku/112889.aspx, 13.3.2014. [2] Danijel Starman, „Testiranje i sigurnost“, dostupno na Internet adresi: http://whitehatsec.blogspot.com/2012/07/nvidia-lagala-korisnicima-nvidia-forum.html, 16.3.2014. [3] „Probijanje zaporki korištenjem Hashcata“, dostupno na Internet adresi: http://samsclass.info/123/proj10/px16-hashcat-win.htm, 10.3.2014. [4] „Ispitivanje slabih zaporki“, dostupno na Internet adresi: https://www.felixrr.pro/archives/338/how-do-i-test-weak-password-hashes, 25.3.2014. [5] „Zaporke za Linux sustav“, dostupno na Intenet adresi: http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/shadow-file-formats.html 2.4.2014. [6] Primjeri korištenja alata John the Ripper, dostupno na Intenet stranici: http://www.openwall.com/john/doc/EXAMPLES.shtml, 29.3.2014. [7] Dan Wheeler, „Realistic Password Strength Estimation“, dostupni na Internet adresi: https://tech.dropbox.com/2012/04/zxcvbn-realistic-password-strength-estimation/, 15.4.2014. [8] Deb Shinder, „Passwords: the Weak Link in Network Security“, dostupno na Internet adresi: http://www.windowsecurity.com/articles-tutorials/authentication_and_encryption /Passwords_Network_Security.html, 4.4.2014. [9] Ziff Davis, „A Closer Look At the Current State of Password Security“, dostupno na Intenet adresi: http://www.itproportal.com/2014/01/22/a-closer-look-at-the-current-state-of-passwordsecurity/, 5.4.2014. 42 [10] „John the Ripper“, dostupno na Internet adresi: http://www.win.tue.nl/~aeb/linux/john/john.html, 30.3.2014. [11] „1Password is Ready for John the Ripper“, dostupno na Internet adresi: http://blog.agilebits.com/2012/07/31/1password-is-ready-for-john-the-ripper/, 1.4.2014. [12] „Better Master Passwords: The geek edition“, dostupno na Internet adresi: http://blog.agilebits.com/2011/08/10/better-master-passwords-the-geek-edition/, 16.3.2014. [13] „What does the John the Ripper do?“, dostupno na Internet adresi: http://juggernaut.wikidot.com/jtr, 18.3.2014. [14] „Savjeti za kreiranje jakih zaporki“, dostupno na Internet adresi: http://windows.microsoft.com/sr-latn-rs/windows-vista/tips-for-creating-a-strongpassword, 16.3.2014. [15] Margaret Rouse, Matthew Haughn, „Password Entropy“, dostupno na Internet adresi: http://whatis.techtarget.com/definition/password-entropy, 17.3.2014. [16] „Cain and Abel“, dostupno na Internet adresi: http://www.oxid.it/cain.html, 15.4.2014. [17] „Security Solutions“, dostupno na Internet adresi: http://www.security-solutions.co.za/cisco-asa-firewall-hardening-cisco-asa-bestpractices.html, 20.3.2014. [18] Steve Ford, „Password Strength“, dostupno na Internet adresi: http://blog.geeky-boy.com/, 3.4.2014. 43 Određivanje kvalitete zaporki Sažetak Svaki korisnik prilikom rada na računalu želi imati zajamčenu sigurnost i povjerljivost njegovih transakcija kao i korisničkih podataka. Budući da je s daljnjim razvojem tehnologije naglasak na tome još veći, pitanje je na koji se sve način mogu podaci zaštititi te tako smanjiti vjerojatnost gubitka povjerljivih podataka. To moraju zajamčiti različiti sustavi, ali je briga o tome povjerena i samom korisniku i to na vrlo jednostavan način; kreiranjem zaporke čija će jačina u dovoljnoj mjeri jamčiti sigurnost pristupa. U cilju simulacije odabira dobre korisničke zaporke, tijekom rada dan je prijedlog različitih mogućnosti kreiranja. Pri tome je prikazano kako jedan loš odabir lozinke može nepovoljno utjecati na sigurnost te olakšati pristup neovlaštenim korisnicima. Potom su dani načini poboljšavanja kvalitete zaporke, a rezultati su kvalitativno izraženi izračunom entropije koja će korisniku dati dovoljnu razinu informacije o jačini zaporke. Radi prikupljanja podataka za kvalitativnu analizu zaporki, korišten je alat John the Ripper čija je temeljna namjena bila ispitati jačinu zaporki koje su koristili stvarni korisnici. To je bilo polazište za izgradnju aplikacije koja će i sama vršiti ocjenu jačine zaporke na temu izračuna entropije. Time se korisnicima daje uvid u trenutnu kvalitetu zaporke te omogućiti poboljšanje iste u slučaju nedovoljne jačine. Ključne riječi Zaporka, jačina zaporke, entropija, funkcija za izračunavanje sažetka, napadi na zaporke, napadi grubom silom, napadi rječnikom, alati za probijanje, zaštita informacija, kriptografija 44 Password strength detection Summary Every user wants to preserve his privacy while working on network. This does not consider his files only, but also confidaciality of his transactions and usually used data. Considering that technology's improval is emphasizing the issue of data security and user protection, one of the biggest concerns in nowadays bussiness world is how to protect the user and therefore, lead to reducing the loss of confidential data. Different systems are to guarantee certain security to users but users are also obliged to take care of their data which pricipally refers to passwords used as main protection method. Their are to create satisfactory strength passwords which would make users sure their data are safe. In order to show how to detect good password and create one of their own, this work deals with many possibilities and options for creating passwords that would do their job; protect data. John the Ripper, well-known password cracker, is used to examine how strong are passwords that real users use. That information is a base for building a program that would anaylize input passwords and therefore, lead to their emproval in case of their weakness. Keywords Password, password strength, entropy, hash function, salt, password attacks, brute-force attacks, dictionary attacks, password crackers, information protection, cyptography 45
© Copyright 2024 Paperzz