Institute of Computer Science
  1. Courses
  2. 2017/18 spring
  3. Computer Security (LTAT.06.002)
ET
Log in

Computer Security 2017/18 spring

  • Pealeht
  • Loengud
  • Praktikumid
  • Referaat
  • Kirjandus
  • Uudised
  • Lingid

WiFi turvalisus

Sissejuhatus

WiFi puhul on tegemist juhtmevaba ühendusega ning seetõttu on kõik osapoolte vahel liikuvad paketid loetavad mitte ainult osapoolte poolt vaid kõigi poolt, kes piisavalt lähedal on. Siiski on oluline tähele panna, et suur osa pealtkuulajale nähtavatest pakettidest on krüpteeritud. Wifi ruuterid võimaldavad kasutada turvaprotokolle WEP, WPA ja WPA2. WEP on neist valikutest kõige ebaturvalisem, sest vastavas protokollis leidub viga, mis võimaldab kiiresti leida WEP parooli. WPA ja WPA2 pakuvad kõrgemat turvataset, kuid mõlemal juhul sõltub turvatase kasutatava parooli keerukusest. Tavakasutajate jaoks töötavad WPA ja WPA2 PSK (pre-shared key) režiimis, mis tähendab seda, et sessiooni võti luuakse WiFi parooli põhjal. Antud praktikumis murrame lahti WEP, WPA/PSK, WPA2/PSK ning vaatame, kuidas leitud parooli abil on võimalik liiklust dekrüpteerida.

NB1! Enne praktikumi juurde asumist on soovitatav üle lugeda juhtmevaba andmesidet puudutab artikkel Eestikeelses Vikipeedias.

NB2! Veendu et sinu VirtualBox on uuendatud versioonile 5.2.8 ja paigaldatud on ka VirtualBox 5.2.8 Oracle VM VirtualBox Extension Pack .

Ettevalmistus

Selleks, et saaksime oma WiFi kaardiga lugeda ka teistele mõeldud võrgupakette, tuleb see panna spetsiaalsesse kuulamisrežiimi (monitor mode). Kõik WiFi kaardid ning operatsioonisüsteemid vastavat režiimi ei toeta ning seepärast tuleb enne WiFi kaardi ostmist vastava funktsionaalsuse olemasolu kindlaks teha. Meie kasutame praktikumis TP-link TL-WN722N v1 USB WiFi kaarti, millel on Atheros kiip, sest uuemates Linuxites toetab selle draiver (ath9k_htc) ka monitor mode.

Praktikumiülesannete tegemiseks kasutame Kali Linuxit, mis juba sisaldab praktikumis vajaminevat tarkvara. Praktikumijuhendajad soovitavad kasutada arvutiklassi arvuteid sarnaselt eelmisele ülesandele, kus tuleks valida Võrgutehnoloogia OS ja seal import Kali. Kali oleme varasemalt arvutitesse kopeerinud arvuti sekundaarsele kettale D: või O:. Kui soovite kasutada isiklikku arvutit oleme KALI ova ka USB pulkadele kirjutanud, et te saaksite selle otse USB pulgalt oma arvutisse kopeerida. Küsi praktikumijuhendajalt praktikumiülesannete lahendamiseks vajaminevat USB pulka koos tarkvaraga ning WiFi kaarti. Kopeerige USB pulgalt Kali Linux OVA oma arvutisse ja importige virtuaalmasin.

Oodake kuniks virtuaalmasin on täielikult käivitunud ja kontrollige, et pääsete internetti (ping või siis näiteks avage FireFox ja avage seal veebileht http://courses.cs.ut.ee.

Nüüd minge virtuaalmasina USB seadetesse ja lisage uus Filter (kõige ülemine sinine punktiga USB märk). Linux host kasutajad peavad lisaks enda kasutajanime lisama gruppi vboxusers: sudo usermod -a -G vboxusers <username>.

Alles nüüd ühendage TP-link TL-WN722N v1 USB WiFi kaart arvuti USB seadmesse. Nüüd ühendatakse USB seade host masina (Windows) asemel virtuaalmasina (Kali) külge.

Järgmiseks kontrollige, kas WiFi kaart tunti ära järgmiste käskudega:

 # dmesg
 # lsusb
 # iwconfig

Kui see väljund näitab vähemalt ühte wlan liidest, siis on korras. Liidese nime, milleks tõenäoliselt on wlan0, jätame meelde edaspidiseks.

WiFi ettevalmistus ja pealtkuulamine

Võrgupakkettide pealtkuulamiseks tuleb WiFi kaart panna kuulamisrežiimi (monitor mode), aga enne on soovitatav kinni panna teised teenused, mis WiFi kaarti kasutavad.

 # airmon-ng check kill

WiFi pealtkuulamiseks on vaja teada WiFi kanali numbrit, mis näitab, millisel sagedusel kuulata tuleb. Õige kanali leidmiseks tuleb ümberkaudseid WiFi tugijaamu skaneerida ja kuvatast infost leida otsitava ruuteri (AP = access point) poolt kasutatav kanali number:

 # ifconfig wlan0 up
 # iw dev wlan0 scan

Kuna eelmise käsu väljundis on liiga palju infot siis võime sealt grep tööriistaga eemaldada üleliigse.

 # iw dev wlan0 scan | grep Andmeturve -B 8 -A 4

Monitor mode saab tööle panna järgmiselt (selle käsu tulemusena luuakse uus liides wlan0mon:

 # airmon-ng start wlan0 <kanali number>
 # iwconfig

Kui airmon-ng ütleb, et mingid käivitatud programmid või teenused võivad edaspidist tööd häirida, siis tuleks need võimalusel kinni panna. Käivitades tekitab airmon-ng uue virtuaalse liidese, mis on monitor mode's, tõenäoliselt on selle nimeks meil wlan0mon.

Monitor mode saab peatada järgmiselt:

 # airmon-ng stop wlan0mon

Juhul kui käsk iw dev wlan0 scan annab praktikumi tehes veateate, siis taaskäivitage vastav liides. Seda saab teha järgnevate käskudega:

 # ifconfig wlan0 down
 # ifconfig wlan0 up

Tänases praktikumis on vaja teada ka levinud WiFi kanaleid ja nende paiknemist.


WiFi kanalid (Allikas: Wikimedia Commons)

WEP murdmine

Kuna WiFi liiklust on imelihtne pealt kuulata, siis peaks lõppseadme ja WiFi tugijaama vaheline liiklus olema kindlasti krüpteeritud. Üks esimesi selleks otstarbeks mõeldud algoritme oli WEP (Wired Equivalent Privacy), mis kasutab 40 või 104-bitised võtmeid. Praeguseks on WEP algoritmis avastatud mitmeid turvaauke, mis muudavad selle kiiresti murtavaks. Seetõttu WEP enam kasutada ei tohiks.

Praktikumis on üles seatud WEP krüpteeringut kasutav WiFi tugijaam nimega Andmeturve-WEP, mille parooli teie ei tea.

Automatiseeritud WEP rünne

WEP ründamiseks kasutame tarkvara wifite, aga enne selle kasutamist tuleb wifite koodi modifitseerida. Wifite tarkvara on veidi vigane ja pärast googeldamist ja veateatesse süvenemist selgub, et tarkvara küsib valesti kasutatava võrgukaardi MAC aadressi. [https://github.com/Akash786mrn/wifite/issues/82] ja [https://stackoverflow.com/questions/159137/getting-mac-address]. Seetõttu peame tarkvaras vea ära parandama.

 # whereis wifite
 # nano /usr/bin/wifite

avanenud aknas vajutada CTRL + w ja sisestada return mac -> ENTER. Nüüd olete koodis õiges kohas ja peate ära muutma koodiosa mis tagastab võrgukaardi MAC aadressi (NB! Olge eriti hoolas seda faili muutes ja lugege mida kus muutma peate!).

Ehk asendama ...

def get_mac_address(iface):
    """
        Returns MAC address of "iface".
    """
    proc = Popen(['ifconfig', iface], stdout=PIPE, stderr=DN)
    proc.wait()
    mac = ''
    first_line = proc.communicate()[0].split('\n')[0]
    for word in first_line.split(' '):
        if word != '': mac = word
    if mac.find('-') != -1: mac = mac.replace('-', ':')
    if len(mac) > 17: mac = mac[0:17]
    return mac 

sellega

def get_mac_address(iface):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    info = fcntl.ioctl(s.fileno(), 0x8927,  struct.pack('256s', iface[:15]))
    return ':'.join(['%02x' % ord(char) for char in info[18:24]]) 

Lisaks sellele tuleb lisada faili algusesse vajalike teekide import käsud. Selleks kirjutage faili algusesse (seal kus teisedki impordid ... pärast import abc ..) järgnev rida:

 
import fcntl, socket, struct 

Wifite käivitamiseks sisestage käsurealt käsk wifite. Pärast käivitamist küsib tarkvara, millist võrgukaarti kasutada. Sisestage õige võrgukaardi number ehk "1" või "2". Nüüd katkestab vastav tarkvara automaatselt kõik võrguühendustega tegelevad teenused ja käivitab teenused, mis võimaldavad WEP kaitstud WiFi ühendust rünnata. Järgnevalt kuvatakse tabel teie ümber olevatest WiFi võrkudest. Valige sealt õige WiFI võrk ja hakake seda ründama.

Praktikumi arvestus 1: Tehke ekraanipilt olukorrast, kus wifite on WEP parooli teada saanud. Pilt peaks sisaldama ka teie nime. Soovitame ekraanitõmmise tegemiseks Windows keskkonnas kasutada Snipping Tool nimelist tarkvara (WIN+R ja avanenud run aknasse kirjutage snippingtool). Kali virtuaalmasinas interneti kasutamiseks on teil vaja NetworkManager tööle panna: service NetworkManager start.

WPA/PSK murdmine

WPA/PSK korral sõltub ründe edukus kasutatava parooli keerukusest. Ründe jaoks on vaja pealt kuulata kliendi ja ruuteri vahelist sessioonivõtme kokkuleppimist. Selle info põhjal on võimalik sõnaraamaturünde abil leida kasutusel olev WPA parool. Rünnatava AP nimi on Andmeturve-WPA

Looge praktikumiülesannete jaoks /root kataloogi uus kaust ja siis liikuge vastavasse kausta:mkdir /root/praks9 ja cd /root/praks9.

Juhul kui te olete juba kuulamisrežiimi aktiveerinud, siis selle saate peatada käsuga:

 # airmon-ng stop wlan0mon

1. Leidke olemasolevate pääsupunktide (Access Point edaspidi AP) hulgast rünnatava AP BSS ja channel parameetrid (soovitatav on grep kasutamine koos parameetritega -B ja -A):

 # ifconfig wlan0 up
 # iw dev wlan0 scan 
 # iw dev wlan0 scan | grep Andmeturve -B 8 -A 4

2. Vajadusel tapke segavad protsessid ja käivitage monitor mode:

 # airmon-ng check kill
 # airmon-ng start wlan0 <WiFi kanali number>
 # iwconfig

3. Püüdke kinni WPA sessioonivõtme loomise käigus tehtud nn. käepigistus:

 # airodump-ng --bssid <AP bssid väärtus> -c <AP kanali number> -w cowpatty <monitooriva liidese nimi>
  • <AP bssid väärtus> - asenda BSS väärtusega iw dev wlan0 scan | grep Andmeturve -B 8 -A 4 käsu väljundis.
  • <AP kanali number> - asenda WiFi kanali numbriga vahemikus 1-14
  • <monitooritava liidese nimi> - NB! Kuulamise režiimis ei ole liidese nimi wlan0 vaid wlan0mon

Kui teil on handshake olemas võite programmist väljuda vajutades CTR+C

4. Vaadake olemasolevaid sõnastikke ja siis pakkige lahti operatsioonisüsteemiga kaasa tulnud sõnastik:

 # ls -l /usr/share/wordlists
 # gzip -d /usr/share/wordlists/rockyou.txt.gz

5. Üritage kinnipüütud WPA/PSK käepigistus sõnastiku abil lahti murda:

 # cowpatty -r /root/praks9/cowpatty-01.cap -f /usr/share/wordlists/rockyou.txt -s Andmeturve-WPA

NB! cowpatty-01.cap failinimi suureneb iga kord ühe võrra kui olete tarkvara uuesti tööle pannud. Valige õige järjekorra numbriga fail. Parool on valitud teadlikult lihtne ja see asub sõnastiku alguses, seega paroolide häkkimise protsess ei tohiks võtta kauem kui 10 sekundit (tuvastatakse esimese 10 000 parooli seast).

6. Praktikumi arvestus 2: Tehke leitud WPA paroolist ekraanitõmmis nii, et ekraanitõmmisel oleks nähtaval kohal teie nimi (Näiteks kirjutatud terminali aknasse).

WPA2/PSK murdmine

Samamoodi nagu WPA/PSK korral sõltub ka WPA2/PSK korral ründe edukus kasutatava parooli keerukusest. Ründe jaoks on vaja pealt kuulata kliendi ja ruuteri vahelist sessioonivõtme kokkuleppimist. Selle info põhjal on võimalik sõnaraamaturünde abil leida kasutusel olev WPA2 parool. Rünnatava AP nimi on Andmeturve-WPA2.

1. Leidke praktikumijuhendaja poolt eelseadistatud Andmeturve-WPA2 parool. Rünne on analoogne eelmise ründega, ainult seekord kasutame käsitsi koostatud sõnastikku (sest nägite kuidas sõber parooli sisestas ja teate et kasutusel olid ainult suured XYZW tähed ja esimene number pärast tähti oli 2 kuid teil ei jäänud tähtede ega viimaste numbrite järjekord meelde). Käsitsi ründamiseks vajaliku sõnastiku loomiseks sisestage käsk:

 # setxkbmap -layout ee
 # crunch 8 8 XYZW -t @@@@2%%% -d 1 -o custom_wordlist.txt
 # cat custom_wordlist.txt

Eelnev käsk tekitab teile kõik kaheksakohalised paroolid, mis kasutavad XYZW tähti parooli esimese 4 koha puhul ja siis tuleb fikseeritud number 2, millele järgnevad 3 kohta kõikvõimalikud numbrid 0-9. Juhul kui probleeme ei tekkinud, siis peaksite parooli teada saama maksimaalselt 10 sekundiga.

Praktikumi arvestus 3: Tehke leitud WPA2 paroolist ekraanitõmmis nii, et ekraanitõmmisel oleks nähtaval kohal teie nimi.

Krüpteeritud liikluse jälgimine

Enne krüpteerima asumist peaskime WiFi adapteri panema kuulamise režiimi. Asume pealt kuulama Andmeturve-WPA2 võrguliiklust.

 # airmon-ng start wlan0 10
  • Tehke kindlaks, et liides wlan0mon on seatud õigele AP kanalile. Vihje: abiks on käsk
 # iw dev

Võrgus liikuvate pakettide vaatamiseks kasutame programmi Wireshark:

 # wireshark

Kuulata tuleks liidest, mille airmon-ng tekitas (wlan0mon). Üritage aru saada, missugust liiklust suudab liides kinni püüda.

  • Aktiviseerige Wireless Toolbar: Wireshark -> View -> linnuke Wireless Toolbar ette.
  • Aktiveerige wlan0mon monitor mode: Wireshark -> Capture -> Options -> wlan0mon -> start -> uurige kuulatavaid pakette
  • Aktiviseerige inimloetav paketi info kuvamine: Wireshark -> View -> Name Resolution -> linnuke kõigi valikute ette
  • Ühendage klientarvuti (teie telefon või isiklik arvuti) Andmeturve-WPA2 võrku.
  • Aktiveerige wlan0mon monitor mode: Wireshark -> Capture -> Options -> wlan0mon -> start -> uurige kuulatavaid pakette
  • Wiresharkile võib parooli anda mitmel kujul wpa-pwd, seega meil on vaja parooli ja WiFi nime SSID põhjal arvutada turvavõti nimega wpa-psk. Seda saate teha siin lehel https://www.wireshark.org/tools/wpa-psk.html
  • Lisage Wireshark antud AP seotud liikluse dekrüpteerimise võimekus: Edit -> Preferences -> Protocols -> IEEE.802.11 -> Enable decryption ja siis sisestage vastava AP parool vastavalt juhendis olevale formaadile. Võtme tüübiks valige wpa-psk. Vajaliku info leiate siit https://wiki.wireshark.org/HowToDecrypt802.11
  • Lisage ka wpa-pwd võti kujul <parool>:<WiFi-nimi>
  • Lisage sobiv filter HTTP, et oleks võimalik AP samas võrgus olevat naabri HTTP liikust (või näiteks enda nutiseadet) jälgida.

NB! selleks et dekrüpteerimine edukas oleks peate kliendi uuesti WiFi külge ühendama, sest Wireshark vajab dekrüpteerimiseks ka võtme kokkuleppimise (handshake) pakette..

  • parem hiire klahv huvi pakkuva paketi peal näiteks meie POST päring ja valides Follow -> HTTP Stream saate näha kogu HTTP suhtlust käesoleva kliendi ja serveri vahel.
  • Praktikumi arvestus 4: Tehke ekraanitõmmis pealtkuulatud POST päringust http://andmeturvelab.appspot.com lehele, nii et teie ees- ja perenimi oleksid lahtrite väärtuseks. Samuti peaks olema ekraanitõmmiselt näha, et üks WiFi liides on lülitatud monitor mode. On oluline, et te kasutate http protokolli, mitte https-i.

PS! pärast ülesannete edukat lahendamist Interneti kasutamiseks on teil vaja NetworkManager uuesti tööle panna: service NetworkManager start.

Tagasiside

Praktikumi lõpus palume anda tagasisidet, sest see võimaldab meil antud praktikumi ja ka järgmisi praktikume paremaks muuta. Tagasiside on anonüümne ja tagasiside vormi leiate järgneva lingi abil: tagasiside ankeet.

Praktikumi ülesanded

Praktikumis osalemine annab teile 1 punkti ning ülesannete korrektne lahendamine (piltide esitamine) ühe punkti lisaks (kokku 2p). Praktikumi ülesanne võiks valmis saada praktikumi lõpuks, aga juhul kui see ei õnnestu, siis on võimalik lahendust esitada nädala jooksul praktikumi toimumisest.

  • Esitage lahendusena praktikumi jooksul tehtud ekraanitõmmised. Ekraanitõmmistel peaks olema kindlasti näha teie nimi.
  1. Eduka WEP ründe ekraanitõmmis, kus on näha WEP parooli (wifite tarkvara).
  2. Eduka WPA ründe ekraanitõmmis, kus on näha WPA parooli ja teie nime.
  3. Eduka WPA2 ründe ekraanitõmmis, kus on näha WPA2 parooli ja teie nime.
  4. Andmeturve-WPA2 dekrüpteerimise ekraanitõmmis, kus on näha HTTP POST päringut koos teie nimega ning seda, et üks WiFi liides on pandud monitor mode.
9. 9. WiFi turvalisus - praktikumi ülesanne
Solutions for this task can no longer be submitted.

Kodune ülesanne

Koduse ülesande lahendamine annab ühe punkti. Lahenduse esitamiseks on aega üks nädal ehk lahendus tuleks esitada järgmise praktikumi toimumise päeval. Küsimustele vastuste leidmiseks võib vaja minna lisamaterjalide, mille leiate allpool olevatest viidetest.

* Kas praktikumis läbi tehtud ründed toimiksid ka Eduroami vastu? Lisage põhjendus!

PS! Vastus peaks sisaldama:

  • Paarilauselist kirjeldust selle kohta, mis on eduroam
  • millist turvalisust TÜ eduroam kasutab;
  • analüüsi kas WiFi parooli oleks võimalik teada saada?
  • kui jah siis millise ründega (lisada link juhendile)
  • kui ei siis lisada link lehele, mis ütles, et see ei ole võimalik.
  • Kas eduroam liiklust saab pealt kuulata? Eeldusel et teil on isiklik eduroam kasutajatunnus/parool kas sellega saaks kaastudengi võrguliiklust pealt kuulata?

Koduse ülesande lahendus tuleks esitada aine kodulehelt. Lahendusi võtame vastu järgmistes failiformaatides: .txt, .pdf, .zip, .rar jne.

24. 9. eduroam - kodune ülesanne
Solutions for this task can no longer be submitted.

Lisamaterjalid

  • WEP
    • Wired Equivalent Privacy
    • Understanding WEP Weaknesses
  • WPA / WPA2
    • Wi-Fi Protected Access
    • Your Wi-Fi’s WPA2 Encryption Can Be Cracked Offline: Here’s How
  • WPS
    • Wi-Fi Protected Setup
    • We TOLD you not to use WPS on your Wi-Fi router! We TOLD you not to knit your own crypto!
  • Wireshark
    • How to Decrypt 802.11
  • WiFi levialade ja sageduste vaatamine Windowsis
    • inSSIDer inSSIDer 3.1.2.1 tasuta versioon
  • Ekahau HeatMapper (Map Wi-Fi Coverage and make it faster)

ammina]]

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment