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.
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äärtusegaiw 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
vaidwlan0mon
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
-> linnukeWireless 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 vajaparooli
ja WiFi nimeSSID
põhjal arvutada turvavõti nimegawpa-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 valigewpa-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 validesFollow
->HTTP Stream
saate näha kogu HTTP suhtlust käesoleva kliendi ja serveri vahel.
- Praktikumi arvestus 4: Tehke ekraanitõmmis pealtkuulatud
POST
päringusthttp://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.
- Eduka WEP ründe ekraanitõmmis, kus on näha
WEP
parooli (wifite tarkvara). - Eduka WPA ründe ekraanitõmmis, kus on näha
WPA
parooli ja teie nime. - Eduka WPA2 ründe ekraanitõmmis, kus on näha
WPA2
parooli ja teie nime. - Andmeturve-WPA2 dekrüpteerimise ekraanitõmmis, kus on näha HTTP POST päringut koos
teie nimega
ning seda, et üksWiFi
liides on pandud monitor mode.
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 ülesanneLisamaterjalid
- WEP
- WPA / WPA2
- WPS
- Wireshark
- WiFi levialade ja sageduste vaatamine Windowsis
ammina]]