92
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 1810 Napad ponovnim dogovaranjem ključa u protokolu WPA2 Konrad Višković Zagreb, srpanj 2019.

Napad ponovnim dogovaranjem ključa u protokolu WPA2sigurnost.zemris.fer.hr/ns/wireless/2019_viskovic/WPA2.pdf · 2019-06-10 · 6.4 Napad ponovljenim slanjem poruke 3 u jasnom obliku

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 1810

Napad ponovnim dogovaranjem ključa u protokolu WPA2

Konrad Višković

Zagreb, srpanj 2019.

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 1810

Napad ponovnim dogovaranjem ključa u protokolu WPA2

Konrad Višković

Zagreb, srpanj 2019.

Sadržaj

1. Uvod 1

2. Pregled norme IEEE 802.11 2

2.1 Norma 802.11-1997: 2 2.2 Norma 802.11a: 2 2.3 Norma 802.11b: 2 2.4 Norma 802.11g: 3 2.5 Norma 802.11n: 3 2.6 Norma 802.11ac: 3

3. Vrste napada na bežične mreže 4

3.1 Općenito o podjeli 4 3.2 Napadi na bežične mreže 4

4. Općenito o sigurnosnim protokolima bežičnih mreža 9

4.1 Protokoli bežičnih mreža 9 4.2 Protokol WEP 9 4.3 Protokol WPA 11 4.4 Protokol WPA2 11

5. Tehničke specifikacije protokola 802.11i 11

5.1 Pregled protokola 802.11i 11 5.2 Formati poruka 14 5.3 RSNA protokol pouzdanosti i integriteta: TKIP 19 5.4 RSNA protokol pouzdanosti i integriteta: CCMP 22 5.5 Autentifikacija korištenjem PSK 27 5.6 Autentifikacija korištenjem 802.1X 30

6. Opis ranjivosti KRACK 34

6.1 Detaljni prikaz rukovanja sa četiri poruke 34 6.2 Automat stanja Supplicant 35 6.3 Napadi ponovnom instalacijom ključa 36 6.4 Napad ponovljenim slanjem poruke 3 u jasnom obliku 37 6.5 Napad ponovljenim slanjem poruke 3 u kriptiranom obliku 39

7. Opis komponenti, gotovih programskih modula i uređaja korištenih u izradi projekta 43

7.1 Popis korištenih komponenti, modula i uređaja 43 7.2 Korištene sklopovske komponente 43 7.3 Korištene programske komponente 45

8. Vlastita implementacija komponenti za ispitivanje 48

8.1 Uvod 48 8.2 Glavna datoteka 50 8.3 Modul implementacije napada 51 8.4 Pomoćni modul 56

9. Postupak ispitivanja 68

9.1 Preuzimanje komponenti sa GitHub stranice Dr. Mathy Vanhoef-a 68 9.2 Postavljanje virtualnog okruženja i Kali Linux virtualnog stroja 68 9.3 Preuzimanje potrebnih programskih komponenti 69 9.4 Ispitivanje rada istraživačeve implementacije 69 9.5 Ispitivanje rada vlastite implementacije 79

10. Zaključak 83

11. Literatura 84

1

1. Uvod

U ovom se diplomskom radu opisuje funkcionalnost projekta čiji je cilj ispitivanje sigurnosti računalnog

sustava od napada ponovne instalacije kriptografskog ključa u protokolu WPA2 temeljenog na istraživanju

Dr. Mathy Vanhoef-a.

Protokol WPA2 (eng. Wi-Fi Protected Access 2) je protokol koji implementira norma IEEE 802.11i koji je

dodatak originalnom standardu 802.11 i specificira sigurnosne zahtjeve i mehanizme za zaštitu bežičnih

(eng. Wireless) mreža.

Napad ponovne instalacije ključa (eng. Key Reinstallation Attacks – KRACK) je detaljnije opisan u

poglavlju 6. Radi se o napadima na protokol WPA2 kojima je primarni cilj zaobilaženje njegovih

sigurnosnih mehanizama.

U prvom i drugom poglavlju opisana je norma IEEE 802.11. U drugom poglavlju navedene su osnovne

tehničke specifikacije protokola WPA2. U trećem poglavlju opisana je ranjivost KRACK. U četvrtom je

poglavlju opisana funkcionalnost korištenih komponenti. U petom poglavlju opisana je implementacija. U

šestom poglavlju provedeno je ispitivanje implementacije. U sedmom poglavlju dan je zaključak

diplomskog rada.

Cilj diplomskog rada je detaljna analiza napada KRACK pomoću vlastite implementacije pojedinih

modula koje Dr. Mathy Vanhoef koristi u svojim ispitivanjima.

2

2. Pregled norme IEEE 802.11

Povijest norme 802.11 (ili bolje rečeno, kolekcije normi) počinje kada je Vic Hayes bio uključen u dizajniranje početnih 802.11a i 802.11b normi u okviru zajednice IEEE. Hayes je od tada dobio nadimak „otac Wi-Fi-ja“. Kroz povijest se pojavljuju različite nadopune originalnoj normi 802.11. Popis najvažnijih iteracija normi sa značajkama koje te norme uključuju:

2.1 Norma 802.11-1997:

Prva verzija norme IEEE 802.11 je objavljena 1997. godine. Većina se protokola opisanih ovom verzijom danas vrlo rijetko koristi.

Značajke:

• Brzina prijenosa podataka od 1 ili 2 Mbit/s.

• Kontrola grešaka mehanizmom Forward error correction.

• Podaci se prijenose infracrvenim spektrom na 2.4 GHz.

• Definira CSMA/CA (eng. Carrier sense multiple access with collision avoidance) kao način pristupa mediju.

• Domet signala: 20m.

2.2 Norma 802.11a:

Uvodi veće brzine transmisije podataka i novi način kodiranja podataka za prijenos.

Značajke:

• Brzina prijenosa podataka od 1.5 do 54 Mbit/s.

• Frekvencija rada: 5 GHz.

• Podržava OFDM (eng. Orthogonal frequency-division multiplexing) metodu kodiranja podataka na fizičkom sloju OSI modela.

• Manje valne duljine što stvara probleme u okruženju s preprekama.

• Domet signala: 35m.

2.3 Norma 802.11b:

Nadopuna koja je objavljena 1999. godine. Slična je početnoj normiiz 1997. godine.

Značajke:

• Brzina prijenosa podataka: 11 Mbit/s.

• Koristi CSMA/CA pristup mreži.

• Frekvencija rada: 2.4 GHz.

• Zbog frekvencije rada pati od mogućih interferencija ostalih uređaja koji rade na istoj frekvenciji (na primjer mikrovalne pećnice).

• Domet signala: 35m.

3

2.4 Norma 802.11g:

Nadopuna napisana 2003. godine. Specificira normu sličnu mješavini normi 802.11a i 802.11b. Uređaji koji koriste ovu normu su kompatibilni i sa starijim navedenim normama.

Značajke:

• Brzina prijenosa podataka: 54 Mbit/s.

• Frekvencija rada: 2.4 GHz.

• Podržava OFDM (eng. Orthogonal frequency-division multiplexing) metodu kodiranja podataka na fizičkom sloju OSI modela.

• Domet signala: 38m.

2.5 Norma 802.11n:

Norma objavljena 2009. godine. Punog naziva IEEE 802.11n-2009. Specifičnost ove norme je korištenje više antena za povećanje mogućeg protoka podataka. Nadopunjuje normu 802.11-2007.

Značajke:

• Korištenje više antena za povećanje protoka (eng. Multiple-input multiple-output - MIMO) na fizičkom sloju OSI modela.

• Maksimalna brzina prijenosa podataka: između 300 i 600 Mbit/s

• Omogućava slanje više od jednog okvira podataka u jednom slanju.

• Frekvencije rada: 2.4GHz ili 5 GHz.

• Širina kanala: 40MHz.

• Domet signala: 70m.

2.6 Norma 802.11ac:

Puni naziv norme je IEEE 802.11ac-2013. Nadopuna je normi 802.11n. Donosi znatna unaprjeđenja za razliku od prijašnjih normi.

Značajke:

1. Širina kanala: 80 ili 160 MHz. 2. Više MIMO protoka: 8 za razliku od 4 kod 802.11n. 3. Frekvencija rada: 5 GHz. 4. Domet signala: 35m. 5. Modulacija višeg reda: 256-QAM 6. Maksimalna brzina prijenosa podataka: 433.3 Mbit/s po jednom protoku ili 1300 Mbit/s

ukupno.

Postoji još normi koji se koriste ili su u razvoju ali neće biti razmatrani u okviru ovog rada. Neke od tih normi su: 802.11ad, 802.11af, 802.11ag, 802.11ah, 802.11ai i 802.11ax.

4

3. Vrste napada na bežične mreže

3.1 Općenito o podjeli

U ovome su poglavlju opisani najzastupljeniji napadi na bežične mreže. Napadi se mogu klasificirati na različite načine, a razmatraju se podjele na:

• OSI sloj. Sloj OSI modela na kojem se napad izvršava.

• Sigurnosni zahtjevi. Sigurnosni zahtjev koji pojedini napad pogađa, može biti: povjerljivost, integritet, dostupnost ili autentičnost.

• Lokacija napadača. Određuje nalazi li se napadač unutar mreže, izvan nje ili je napad izvršiv neovisno o lokaciji napadača.

• Vrsta napada po aktivnosti. Aktivni napadi su napadi koji utječu na podatke koji se prenose mrežom na način da ih se može modificirati ili brisati. Pasivni napadi nemaju mogućnost ometanja mreže i ni na koji način ne modificiraju podatke koje se šalju mrežom.

3.2 Napadi na bežične mreže

3.2.1 Prisluškivane i praćenje paketa

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost

• Lokacija napadača: neovisno

• Vrsta: pasivni

• Opis: napadač pasivno prisluškuje mrežu i dohvaća sve podatke koje njegova mrežna kartica osluškuje u određenom dometu te ih sprema na računalo.

3.2.2 Analiza prometa

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost

• Lokacija napadača: neovisno

• Vrsta: pasivni

• Opis: napadač prisluškivani promet analizira i obrađuje, postoji mogućnost otkrivanja uzoraka u prometu iako se radi o kriptiranoj komunikaciji.

3.2.3 Maskirani protivnik

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, dostupnost

• Lokacija napadača: neovisno

• Vrsta: pasivni

• Opis: napadač može ubaciti svoju pristupnu točku ili kompromitirati ostale i učiniti ih skrivenima. Kasnije se te pristupne točke mogu koristiti kao kopije postojećih što omogućuje preusmjeravanje podataka u mreži.

3.2.4 Prigušenje signala

• OSI sloj: fizički

• Sig. zahtjevi: dostupnost, integritet

• Lokacija napadača: neovisno

• Vrsta: aktivni

5

• Opis: napadač ima pristup odašiljaču koji može generirati signal koji može interferirati sa mrežnom komunikacijom.

3.2.5 Fizički napadi na infrastrukturu

• OSI sloj: fizički

• Sig. zahtjevi:

• Lokacija napadača: vanjski

• Vrsta: aktivni

• Opis: napadač ima fizički pristup mobilnoj točki te je može fizički uništiti, pristupiti kriptografskim ključevima, reprogramirati stanicu, itd.

3.2.6 Manipulacija back-off intervala

• OSI sloj: podatkovna poveznica

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: kod ove vrste napada, pošiljatelj ima mogućnost odabira manjih back-off intervala ako ima namjeru izvoditi napad uskraćivanjem usluge.

3.2.7 Napad Jellyfish

• OSI sloj: podatkovna poveznica

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: u ovome napadu, napadač prati komunikacijski protokol ali neprimjetno i periodički remeti, odbacuje ili uzrokuje kašnjenje paketa. Ovakav je napad teško identificirati.

3.2.8 Stvarane kolizija

• OSI sloj: podatkovna poveznica

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: napadačka stanica namjerno uzrokuje kolizije u ciljanim paketima kao što su poruke ACK, što uzrokuje uključivanje eksponencijalnih back-off algoritama u protokolima za kontrolu pristupa mediju.

3.2.9 Napad preplavljivanjem (eng. Flooding)

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: općeniti cilj napada preplavljivanjem je trošenje mrežnih ili drugih resursa napadnute mrežne stanice kako bi se poremetio ili uskratio njen normalan rad. Primjer napada može biti napad Ping Flood kod kojeg napadač neprestano šalje ICMP Echo Request poruke računalu žrtve i time ga preplavljuje, uzrokujući uskraćivanje usluge.

6

3.2.10 Napad Blackhole

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, dostupnost, autentičnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: kod ove vrste napada, napadač se koristi protokolom usmjeravanja kako bi objavio da zna put od izvorišta do odredišne točke, kako bi mrežni promet mogao ići preko njega. Jednom kada paketi počnu stizati, može ih koristiti u vlastite svrhe i ne prosljeđuje ih.

3.2.11 Napad Wormhole

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, autentičnost

• Lokacija napadača: izvan mreže

• Vrsta: aktivni

• Opis: u napadu se koristi jedna ili više napadačkih stanica od kojih jedna skuplja promet i izravno ga preusmjerava drugoj napadačkoj stanici, koja taj promet distribuira lokalno. Ovaj napad može uzrokovati neispravan rad mehanizama preusmjeravanja jer se stvara lažna putanja koja je kraća od ostalih u mreži. Štetnost napada leži u tome što napadač može selektivno propuštati promet, odbacivati podatke, analizirati ih, prikupljati veliku količinu mrežnih podataka i time uzrokovati napad uskraćivanjem usluge.

3.2.12 Napad podvalom poveznice

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: u ovome napadu, napadač lažno obavještava ostale stanice u mreži da posjeduje vezu između sebe i stanica koje mu nisu susjedne, što uzrokuje probleme u radu protokola usmjeravanja.

3.2.13 Bizantski napad

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: bizantski napad se izvodi tako da kompromitirana stanica ili više njih zajedno sudjeluju u kompromitirajućim radnjama kao što su namjerno prosljeđivanje podataka sub-optimalnim putanjama ili namjerno stvaranje ciklusa čime se utječe na rad algoritama za usmjeravanje.

3.2.14 Napad ponavljanjem

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: napad ponavljanjem se izvodi na način da zlonamjerna stanica bilježi poruke koje

7

se izmjenjuju između ostalih stanica te ih potom nakon nekog vremena ponovno odašilje stanici koju želi napasti. Napad ima utjecaj na ispravnost rada ciljanih protokola ili na performanse napadnute stanice.

3.2.15 Napad trošenjem resursa

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: napad trošenjem resursa se izvodi na način da zlonamjerna stanica neprestano prosljeđuje pakete napadanoj stanici ili da neprestano potražuje informacije o lokaciji napadane stanice s ciljem bržeg trošenja resursa stanice kao što je baterija.

3.2.16 Napad lažnim predstavljanjem (eng. IP Spoofing)

• OSI sloj: mrežni

• Sig. zahtjevi: autentičnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: za provedbu ovog napada napadač izmjenjuje izvorišnu IP adresu paketa kako bi se sakrio identitet pošiljatelja ili kako bi se napadač lažno predstavio kao drugo računalo. Ova se tehnika najčešće koristi prilikom izvođenja različitih napada uskraćivanjem usluge.

3.2.17 Napad Sinkhole

• OSI sloj: mrežni

• Sig. zahtjevi: povjerljivost, integritet, dostupnost

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: ovaj napad izvodi se na način da napadač kompromitira neku stanicu unutar mreže, te zatim kompromitirana stanica nastoji privući što više mrežnog prometa prema sebi na način da oglašava kratke veze protokola usmjeravanja s obzirom na korištenu metriku. Ovim napadom napadač pogoršava performanse mreže te dobiva mogućnost prikupljanja i analize mrežnog prometa.

3.2.18 Napad Sybil

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost, autentičnost

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: ovaj se napad izvodi u peer-to-peer mreži, odnosno mreži koja se oslanja na sustav ugleda stanica. Cilj napada je srušiti ugled stanica stvaranjem velikog broja lažnih identiteta i koristeći ih kako bi se stekao utjecaj u mreži (na primjer kod različitih glasovanja).

3.2.19 Napad prelijevanjem tablice usmjeravanja

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost

8

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: cilj ovog napada je punjenje tablica usmjeravanja napadane stanice sa rutama do stanica koje ne postoje, čime se sprječava stvaranje novih legitimnih ruta do postojećih stanica, čime se utječe na rad protokola usmjeravanja.

3.2.20 Napad trovanjem tablice usmjeravanja

• OSI sloj: mrežni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: napad kod kojeg se tablica usmjeravanja napadnute stanice puni sa lažnim ili krivim unosima što može rezultirati lošijim performansama mreže ili napadom uskraćivanja usluge.

3.2.21 Napad SYN preplavljivanjem

• OSI sloj: transportni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: unutar mreže

• Vrsta: aktivni

• Opis: ovo je vrsta napada uskraćivanjem usluge gdje napadač šalje puno SYN zahtjeva na napadanu stanicu no nikada ne pošalje završni ACK, što rezultira sa mnogo poluotvorenih konekcija na napadanoj stanici te se nove konekcije ne mogu ostvariti dok se ne razriješe stare.

3.2.22 Napad preuzimanjem sesije

• OSI sloj: transportni

• Sig. zahtjevi: dostupnost

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: ovaj napad se izvodi na način da se napadač lažno predstavi kao jedna od dvije stanice koje komuniciraju te saznaje ispravne sekvencijske brojeve koje druga strana očekuje, čime efektivno izvodi napad uskraćivanjem usluge prema stanici kojom se lažno predstavio.

3.2.23 Napad malicioznim kodom

• OSI sloj: aplikacijski

• Sig. zahtjevi: različiti

• Lokacija napadača: neovisno

• Vrsta: aktivni

• Opis: napadanje aplikacija i operacijskog sustava pomoću zlonamjernih programa kao što su spyware, trojanski konji, crvi, virusi i ostali.

9

4. Općenito o sigurnosnim protokolima bežičnih mreža

4.1 Protokoli bežičnih mreža

Bežične su mreže inherentno nesigurnije od žičanih, dok žičane mreže prenose podatke između dvije točke A i B, bežične mreže šalju podatke u svim smjerovima na sve uređaje koji osluškuju promet u nekom dometu. Na početku je cilj bio što jednostavnije i brže postaviti mrežu kako bi korisnici što lakše mogli pristupati internetu. Danas se osim jednostavnosti postavljanja mreže zahtijeva i određena razina sigurnosti mreže kako bi se mogao kontrolirati pristup mreži, osigurati dostupnost pristupa internetu, zaštita podataka koji se šalju mrežom putem enkripcije i drugi zahtjevi. Za više razine sigurnosti više nije dovoljno samo odabrati složenu lozinku za spajanje na mrežu već se zahtjeva korištenje različitih kriptografskih algoritama iz simetričnih i asimetričnih klasa, kao i uporaba funkcija za izračun sažetaka kako bi se osigurao integritet podataka koji se šalju. U tu svrhu s vremenom su se razvijali različiti sigurnosni protokoli za zaštitu bežičnih mreža, to su protokoli WEP, WPA i WPA2.

Fokus ovog rada je na protokolu WPA2, njegovu funkcionalnost i ranjivosti. U nastavku se nalazi kratko objašnjenje rada svakog od tih protokola kao i opisi njihovih slabosti.

4.2 Protokol WEP

Protokol WEP je opcionalni sigurnosni mehanizam za zaštitu bežičnih mreža koji je uveden normom IEEE 802.11-1997. Cilj je bio osigurati bežične mreže do razine usporedne sa žičnim mrežama. Protokol WEP pruža sigurnost kroz jednostavne postupke autorizacije i enkripcije podataka opisane u nastavku [20].

Protokol WEP koristi algoritam RC4 (Rivest Cipher 4) za enkripciju toka za enkripciju i dekriptiranje podataka. Algoritam RC4 koristi pseudo-nasumični generator brojeva (PRNG) kako bi generirao tok bitova iz WEP inicijalizacijskog sjemena (eng. Seed). Seed je predstavljen nadovezivanjem 24-bitnog inicijalizacijskog vektora IV i 40-bitnog ključa. WEP algoritam osim 40-bitnog ključa može koristiti i 104-bitni ključ [20].

Prije šifriranja čistog teksta, čisti se tekst provlači kroz funkciju CRC32 za izračunavanje sažetka za zaštitu integriteta, ta se vrijednost naziva ICV (eng. Integrity Check Value) i ona se nadovezuje na čisti tekst. Kriptiranje se izvodi računanjem XOR operacije nad čistim tekstom sa nadovezanom ICV vrijednosti i generiranim tokom ključa iz RC4 algoritma (koji koristi IV i WEP ključ kao svoj ulaz). WEP algoritam na izlazu nadovezuje inicijalizacijski vektor RC4 algoritma i novonastali šifrirani tekst (stvoren operacijom XOR). Rezultat je WEP okvir koji se može poslati komunikacijskim kanalom [20].

10

Slika 4.1: Kriptiranje WEP algoritmom, preuzeto iz [21]

Postupak dekriptiranja se odvija u obrnutom redoslijedu: najprije se inicijalizacijski vektor IV odvaja od kriptiranog teksta i pomoću inicijalizacijskog vektora i algoritma RC4 generira niz bitova ključa (primatelj mora znati i tajni WEP ključ). Primatelj dekriptira poruku korištenjem XOR operacije nad generiranim tokom ključa i šifriranim tekstom. Kada je dobio čisti tekst, ponovno računa vrijednost ICV i uspoređuje je sa vrijednosti ICV koju je primio sa čistim tekstom i uspoređuje ih. Ako su vrijednosti jednake, poruka je ispravna, a ako nisu znači da je poruka bila mijenjana te se odbacuje.

WEP protokol nije savršen, stručnjaci i analitičari su s vremenom pronašli slabosti zbog kojih on više nije u uporabi. Njegove slabosti su:

• Upravljanje ključevima. Upravljanje ključevima nije jasno definirano u WEP protokolu što znači da će ključevi najčešće imati dugačak vijek trajanja što u kriptografiji nije poželjno. Iz razloga što sve točke na mreži moraju koristiti identične WEP ključeve, izmjena WEP ključeva postaje problematična i kompleksna, zbog čega se ne odvija dovoljno često.

• Veličina ključa. Veličina ključa od 40 bitova danas se ne smatra dovoljno sigurnom.

• Inicijalizacijski vektor je nedovoljno velik. Veličina inicijalizacijskog vektora od 24 bitova smatra se nedovoljno velikom jer omogućuje 16.777.216 različitih tokova za pojedini ključ, neovisno o veličini ključa. Problem je ponovno korištenje istog inicijalizacijskog vektora, ako se pronađe RC4 tok za određeni IV, napadač može dekriptirati pakete kriptirane istim tokom ili stvarati lažne pakete. To znači da je moguće dekriptiranje paketa i ukoliko je ključ nepoznat, jer je jednostavnije doći do toka ključa nego do samog ključa.

• Algoritam za računanje ICV-a nije prikladan. Iako je CRC32 dobar algoritam za otkrivanje grešaka u komunikaciji, nije dobar odabir algoritma za računanje kriptografskih sažetaka jer je linearna funkcija poruke, što znači da napadač može izmijeniti poruku i potom jednostavno popraviti ICV kako bi poruka izgledala autentično.

• Način korištenja algoritma RC4 je slab. Korelacija između ključa i izlaza algoritma veća je nego što bi trebala biti. Slabi ključevi koriste prva tri okteta koja su jednaka prva tri okteta IV-a poslanog kao čisti tekst putem komunikacijskog kanala.

11

4.3 Protokol WPA

Nakon što su se slabosti protokola WEP počele značajno iskorištavati, grupa Wi-Fi Alliance morala je smisliti privremeno rješenje koje je moguće brzo postaviti na postojeće sklopovlje koje podržava protokol WEP, rezultat toga bio je protokol WPA. Protokol WPA mogao je biti postavljen putem ažuriranja firmware-a mrežnih kartica koje podržavaju protokol WEP. Jer je protokol WPA nastao prije nego što je norma 802.11i bila potpuna, on usvaja neke od njegovih mehanizama. Dok je protokol WEP koristio 64 ili 128 bitne ključeve koji moraju biti ručno uneseni u svaki uređaj, protokol WPA implementira protokol TKIP koji omogućava da svaki paket ima zaseban ključ pri njegovom kriptiranju i time uklanja neke od slabosti prisutnih kod WEP-a. TKIP je detaljnije objašnjen u kasnijim poglavljima ovog rada pa se ovdje neće detaljno opisivati. WPA protokol za provjeru integriteta podataka zamjenjuje algoritam CRC32 sa MIC načinom provjere integriteta koja je sigurnija od CRC32.

Iako WPA protokol inherentno ne sadrži ranjivosti koje se mogu iskoristiti, zbog svoje namjene se primarno koristi protokolom TKIP koji koristi zastarjeli RC4 algoritam šifriranja, što je bilo neophodno kako bi se zadržala kompatibilnost sa starijim WEP uređajima. Protokol TKIP je detaljnije obrađen u kasnijim poglavljima.

4.4 Protokol WPA2

Protokol WPA2 zamjenjuje slabiji RC4 algoritam koji se koristi kod protokola WPA sa algoritmom AES u CCMP načinu rada. Kako je analiza protokola WPA2 i njegovih ranjivosti primaran fokus ovog rada, svi detalji vezani uz funkcionalnost i ranjivosti biti će objašnjeni u daljnjim poglavljima.

5. Tehničke specifikacije protokola 802.11i

5.1 Pregled protokola 802.11i

U ovome se poglavlju opisuju tehničke specifikacije implementacije 802.11i, sigurnosne nadopune 802.11-1999 stvorene 2004. godine, a kasnije ugrađen u standard IEEE 802.11-2007. Implementacija ovog standarda je protokol WPA2 (eng. Wi-Fi Protected Access II). Uz njega je definiran i malo stariji protokol WPA, no on se neće razmatrati detaljnije u okviru ovoga rada jer dijeli većinu funkcionalnosti kao i WPA2.

Protokol WPA2 razvila je skupina Wi-Fi Alliance kao odgovor na pronađene ozbiljne prijetnje u protokolu WEP (eng. Wired Equivalent Privacy). Problem s WEP-om bio je način na koji su se kriptirale poruke. WEP koristi kriptografski algoritam RC4, međutim problem nije bio u samom algoritmu već načinu na koji se on koristi, odnosno načinu na koji se generira inicijalizacijski vektor IV [1]. Više o ranjivostima ovog protokola može se pročitati na [1], [2]. Za razliku od WEP-a, protokol WPA2 za osiguravanje integriteta i povjerljivosti podataka koristi jedan od dva moguća protokola:

• TKIP (eng. Temporal Key Integrity Protocol).

• CCMP (eng. Counter Mode CBC-MAC Protocol).

12

U specifikaciji originalnog protokola WPA, zahtijevala se obavezna implementacija protokola TKIP za osiguravanje povjerljivosti i integriteta, dok je kod novijeg protokola WPA2 obavezna sigurnija opcija – protokol CCMP. Oba su protokola opisana u ovome radu no naglasak je na protokolu CCMP jer je sigurniji i koji se koristi u ispitivanjima u okviru ovoga rada.

Termin koji se također koristi za WPA2 je RSN (eng. Robust Security Network). Protokol 802.11i omogućuje robusnu sigurnosnu mrežu pomoću dva nova protokola:

• Rukovanje sa četiri poruke (eng. 4-way handshake).

• Rukovanje grupnim ključem (eng. Group key handshake).

Ova dva protokola dodatno koriste dva moguća načina autentifikacije:

• Osobni način autentifikacije (eng. Personal): Korištenjem prethodno dijeljenog ključa (eng. Pre-shared key - PSK).

• Enterprise način autentifikacije: Razmjenom EAP (eng. Extensible Authentication Protocol) poruka – EAPOL.

Navedeni je drugi način autentifikacije opisan protokolom IEEE 802.1X koji definira enkapsulaciju protokola EAP preko lokalnih mreža, što se naziva „EAP Over Lan“ ili skraćeno EAPOL. EAPOL način autentifikacije zahtjeva dodatni autentifikacijski poslužitelj (eng. Authentication Server - AS). Ova dva načina autentifikacije osiguravaju da je klijentska stanica (eng. Client Station) autentificirana sa pristupnom točkom (eng. Access Point). Nakon uspješne autentifikacije, slijedi generiranje glavnog parnog ključa (eng. Pairwise Master Key - PMK) iz kojeg se dalje generiraju ključevi za izravnu primjenu u kriptografskim algoritmima za osiguravanje komunikacije. U okviru ovoga rada opisana su oba pristupa autentifikacije, no korišten je samo EAPOL način pa je stoga naglasak na njemu.

Bitno je naglasiti da se WPA2 autentifikacija (PSK-om ili razmjenom EAPOL poruka uz posrednički autentifikacijski poslužitelj) razlikuje od stare 802.11 autentifikacije. Stara 802.11 autentifikacija ne pruža nikakvu razinu sigurnosti i najčešće se koristi za razmjenu određenih parametara prije korištenja nekog sigurnosnog autentifikacijskog mehanizma specifikacije 802.11i. Slika 2 prikazuje stanja u kojima se 802.11 veza može nalaziti.

13

Slika 5.1: Stroj stanja 802.11 veze, preuzeto iz [8]

Sa slike 5.1 vidljivo je da se klijent prije spajanja na pristupnu točku nalazi u stanju Unauthenticated Unassociated, što znači da je neautentificiran i neasociran sa pristupnom točkom. Prijelaz Authentication klijenta dovodi u autentificirano stanje, a (Re)association prijelazom koji označava asocijaciju ili ponovnu asocijaciju klijent dolazi u autentificirano i asocirano stanje.

Kako bi 802.11 veza bila uspješno uspostavljena, potrebno je proći kroz dva koraka:

1. Autentifikacija. 2. Asocijacija.

Opis ovih koraka prikazan je i objašnjen slijednim dijagramom na slici 5.2:

Slika 5.2: 802.11 koraci uspostave veze, preuzeto iz [7]

14

Kako bi se mobilna stanica mogla povezati s usmjeriteljem, ona prolazi kroz slijed koraka opisanih na slici 5.2:

1. Mobilna stanica mobile station šalje probe request upravljački okvir pristupnoj točki access point. Ovaj upravljački okvir oglašava podržani protok podataka mobilne stanice i slične parametre. Odredišna MAC adresa ovog okvira je ff:ff:ff:ff:ff:ff što znači da će sve pristupne točke koje dobiju ovaj okvir odgovoriti na njega.

2. Kada pristupna točka primi okvir, provjerava podržava li oglašavani protok podataka i ukoliko podržava, oglašava svoj BSSID (ime bežične mreže), podržane protoke podataka i podržane sigurnosne mehanizme odgovorom probe response. Mobilna stanica odabire mrežu koja joj paše s obzirom na njene parametre i mehanizme koje podržava. Ova vrsta autentifikacije bila je namijenjena WEP protokolu i pokazala se kao nesigurnom pa je stoga ovaj proces gotovo uvijek uspješan.

3. Mobilna stanica šalje autentifikacijski okvir pristupnoj točki i postavlja parametar načina autentifikacije na otvoreni putem poruke authentication open seq:1.

4. Pristupna točka šalje autentifikacijski okvir odgovora authentication open seq:2 mobilnoj točki sa kojim potvrđuje odabrani tip autentifikacije (otvoreni tip). Ovim korakom se mobilna stanica nalazi u autentificiranom i neasociranom stanju.

5. Kada mobilna stanica odredi kojoj se mreži želi priključiti, pristupnoj točki šalje zahtjev za asocijaciju association request u obliku upravljačkog okvira. U ovom zahtjevu prenosi se informacija o odabranim kriptografskim metodama i ostalim 802.11 mogućnostima.

6. Ako se svi zahtjevi mobilne stanice slažu sa mogućnostima pristupne točke, pristupna točka stvara identifikator asocijacije za mobilnu stanicu koja se priključuje mreži i šalje asocijacijski odgovor o uspješnosti povezivanja association response.

7. U ovome koraku bi klasična 802.11 veza dozvolila mobilnoj stanici početak slanja podataka (data sa slike).

Napomena: prilikom korištenja autentifikacije protokolom WPA/WPA2, ta se autentifikacija izvršava tek kada je mobilna stanica autentificirana i asocirana na temelju 802.11 mehanizama.

Detaljniji opisi rukovanja i autentifikacije, kao i opisi bitnih poruka koje se razmjenjuju opisani su u zasebnim poglavljima. Na kraju opisa ključnih mehanizama slijedi poglavlje koje opisuje automat stanja norme 802.11i odnosno protokola WPA2.

5.2 Formati poruka

5.2.1 Uvod

U ovome su poglavlju opisani MAC (eng. Media Access Control) okviri koji se koriste za prijenos različitih informacija između implementacija 802.11 standarda. Prije pregleda sadržaja bitno je razjasniti pojmove poput MPDU i MSDU te pružiti pregled u odnosu na OSI model.

Norme 802.11 rade na dva donja sloja OSI referentnog modela: sloju podatkovne poveznice (eng. Data Link Layer) i fizičkom sloju.

15

Fokus ovog rada je na informacijama koje se prenose u sloju podatkovne poveznice. Sloj podatkovne poveznice sastoji se od dva podsloja [6]:

• Podsloj Logical Link Control – LLC: Kako paketi dolaze iz gornjeg, mrežnog sloja OSI modela u sloj podatkovne poveznice, podatak koji stigne zove se MSDU (eng. MAC Service Data Unit) i sadrži IP zaglavlje i LLC podatke. LLC podaci isti su za Wi-Fi i Ethernet.

• Podsloj Media Access Control – MAC: U ovome se podsloju na MSDU nadovezuje MAC zaglavlje, čime nastaje MPDU (eng. MAC Prodotol Data Unit). MPDU se sastoji od 3 dijela: MAC zaglavlja, tijela okvira i kontrolne sume FCS (eng. Frame Check Sequence).

Slika 5.3: Enkapsulacija podataka viših u niže slojeve OSI modela, preuzeto iz [6]

Slika 5.3 prikazuje enkapsulaciju podataka iz viših slojeva OSI modela u niže slojeve, konkretno, iz mrežnog sloja Network u sloj podatkovne poveznice Data-Link te nakon toga u fizički sloj Physical. Za razmatranje u ovome radu, naglasak je samo na podacima na sloju podatkovne poveznice, dok se podaci preneseni u fizički sloj ne razmatraju. U fizičkom se sloju pristigli podaci PSDU (eng. Physical Service Data Unit) nakon nadovezivanja zaglavlja pretvaraju u PPDU (eng. Physical Protocol Data Unit) i dalje prenose kroz mrežu sa za to definiranim mehanizmima [6].

Svaki se okvir sastoji od osnovnih dijelova:

• MAC zaglavlja koje uključuje informacije o kontroli okvira (eng. Frame control), trajanje, adrese, informacije o kontroli redoslijeda (eng. Sequence control information) i QoS informacije za okvire koji prijenose informacije o kvaliteti usluge.

• Tijelo okvira promjenjive duljine koje sadrži informacije specifične za tip i podtip okvira.

• FCS (eng. Frame Check Sequence) polje koje sadrži kontrolnu IEEE 32-bitnu CRC sumu.

16

5.2.2 Osnovni format okvira

Svi okviri slijede jedan osnovni format okvira. Osnovni format okvira prikazan je slikom 5.4:

Slika 2.4: Osnovni format MAC okvira, preuzeto iz [3]

Osnovni dijelovi okvira su [3]:

1. Frame Control: polje kontrole okvira veličine 2 okteta. Sadrži razne informacije dane slikom 6:

Slika 5.5: Sadržaj polja kontrole okvira, preuzeto iz [3]

Unutar polja kontrole okvira razlikujemo polja [3]:

a. Procotol Version: Ovaj standard određuje da je vrijednost ovog polja 0. Polje je veličine 2 bita.

b. Type: polje veličine 2 bita koje određuje o kojem se tipu okvira radi. Mogući tipovi okvira su: upravljački (eng. Management), kontrolni (eng. Control) i podatkovni (eng. Data).

c. Subtype: Podtip okvira. Vrijednost ovog polja mora odgovarati vrijednosti tipu okvira. Podtip zajedno sa tipom okvira određuju funkciju okvira. Više o vrijednostima ovog polja može se naći na [3].

d. To DS: polje koje u kombinaciji sa poljem From DS određuje specifičnu funkciju. e. From DS: polje koje u kombinaciji sa poljem To DS određuje specifičnu funkciju. f. More Frag: polje koje je postavljeno na vrijednost 1 ukoliko postoji još

fragmenata trenutnog MSDU-a ili MPDU-a, a 0 inače. g. Retry: polje koje je postavljeno na vrijednost 1 ukoliko se radi o ponovno

poslanom okviru. Pomaže kod eliminacije dupliciranih okvira. h. Pwr Mgt: polje koje opisuje način upravljanja napajanjem. i. More Data: Polje koje označava postoji li još MSDU-ova koji su spremni na

slanje i koji se nalaze u redu čekanja neke pristupne točke. j. Protected Frame: vrijednost je postavljena na 1 ukoliko je tijelo okvira

obrađivano nekim kriptografskim algoritmom.

17

k. Order: vrijednost je postavljena na 1 ukoliko se radi o okviru koji ne prenosi informaciju o kvaliteti usluge, a prenosi se nekom specifičnom klasom usluge.

2. Duration/ID: vrijednosti ovog polja variraju u ovisnosti o tipu i podtipu okvira, regulira pristup mediju. Više informacija o ovome polju pronaći na [3].

3. Address 1-4: adresna polja. Ova polja mogu sadržavati različite informacije: adresu izvorišta (SA), adresu odredišta (DA), adresu odašiljajuće stanice (TA), adresu prijemne stanice (RA) ili identifikator osnovnog skupa usluga (eng. Basic Service Set) (BSSID). Nekada se svrha korištenih adresa razlikuje po relativnim korištenim poljima u kojima se informacije nalaze unutar MAC zaglavlja (od 1 do 4).

4. Sequence Control: Polje sekvencijske kontrole sastoji se od 2 okteta raspodijeljena prema slici 5.6.

Slika 5.6: Polje sekvencijske kontrole, preuzeto iz [3]

Polje sekvencijske kontrole sastoji se od dva dijela:

a. Fragment Number: polje veličine 4 bita koje određuje broj fragmenta MSDU-a ili MPDU-a.

b. Sequence Number: polje veličine 12 bita koje određuje sekvencijski broj MSDU-a ili MPDU-a kojeg prenosi neka stanica.

5. QoS Control: polje koje određuje različite parametre kvalitete usluge. 6. Frame Body: polje tijela okvira varijabilne veličine od 0 do (MSDU + ICV + IV) okteta. 7. FCS: 32 bitno polje koje sadrži 32-bitnu zaštitnu CRC sumu. FCS se računa nad svim

poljima MAC zaglavlja i tijela okvira.

5.2.3 Kontrolni okviri

U ovome je dijelu opisana samo osnovna struktura kontrolnog okvira. Kontrolnih okvira ima mnogo, a u ovome će se radu razmatrati samo neki od njih, te će se njihova specifična struktura opisati prilikom samog korištenja. Slika 8 prikazuje karakteristične vrijednosti kontrolnog polja okvira FCS [3]:

18

Slika 5.7: Karakteristične FCS vrijednosti kontrolnih okvira, preuzeto iz [3]

Sa slike 5.7 vidljive su karakteristične vrijednosti FCS polja kontrolnih okvira, odnosno vrijednosti koje su maskirane nulama.

5.2.4 Podatkovni okviri

Struktura podatkovnih okvira ovisi o QoS podpolju FCS-a MAC okvira. Struktura podatkovnog okvira ista je kao i kod općenitog okvira i opisana je slikom 5.8 [3]:

Slika 5.8: Općenita struktura podatkovnog okvira, preuzeto iz [3]

Podatkovni okviri sa vrijednošću 1 u QoS pod-polju FCS-a nazivaju se QoS podatkovni okviri i svi sadržavaju popunjeno QoS polje u MAC okviru. Oni okviri koji imaju postavljenu vrijednost 0 na tome mjestu ne sadrže ni QoS kontrolno polje MAC zaglavlja. U ovisnosti o vrijednosti polja To DS i From DS, adresna polja imaju različita značenja, to je prikazano tablicom 5.1 [3].

Tablica 5.1: Uloga adresnih polja s obzirom na polja To DS i From DS, preuzeto iz [3]

Bitno je naglasiti da adresa 1 uvijek predstavlja adresu primatelja, a adresa 2 uvijek predstavlja adresu stanice koja šalje okvir. Stanica promatra adresu 1 prilikom odlučivanja o primanju. Stanica koristi adresu 2 za usmjeravanje potvrde (eng. Acknowledgment) poruke ukoliko je ona potrebna. DA predstavlja odredište MSDU-a. SA je adresa MAC entiteta koji je započeo MSDU. RA predstavlja adresu stanice koja je neposredni primatelj okvira. TA je adresa stanice koja odašilje okvir [3].

19

5.2.5 Upravljački okviri

Format upravljačkih okvira neovisan je o podtipu okvira i definiran je kao na slici 5.9:

Slika 5.9: Struktura upravljačkih okvira, preuzeto iz [3]

Stanica koristi adresu 1 prilikom odlučivanja o primanju okvira. DA polje predstavlja adresu primatelja okvira. SA polje predstavlja adresu stanice koja je odaslala okvir. Detaljniji pregled upravljačkih okvira neće biti razmatran i može se pronaći na [3]. Neki bitniji upravljački okviri su:

• Beacon: koriste se za oglašavanje postojanja 802.11 mreže.

• Association request: kada stanice identificiraju kompatibilnu mrežu i autentificiraju se, mogu se pokušati spojiti na tu mrežu slanjem ovog okvira.

• Reassociation request: stanice koje idu iz jednog područja usluge u drugo područje iste usluge trebaju dati zahtjev za ponovnom asocijacijom slanjem ovog okvira.

• Probe request: stanice koriste ovaj okvir kako bi skenirali područje za postojećim 802.11 mrežama.

• Authentication request: nakon otkrivanja mreže (npr. slanjem probe request okvira), stanica se može pokušati autentificirati mreži slanjem ovog zahtjeva.

5.3 RSNA protokol pouzdanosti i integriteta: TKIP

TKIP je naziv za skup algoritama koji su napravljeni kako bi riješili prethodne sigurnosne probleme protokola WEP. Problem kod unaprjeđenja sigurnosnih funkcija leži u tome što su one implementirane u samome sklopovlju kako bi mogle brže raditi. Većina sklopovlja koja su korištena u doba WEP-a imala su sklopovski implementiran algoritam RC4 i on nije mogao biti mijenjan. TKIP taj problem rješava tako što izmjenjuje način korištenja zajedničkog ključa. Dok se zajednički ključ kod protokola WEP koristio izravno pri kriptiranju, TKIP taj ključ koristi za generiranje drugih ključeva što omogućuje povećanje sigurnosti protokola uz neznatno smanjenje performansi sustava [4].

TKIP je uveo slijedeća poboljšanja nad WEP-om [4], [5]:

• Kriptirani kod integriteta poruke (eng. Message Integrity Code - MIC) kojem je svrha sprječavanje falsificiranja poruka.

• Naprednije korištenje inicijalizacijskog vektora IV u implementaciji TKIP sekvencijskog brojila (eng. TKIP Sequence Counter - TSC). Cilj je korištenje IV-a kao brojila kako bi se smanjila mogućnost napada ponavljanjem. Radi na način da se brojač postavlja na početku komunikacije i šalje sa svakim paketom. Ako primatelj primi na primjer paket sa TSC-om 1000, odbacit će svaki idući paket koji ima TSC manji od 1000.

20

• Generiranje ključeva.

• Mehanizam osvježavanja ključeva (eng. Rekeyeing) kako bi se spriječili napadi povezani sa ponavljanjem ključeva.

MIC je enkripcijski mehanizam koji se koristi za prepoznavanje krivotvorenih poruka. MIC mehanizam sastoji se od: autentifikacijskog ključa (tzv. Michael ključ), funkcije oznake (eng. Tag), verifikacije.

Funkcija oznake generira oznaku temeljem ključa i poruke nad kojom se oznaka računa. Oznakom primatelj provjerava radi li se o ispravnoj poruci ili o izmišljenoj poruci.

Kod generiranja ključeva, svaki se ključ za svaki paket generira na način da se primjenjuje funkcija sažetka nad TKIP ključem i inicijalizacijskim vektorom. Ključ koji je ovako nastao zove se temporalni ključ. Generiranje ključeva odvija se u dvije faze:

1. Funkcija sažetka računa se nad MAC adresom pošiljatelja, temporalnog sjedničkog ključa i viša 32 bita inicijalizacijskog vektora. Ova se faza odvija samo ako je temporalni ključ izmijenjen.

2. Funkcija sažetka računa se nad izlazom prethodne faze i 16 donjih bitova inicijalizacijskog vektora. Izlaz je keystream od 128 bitova. Cilj ove faze je otežavanje napadaču da pronađe korelaciju između IV-a i ključa svakog paketa.

TKIP podržava i mehanizam obnove ključa. TKIP pri svome radu koristi tri ključa:

• Temporalni ključevi: to su 128-bitni ključ za kriptiranje i 64-bitni ključ za kriptiranje integriteta podataka. U komunikaciji između dvoje sugovornika postoji ukupno četiri temporalna ključa jer svaki od sugovornika posjeduje vlastiti par navedenih ključeva. TKIP identificira te ključeve pomoću 2-bitnog identifikacijskog uređaja koji se zove WEP keyid. Prilikom prve uspostave veze, prvi se par ključeva spaja na jedan od dva moguća para WEP keyid-a. Prilikom stvaranja novog para ključeva, pridjeljuje im se novi keyid. Prilikom uspostave veze između novog para temporalnih ključeva, TKIP će nastaviti primati pakete putem starog keyid-a i njegovih ključeva. Kasnije će se stari ključevi zamijeniti novima. Temporalni ključevi se stvaraju prilikom prve uspostave veze ili prilikom ponovljene uspostave veze.

• Enkripcijski ključevi: postoje dva ključa, jedan koji se koristi za kriptiranje poruke koja prenosi temporalne ključeve, a drugi se koristi za sprječavanje falsifikacije poruke.

• Glavni ključ (eng. Master key): razmjenjuje se između radnih stanica i 802.1X autentifikacijskih poslužitelja. Ovaj se ključ izravno koristi u autentifikaciji i koristi se za sigurnu razmjenu tokova ključeva (eng. Keystream). Stvara se za svaku sjednicu posebno.

21

Slika 5.10: TKIP način rada, preuzeto iz [4]

Sa slike 5.10 vidi se arhitekturni pregled protokola TKIP. Sa gornje desne strane nalazi se mehanizam MIC stvaranja koda za provjeru integriteta poruke (Tag). Podaci (data) se sastoje od odredišne adrese, adrese pošiljatelja, prioriteta i korisničkih podataka. Računa se Michael Tag koji se dodaje korisničkim podacima. Sa lijeve strane nalaze se dvije faze: u prvoj se fazi (Phase 1) MAC adresa kombinira sa temporalnim ključem TKIP i višim bitovima inicijalizacijskog vektora (IV High) uvećanim za 1 kako bi se izračunao sažetak poruke. Taj se izračunati sažetak iz prve faze provlači kroz drugu fazu (Phase 2) u kojoj se ponovno računa sažetak sa nižim bitovima IV-a (IV Low). Izlaz druge faze provodi se kroz RC4 kriptografski algoritam i računa se XOR logička operacija nad njime i nad korisničkim podacima, oznakom integriteta i CRC sumom poruke kako bi se stvorila kriptirana poruka. Na kriptiranu poruku se prije slanja dodaje inicijalizacijski vektor kako je to prikazano pri dnu slike [4].

Slika 5.11 prikazuje format TKIP poruke koja prenosi podatke [3]:

Slika 5.11: Konstrukcija TKIP MPDU, preuzeto iz [3]

TKIP MPDU (eng. MIC Protocol Data Unit) poruka sastoji se od [3]:

22

1. Zaglavlja za smještaj autentifikacijskih informacija. 2. Nižih 4 okteta inicijalizacijskog vektora koji sadrže informaciju o identifikatoru ključa. 3. Viših 4 okteta inicijalizacijskog vektora. 4. Kriptirane podatke veličine veće od jednog okteta. 5. Kriptirane podatke za provjeru integriteta. 6. Kriptiranu kontrolnu sumu.

5.4 RSNA protokol pouzdanosti i integriteta: CCMP

Dok je protokol TKIP obavezan u protokolu WPA i podržan u protokolu WPA2, protokol WPA2 zahtijeva obaveznu implementaciju protokola CCMP koji pruža povjerljivost, autentifikaciju, integritet i zaštitu od ponavljanja. protokol CCMP sastoji se od simetričnog kriptografskog algoritma AES (koji je sigurniji i noviji od RC4 algoritma kojeg koristi originalni WEP) koji koristi ključ veličine 128 bita. Algoritam AES-128 pri svom radu kriptira blokove od 128 bita što znači da je za kriptiranje veće količine podataka potrebno ulančati algoritam i po potrebi izvršiti nadopunu podataka do veličine koja je višekratnik od 128 bita. Prilikom dekriptiranja podataka, nadopuna koja se dodala prije kriptiranja mora se odbaciti jer nije dio početnih korisničkih podataka [4].

Način rada u kojem se koristi algoritam AES-128 sastoji se od dva dijela:

• Counter Mode Encryption: način rada koji koristi brojač kao jedan od ulaza u AES algoritam, a izlaz se kriptira sa jasnim podacima (eng. Plaintext).

• CBC-MAC: algoritam kojim se korištenjem AES kriptografskog algoritma postiže izračunavanje zbroja poruke za kontrolu integriteta (MIC).

Slika 5.12 prikazuje Counter Mode način rada kriptografskog algoritma AES [4]:

Slika 5.12: Counter Mode način rada, preuzeto iz [4]

23

Sa slike 5.12 vidljivo je da su ulazi u algoritam AES ključ veličine 128 bita (kako specificira IEEE 802.11i standard) i Nonce (eng. Number used only once) broj koji se sastoji od MAC adrese pošiljatelja i rednog broja paketa. MAC adresa pošiljatelja ima ulogu da se svaki tok kriptiranih podataka jednoliko uvećava i da bude karakterističan pošiljatelju. Redni broj paketa se koristi kako bi se moglo otkriti potencijalno ubacivanje starijih paketa na način da primatelj zapamti redni broj zadnjeg primljenog paketa i odbija prihvatiti sve pakete sa rednim brojem manjim (starijim) od zadnjeg primljenog. Brojač se povećava za svaki idući 128-bitni blok podataka koji se šalje. Ovaj mehanizam osigurava povjerljivost podataka no ne i integritet [4].

Za osiguravanje integriteta poruke koristi se mehanizam CBC-MAC za konstruiranje podataka za provjeru integriteta. Ovaj mehanizam osigurava da sadržaj podataka koji se šalju neće biti mijenjan tijekom prijenosa. Ovaj se mehanizam temelji na kriptografskom mehanizmu CBC koji radi na principu ulančavanja podataka (eng. Cipher Block Chaining). Podaci se ulančavaju na način da se ulančano računa XOR logička operacija nad prijašnjim kriptiranim blokom i blokom koji još nije kriptiran. Ovaj je mehanizam opisan na slici 5.13. Veličina CBC-MAC izlaza iz algoritma je 128 bita jer se koristi AES-128 algoritam za kriptiranje. Bitna značajka ovog mehanizma je da svaki blok ovisi o svim prethodnim blokovima [4].

Slika 5.13: CBC-MAC izračun, preuzeto iz [4]

Ovime su opisani svi mehanizmi koji se koriste za osiguravanje integriteta i povjerljivosti podataka. U nastavku je opisano kako se ti mehanizmi koriste u okviru norme 802.11i, odnosno protokola WPA2. Slika 5.14 prikazuje izgled MPDU poruke kada se koriste mehanizmi CCM.

24

Slika 5.14: CCM MPDU, preuzeto iz [3]

CCMP proširuje izvorni MPDU za 16 okteta, 8 okteta za CCMP zaglavlje (eng. CCMP Header) te 8 okteta za polje provjere integriteta MIC. CCMP zaglavlje sastoji se od slijedećih dijelova [3]:

1. PN0-5: broj paketa (eng. Packet Number), PN5 je najznačajniji oktet. 2. Rsvd: rezervirano polje, zanemaruje se, bitovi rezerviranih polja postavljeni su na

vrijednost 0. 3. ExtIV: peti bit KeyID okteta označava da CCMP zaglavlje proširuje MPDU zaglavlje za 8

okteta, za razliku od 4 okteta koja se dodaju kada bi se koristio WEP. Za CCMP ovaj je bit uvijek postavljen na vrijednost 1.

4. KeyID: bitovi 5 i 6 koriste za KeyID

Slika 5.15 opisuje blokovski dijagram enkapsulacije CCMP protokola. Ovaj dijagram koristi prethodno navedene mehanizme kako bi ih objedinio u funkcionalnu cjelinu CCMP protokola.

Slika 5.15: Blokovski dijagram enkapsulacije, preuzeto iz [3]

CCMP za kriptiranje korisničkih podataka koristi sljedeće korake vidljive sa slike 5.15 [3]:

1. Increment PN: Uvećavanje broja paketa (PN sa slike) za neki pozitivan broj kako bi se dobio različiti PN za svaki MPDU. Cilj je da se PN ne ponavlja za jedan temporalni ključ.

2. Construct AAD: Korištenjem polja MPDU poruke konstruiraju se dodatni podaci za

25

autentifikaciju (AAD sa slike). Ovaj je korak detaljnije opisan kasnije. 3. Construct Nonce: Konstrukcija Nonce-a korištenjem PN-a, MAC adrese pošiljatelja (A2

sa slike) i polja prioriteta MPDU poruke. 4. Construct CCMP header: Postavi novi PN i identifikator ključa (KeyId sa slike) u CCMP

zaglavlje veličine 8 okteta. 5. CCM encryption: korištenjem temporalnog ključa TK, konstruiranog AAD, Nonce-a i

MPDU podataka konstruiraju se kriptirani podaci i vrijednost za provjeru integriteta poruke MIC. Ovaj se korak još naziva i CCM procesiranje pokretača (eng. CCM originator processing).

6. Stvoriti kriptirani MPDU kombiniranjem izvornog MPDU zaglavlja, CCMP zaglavlja, kriptiranih podataka i MIC-a.

Konstrukcija AAD podataka opisana je u nastavku. Slika 5.16 opisuje konstrukciju AAD podataka [3].

Slika 5.16: AAD konstrukcija, preuzeto iz [3]

AAD podaci konstruiraju se iz MPDU zaglavlja. AAD ne uključuje polje vremena trajanja jer vrijeme trajanja može varirati (na primjer zbog promjene brzine slanja podataka). Vrijednosti polja sklonim promjenama maskiraju se bitom 0. AAD konstrukcija se izvodi na slijedeći način [3]:

1. FC: MPDU kontrolno polje okvira sa bitovima 4, 5, 6, 11, 12 i 13 postavljenim na 0 i 14. bitom uvijek postavljenim na vrijednost 1.

2. A1: MPDU polje adrese 1. 3. A2: MPDU polje adrese 2. 4. A3: MPDU polje adrese 3. 5. SC: MPDU polje provjere slijeda sa bitovima 4-15 koji predstavljaju sekvencijski broj

postavljenim na 0. 6. A4: MPDU polje adrese 4 ako postoji. 7. QC: polje kontrole kvalitete usluge, ako postoji, to je polje veličine 2 okteta koje

uključuje MPDU prioritet.

26

Slika 5.17: Konstrukcija Nonce vrijednosti, preuzeto iz [3]

Slika 5.17 prikazuje detaljnije od kojih se polja sastoji vrijednost Nonce koja je veličine 13 okteta [3]:

1. Priority Octet: oktet koji predstavlja prioritet. Postavlja se na vrijednost 0 ako ne postoji QC vrijednost u MPDU zaglavlju. Ukoliko QC postoji, bitovi 0-3 postavljaju se na vrijednost QC TID polja (bitovi 0-3 QC polja). Ostali rezervirani bitovi postavljaju se na vrijednost 0.

2. 6 okteta A2 adrese MPDU zaglavlja. 3. 6 okteta broja paketa.

Kada primatelj primi kriptirani MPDU, postupak kojim dekriptira poruku je sličan kriptiranju, što je vidljivo sa slike 5.18.

Slika 5.18: MPDU dekripcija i provjera integriteta, preuzeto iz [3]

Dekripcija i provjera integriteta odvija se u sličnim koracima kao i enkapsulacija [3]:

1. Kriptirani MPDU se parsira kako bi se konstruirali AAD podaci i Nonce vrijednost. 2. AAD se konstruira iz primljenog MPDU zaglavlja. 3. Nonce vrijednost se formira korištenjem A2 adrese, PN-a, i okteta prioriteta. 4. Izvlači se MIC vrijednost kako bi se mogao koristiti u CCM provjeri integriteta. 5. CCM decryption: kriptirana poruka se dekriptira korištenjem temporalnog ključa Key,

AAD podataka, Nonce vrijednosti, MIC vrijednosti, i MPDU kriptiranih podataka. Izlazna

27

vrijednost algoritma su dekriptirani podaci i potvrda integriteta AAD i MPDU podataka. 6. Izvorno MPDU zaglavlje i dekriptirani podaci mogu se nadovezati. 7. Proces dekriptiranja sprječava napade ponovnim slanjem MPDU-ova pomoću validacije

ako je broj paketa PN veći od brojača sjednice.

5.5 Autentifikacija korištenjem PSK

5.5.1 Uvod

Autentifikacija korištenjem dijeljenog ključa koristi se u zaštiti kućnih mreža. Ovom metodom pristupna točka (kućni usmjeritelj) nastoji autentificirati stanicu koja se želi spojiti na njega bežičnim putem. Prije samog postupka, pristupna točka i stanica koja se na nju želi spojiti moraju imati postavljene pristupne lozinke duljine od 8 do 63 znaka. Ovo je ujedino i razlog zašto je ovaj način autentifikacije neupotrebljiv u praksi kada se radi o većim poslovnim mrežama jer je prilikom promjene lozinke na pristupnoj točki potrebno promijeniti lozinke na svim stanicama koje se na nju žele spojiti. Proces autentifikacije PSK može započeti tek nakon što je mobilna stanica uspješno prošla kroz 802.11 korake (otvorene) autentifikacije i asocijacije.

5.5.2 Generiranje ključeva

Kao što je već prije navedeno, korištenje načina autentifikacije PSK zahtjeva da se na svim stanicama i pristupnoj točki nalazi zajednička lozinka. Ta će se lozinka u procesu koristiti za stvaranje različitih ključeva kojih ima nekoliko i od kojih svaki ima određenu funkciju. Proces generiranja ključeva opisan je slikom 5.19 [8].

Slika 5.19: Generiranje ključeva korištenjem PSK, preuzeto iz [8]

Prvi korak kod generiranja ključeva je generiranje ključa PMK (eng. Pairwise Master Key). Ovo je glavni ključ koji se koristi za generiranje ostalih ključeva. Ovaj je ključ veličine 256 bitova i generira se korištenjem algoritma za derivaciju ključeva PBKDF2 (eng. Password-Based Key Derivation Function 2). Ulazi u PBKDF2 algoritam su [8]:

1. PSK: ručno upisana lozinka veličine 8-63 znakova. 2. Ssid: ime mreže na koju je stanica spojena. 3. SsidLength: duljina imena mreže na koju je stanica spojena.

28

4. 4096: Broj iteracija algoritma. 5. 256: Veličina izlaza algoritma.

Nakon ovog koraka slijedi korak generiranja ključa PTK (eng. Pairwise Transient Key). Ovaj se ključ koristi kao posrednik u generiranju ostalih ključeva i namjena mu je poboljšati sigurnost algoritma generiranja ključeva uvođenjem dodatnih informacija i ulaza. PTK je veličine 384 bita. Za generiranje PTK-a koristi se pseudo-nasumična funkcija PRF, a njeni ulazi su [8]:

1. PMK: prethodno generirani PMK. 2. Niz znakova: „Pairwise key expansion“. 3. Niz povezanih nasumičnih vrijednosti generiranih sa strane pristupne točke (ANonce) i

mobilne stanice (SNonce). 4. MAC adrese pristupne točke (APMac) i mobilne stanice (SPAMac).

Nakon što je generiran PTK, dalje se iz njega deriviraju ključevi:

• KCK: ključ za potvrdu ključa (eng. Key confirmation key) koji se koristi za pružanje integriteta rukovanju s 4 poruke. Sastoji se od prvih 128 bita PTK-a.

• KEK: ključ za enkripciju ključa (eng. Key Encryption Key), koristi se za osiguravanje povjerljivosti rukovanja s 4 poruke. Sastoji se od srednjih 128 bita ključa PTK.

• TK: temporalni ključ (eng. Temporal Key), služi za osiguravanje povjerljivosti podataka koji se prenose bežičnim putem. Veličine je 128 bita i dobiva se od posljednjih bitova ključa PTK.

Iznad navedeni ključevi koriste se za zaštitu unicast komunikacije. Za zaštitu multicast komunikacije, pristupna točka generira GTK (eng. Group Temporal Key) koji ga šalje klijentu. Prilikom slanja GTK-a klijentu, primjenjuje se KEK za zaštitu ključa [8].

5.5.3 Razmjena ključeva

Nakon generiranja ključeva, idući je korak razmjena ključeva između klijenta i pristupne točke. Za razmjenu ključeva koristi se rukovanjem u četiri koraka (eng. 4-way handshake). Preduvjet ovog koraka je također uspješno provedena 802.11 autentifikacija i asocijacija klijenta pristupnoj točki. Ovim se postupkom utvrđuje da klijent i pristupna točka posjeduju odgovarajući PSK. Poruke se šalju putem protokola EAPOL. Razmjena ključeva pomoću 4 poruke prikazana je na slici 5.20 [8].

29

Slika 5.20: Rukovanje sa 4 poruke, preuzeto iz [8]

Rukovanje se provodi između klijenta (Wireless Client) i pristupne točke (Access Point) [8]:

1. Klijent i pristupna točka posjeduju PMK. Klijent generira nasumičnu vrijednost SNonce, a pristupna točka generira nasumičnu vrijednost ANonce. Obje su vrijednosti veličine 32 bita.

2. Pristupna točka unicast načinom klijentu šalje generirani ANonce pomoću EAPOL poruke Message 1.

3. Po već objašnjenom principu, klijent pomoću ANonce-a i svog SNoncea može generirati ključ PTK iz poznatog PSK, odnosno PMK ključa. Iz PTK ključa generira i KCK, KEK i TPK ključeve.

4. Klijent zatim kreira drugu EAPOL poruku Message 2 koja sadrži njegov SNonce i kod integriteta poruke MIC te ih pristupnoj točki šalju unicast-om. MIC se računa nad EAPOL zaglavljem i KCK-om.

5. Pristupna točka ima dovoljno informacija da može generirati svoj PTK (kao i KCK, KEK i TPK) i ukoliko je potrebno, multicast ključ GTK. Pristupna točka provjerava integritet poruke 2 tako što izračunava MIC pristigle poruke i uspoređuje sa MIC-om koji je dio poruke.

6. Pristupna točka stvara treću poruku Message 3 koja sadrži ključ GTK kriptiran pomoću generiranog KEK i MIC. Poruka 3 se unicast načinom šalje klijentu.

7. Nakon primitka poruke 3, klijent šalje potvrdu pristupnoj točki da je uspješno primio poruku 3 (poruka Message 4).

8. Klijent instalira PTK i po potrebi GTK, a pristupna točka instalira PTK jer GTK već posjeduje.

30

5.6 Autentifikacija korištenjem 802.1X

Norma IEEE 802.1X nije dio norme 802.11i, već su to dvije zasebne norme koje se mogu razvijati neovisno jedna o drugoj. Norma IEEE 802.11 ovisi o normi 802.1X (puno ime IEEE 802.1X-2004) kako bi kontrolirala protok MAC uslužnih jedinica podataka između stanica i pristupnih točaka. Norma IEEE 802.1X definira mehanizam za kontrolu pristupa mreži temeljen na kontroliranim i nekontroliranim vratima (eng. Port), kako bi se pružili kompatibilni autentifikacijski i autorizacijski mehanizmi za uređaje spojene u 802 lokalne mreže [9]. Kako se radi o zasebnoj normi, ona nije detaljnije obrađivana u okviru ovoga rada.

Osnovne komponente i koncepti norme 802.1X su [9]:

• Supplicant: stanica koja se želi priključiti mreži putem pristupne točke.

• Authenticator: predstavlja poslužitelj pristupa mreži, to je najčešće pristupna točka za 802.11 mreže.

• Authentication server: autentifikacijski poslužitelj, koji je u 802.11 standardu najčešće ukomponiran u pristupnu točku. Najčešće se koristi RADIUS AS.

• Port: predstavlja asocijaciju između mobilne stanice i pristupne točke. Postoje dva tipa vrata:

a. Kontrolirana vrata: za prenošenje običnih podataka. b. Nekontrolirana vrata: za prenošenje isključivo 802.1X prometa

Okviri IEEE 802.1X se prenose unutar IEEE 802.11 podatkovnih okvira i šalju se sa IEEE 802.1X nekontroliranih vrata. 802.1X kontrolirana vrata su blokirana i ne dopuštaju prijenos podataka dok god se 802.1X autentifikacijska procedura nije uspješno završila preko 802.1X nekontroliranih vrata. I supplicant i autentifikator imaju odgovornost za implementiranje načina blokiranja vrata. 802.11 standard ovisi o 802.1X standardu i o rukovanju s četiri poruke kao i o grupnom rukovanju za uspostavljanje i razmjenu kriptografskih ključeva [9].

Slika 5.21: 802.1X radni okvir, preuzeto iz [9]

31

Slika 5.21 prikazuje radni okvir 802.1X na kojem je vidljivo kako pojedine komponente međusobno komuniciraju. I Supplicant i autentifikator imaju entitet pristupa vratima (eng. Port Access Entitiy - PAE) koji upravlja algoritmima i protokolima vezanim za mehanizme autentifikacije. PAE autentifikator, odnosno pristupne točka, upravlja autoriziranom i neautoriziranom stanju njegovih kontroliranih vrata, ovisno o uspješnosti autentifikacije. Dok Supplicant, odnosno mobilna stanica, nije autentificirana, pristupna točka koristi se nekontroliranim vratima kojima se komunicira EAPOL porukama. Pristupna točka blokira sav promet osim 802.1X prometa dok mobilna stanica nije autentificirana. EAP poruke mobilne stanice putuju prema autentifikacijskom poslužitelju AS (Authenticator server system) posredno putem pristupne točke. Prije nego što ih pošalje na AS, pristupna točka enkapsulira EAP podatke u RADIUS format poruke. Nakon što je mobilna stanica uspješno autentificirana, kontrolirana vrata na pristupnoj točki postaju autorizirana za prijenos korisničkih podataka radne stanice [9].

Slika 5.22 prikazuje sekvencijski dijagram toka poruka koje se izmjenjuju između mobilne stanice, pristupne točke i autentifikacijskog poslužitelja [10].

32

Slika 5.22: Razmjena poruka 802.1X autentifikacije, preuzeto iz [10]

Isprekidane strelice označavaju da se radi o opcionalnim porukama, puni pravokutnici označavaju stanja entiteta, a isprekidani pravokutnici označavaju da se radi o opcionalnim stanjima. Cjelokupni proces podijeljen je u šest faza [10]:

33

1. Mrežno otkrivanje i razmjena sigurnosnih mogućnosti (Stage 1): Sastoji se od poruka (1) - (3), pristupna točka se može, a i ne mora oglašavati (1) putem Beacon upravljačkog okvira. Druga mogućnost je da pristupna točka odgovara na Probe Request zahtjeve. Cilj ove faze je otkrivanje mreže i njenih mogućnosti.

2. 802.11 autentifikacija i asocijacija (Stage 2): sastoji se od poruka (4) - (7), radi se o 802.11 autentifikaciji i asocijaciji koje su već opisane na slici 2. Ova faza služi za dogovor oko parametara. Pri završetku ove faze, 802.1X kontrolirana vrata su i dalje u neautoriziranom stanju.

3. 802.1X autentifikacija (Stage 3): ova se faza sastoji od poruka (8) - (14). Mobilna stanica može započeti proces slanjem EAPOL-Start poruke. Pristupna točka AP šalje EAPOL-Request Identity poruku kojom traži identifikator mobilne stanice. Mobilna stanica odgovara EAPOL-Response Identity porukom u kojoj se nalazi njezin identifikator. AP enkapsulira taj odgovor u RADIUS Access-Request poruku i prosljeđuje je AS-u. AS odgovara sa porukom RADIUS Access-Challenge koju AP dekapsulira i šalje mobilnoj stanici u obliku EAP-Request/Auth poruke. Ovom se porukom određuje koju će EAP metodu autentifikacije mobilna stanica koristiti. Mobilna stanica odgovara porukom EAPOL-Response/Auth koju AP enkapsulira i šalje AS-u u obliku RADIUS Access-Request poruke. AS prihvaća EAP atribute iz poruke i šalje poruku o uspješnoj autentifikaciji AP-u u obliku poruke RADIUS Access-Accept koju AP prevodi u poruku EAPOL-Success i šalje je mobilnoj stanici. Ovime je proces autentifikacije završio i stanje kontroliranih 802.1X vrata se mijenja u autorizirano dok god je veza uspostavljena ili dok mobilna stanica eksplicitno ne pošalje zahtjev za raskidom EAPOL-Logoff. Nakon ove faze i mobilna stanica i AP generirali su zajedničku tajnu koja se zove Master Session Key MSK. Mobilna stanica koristi MSK kako bi generirala PMK. RADIUS poslužitelj porukom (15) šalje informacije AP-u kako bi i on mogao generirati isti PMK. U PSK autentifikaciji ovaj korak ne postoji jer je PMK zapravo PSK.

4. Rukovanje pomoću četiri poruke (Stage 4): Ova se faza sastoji od poruka (16) - (19). Ovaj korak je obavezan za uspostavljanje RSNA veze. Mobilna stanica i AP koriste ovo rukovanje kako bi dokazali postojanje PMK, potvrdili odabir kriptografskog algoritma i parametara i kako bi generirali novi PTK za iduću podatkovnu sjednicu. AP može opcionalno distribuirati GTK. Nakon ove faze, PTK i možda GTK su dijeljeni između AP-a i mobilne stanice, a 802.1X kontrolirana vrata postaju otključana za podatkovni promet. Detaljnije o ovoj fazi biti će riječi u idućem poglavlju.

5. Rukovanje grupnim ključem (Stage 5): Faza se sastoji od poruka (20) - (21). U slučaju multicast aplikacija, AP generira novi GTK i šalje ga svim spojenim mobilnim stanicama. Ovaj korak ne mora postojati ako se GTK razmijenio u fazi 4.

6. Sigurna komunikacija (Stage 6): Sigurna se komunikacija može odvijati.

34

6. Opis ranjivosti KRACK

6.1 Detaljni prikaz rukovanja sa četiri poruke

Rukovanje sa četiri poruke pruža autentifikaciju klijenta (mobilne stanice) i pristupne točke AP temeljenu na dijeljenoj tajni, odnosno ključu PMK. Svaka strana generira ključ PTK. PMK se derivira iz prethodno podijeljene tajne (lozinke) u osobnoj mreži ili se razmjenjuje 802.1X autentifikacijom u poslovnim mrežama. PTK se dobiva iz PMK-a, AP-ovog Nonce broja ANonce, klijentskog Nonce broja SNonce i MAC adrese klijenta i AP-a. Jednom generiran, PTK se dalje dijeli na tri ključa: KCK, KEK i TK, koji su već opisani ranije.

Sve se poruke rukovanja prenose EAPOL okvirima. Pojednostavljeni izgled takvog okvira i njegova najbitnija polja opisani su slikom 6.1 [11].

Slika 6.1: Okvir EAPOL, preuzeto iz [11]

EAPOL okvir sastoji se od nekoliko polja [11]:

1. Header: zaglavlje koje definira o kojem se EAPOL okviru radi. 2. Replay counter: Brojač ponavljanja, ovo se polje koristi za detekciju ponovno poslanih

okvira, AP uvećava ovo polje kada pošalje okvir, a kada ga klijent primi, on u odgovoru mora koristiti istu vrijednost koju je imao okvir na koji odgovara.

3. Nonce: Polje za prijenos nasumičnih brojeva ANonce i SNonce. 4. RSC: Ukoliko EAPOL okvir prenosi grupni ključ, ovo polje sadrži broj početnog paketa

ovog ključa. 5. MIC: Polje za zaštitu okvira u kojem se koristi KCK, promjenjive je veličine. 6. Key Data: Polje kojem se prenosi grupni ključ, kriptirano je KEK ključem.

Koristi se slijedeća notacija: MsgN(r, Nonce; GTK) koja označava poruku N u postupku rukovanja, koja ima vrijednost brojača ponavljanja r, koja prenosi nasumični broj Nonce (ukoliko se prenosi). Sve vrijednosti nakon znaka „;“ spremljene su u polju Key Data i kriptirani su ključem KEK [11].

35

Slika 6.2: Detaljni prikaz rukovanja sa četiri poruke, preuzeto iz [11]

Slika 6.2 prikazuje sekvencijski dijagram toka razmjene poruka procesa rukovanja. Rukovanje se izvodi u nekoliko koraka [11]:

1. Na početku se provodi već opisani postupak 802.11 autentifikacije i asocijacije. 2. AP započinje postupak rukovanja slanjem poruke 1 koja sadrži njegov nasumični broj

ANonce. Ovo je jedina poruka koja nije zaštićena MIC-om. 3. Kada klijent primi tu poruku, on generira PTK, odnosno ključ sjednice, zatim porukom 2

šalje odgovor koji sadrži njegov nasumični broj SNonce. 4. Kada AP primi SNonce, tada i on generira PTK i u poruci 3 šalje grupni ključ GTK klijentu.

Grupni ključ je kriptiran ključem KEK. 5. Nakon primanja GTK-a u poruci 3, klijent odgovara porukom 4. Klijent instalira PTK i

GTK, a AP instalira samo PTK jer je GTK instaliran prilikom pokretanja AP-a. 6. U nastavku sjednice, GTK se može osvježiti, prilikom čega se provodi novo rukovanje

pomoću četiri poruke koje su sve kriptirane korištenim protokolom za povjerljivost podataka koji koristi trenutni PTK.

6.2 Automat stanja Supplicant

802.11i standard ne sadrži opis automata stanja koji opisuje kako bi klijent trebao implementirati rukovanje sa četiri poruke. Automat stanja pruža pseudo-kod koji opisuje kako ali ne i kada bi se određene poruke trebale obrađivati. Slika 6.3 opisuje pojednostavljeni automat stanja klijenta.

36

Slika 6.3: Automat stanja rukovanja sa četiri poruke klijenta, preuzeto iz [11]

Kada se po prvi puta klijent spaja na mrežu i započinje rukovanje, nalazi se u stanju PTK-INIT u kojem inicijalizira PMK. Kada primi poruku 1 (Msg 1 Received), odlazi u stanje PTK-START. U ovome se stanju nalazi ako se po prvi puta spaja na mrežu ili u slučaju da obnavlja sjednički ključ nakon prethodno završenog rukovanja. U ovome stanju klijent generira nasumični SNonce, računa privremeni PTK i šalje svoj SNonce u poruci 2. AP će odgovoriti na poruku 2 sa porukom 3 u slučaju da su MIC i brojač ponavljanja ispravni. U tom slučaju klijent odlazi u stanje PTK-NEGOTIATING. U ovome stanju se privremeni PTK označava kao ispravan i klijent AP-u šalje poruku 4. Nakon ovoga koraka klijent odlazi u stanje PTK-DONE, u kojem se PTK i GTK instaliraju za korištenje od strane protokola za povjerljivost podataka. Za instalaciju ključeva koristi se MLME-SETEYS.request primitiv. Na kraju se otključavaju 802.1X kontrolirana vrata kako bi klijent mogao slati i primat obične podatke. Treba naglasiti da automat stanja uzima u obzir ponovna slanja poruka 1 ili 3 koja će se desiti ako AP nije primio poruke 2 ili 4. Poruke koje su ponovno poslane koriste uvećani EAPOL brojač ponavljanja [11].

6.3 Napadi ponovnom instalacijom ključa

S automata stanja sa slike 6.3 vidljivo je da će klijent čak i u stanju PTK-DONE prihvatiti poruku 3 rukovanja. To znači da se ponovnim slanjem poruke 3 može ponovno instalirati ključ. Prvo se treba uspostaviti pozicija čovjeka u sredini (eng. Man-in-the-middle - MitM) između klijenta i AP-a. Ova se pozicija koristi kako bi se presrela poruka 4 koju klijent šalje AP-u i odbacuje se, što

37

će uzrokovati da AP nikada ne primi poruku 4 i napravi ponovno slanje poruke 3 na koju nije dobio odgovor. Kada klijent ponovno primi poruku 3, on će reinstalirati PTK koji se već koristi. Ponovna će instalacija ključa PTK uzrokovati ponovno postavljanje nasumičnog nonce broja kojeg koristi protokol za povjerljivost podataka. U ovisnosti koji se protokol koristi, napadač može ponovno slati, dekriptirati ili stvarati nove pakete.

Postoje dvije komplikacije koje otežavaju uspješno provođenje napada. Prva je problem što se svi proizvođači ne drže pravila 802.11 standarda i ne implementiraju ispravno automat stanja, što se može vidjeti na Windows operacijskom sustavu koji ne prihvaća ponovno poslane poruke 3 pa stoga nema navedenu ranjivost. Drugi problem je taj što MitM poziciju u mreži nije lako postići. U ovome slučaju nije dovoljno samo postaviti skriveni AP sa drugom MAC adresom i posredovati prometom između klijenta i originalnog AP-a. Ovaj način MitM napada nije moguć jer je za generaciju ključa PTK potrebno imati MAC adresu klijenta i AP-a, što bi uzrokovalo stvaranje dva različita ključa i rukovanje se ne bi uspješno provelo [11]. Jedan napredniji način koji nije obrađivan u okviru ovog rada zove se channel-based MitM attack i o njemu se više može pročitati na [12]. Ovaj se napad svodi na to da se AP klonira na neki drugi kanal sa istom MAC adresom kao i originalni AP. U ostalim dijelovima ovoga rada opisan je napad na rukovanje pomoću četiri poruke pod različitim uvjetima. Prvo je opisan napad kada žrtva klijent prihvaća ponovno poslane poruke 3 u jasnom obliku, a kasnije i u kriptiranom obliku. Ponašanje pojedinog uređaja ovisi o instaliranom operacijskom sustavu kao i o mrežnom kontroleru (eng. Wireless network interface controller) NIC koji se koristi.

6.4 Napad ponovljenim slanjem poruke 3 u jasnom obliku

U slučaju kada žrtva dozvoljava primanje ponovno poslanih 3. poruka rukovanja u jasnom obliku nakon što je sjednički ključ instaliran, napad ponovnom instalacijom je jednostavan. Za opis napada koristi se slika 6.4 [11].

38

Slika 6.4: Napad na rukovanje kada klijent prihvaća ponovno poslane 3. poruke rukovanja u obliku

jasnoga teksta, preuzeto iz [11]

Napad sa slike 6.4 podijeljen je u nekoliko koraka [11]:

1. Na početku se napadač koristi MitM napadom kako bi se postavio na poziciju posrednika između klijenta i AP-a. U ovome trenutku on prosljeđuje poruke rukovanja dok od klijenta ne primi poruku 4. Kada primi poruku 4 on je ne prosljeđuje AP-u nego je odbacuje.

2. Odmah nakon slanja poruke 4, klijent će instalirati PTK i GTK za korištenje. Nakon ovog koraka klijent otvara kontrolirana 802.1X vrata putem kojih može slati običan podatkovni promet. Kada šalje podatkovni promet, klijent se koristi nasumičnim nonce brojem naznačenim sa oznakom 1 u eksponentu. Podatkovni promet je kriptiran ključem PTK.

3. U ovome koraku originalni AP klijentu ponovno šalje poruku 3 jer poruka 4 do njega nikada nije stigla. Poruka sadrži uvećani brojač ponavljanja. Klijent prima ponovno poslanu poruku 3 i na nju odgovara porukom 4, ali ovoga puta je ona kriptirana i koristi drugačiju vrijednost nonce broja označenog sa 2 u eksponentu. Nakon poslane poruke 4, klijent ponovno instalira PTK i GTK, što uzrokuje ponovno postavljanje nonce vrijednosti i brojača ponavljanja koje koristi protokol za povjerljivost podataka.

4. U pretposljednjem koraku je cilj uspješno do kraja provesti rukovanje. Ovaj korak nije toliko jednostavan jer je klijent kao odgovor na poruku 3 poslao kriptiranu poruku 4, a kako AP još uvijek nije instalirao PTK, odbaciti će kriptiranu poruku 4. Ipak, 802.11 standard dozvoljava da AP prihvaća poruke sa bilo kakvim brojačem ponavljanja koji se koristio u rukovanju, a ne samo posljednji. U praksi je također pokazno da velik broj AP-ova prihvaća starije brojače ponavljanja, točnije, prihvaćaju brojače ponavljanja koji su

39

se već koristili kod slanja poruka klijentu, ali nisu dobili odgovor klijenta sa istim brojačem. Zbog ovoga će AP prihvatiti stariju poruku 4 koju je napadač sačuvao. Nakon primitka te poruke, AP instalira PTK.

5. Klijent nakon ponovne instalacije PTK-a i GTK-a šalje podatke koji su kriptirani ponovno istom početnom nonce vrijednosti označenom sa 1 u eksponentu. Kako je AP instalirao svoj PTK on će te poruke prihvatiti.

Iako ova slika ilustrira samo ponovno korištenje nonce vrijednosti sa strane klijenta, napad ponavljanjem okvira je također moguć. Kada klijent ponovno instalira GTK u 3. koraku napada, multicast okviri koje je AP poslao nakon ponovnog slanja poruke 3 mogu se slati ponovno jer se brojači ponavljanja postavljaju na početnu vrijednost prilikom ponovne instalacije ključa. U slučaju da AP instalira PTK, unicast okviri koje je poslao AP klijentu mogu se također ponavljati.

6.5 Napad ponovljenim slanjem poruke 3 u kriptiranom obliku

Ovo poglavlje opisuje napade na klijente koji jednom kada instaliraju PTK, prihvaćaju samo ponovno poslane kriptirane 3. poruke rukovanja. Kako bi ovaj napad bio uspješno izveden, potrebno je iskoristiti ranjivost utrke (eng. Race Condition) do koje dolazi između entiteta koji upravlja rukovanjem i entiteta koji implementira protokol zaštitu povjerljivosti podataka.

Slika 6.5: Napad na rukovanje kada žrtva prihvaća ponovno poslane 3. poruke rukovanja kada su poslane

odmah nakon prve, preuzeto iz [11]

40

Za početak, slika 6.5 prikazuje napad na Android implementaciju supplicant-a. Pokazano je kako Android sustav prihvaća ponovno poslane 3. poruke rukovanja kada se šalju neposredno nakon originalne poruke 3. AP nije prikazan na ovoj slici, a njegovo je ponašanje jasno iz konteksta. Koraci napada su [11]:

1. Prve dvije poruke se izvode normalno između AP-a i klijenta. Klijentska strana sastoji se od glavnom procesora (eng. Main CPU) i od bežičnog mrežnog kontrolera (eng. Wireless NIC).

2. Umjesto da napadač odmah pošalje poruku 3 klijentu, on je čuva i čeka da AP pošalje ponovno poruku 3 (jer nije primio odgovor). Kada primi i drugu poruku 3, napadač klijentu istovremeno šalje obje poruke 3 jednu za drugom. Klijentski mrežni kontroler, koji implementira protokol za povjerljivost podataka, nema instaliran PTK pa obje poruke prosljeđuje u red čekanja glavnog procesora.

3. Glavni procesor implementira rukovanje, obrađuje prvu poruku 3 i naređuje mrežnom kontroleru da instalira ključ PTK. Šalje odgovor (poruku 4) na primljenu poruku 3.

4. U ovom koraku napada, glavni klijentski procesor dohvaća iduću poruku 3 iz njegovog reda čekanja. Klijent primjećuje da poruka 3 koju je upravo dohvatio nije kriptirana no to ne predstavlja problem jer Android i Linux operacijski sustavi dozvoljavaju nekriptirane EAPOL okvire kao iznimku, pa će glavni procesor obraditi tu poruku i mrežnom kontroleru poslati odgovor na upravo obrađenu poruku 3 koju će on dodatno kriptirani jer je instalirao kriptografske ključeve kao naredbu iz prethodnog koraka. Prilikom slanja poruke AP-u, mrežni kontroler koristi nasumični nonce broj označen sa 1 u eksponentu poruke. Nakon slanja odgovora, mrežni kontroler ponovno instalira PTK i GTK.

5. Klijent je ponovno instalirao PTK i GTK što znači da je ponovno postavio i nonce vrijednost kao i brojač ponavljanja, što će uzrokovati da idući poslani podaci ponovno koriste prethodno korištenu nonce vrijednost.

Iduća slika prikazuje napade na OpenBSD, OS X i macOS operacijske sustave koji prihvaćaju samo kriptirane ponovno poslane 3. poruke rukovanja.

41

Slika 6.6: Napad na rukovanje kada žrtva prihvaća samo kriptirane ponovno poslane 3. poruke rukovanja,

preuzeto iz [11]

Slično kao i kod prethodnog napada, u ovome se napadu iskorištava utrka između mrežnog kontrolera i glavnog procesora, a razlika je u tome što se sada napad fokusira na dio rukovanja koji osvježava PTK. Slika 6.6 prikazuje izvođenje ovakvog napada kroz nekoliko koraka [11]:

1. Kako se napad provodi nad osvježavanjem ključa PTK, prethodno se treba provesti početno rukovanje, pa napadač to dozvoljava.

2. Iako su poruke ponovnog provođenja rukovanja kriptirane, one se mogu razlikovati po njihovoj duljini i odredištu. Napad je analogan kao i kod napada na Android sustav, napadač čuva prvu 3. poruku rukovanja i čeka na ponovno poslanu. Kada ona stigne, napadač klijentu istovremeno šalje obje 3. poruke rukovanja. Mrežni kontroler će dekriptirati poruke sa prethodno korištenim ključem PTK i proslijediti ih u red čekanja glavnog procesora.

3. Glavni procesor obrađuje prvu poruku 3 i mrežnom kontroleru šalje odgovor na nju kao i zahtjev za instalacijom ključa.

4. Kada glavni klijentski procesor iz svoga reda čekanja uzme iduću poruku 3, on vidi da ona nije kriptirana, međutim, ne provjerava sa kojim je ključem bila kriptirana, pa iako je poruka dekriptirana sa starim ključem PTK, on svejedno prihvaća i obrađuje tu poruku. Nakon obrade, glavni procesor ponovno šalje odgovor porukom 4 i zahtjev za

42

ponovnom instalacijom ključa PTK. Ovo će uzrokovati ponovnu instalaciju i ponovno postavljanje nonce vrijednosti kao i brojača ponavljanja.

5. Idući podaci koji se šalju, biti će kriptirani novopostavljenim ključem PTK sa starom vrijednošću nonce broja.

Za razliku od napada na Android sustav, ovaj napad zahtjeva čekanje na osvježavanje ključa ponovnim provođenjem rukovanja. Pokazano je da neki AP-ovi osvježavanje ključeva rade svakih sat vremena.

43

7. Opis komponenti, gotovih programskih modula i uređaja korištenih u izradi projekta

7.1 Popis korištenih komponenti, modula i uređaja

Prilikom izrade ovog diplomskog rada korištene su različite komponente, gotovi programski moduli i uređaji. Gotove komponente i programski moduli preuzeti su sa GitHub stranice projekta Dr. Mathy Vanhoef-a na čijim se ispitivanjima temelji ovaj projekt [13]. Navedeni su korišteni uređaji i njihova općenita namjena, a detalji vezani za svaki od njih navedeni su u posebnim potpoglavljima:

• Mobilni uređaj Samsung Galaxy S4.

• Prijenosno računalo.

• Hostapd programski modul.

• USB bežični adapter D-Link DWA-127.

• Python Scapy programska biblioteka.

• Python Wpaspy programski modul.

• Skripta za onemogućavanje sklopovskog izvođenja kriptografskih funkcija.

• Virtualni stroj Kali Linux.

• Dodatni programski moduli u okviru istraživanja Dr. Mathy Vanhoef-a.

Ishod ovoga projekta može ovisiti o korištenim uređajima i verzijama implementiranih protokola unutar njih, a sva se mjerenja, analize i rezultati u okviru ovoga projekta izvode na iznad navedenim uređajima, korištenjem iznad navedenih gotovih programskih komponenti.

U ovome poglavlju nisu opisane sve komponente sadržane u okviru Mathy Vanhoef-ovih ispitivanja već samo one najbitnije. Više pojedinosti o ostalim komponentama moguće je pronaći na GitHub stranicama istraživača [13].

7.2 Korištene sklopovske komponente

7.2.1 Mobilni uređaj Samsung Galaxy S4

Kao klijentski uređaj koji se spaja na mrežu koristi se mobilni uređaj Samsung Galaxy S4. Uređaj je prikazan na slici 7.1.

44

Slika 7.1: Mobilni uređaj Samsung Galaxy S4

Specifičnosti uređaja koje su od značaja za izradu ovog diplomskog rada su korišteni mobilni operacijski sustav Adroid 5.0.1, a korištena verzija kernela je 3.4.0-5978264.

Korišteni uređaj je ranjiv na napad opisan ovim diplomskim radom. Klijentska strana protokola 802.11i u ovome uređaju implementirana je modulom wpa_supplicant. Wpa_supplicant je besplatna programska implementacija navedenog protokola koja je podržana na više različitih operacijskih sustava kao što su: Microsoft Windows, Linux, FreeBSD, Kako nije moguće precizno utvrditi verziju korištene inačice modula wpa_supplicant, pretpostavljati će se da je ova inačica Android operacijskog sustava ranjiva.

7.2.2 Prijenosno računalo Asus UX410UQK

Korišteno je prijenosno računalo Asus UX410UQK sa specifikacijama:

• Procesor Intel i7-7500U 2.7 GHz.

• Količina radne memorije: 16 GB.

• Zasebna grafička kartica Nvidia 940MX.

• Operacijski sustav: Ububtu 18.04.

• Mrežni adapter: Intel Dual Band Wireless-AC 8260.

• Tvrdi disk: SSD 256 GB.

Preporučene minimalne specifikacije računala za izvođenje ispitivanja opisanim ovim diplomskim radom su:

• Dvojezgreni procesor.

• Količina radne memorije bar 4 ili 8 GB zbog potreba virtualnog stroja.

• Količina prostora na tvrdom disku: treba ostati mjesta za virtualni stroj koji zahtjeva oko 20 GB prostora.

• Preporučeni operacijski sustav: Kali Linux.

45

• Mora imati mrežni adapter zaprovođenje napada i preporuča se dodatni mrežni adapter za nadzor prometa.

7.2.3 USB bežični adapter D-Link DWA-127

USB bežični adapter koristi se kako bi se iz virtualnog stroja mogao nadzirati promet koji razmjenjuju mobilna stanica (klijent) i hostapd implementacija pristupne točke. Bežični se adapter postavlja u monitoring način rada u kojem se on ne spaja na mrežu već pasivno prisluškuje sav promet koji je moguće dohvatiti. Korištenje dodatnog mrežnog adaptera nije potrebno za provođenje napada ali je preporučeno jer ono omogućava uvid u promet koji se šalje mrežom i mogućnost provjere uspješnosti ispitivanja. Navedeni mrežni adapter nalazi se na slici 7.2.

Slika 7.2: Mrežni adapter D-Link DWA-127

7.3 Korištene programske komponente

7.3.1 Hostapd

Hostapd (eng. Host access point daemon) je korisnički daemon program koji služi za obavljanje zadaća pristupne točke. On omogućava korištenje sučelja mrežnih kartica kao pristupne točke ili autentifikacijskih poslužitelja. Postoje tri implementacije hostapd-a:

• Jouni Malinen-ova implementacija.

• OpenBSD implementacija.

• Devicescape implementacija.

U ovome se projektu koristi izmijenjena Jouni Malinen-ova implementacija. Ona implementira dodatna upravljačke mogućnosti protokola 802.11 kao što su:

46

• Korištenje RADIUS autentifikacijskog poslužitelja za upravljanje pristupom pomoću MAC adresa.

• Implementacija IEEE 802.11i autentifikatora.

• TKIP/CCMP implementacija.

Hostapd implementacija sastoji se od velikog broja datoteka čiji detalji nisu fokus ovog rada, no neke bitnije datoteke ili datoteke koje je potrebno mijenjati u okviru uspješnog ispitivanja navedene su i ukratko opisane u nastavku:

• ctrl_iface.c: programska datoteka koja implementira kontrolno sučelje hostapd programa. Pomoću ovog sučelja vanjski programi mogu komunicirati i upravljati hostapd-om.

• hostapd.conf: konfiguracijska datoteka koja služi za postavljanje različitih parametara poput: naziva mrežnog sučelja, postavljanje kontrolnog sučelja, postavljanje 802.11 parametara, postavljanje wpa2 parametara i drugih.

• hostapd_cli.c: programska datoteka koja implementira funkcionalnosti hostapd-a vezane uz izvođenje iz komandnog retka.

• main.c: glavna programska datoteka koja implementira jezgrene funkcionalnosti, objedinjava ostale funkcionalnosti i implementira inicijalizacijske postupke.

Kako hostapd program upravlja rukovanjem s četiri poruke, istraživač je izmijenio i nadodao neke funkcionalnosti originalne ctr_iface.c programske implementacije kontrolnog sučelja. Različite izmjene i nadodane funkcionalnosti:

• Nadodane mogućnosti ponovnog iskorištavanja postojećih sučelja.

• Dodane su naredbe za deautentifikaciju (hostapd_ctrl_iface_deauthenticate) i disasocijaciju (hostapd_ctrl_iface_disassociate).

• Dodana je naredba za WPS konfiguraciju (hostapd_ctrl_iface_wps_config).

• Dodana funkcionalnost koja omogućava vođenje dnevnika.

• Dodana podrška za UDP.

• Dodane naredbe za provjeru koja se inačica napada koristi.

7.3.2 Python Scapy programska biblioteka

U izradi rada koristi se Python Scapy programska biblioteka koja omogućava jednostavno upravljanje sa mrežnim paketima. Moguće ju je preuzeti sa GitHub repozitorija [14]. Ova biblioteka omogućava dekodiranje ili stvaranje novih paketa različitih protokola, njihovo slanje, primanje i spremanje. Podržava čitanje datoteka uhvaćenog mrežnog prometa (.pcap datoteke). Biblioteka nudi dovoljno mogućnosti da se pomoću nje implementiraju programski alati kao što su: hping, većina programa Nmap, Wireshark, Tcpdump i ostali [14].

47

7.3.3 Python Wpaspy programski modul

Python Wpaspy programski modul nalazi se u okviru Dr. Mathy Vanhoef-ovog projekta na GitHub repozitoriju. Ovaj modul koristi se za spajanje na Hostapd kontrolno sučelje pomoću klase Ctrl. Neke metode klase Ctrl:

• close(): zatvara spoj sa kontrolnim sučeljem Hostapd-a.

• request(): slanje zahtjeva Hostapd procesu.

• attach(): naredba za spajanje na Hostapd kontrolno sučelje.

• detach(): naredba za odspajanje od Hostapd kontrolnog sučelja.

• recv(): naredba za primanje poruka od Hostapd kontrolnog sučelja.

7.3.4 Skripta za onemogućavanje sklopovskog izvođenja kriptografskih funkcija

Skriptu za onemogućavanje sklopovskog izvođenja kriptografskih funkcija disable-hwcrypto.sh potrebno pokretati prije izvođenja ispitivanja. Ova skripta deaktivira sklopovske funkcije kriptiranja mrežnog adaptera. Skripta se pokreće preko naredbenog sučelja, a nakon pokretanja skripte potrebno je ponovno pokrenuti računalo.

7.3.5 Virtualni stroj Kali Linux

Virtualni stroj nije nužan za korištenje no olakšava ispitivanje i provjeru je li ispitivanje uspješnosti ispitivanja. Virtualni stroj je potreban zbog ograničenja ispitivanja i uvjeta koje je potrebno ispuniti kako bi mrežne postavke uspješno funkcionirale. Detaljnije o postupku postavljanja virtualnog stroja biti će u kasnijem poglavlju. Virtualni stroj Kali Linux može se preuzeti na službenim stranicama [15].

Svrha dodatnog virtualnog stroja u ovome ispitivanju je ta da služi kao dodatno virtualno računalo koje je neovisno o integriranom mrežnom adapteru prijenosnog računala već kao svoj mrežni adapter koristi navedeni bežični USB adapter D-Link DWA-127 na kojem stvara mrežno sučelje u monitoring načinu rada kako bi mogao prisluškivati promet i provjeravati razmjenjuju li se ispravni paketi između 802.11i entiteta klijenta i autentifikatora.

7.3.6 Ostali direktoriji i programi GitHub repozitorija istraživača

GitHub repozitorij preuzetog projekta sastoji se od mnogo drugih konfiguracijskih, programskih i ostalih datoteka i direktorija od kojih većina neće biti obrađivana u okviru ovoga projekta, no radi cjelovitosti ovog rada, navedene su i objašnjene ispod:

• Direktorij DOC: sadrži dokumentacijske datoteke.

• Direktorij eap_example: ovaj je direktorij povezan sa Jouni Malinen Hostapd implementacijom i služi kao primjer kako EAP klijentski i serverski kod Hostapd-a mogu biti korišteni u okviru biblioteke.

• Direktorij hostapd: sadrži implementaciju Hostapd programa.

• Direktorij hs20: sadrži implementacije hotspot klijenta i poslužitelja.

• Direktorij krackattack: sadrži najbitnije datoteke za provođenje ispitivanja.

• Direktorij mac80211_hwsim: sadrži datoteke za ispitivanje povezanosti.

• Direktorij radius_example.c: sadrži programski primjer kako se RADIUS klijent koristi kao biblioteka.

• Direktorij src: sadrži razne datoteke povezane s implementacijom Hostapd programa.

48

Unutar ovog direktorija nalazi se poddirektorij ap koji sadrži datoteke povezane sa implementacijom pristupne točke Hostapd programa. Unutar poddirektorija ap nalazi se datoteka wpa_auth.c koja je mijenjana za potrebe provedbe ispitivanja. Ova datoteka sadrži funkcije WPA autentifikacije.

• Direktorij tests: dio je Hostapd implementacije i sadrži ispitne datoteke za različite kriptografske funkcije.

• Direktorij wlantest: dio je Hostapd implementacije i sadrži različite pomoćne funkcije.

• Direktorij wpa_supplicant: dio je Hostapd implementaije i sadrži klijentsku funkcionalnost 802.11i standarda.

• Direktorij wpa_debug: sadrži program za pronalaženje grešaka wpa_supplicant programa.

• Direktorij wpaspy: dio je implementacije Hostapd programa, koristi se kao Python omotač za pozivanje kontrolnih funkcionalnosti pristupne točke.

8. Vlastita implementacija komponenti za ispitivanje

8.1 Uvod

Vlastita implementacija projekta sastoji se od implementacije nekoliko ključnih datoteka za izvođenje ispitivanja ranjivosti klijentske implementacije WPA2 rukovanja sa četiri poruke. Kako originalna implementacija obuhvaća više ispitivanja nego što je predviđeno u okviru ovog projekta, ovaj će projekt obuhvaćati podskup funkcionalnosti originalne implementacije. Funkcionalnost koja se izostavlja je provjera ranjivosti grupnog ključa GTK, a implementira se funkcionalnost ispitivanja ranjivosti klijenta na ponovnu instalaciju ključa za kriptiranje unicast poruka.

Jezgreni dio ispitivanja je provjera šalje li klijent različite poruke kriptirane istim inicijalizacijskim vektorom IV. Glavni entiteti prilikom ispitivanja su:

• Klijent koji se ispituje.

• Hostapd proces koji stvara pristupnu točku na koju se klijent spaja.

• Wpaspy kontrolni modul spojen sa procesom pristupne točke i programom za ispitivanje. Služi kao posrednički entitet između ispitivačkog programa i procesa pristupne točke koji putem njega prima naredbe od ispitivačkog programa.

• Virtualni stroj za provjeru prometa.

Komunikacija između različitih entiteta prikazana je dijagramom na slici 8.1.

49

Slika 8.1: Dijagram povezanosti entiteta

Kao što je navedeno ranije, ova implementacija se koristi nekim već gotovim modulima i datotekama. Gotove datoteke koje koriste neki moduli ovog projekta a nisu dio vlastite implementacije su skripta za onemogućavanje sklopovske enkripcije koja se koristi iz naredbenog retka prije poziva programa za ispitivanje i Python modul Wpaspy koji implementira kontrolno sučelje prema Hostapd procesu i dio je njegove implementacije.

Implementacija ispitivanja klijenta razložena je na nekoliko datoteka odnosno modula. Razlaganje na više datoteka doprinosi modularnosti i boljoj strukturiranosti projekta. Datoteke i njihovi opisi su:

• Modul k_test_client: glavni modul, on se pokreće prilikom ispitivanja i služi za objedinjavanje svih ostalih funkcionalnosti.

• Modul k_attack: napadački modul koji implementira glavne funkcionalnosti ispitivanja.

• Modul k_helper: modul koji sadrži pomoćne funkcije za koje modul za napad koristi u svome radu.

Dijagram modula koji opisuje kako su oni međusobno povezani moguće je vidjeti sa slike 8.2.

50

Slika 8.2: dijagram modula, strelice označavaju korisnički i korišteni modul

Sadržaj pojedinih datoteka detaljnije je opisan u nastavku no kako su svi moduli, razredi i metode razreda dokumentirani u samim datotekama, u idućim su poglavljima dani jednostavniji opisi bitnijih funkcionalnosti.

8.2 Glavna datoteka

Glavna datoteka je jednostavna Python skripta koja objedinjuje funkcionalnosti ispitivanja. Namijenjena je za pokretanje iz naredbenog retka. Slika ispod prikazuje sadržaj datoteke. Glavna datoteka uključuje funkcionalnosti iz pomoćnog modula „k_helper“ za vođenje dnevnika i funkcionalnosti za ispitivanje klijenta iz modula „k_attack“.

U ovoj je datoteci implementirana funkcija „cleanup_fn“ koja se poziva prilikom završetka rada programa. Svrha ove funkcije je da se pobrine da se prije završetka izvođenja glavnog programa sustav dovede u početno stanje, odnosno da se zatvore svi opisnici stvoreni tokom izvođenja programa.

Prilikom pokretanja glavne datoteke, inicijalizira se voditelj dnevnika „logger“ nakon kojeg se stvara nova instanca razreda za ispitivanje „KrackAttack“ u okviru koje se registrira funkcija za obavljanje čišćenja nakon završetka rada programa te se na kraju pokreće ispitivanje metodom „startAttack()“.

51

Slika 8.3: Glavna datoteka za pokretanje ispitivanja

8.3 Modul implementacije napada

8.3.1 Razred KrackAttack

Ovaj razred implementira glavnu funkcionalnost ispitivanja i u svome radu koristi neke pomoćne metode i razrede iz pomoćnog modula koji je opisan kasnije.

Atributi ovog razreda su:

• Atribut logger: instanca voditelja dnevnika.

• Atribut attack_script_path: putanja do ovog modula.

• Atribut interface_name: ime sučelja definiranog u konfiguracijskoj datoteci programa Hostapd.

• Atribut monitor_interface_name: naziv sučelja postavljenog u monitor način rada.

• Atribut ap_mac_addr: MAC adresa pristupne točke.

52

• Atribut hostapd_handle: spoj prema procesu pristupne točke.

• Atribut hostapd_control: instanca kontrolnog razreda za slanje naredbi pristupnoj točki.

• Atribut mitm_mon_sock: priključnica za kontrolu prometa između klijenta i pristupne točke.

• Atribut clients: rječnik koji sadrži informacije o klijentima koji se ispituju.

8.3.2 Metoda KrackAttack:getInterface

Ova se metoda koristi za dohvaćanje naziva sučelja navedenog u konfiguracijskoj datoteci Hostapd programa „hostapd.conf“.

Ulazni parametri:

1. Param. hostapd_conf_path: putanja do konfiguracijske datoteke Hostapd programa. Povratna vrijednost:

1. Naziv sučelja.

8.3.3 Metoda KrackAttack:configureInterfaces

Ova metoda ima zadatak postavljanja sučelja mrežnog adaptera kako bi glavni program mogao ispravno raditi i to čini u nekoliko koraka:

1. Pozivom naredbe rfkill uklanja blokadu bežičnog adaptera. 2. Briše monitor sučelje ukoliko ono postoji (kako bi uvijek postojalo samo jedno prilikom

višestrukog pozivanja programa za ispitivanje). 3. Stvara novo sučelje u monitor načinu rada naredbom iw. 4. Naredbom ifconfig aktivira stvoreno sučelje.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

Isječak funkcionalnosti ove metode prikazan je na slici 8.4.

53

Slika 8.4: Metoda configureInterfaces razreda KrackAttack

8.3.4 Metoda KrackAttack:hostapdStart

Ova metoda pokreće proces pristupne točke Hostapd pozivom funkcije za stvaranje procesa Popen.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

8.3.5 Metoda KrackAttack:hostapdCtrlAttach

Ova metoda stvara novu instancu razreda Ctrl implementiranog u datoteci Wpaspy. Nakon stvaranja nove instance kontrolnog razreda, spaja se na njega te na taj način pruža spoj između programa za ispitivanje i procesa pristupne točke.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

Isječak funkcionalnosti ove metode prikazan je na slici 8.5.

54

Slika 8.5: Metoda hostapdCtrlAttach razreda KrackAttack

8.3.6 Metoda KrackAttack:stopAttack

Ova se metoda koristi prilikom završetka ispitivanja kako bi se zaustavio proces pristupne točke i zatvorili korišteni opisnici.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

8.3.7 Metoda KrackAttack:createMitmSock

Metoda za stvaranje nove priključnice na prethodno stvorenom sučelju u monitor načinu rada. Nova se priključnica povezuje s atributom razreda „mitm_mon_sock“.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

8.3.8 Metoda KrackAttack:removeClient

Metoda za brisanje informacija o klijentu iz rječnika klijenata „clients“.

Ulazni parametri:

1. Param. cli_mac: MAC adresa klijenta kojeg se želi obrisati.

Povratna vrijednot: NEMA.

8.3.9 Metoda KrackAttack:handleMonData

Metoda za obradu podataka pristiglih na monitor priključnicu. Metoda ignorira kontrolne okvire i obrađuje samo podatkovne i upravljačke okvire. Koraci izvođenja ove metode su:

1. Iz pristiglih podataka potrebno je utvrditi MAC adrese klijenta i pristupne točke.

55

Poznata MAC adresa pristupne toče mora se slagati sa MAC adresom pristupne točke dohvaćenom iz pristiglih podataka.

2. Ukoliko se klijent želi odspojiti, potrebno je maknuti njegove informacije iz informacija o klijentima koji se ispituju.

3. Ukoliko se radi o novome klijentu, potrebno je zabilježiti njegove informacije. 4. Iz pristiglih kriptiranih podataka utvrđuje se inicijalizacijski vektor i sekvencijski broj koji

se zatim koriste u pozivu funkcije za provjeru ponovnog korištenja inicijalizacijskog vektora.

5. Korišteni se inicijalizacijski vektor zapisuje i prati.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

Isječak funkcionalnosti ove metode prikazan je na slici 8.6.

Slika 8.6: Metoda handleMonData razreda KrackAttack

8.3.10 Metoda KrackAttack:startAttack

Metoda za pokretanje izvođenja ispitivanja. Prije provjere dolaznog prometa metoda se brine o konfiguraciji mrežnih sučelja, poziva metodu za stvaranje procesa pristupne točke i metode za povezivanje kontrolnog razreda sa procesom pristupne točke. Stvara priključnicu za nadgledanje prometa između klijenta i pristupne točke. Za svakog klijenta koji se ispituje, ova

56

metoda šalje naredbu pristupnoj točki da ponovno pošalje 3. poruku WPA2 rukovanja sa četiri poruke što omogućuje provjeru reakcije klijenta.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

Isječak funkcionalnosti ove metode prikazan je na slici 8.7.

Slika 8.7: Metoda startAttack razreda KrackAttack

8.4 Pomoćni modul

8.4.1 Razred Colors

Ovaj se razred koristi prilikom odabira boja za ispis teksta na sučelju naredbenog retka. Omogućuje jednostavno korištenje boja na način da se prilikom odabira boja pri ispisu koriste konstante, a ne kodovi boja što poboljšava čitljivost.

57

8.4.2 Razred Logger

Ovaj razred implementira voditelja dnevnika. Voditelj dnevnika nudi mogućnost formatiranog ispisa na sučelje naredbenog retka prilagođeno pojedinim razredima. Razred Logger ima nekoliko atributa:

• Atribut name: ime voditelja dnevnika.

• Atribut color: boja koja se koristi prilikom ispisa.

• Atribut mark: formatirana znakovna oznaka koja govori o kojem se tipu poruke radi.

Prilikom ispisa poruke mogu odgovarati nekom od ponuđenih tipova: DEBUG, INFO, WARNING, ERROR i STATUS. Na korisniku je da svojevoljno utvrdi značenje pojedinog tipa poruka i kada će se on koristiti.

8.4.3 Metoda Logger:log

Ova se metoda koristi za ispis korisničke poruke na sučelje naredbenog retka. U ovisnosti o postavljenoj razini odnosno tipu poruke, odabire se određena boja za ispis kao i formatirana znakovna oznaka koja pripada toj razini, nakon čega se poruka ispisuje na sučelje naredbenog retka.

Ulazni parametri:

1. Param. level: razina (tip) poruke koji se koristi, može biti: DEBUG, INFO, WARNING, ERROR ili STATUS.

2. Param. msg: korisnička poruka.

Povratna vrijednost: NEMA.

8.4.4 Razred IvInfo

Razred koji sadrži informacije o inicijalizacijskom vektoru i sekvencijskom broju nekog okvira. Atributi razreda su:

1. Atribut iv: inicijalizacijski vektor okvira. 2. Atribut seqnum: sekvencijski broj okvira. 3. Atribut packet_time: vrijeme kada je okvir primljen.

8.4.5 Metoda IvInfo:isReused

Ova metoda dohvaća inicijalizacijski vektor i sekvencijski broj predanog korisničkog okvira i uspoređuje vrijednosti sa vrijednostima nad kojima opisanim instancom razreda IvInfo kad kojima se ova metoda poziva. Svrha metode je utvrđivanje ponovnog korištenja identičnog inicijalizacijskog vektora

Ulazni parametri:

1. Param. new_packet: korisnički okvir koji se predaje na usporedbu.

58

Povratna vrijednost: Ukoliko su inicijalizacijski vektori oba okvira jednaki, sekvencijski brojevi su im različiti i predani je okvir pristigao nakon onog nad kojim se radi usporedba, metoda vraća istinitu vrijednost što znači da je inicijalizacijski vektor novog okvira jednak kao i onaj sa kojim se uspoređuje.

Isječak funkcionalnosti ove metode prikazan je na slici 8.8.

Slika 8.8: Metoda isReused razreda IvInfo

8.4.6 Razred IvDict

Pomoćni razred koji služi kao rječnik koji povezuje vrijednosti inicijalizacijskih vektora sa instancama razreda IvInfo koji pruža više informacija o njima.

Atributi razreda:

1. Atribut dict: rječnik za spremanje inicijalizacijskih vektora i dodatnih informacija o njima.

8.4.7 Metoda IvDict:reset

Metoda za ponovno postavljanje rječnika inicijalizacijskih vektora u čisto stanje.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

8.4.8 Metoda IvDict:trackUsedIv

Ova metoda dohvaća inicijalizacijski vektor iz predanog korisničkog okvira i sprema njegove informacije u rječnik inicijalizacijskih vektora.

Ulazni parametri:

1. Param. packet: novi okvir predan od strane korisnika.

Povratne vrijednosti: NEMA.

59

8.4.9 Metoda IvDict:isIvReused

Ova metoda provjerava koristi li okvir predan kao ulazni parametar ove funkcije inicijalizacijski vektor kao i neki već viđeni okvir.

Ulazni parametri:

1. Param. packet: novi okvir predan od strane korisnika.

Povratna vrijednost: vraća istinitu vrijednost ukoliko je inicijalizacijski vektor predanog okvira već korišten u nekom od prethodno viđenih okvira.

8.4.10 Metoda IvDict:isNewIv

Metoda koja provjerava je li inicijalizacijski vektor predanog okvira novi.

Ulazni parametri:

1. Param. packet: novi mrežni okvir. Povratna vrijednost: Vraća istinitu vrijednost ukoliko je inicijalizacijski vektor predanog okvira vrijednosti veće od maksimalne vrijednosti inicijalizacijskih vektora svih do sada viđenih okvira.

8.4.11 Razred ClientInfo

Razred koji pruža više informacija o nekom klijentu. Atributi razreda su:

1. Atribut client_mac: MAC adresa klijenta. 2. Atribut vulnerable_4way: oznaka koja pokazuje koristi li klijent ranjivu implementaciu

WPA2 rukovana sa četiri poruke. 3. Atribut ivs: rječnik svih inicijalizacijskih vektora koje je taj klijent koristio u komunikaciji. 4. Atribut logger: voditelj dnevnika za ovaj razred.

8.4.12 Metoda ClientInfo:checkKeyReinstall

Ova metoda provjerava je li klijent podložan ponovnoj instalaciji kriptografskog ključa provjeravajući inicijalizacijski vektor predanog okvira i ispisuje poruku ukoliko je klijent raniv.

Ulazni parametri:

1. Param. packet: novi mrežni okvir.

Povratna vrijednost: NEMA.

Isječak funkcionalnosti ove metode prikazan je na slici 8.9.

60

Slika 8.9: Metoda checkKeyReinstall razreda ClientInfo

8.4.13 Metoda ClientInfo:trackUsedIv

Ova se metoda koristi kao omotač oko metode trackUsedIv razreda IvDict kako bi se omogućilo praćenje inicijalizacijskog vektora nekog klijenta.

Ulazni parametri:

1. Param. packet: mrežni okvir.

Povratna vrijednost: NEMA.

8.4.14 Funkcija dot11_get_seqnum

Ova funkcija iz predanog okvira pronalazi 12 bitni sekvencijski broj. Kako se polje gdje se nalazi sekvencijski broj sastoji od 2 okteta od kojih 12 bitova odgovara sekvencijskom broju a preostalih 4 bitova odgovara broju fragmenta, broj fragmenta se odbacuje.

Ulazni parametri:

1. Param. packet: mrežni okvir.

Povratna vrijednost: sekvencijski broj okvira.

Isječak funkcionalnosti ove funkcije prikazan je na slici 8.10.

61

Slika 8.10: Funkcija dot11_get_seqnum

8.4.15 Funkcija dot11_get_iv

Funkcija za dohvaćanje inicijalizacijskog vektora iz predanog okvira. Inicijalizacijski je vektor sadržan u kriptiranim okvirima koji moraju imati Dot11WEP zaglavlje definirano u implementaciji Scapy modula. Ova funkcija radi nad okvirima koji koriste CCMP protokol za zaštitu povjerljivosti okvira.

Sve poruke kriptirane CCMP protokolom moraju sadržavati zaglavlje u jasnome obliku koje se šalje uz poruku. Ovo se zaglavlje koristi kako bi se iz njega mogao pročitati 48 bitni broj paketa PN [18]. Slika 8.11 CCMP zaglavlja ispod prikazana je radi boljeg razumijevanja implementacije ove funkcije.

Slika 8.11: CCMP zaglavlje, preuzeto iz [18]

Unutar CCMP zaglavlja nalazi se polje od 8 bitova koje se sastoji od četiri rezervirana bita koja se ne koriste, zatim jednim bitom koji označava radi li se o produženom inicijalizacijskom vektoru nakon čega slijede dva bita koja predstavljaju identifikator ključa. Ukoliko se ne radi o produženom inicijalizacijskom vektoru, inicijalizacijski vektor biti će veličine 24 bita, a u slučaju da je produženi, biti će veličine 48 bitova. U implementaciji Scapy modula ovo se polje od 8 bitova naziva „keyid“ polje.

Ulazni parametri:

62

1. Param. packet: mrežni okvir iz kojega je potrebno pročitati inicijalizacijski vektor.

Povratna vrijednost: inicijalizacijski vektor predanog okvira.

Isječak funkcionalnosti ove funkcije prikazan je na slici 8.12.

Slika 8.12: Funkcija dot11_get_iv

8.4.16 Funkcija hostapd_send_command

Ova se funkcija koristi za slanje naredbe procesu pristupne točke putem kontrolnog sučelja implementiranog razredom Control u Wpaspy modulu.

Ulazni parametri:

1. Param. hostapd_control: instanca kontrolnog razreda Control iz Wpaspy modula koji prije izdavanja naredbi mora biti priključen na proces pristupne točke.

2. Param. command: naredba koja se izdaje pristupnoj točki.

Povratna vrijednost: Odgovor pristupne točke (uspješnost izvedene naredbe).

Isječak funkcionalnosti ove funkcije prikazan je na slici 8.13.

63

Slika 8.13: Funkcija hostapd_send_command

8.4.17 Razred MonSock

Ovaj razred nasljeđuje razred L2Socket implementiran u Scapy modulu. L2Socket razred koristi se za stvaranje priključnice koja ima sposobnost primati, slati i obrađivati podatke sloja podatkovne poveznice, pa stoga razred MonSock nasljeđuje jednake funkcionalnosti. Razred MonSock je pomoćni razred jer L2Socket razred Scapy modula nema sve funkcionalnosti koje su potrebne u ovome projektu, a koje su implementirane u ovome razredu.

8.4.18 Metoda MonSock:close

Metoda za zatvaranje priključnice.

Ulazni parametri: NEMA.

Povratna vrijednost: NEMA.

8.4.19 Metoda MonSock:recv

Metoda za primanje podataka na priključnici. Ignorira podatke koji nisu podaci protokola 802.11 kao i ponovno poslane podatke. Iz dolaznih podataka miče polje za provjeru ispravnosti okvira.

Ulazni parametri:

1. Param. mtu: maksimalna veličina paketa.

Povratna vrijednost: Vraća dolazne podatke bez polja za provjeru ispravnosti okvira.

Isječak funkcionalnosti ove metode prikazan je na slici 8.14.

64

Slika 8.14: Metoda recv razreda MonSock

8.4.20 Metoda MonSock:hasFlags

Ova metoda provjerava nalazi li se polje zastavica u RadioTap zaglavlju primljenih podataka. RadioTap zaglavlje je mehanizam koji pruža uvid u različite informacije o primljenim okvirima [19]. Jedina bitna informacija RadioTap zaglavlja jest polje zastavica koje utvrđuje sadrži li okvir polje za provjeru ispravnosti okvira FCS.

Ulazni parametri:

1. Param. packet: mrežni okvir nad kojim je potrebno utvrditi sadrži li polje zastavica.

Povratna vrijednost: Vraća istinitu vrijednost ukoliko okvir sadrži polje zastavica.

Isječak funkcionalnosti ove metode prikazan je na slici 8.15.

65

Slika 8.15: Metoda hasFlags razreda MonSock

8.4.21 Metoda MonSock:findFlagsIndex

Kako Scapy implementacija okvira ne može uspješno dohvatiti lokaciju polja zastavica unutar RadioTap zaglavlja, to obavlja ova metoda. Ova metoda prolazi kroz RadioTap zaglavlje i provjerava gdje se nalazi oktet koji na svome sedmom bitu sadrži vrijednost 0. Onaj oktet koji sadrži vrijednost 0 na tome mjestu označava oktet polja zastavica, a vrijednost bita 0 na tome mjestu označava da se radi o ispravnoj vrijednosti za provjeru okvira [19].

Ulazni parametri:

1. Param. packet: mrežni okvir unutar kojeg se traži indeks polja zastavica unutar RadioTap zaglavlja.

Povratna vrijednost: indeks na kojem se nalazi polje zastavica unutar RadioTap zaglavlja.

Isječak funkcionalnosti ove metode prikazan je na slici 8.16.

66

Slika 8.16: Metoda findFlagsIndex razreda MonSock

8.4.22 Metoda MonSock:stripFrameCheckSequence

Metoda koja iz predanog okvira uklanja polje za kontrolu okvira.

Ulazni parametri:

1. Param. packet: mrežni okvir iz kojeg je potrebno ukloniti polje za kontrolu okvira.

Povratna vrijednost: mrežni okvir s uklonjenim poljem za kontrolu okvira FCS.

Isječak funkcionalnosti ove metode prikazan je na slici 8.17.

67

Slika 8.17: Metoda stripFrameCheckSequence razreda MonSock

68

9. Postupak ispitivanja

9.1 Preuzimanje komponenti sa GitHub stranice Dr. Mathy Vanhoef-a

Ovaj se rad temelji na već postojećoj implementaciji programa za ispitivanje postojanja ranjivosti rukovanja sa četiri poruke. Postojeća se implementacija nalazi na web stranicama GitHub repozitorija [13]. U ovome poglavlju opisana su dva različita načina preuzimanja i postavljanja istraživačeva repozitorija na lokalno računalo:

1. Preuzimanje repozitorija u ZIP formatu. 2. Preuzimanje repozitorija putem naredbi komandnog retka.

Prije samog preuzimanja, pretpostavlja se da se ispitivanje provodi na računalu sa instaliranim Linux operacijskim sustavom (Ubuntu ili Kali Linux).

1. Preuzimanje repozitorija u ZIP formatu: a. Otići na GitHub stranice istraživača [13]. b. Sa desne strane kliknuti gumb „Clone or Download“. c. Odabrati opciju „Download ZIP“. d. Odabrati mjesto gdje će datoteke biti spremljene. e. Nakon preuzimanja raspakirati datoteke na željeno mjesto.

2. Preuzimanje repozitorija putem naredbi komandnog retka:

a. Pokrenuti prozor komandnog retka. b. Ukoliko ne postoji, instalirati alat „git“ putem naredbe: „sudo apt-get install

git“. c. Pozicionirati se u željeni direktorij. d. Sa GitHub stranice odabrati opciju „Clone or Download“. e. Kopirati poveznicu koja se tamo nalazi. f. Iz direktorija, u komandnom retku upisati naredbu za kloniranje: „git clone

<poveznica>“. g. Prilikom završetka izvođenja naredbe repozitorij bi trebao biti uspješno

smješten u željenom direktoriju.

9.2 Postavljanje virtualnog okruženja i Kali Linux virtualnog stroja

Kako bi mogli provjeravati promet između klijenta i pristupne točke, potrebno je još jedno računalo koje služi za hvatanje i analizu prometa između klijenta i pristupne točke. Kako ne bi bilo potrebno još jedno fizičko računalo, koristi se virtualno okruženje sa instaliranim Kali Linux virtualnim strojem. Pretpostavlja se da se korisnik već susreo sa virtualnim strojevima.

Postupak instalacije:

1. Preuzeti Virtualbox virtualno okružene sa službene stranice [16]. 2. Pokrenuti instalaciju Virtualbox-a i pratiti korake do završetka instalacije. 3. Preuzeti virtualni stroj Kali Linux sa službenih stranica distribucije [15] ili sa stranice

[17]. Preporuča se preuzimanje sa stranice [17] jer se na tim stranicama nudi mogućnost preuzimanja već instaliranog virtualnog stroja na virtualni disk u OVA formatu koji se samo ubaci u Virtualbox bez potrebe za dodatnim koracima instalacije i

69

postavljanja. 4. Nakon preuzimanja pokrenuti program Virtualbox i u gornjem lijevom kutu odabrati

„File“ i „Import Appliance..“ te odabrati preuzetu Kali Linux OVA datoteku iz prethodnog koraka. Ovaj postupak traje neko vrijeme jer Virtualbox mora generirati virtualni disk sa instaliranim operacijskim sustavom.

5. Nakon završetka instalacije sve je spremno za uporabu te se virtualni stroj može slobodno pokrenuti iz programa Virtualbox.

9.3 Preuzimanje potrebnih programskih komponenti

Nakon uspješnog preuzimanja GitHub repozitorija na lokalno računalo, potrebno je preuzeti nekoliko alata i programskih biblioteka koje se koriste u svrhu ovog ispitivanja. Alati i biblioteke koje je potrebno preuzeti su:

• Biblioteka libnl-3-dev.

• Biblioteka libnl-genl-3-dev.

• Paket pkg-config.

• Biblioteka libssl-dev.

• Paket net-tools.

• Program git (ukoliko već nije instaliran).

• Alat sysfsutils.

• Biblioteka python-scapy.

• Biblioteka python-pycryptodome.

Pretpostavka je da se ispitivanje pokreće na računalu sa Linux operacijskim sustavom pa je za preuzimanje svih prethodno navedenih alata i biblioteka dovoljna jedna naredba:

• apt-get install libnl-3-dev libnl-genl-3-dev pkg-config libssl-dev net-tools git sysfsutils python-scapy python-pycryptodome

9.4 Ispitivanje rada istraživačeve implementacije

9.4.1 Onemogućivanje sklopovske enkripcije

Prije svega je potrebno onemogućiti sklopovsku enkripciju kako ne bi uzrokovala probleme u radu Hostapd programa pristupne točke. Za onemogućavanje sklopovske enkripcije koristi se skripta: „disable-hwcrypto.sh“.

Pokretanje skripte izvodi se iz naredbenog retka što je prikazano na slici 9.1:

Slika 9.1: Onemogućivanje sklopovske enkripcije

Nakon što skripta završi s radom, potrebno je ponovno pokrenuti računalo.

70

9.4.2 Prevođenje Hostapd datoteka u izvršni program

Prevođenje Hostapd programa u izvršni program izvodi se u nekoliko koraka:

1. Pozicionirati se unutar direktorija „hostapd“ koji se nalazi u strukturi repozitorija. 2. Kopirati datoteku „defconfig“ u skriveni direktorij „.defconfig“. 3. Pokrenuti prevođenje naredbom „make -j 2“.

Prilikom prevođenja mogu se pojaviti upozorenja (eng. Warning) koje je moguće zanemariti. Ukoliko je proces prevođenja završio bez pogrešaka, rezultat je izvršna datoteka „hostapd“.

9.4.3 Podešavanje mrežnog adaptera koji se koristi kao pristupna točka

Idući korak prije provođenja ispitivanja je podešavanje mrežnog adaptera kako bi se mogao koristiti kao pristupna točka u okviru rada programa hostapd. Sa stranica GitHub repozitorija istraživača dane su upute koje opisuju ispravan način podešavanja mrežnog adaptera:

1. Potrebno je onemogućiti bežično povezivanje. Ovaj je korak moguće ostvariti na dva načina:

a. Onemogućivanje Wi-Fi adaptera putem grafičkog upravitelja adapterom: Na Linux operacijskim sustavima (u ovome se slučaju koristi operacijski sustav Ubuntu) u gornjem desnom kutu moguće je pronaći izbornik sa informacijama o spajanju na mrežu bežičnim putem. U ovome je izborniku potrebno odabrati opciju „Turn Off“ kako bi onemogućili spajanje na internet. Ovaj je korak prikazan na slici 9.2.

71

Slika 9.2: Isključivanje bežičnog adaptera

b. Drugi način za onemogućivanje bežičnog adaptera je putem naredbenog retka. Izvodi se naredba: „sudo nmcli radio wifi off“ i rezultat izvođenja naredbe trebao bi biti kao na slici 9.3.

Slika 9.3: Isključivanje bežičnog adaptera putem naredbenog retka

2. Iako je mrežni adapter onemogućen za korištenje od strane korisnika, kako bi ga program za stvaranje pristupne točke mogao koristiti potrebno je odblokirati mrežni adapter naredbom: „rfkill unblock wifi“, a njeno je izvođenje prikazano na slici 9.4.

Slika 9.4: Naredba za odblokiranje bežičnog adaptera

9.4.4 Podešavanje konfiguracije hostapd programa

U prethodom smo koraku osigurali potrebne preduvjete za ispravan rad hostapd programa. Prilikom svog rada, hostapd program učitava svoju konfiguracijsku datoteku iz koje čita različite parametre potrebne za pokretanje pristupne točke. Hostapd konfiguracijska datoteka zove se:

72

„hostapd.conf“ i moguće ju je pronaći u direktoriju hostapd programa. Ova konfiguracijska datoteka sadrži mnoštvo parametara koji određuju ponašanje pristupne točke i različite protokole kojima se ona koristi. Jedini parametar koji je obavezno izmijeniti za ispravan rad programa za ispitivanje je naziv bežičnog adaptera koji se koristi prilikom rada pristupne točke. Koraci za podešavanje su slijedeći:

1. Potrebno je pronaći točan naziv bežičnog adaptera. U ovom se koraku koristi naredba „ifconfig“ koja daje informacije o mrežnim adapterima i sučeljima na nekom sustavu. Prilikom izvođenja, rezultat naredbe bi trebao biti sličan kao i na slici 9.5.

Slika 9.5: Dohvaćanje informacija o mrežnim sučeljima

2. U „hostapd.conf“ datoteci potrebno je izmijeniti redak koji opisuje naziv sučelja. Iz prethodnog koraka može se pročitati da je naziv sučelja: „wlp2s0“ pa je to potrebno unijeti u konfiguraciju, kao što je to prikazano na slici 9.6.

Slika 9.6: Izmjena naziva mrežnog sučelja u konfiguracijskoj datoteci programa hostapd

3. Ovaj korak nije potreban, no ukoliko korisnik želi, moguće je podesiti i lozinku za pristup pristupnoj točki prilikom spajanja. Potrebno je unutar konfiguracijske datoteke pronaći polje za izmjenu WPA lozinke i unijeti željenu lozinku. Ovaj je korak prikazan na

73

slici 9.7. Pretpostavljena lozinka je „abcdefgh“.

Slika 9.7: Izmjena lozinke unutar konfiguracijske datoteke hostapd progrma

9.4.5 Podešavanje virtualnog stroja za prikupljanje podataka poslanih bežičnim putem

Prethodni su se koraci odnosili na postavke stroja na kojem će se pokretati program za ispitivanje ranjivosti klijenta, odnosno program koji će stvoriti novi pristupnu točku na postojećem sučelju. Ovaj se korak odnosi na postavke virtualnog stroja koji se koristi za prikupljanje podataka s mreže kako bi se mogla utvrditi ispravnost rada programa. Koraci za podešavanje su slijedeći:

1. U računao priključiti novi bežični adapter koji će se koristiti za dohvaćanje prometa. U ovome projektu koristi se adapter D-Link DWA-127 opisan ranije.

2. Naredbom „ifconfig“ pronaći naziv mrežnog sučelja korištenog adaptera. Rezultat naredbe bi trebao biti sličan kao sa slike 9.8. Sa slike 9.8 je vidljivo da je naziv sučelja „wlan0“.

74

Slika 9.8: Dohvaćanje informacija o raspoloživim sučeljima

3. Kako bi mogli dohvaćati sav promet iz zraka, potrebno je sučelje postaviti u monitoring način rada. Za jednostavno postavljanje sučelja u ovaj način rada, operacijski sustav Kali Linux nudi već instalirani alat „airmon-ng“ koji je jednostavan za korištenje. Alat se pokreće iz naredbenog retka i za postavljanje sučelja potrebno je upisati naredbu: „arimon-ng start <ime_sučelja>“. Rezultat naredbe je prikazan na slici 9.9.

Slika 9.9: Postavljanje sučelja virtualnog stroja u monitor način rada

4. Kako bi započeli prikupljati mrežni promet sa novostvorenog sučelja, koristiti ćemo se alatom Wireshark koji također dolazi instaliran na Kali Linux operacijskom sustavu. Nakon pokretanja programa, korisniku se nudi mogućnost odabira sučelja na kojem želi pratiti promet. Za odabir sučelja koristiti ćemo sučelje „wlan0mon“ koje je stvoreno u prethodnom koraku, a prikazano je na slici 9.10. Nakon odabira sučelja potrebno je kliknuti na plavu ikonicu u gornjem lijevom kutu kako bi mogli započeti proces analize prometa. Slika 9.11 prikazuje kako izgleda program tijekom procesa prikupljanja podataka s mreže.

75

Slika 9.10: Odabir sučelja za analizu prometa u alatu Wireshark

Slika 9.11: Alat Wireshark tijekom procesa prikupljanja podataka

76

9.4.6 Pokretanje programa za ispitivanje ranjivosti i rezultati

Sada kada je sve podešeno, potrebno je pokrenuti Python skriptu za ispitivanje. Skripta za ispitivanje zove se „krack-test-client“ i pokreće se naredbom: „sudo python krack-test-client“ iz naredbenog retka. Jednom pokrenuta, Python skripta stvara novi proces hostapd programa koji služi kao pristupna točka. Klijent, odnosno uređaj koji bi trebao biti ispitan, mora se spojiti na pristupnu točku koja se pojavljuje u njegovom izborniku bežičnih mreža. Slika 9.12 prikazuje izvođenje skripte prije i nakon klijentovog spajanja na stvorenu pristupnu točku. Ukratko, ono što se događa kada se skripta pokrene je slijedeće:

1. Za rad skripte potrebne su administratorske ovlasti pa je pri pokretanju potrebno upisati administratorsku lozinku.

2. Stvara se novi Hostapd proces koji stvara pristupnu točku sukladno postavkama iz datoteke „hostapd.conf“ opisane ranije.

3. Jednom kada je pristupna točka podešena, ispisuje se poruka koja govori da je sada potrebno spojiti klijenta (uređaj koji se ispituje) na pristupnu točku bežičnim putem i da klijent mora svoju IP adresu dohvaćati putem DHCP protokola.

4. Skripta periodički ponovno postavlja broj paketa PN na početnu vrijednost. Ovaj je korak korišten kao dio ispitivanja ranjivosti grupnog ključa koji se neće detaljno obrađivati u okviru ovog rada.

5. Prilikom spajanja klijenta ispisuju se poruke o uspješnosti provođenja IEEE 802.11 koraka autentifikacije i asocijacije opisanih ranije.

6. Pristupna točka putem DHCP protokola klijentu pridjeljuje vlastitu IP adresu kako bi se mogao identificirati na podmreži na kojoj se nalazi.

7. Skripta komunicira sa pokrenutom instancom Hostapd procesa i šalje naredbu za ponovnim slanjem poruke 3 rukovanja sa četiri poruke kojom se želi izazvati ponovna instalacija kriptografskih ključeva na strani klijenta kao što je to opisano ranije. Program Hostapd je izmijenjen na način da zanemaruje ili odbacuje 4. poruku rukovanja kako rukovanje ne bi završilo prije ispitivanja.

8. Ukoliko je klijent ranjiv, ispisuje se poruka s informacijama koji se inicijalizacijski vektor ponovio i koji se sekvencijski broj koristio.

77

Slika 9.12: Pokretanje skripte za ispitivanje ranjivosti klijenta

Kako bi se uvjerili da program uistinu radi, koristili smo virtualni stroj sa instaliranim operacijskim sustavom Kali Linux kako bi pomoću programa Wireshark mogli dohvatiti mrežni promet koji se prenosi između klijenta i pristupne točke. Kao potvrdu da skripta uistinu radi ispravno, u snimljenom je prometu potrebno pronaći dva paketa koji imaju jednak inicijalizacijski vektor. Slike ispod prikazuju dva različita paketa sa dva različita sekvencijska broja ali sa istim inicijalizacijskim vektorom što dokazuje ispravnost rada programa.

78

Slika 9.13: Paket sa inicijalizacijskim vektorom 1 i sekvencijskim brojem 2

Slika 9.14: Paket sa inicijalizacijskim vektorom 1 i sekvencijskim brojem 17

79

9.5 Ispitivanje rada vlastite implementacije

9.5.1 Uvod

Prije pokretanja vlastite implementacije potrebno je podesiti sustav na jednak način kao što je to učinjeno u ispitivanju istraživačeve implementacije. Postavke koje se ponavljaju pripadaju slijedećim potpoglavljima ispitivanja ispitivačeve implementacije:

1. Onemogućavanje sklopovske enkripcije. 2. Prevođenje Hostapd datoteka u izvršni program. 3. Podešavanje mrežnog adaptera koji se koristi kao pristupna točka. 4. Podešavanje konfiguracije hostapd programa. 5. Podešavanje virtualnog stroja za prikupljanje podataka poslanih bežičnim putem.

9.5.2 Pokretanje programa za ispitivanje ranjivosti i rezultati

Python skripta za ispitivanje zove se „k_test_client.py“ i pokreće se naredbom: „sudo python k_test_client.py“ iz naredbenog retka. Prilikom pokretanja, program za ispitivanje stvara novu instancu procesa pristupne točke Hostapd. Klijent se, kada mu je mreža vidljiva, spaja na pristupnu točku. Slika 64 prikazuje izvođenje skripte nakon klijentskog spajanja na stvorenu pristupnu točku. Ukratko, ono što se događa kada se skripta pokrene je slijedeće:

1. Za rad skripte potrebne su administratorske ovlasti pa je pri pokretanju potrebno upisati administratorsku lozinku.

2. Stvara se novi Hostapd proces koji stvara pristupnu točku sukladno postavkama iz datoteke „hostapd.conf“ opisane ranije.

3. Jednom kada je pristupna točka podešena, ispisuje se poruka koja govori da je sada potrebno spojiti klijenta (uređaj koji se ispituje) na pristupnu točku bežičnim putem (DHCP u ovom slučaju nije potreban).

4. Prilikom spajanja klijenta ispisuju se poruke o uspješnosti provođenja IEEE 802.11 koraka autentifikacije i asocijacije opisanih ranije.

5. Program za ispitivanje komunicira sa pokrenutom instancom Hostapd procesa i šalje naredbu za ponovnim slanjem poruke 3 rukovanja sa četiri poruke kojom se želi izazvati ponovna instalacija kriptografskih ključeva na strani klijenta kao što je to opisano ranije.

6. Ukoliko je klijent ranjiv, ispisuje se poruka s informacijama koji se inicijalizacijski vektor ponovio i koji se sekvencijski broj koristio, kao i vrijeme kada su ti podaci bili primljeni.

80

Slika 9.15: Program za ispitivanje dojavljuje stanje o ranjivosti klijenta

81

Slika 9.16: Okvir sa IV=1 i SN=2

82

Slika 9.17: Okvir sa IV=1 i SN=3

Prilikom pokretanja programa, kao što je to vidljivo na slici 9.15, program dojavljuje da je klijent ranjiv jer pe prepoznao da se inicijalizacijski vektor sa vrijednošću 1 pojavljuje ponovno u okviru sa različitim sekvencijskim brojem od prethodnog. Kako bi to mogli provjeriti, paralelno sa pokrenutim programom za ispitivanje potrebno je pokrenuti i Wireshark program za praćenje prometa između klijenta i pristupne točke. Slika 9.16 prikazuje prvi okvir sa vrijednosti inicijalizacijskog vektora 1 i vrijednosti sekvencijskog broja 2, a slika 9.17 prikazuje drugi okvir, sa vrijednošću inicijalizacijskog vektora 1 i sekvencijskog broja 3. Ovime smo utvrdili ispravnost rada programa.

83

10. Zaključak

Ranjivost KRACK samo je jedna od ranjivosti koje pokazuju što može poći po zlu ukoliko se sigurnosni protokoli ne specificiraju dovoljno precizno ili ukoliko se zanemare neki detalji implementacije protokola. Ovo je samo jedan u nizu primjera koji pokazuju kako implementacija sigurnosnih protokola nije trivijalna i da se implementacija vlastitih sigurnosnih mehanizama nikako ne preporučuje bez naknadnih, opsežno provedenih ispitivanja sigurnosti sustava. Sa pozitivne strane, iskorištavanje ove ranjivosti najčešće nije dovoljno kako bi se uspio kompromitirati cijeli računalni sustav jer se ranjivost odnosi samo na mehanizme sloja podatkovne poveznice OSI modela, međutim, postojanjem ove ranjivosti odstranjuje se jedan sigurnosni sloj mrežnog sigurnosnog stoga te se sigurnost prometa mora oslanjati na mehanizme viših slojeva OSI modela kao što su SSL/TLS te na sigurnosne mehanizme aplikacijskog sloja. Računalna komunikacija mogla bi postati kompromitirana ukoliko se na višim slojevima OSI modela ne primjenjuju nikakvi sigurnosni mehanizmi, na primjer: Unutar neke tvrtke nalaze se zaposlenici od kojih neki mogu biti zlonamjerni. Ukoliko tvrtka koristi vlastitu implementaciju nekog internog chat programa za komunikaciju među zaposlenicima, te ako ta aplikacija ne implementira neke sigurnosne mehanizme viših slojeva OSI modela, a sustav je podložan KRACK ranjivosti, maliciozni bi zaposlenici mogli osluškivati promet na mreži unutar tvrtke i otkriti potencijalno osjetljive informacije.

Ranjivosti ove vrste posebno su opasne iz razloga što ih nije jednostavno ispraviti jer se efekt neutralizacije ranjivosti postiže samo u slučaju kada svi čvorovi u mreži raspolažu sa ispravnom implementacijom protokola WPA2, međutim kako bi ti čvorovi mogli i dalje komunicirati, potrebno je ranjivost ispraviti u svakoj implementaciji tog protokola na svakome čvoru, što može predstavljati izazov. Najjednostavniji i najsigurniji način ispravka ovakve ranjivosti je definiranje novog protokola koji zamjenjuje protokol WPA2, a upravo to postiže novi WPA3 protokol. Neke od prednosti novog protokola WPA3 su: Omogućuje korisnicima da koriste manje složene i lako pamtljive lozinke, omogućuje otpornost na van mrežne napade rječnikom kod kojih napadač nastoji otkriti lozinku mreže brute-force pristupom prilikom kojeg ne mora imati daljnje interakcije s mrežom, također, jedna od velikih prednosti je što osigurava sigurnost prometa poslanog prije probijanja sigurnosti sustava, pa je tako sav prethodno poslani promet (poslan do trenutka otkrivanja lozinke) siguran iako se lozinka otkrije. Početak procesa tranzicije na WPA3 protokol predviđen je za 2018. godinu.

84

11. Literatura

[1] Vibhuti S., IEEE 802.11 WEP (Wired Equivalent Privacy) Concepts and Vulnerability, Srpanj 2018., dostupno na https://pdfs.semanticscholar.org/beb2/90fb1db86715c5ddb256245bff2ca1bb1dec.pdf

[2] Blank A., WEP Vulnerabilities and Attacks, Srpanj 2018., dostupno na https://pdfs.semanticscholar.org/8aeb/2a27abc2a1d0a8b71047606fbeec0f711e03.pdf

[3] IEEE Computer Society, IEEE Standard for Information technology – Telecomunications and information exchange between systems – Local and metropolitan area networks – Specific requirements: Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications

[4] Prodanović R., Simić D., A Survey of Wireless Security [5] P. Elio, SANS Institute InfoSec Reading Room: 802.11i (How we got here and where are

we headed, 21. Kolovoza 2004. [6] CWNP, 802.11 MAC Series – Basics of MAC Architecture, Srpanj 2018, dostupno na

https://www.cwnp.com/802.11-mac-series-ndash-basics-mac-architecture-ndash-part-1-3/

[7] Cisco Meraki, 802.11 Association process explained, Srpanj 2018., dostupno na https://documentation.meraki.com/@api/deki/pages/2110/pdf/802.11%2bAssociation%2bprocess%2bexplained.pdf?stylesheet=default

[8] Nakhila O., Parallel Active Dictionary Attack on WPA2-PSK Wi-Fi Networks, Srpanj 2018., dostupno na http://www.cs.ucf.edu/~jinyier/papers/MILCOM15.pdf

[9] Jyh-Cheng Chen, WIRELESS LAN SECURITY AND IEEE 802.11I, Srpanj 2018., [10] Changhua He, Security Analysis and Improvements for IEEE 802.11i, Srpanj 2018., [11] Mathy Vanhoef, Key Reinstallation Attacks: Forcing Nonce Reuse in WPA2, Srpanj

2018., dostupno na https://papers.mathyvanhoef.com/ccs2017.pdf [12] Mathy Vanhoef, Advanced Wi-Fi Attacks Using Commodity Hardware, Srpanj 2018.,

dostupno na https://people.cs.kuleuven.be/~mathy.vanhoef/papers/acsac2014.pdf [13] Mathy Vanoef GitHub, Srpanj 2018., dostupno na

https://github.com/vanhoefm/krackattacks-scripts [14] Python Scapy GitHub, Srpanj 2018., dostupno na https://github.com/secdev/scapy [15] Kali Linux, Srpanj 2018., dostupno na https://www.kali.org/downloads/ [16] Virtualbox, Srpanj 2018., dostupno na https://www.virtualbox.org/ [17] Kali Linux Virtualbox Download, Srpanj 2018., dostupno na https://www.offensive-

security.com/kali-linux-vm-vmware-virtualbox-hyperv-image-download/ [18] eTutorials, How CCMP Is Use din RSN, Srpanj 2018., dostupno na

http://etutorials.org/Networking/802.11+security.+wi-fi+protected+access+and+802.11i/Part+II+The+Design+of+Wi-Fi+Security/Chapter+12.+AES+CCMP/How+CCMP+Is+Used+in+RSN/

[19] RadioTap, Srpanj 2018., dostupno na https://www.radiotap.org/ [20] Ihonen Marko., 802.11 security protocols., dostupno na

http://edu.pegax.com/lib/exe/fetch.php?media=secc:seminar_report_802.11_protocols_ver.1.0_final.pdf

[21] Disha, Sukhwinder Sharma., Comparison of Wireless Security Protocols (WEP and WPA2)., dostupno na https://www.ijccr.com/November2012/9.pdf

[22] Muhammad Noman Riaz., Classification of Attacks on Wireless Sensor Networks: A Survey., Prosinac 2018., dostupno na

86

Napad ponovnim dogovaranjem ključa u protokolu WPA2

Sažetak

Sigurnosni protokoli za zaštitu bežične komunikacije temelj su sigurnog načina prijenosa informacija i osiguravaju da osjetljivi podaci ne dođu u ruke zlonamjernih aktera koji bi ih mogli zlorabiti i potencijalno nanijeti štetu organizacijama, koristiti ih za stjecanje financijske dobiti, koristiti ih kako bi došli do drugih osjetljivih informacija ili njima pristupati resursima sa ograničenim pristupom. U ovome su radu opisani sigurnosni mehanizmi za zaštitu privatnosti komunikacije na sloju podatkovne poveznice OSI modela. Analiziran je protokol WPA2 i opisana je ranjivost ponovnim dogovaranjem ključa. Ostvaren je i opisan program za ispitivanje postojanja te ranjivosti.

Ključne riječi: mrežna sigurnost, protokol WPA2, napad ponovnim dogovaranjem ključa

WPA2 Key Reinstallation Attack

Abstract

Security protocols for the protection of wireless communication are the foundation for a secure way of transmitting information and ensuring that sensitive data does not come into the hands of malicious actors that could abuse them and potentiallly cause damage to organziations, use them for financial gain, use them to collect other sensitive data or use them to gain access to resources with limited access. This paper describes security machanisms employed for the protection of privacy of communication under OSI model's data link layer. WPA2 protocol is analyzed as well as the description of WPA2 key reinstallation attack. Program for testing the existence of said vulnerability is implemented and described.

Keywords: network security, WPA2 protocol, key reinstallation attack