Wifi elleni támadások

A IT Biztonság kurzus wikiből


Az itt szemléltetett támadási technikák nem minősülnek oktatási anyagnak. Mindenki csak saját felelősségre használja, és csak olyan eszközökön, ami a saját tulajdonában áll. A rendszerekbe való betöréseket a törvény szigorúan bünteti!


WiFi adattitkosítás

A WiFi a Wireless Fidelity rövidítése, amely a 802.11 szabványra épülő technológiák neve. A WiFi képes eszközök rádióhullámon kommunikálnak egymással, például 2,4GHz-n vagy 5GHz-n. Ezen hálózatok esetében fontos szempont, hogy a csatlakozás valamely titkosítási algoritmussal történjen. Ez meggátolja az engedély nélküli hozzáférést az elérési pontokhoz (továbbiakban router) és véd a lehallgatástól is. Míg a vezetékes hálózati kommunikációt lehallgatni sokkal körülményesebb, úgy a vezeték nélküli routerek, levegőben sugárzott rádióhullámai miatt minden WiFi képes eszköznek publikus. Titkosítás nélkül tehát könnyű lenne beleolvasni a hálózati kommunikációba, és így szenzitív adatokhoz jutni.


WEP (Wired Equivalent Privacy):

Ez volt az első titkosítási módszer, melyet a WLAN-ok esetében alkalmaztak. Ez az RC4 adatfolyam titkosítót alkalmazza, az adatok sértetlenségére pedig a CRC32 ellenőrző összeget használja. Ez az alap titkosítás egy 40 bites kulcsból áll, melyet összefűznek egy 24 bites inicializáló vektorral (IV), így megkapjuk a 64bites kulcsot. Azonban az IV nincsen titkosítva, és egy idő után a WEP kénytelen ugyanazt a kulcsot használni. Ezt kihasználva a támadó a hálózatot elkezdheti egy úgynevezett ARP-visszajátszásos támadással bombázni, ami növeli ezeknek az inicializáló vektoroknak a számát, így kényszerítve, hogy egy kulcsot többször felhasználjon. Kellő mennyiségű adat visszajátszása után pedig már könnyű kikalkulálni a WEP jelszót.


WPA/WPA2 (Wi-Fi Protected Access):

A Wi-Fi Protected access (WPA és WPA2) a vezeték nélküli rendszereknek a WEP-nél jóval biztonságosabb protokollja. Létrehozása azért volt indokolt, mert az elődjében felfedezett hibák és sérülékenységi pontok túlságosan kritikusnak minősültek. A WPA úgy lett kialakítva, hogy együttműködjön az összes vezeték nélküli hálózati illesztővel, de nem minden esetben működik együtt az első generációs vezeték nélküli elérési pontokkal (régi routereknél például). Az adattitkosítás szintén RC4 adatfolyam titkosítóval történik, 128 bites kulcs használatával, és egy 48 bites inicializáló vektorral. A lényeges fejlesztés itt a TKIP (Temporal Key Integrity Protokoll) bevezetése volt, amely dinamikusan változtatja az alkalmazott kulcsokat. Illetve egy jóval biztonságosabb üzenethitelesítési kód, az ún. "MICHAEL" algoritmusnak nevezett eljárás hivatott megelőzni a visszajátszásos támadás végrehajtását úgy, hogy tartalmaz egy keretszámlálót. A támadás sikeressége itt nagyban függ egy jó szótárfálj meglététől, és egy gyengén konfigurált hálózati eszköz célba vételétől is.


WPS (Wifi Protected Setup):

Ez egy olyan kényelmi szolgáltatás, ami elsősorban azok számára készült, akik nem jártasak a számítógépes hálózatok világában, valamint a hozzáférési pontok beállításában. Ennek a lényege annyi, hogy egy útválasztón található gomb lenyomásával egyszerűen csatlakozhatunk routerünkhöz, mindössze egy 8 számjegyű számot kell begépelnünk számítógépünkbe (ami az útválasztó hátulján van feltüntetve).


A következő pár példa képekkel és magyarázattal igyekszik illusztrálni a vezeték nélküli hálózatok jelszavainak "megszerzését":



Az első, és legfontosabb lépés, a vezeték nélküli hálózati kártyánk monitor módba való kapcsolása.

Ehhez kompatibilis chipsetek szükségesek, némely gyártó wlan kártyáját nem lehet ilyen célra használni, érdemes utánanézni az airckack oldalán.

Ezt az airmon-ng start wlan0 paranccsal kapcsoljuk be, ahol a wlan0 a vezeték nélküli hálózati kártyánk: 001.png



A következő lépés, hogy az újonnan létrehozott monitor módbeli interféssszel (mon0) halgassunk bele a „levegőbe”.

Tehát a közelben lévő WiFi hálózatokat fogjuk felderíteni név, titkosítás, jelerősség és még egy jópár információ szerint.

Ehhez az airodump-ng mon0 parancsot írjuk be:

002.png



A felálított teszt routerünk az 1-es csatornán figyel, IT_Biztonsag2_WEP néven.

Továbbá a router MAC címe is látható, ez is elengedhetetlen információ lesz a támadás elkezdéséhez.

Válasszuk ki a célpontot, majd az airodump-ng –bssid 00:25:86:CE:C2:C0 –c 1 –w wifidump mon0 paranccsal mentsük fájlba az „elkapott” csomagokat a –w kapcsolóval.

Továbbá rászűrünk a csatornára (-c) és a MAC címre is (--bssid), így a felesleges információt, amit a többi Access Point sugároz, figyelmen kívül hagyjuk: 003.png



Elkezdtük lementeni a csomagokat, ezt a konzolablakot ne is piszkáljuk többet, hadd végezze a dolgát.

A következő parancsot egy új terminálablakba írjuk be: aireplay-ng -1 0 –a 00:25:86:CE:C2:C0 mon0

Ezzel egy „fake”, azaz nem valós kapcsolódást végzünk a routerrel. Azért nem valós, hiszen a jelszót nem írtuk be, mégis asszociáltunk, de ez nem jelent valós hálózati kommunikációt is.

Viszont elég ahhoz, hogy majd tovább léphessünk:

004.png



Egy mosoly jelzi a sikeres folyamat végét, és mint látni a háttérben, megjelenik a WiFi interfészünk MAC címe a csatlakozott kliensek listájánál (STATION).

Most pedig generáljunk ARP csomagokat. Ez ahhoz kell, hogy adatcsomagokat generáljunk, és sikeresen visszafejtsük a jelszót.

Az adatcsomagokat a #Data oszlop jelzi. A parancs beírásával aireplay-ng -3 –b 00:25:86:CE:C2:C0 mon0 Arp-visszajátszásos támadást (ARP-replay-t) indítunk a router ellen: 005.png



Látszólag nem történik sok minden, a #Data nullán, az Arp-replay pedig csak számlálja a csomagokat, de nem történik semmi érdemleges.

Ez azért van, mert a kommunikáció során nem volt ARP csomag a hálózaton. Tehát addig kell várni, míg egy legit kliens (helyes jelszóval) csatlakozik a routerhez.

Ez lehet akár perceken belül, de az is lehet, hogy napokig nem csatlakoznak, türelem kérdése. A szimuláció gyorsítása érdekében egy mobil eszközzel imitáltam a legit felhasználói csatlakozást, lássuk mennyiben változott a kimenet: 006.png



A csatlakozás sikeres volt, ahogyan azt a növekvő #Data szám és ARP requests is jelzi. Innentől nincs más dolgunk, mint kivárni, míg 50-60 ezer csomag összegyűlik.

A csomaginjektálás gyorsasága a hálózatba egyenesen arányos a router távolságától, tehát minél közelebb vagyunk hozzá, annál gyorsabb. Hagyjuk dolgozni ezt az ablakot, nyissunk egy újat és írjuk be a következőt:

aircrack-ng wifidump-01.cap Ahol magát a jelszótörő programot hívjuk meg a kimenő file paraméterrel, amibe ezeket a visszajátszott csomagokat mentjük (Az airodump-ng segítségével) 007.png



Ha minden lépést helyesen csináltunk, és kellő mennyiségű adatcsomagot gyűjtöttünk össze, akkor visszakapjuk a jelszót hexadecimális illetve ASCII formában is.

Ezekre a lépésekre már megannyi automatizált program fellelhető az interneten, nem szükséges kézzel mindent nekünk begépelni.

Amolyan „nagy piros gomb megnyomása” effektus, és már kezdődik is a jelszótörés. A másik gyakori WiFi titkosítás, ám ennek törése ellen már könnyebb védekezni, a WPA/WPA2.

Itt egy jó szótárfálj tulajdonában, és egy kellően gyengén beállított routert megcélozva érhetünk el sikereket.

Az első pár lépés itt is ugyan az, mint az előző esetekben, tehát kezdjük is el ott, ahol már csak a célpontra koncentrálunk:

airodump-ng –bssid 00:25:86:CE:C2:C0 –c 1 –w wifidump2 mon0 : 008.png



A kimenet hasonló, mint előbb, de itt a titkosítás már WPA2, ahogyan azt az ENC oszlop is mutatja. Plusz annyi változás, hogy itt már van egy rácsatlakozott legit kliens is, aki forgalmat generál.

A feladatunk annyi lenne, hogy egy úgynevezett négylépéses kézfogást kell elkapnunk (four-way handshake).

Ezt úgy tudjuk megszerezni, ha elkapunk egy olyan pillanatot, amikor a kliens csatlakozik az access pointhoz, és megtörténik a kézfogás.

Ehhez most úgynevezett „lekapcsoló” csomagot kell küldeni a routernek, ami megszakítja a kapcsolatot közte és a rácsatlakozott klienssel(/ekkel).

A lecsatlakozás után a kliens megpróbál (és nagy eséllyel sikerül is) visszacsatlakozni, ekkor kapjuk el a kézfogást.

A de-authentikációhoz a következő parancsot kell begépelni egy új konzolablakba:

aireplay-ng –deauth 0 –a 00:25:86:CE:C2:C0 mon0 : 009.png



Ha ez sikerült, akkor már csak meg kell várni, míg a jobb felső sarokban megjelenik, hogy megvan a handshake, ekkor ki is lőhetjük a kényszerített lecsatlakozást.

Ez pedig valahogy így néz ki:

010.png



Ha megvan a kézfogás, akkor már csak rá kell ereszteni a „capture” fájlra a szótárat

(az itt használt szótár egy saját készítésű, évek alatt összeszedett gyakori magyar, angol, kombinált jelszavak gyűjteménye, ami kifejezetten WiFi sérülékenységekhez készült, tehát minimum 8 karakter hosszúak és kb. 100ezer soros)

aircrack-ng –w common.txt wifidump2-01.cap :

011.png



A törés sebessége függ a CPU sebességétől. Fontos megjegyezni, hogy ha egy betű eltérés is van a szótárban lévő és a valódi jelszó között, akkor már sikertelen a törés.

Mind a BackTrack mind a Kali Linux operációs rendszerek rendelkeznek előre beépített szótárfájllal, de a tapasztalatok szerint abban kevésbé vannak magyar gyakoriságú jelszavak.

Mindenesetre egyszer érdemes végig próbálni azzal is.

A harmadik említésre méltó vezeték nélküli támadási módszer a PIN bruteforce. Ez egy viszonylag friss sérülékenység, 2011 decemberében fedezte fel a hibát Stefan Viehböck,

miszerint a 8 jegyű PIN kód feltöréséhez, ami a routerhez csatlakozást segíti elő nem kell 10^8-on próbálkozást megtenni (=100.000.000) , hanem elég csak 20.000. Hogy miért?

Mert ha a pin kód első fele (4 számjegy) nem jó, akkor a router egy üzenetet küld vissza a kliensnek. Ehhez tehát az első négy számjegy megfejtéséhez csak 10^4 (= 10.000) próbálkozás kell,

ha ezt sikerül megfejteni, akkor pedig a 8 jegyű pin kód második 4 számjegyéhez is elég csak 10.000 próbálkozás. Ez összesen tehát 20.000 számkombináció

(ráadásul az utolsó számjegy csak egy ellenőrző összeg, tehát valójában 11.000 próbálkozásból visszafejthető a jelszó.)

Ez körülbelül 2 és 10 óra között mozog, függ a pin / másodperc próbálkozás gyorsaságától, és a router messzeségétől.

Az első lépés itt is a monitor mód előkészítése, utána pedig felderítjükj a WPS-képes routereket:

wash –i mon0 :

012.png



Kiválasztva az előre felállított teszt routert, kezdjük el a támadást az alábbi paranccsal:

reaver –i mon0 –b 74:EA:3A:BA:A1:BC :

013.png



Némely router korlátozza a PIN próbálkozások számát adott sikertelen kísérlet után, olyankor a támadás megszakadhat, ez gyártófüggő.

A példában előre beállított PIN szerepel, amit hamar sikerül is ’feltörni’: 014.png


Ilyenkor nem számít a jelszó bonyolultsága illetve hosszúsága, ha a PIN számsor megvan, akkor a routerhez való jogosultságunk is.

Ez volna a 3 leggyakoribb támadás vezeték nélküli hálózatok ellen, szerencsére a WEP titkosítások száma mára eléggé lecsökkent a pár évvel ezelőtti statisztikához képest.

Ezen felül vannak még WiFi fuzzerek, Denial of Service támadások, amik nem kifejezetten a belépéshez szolgáló jogosultságot vélik támadni, hanem inkább a szolgáltatás megtagadását,

összezavarását okozzák, a felhasználók „nem nagy örömére”.