Prolomení WPA/WPA2-PSK přes WPS snadno a rychle (praxe) | mrpear.net

Praktická ukázka prolomení WPA/WPA2-PSK přes slabinu WPS (Wifi Protected Setup) pomocí BackTrack Linux.

Zdroj: Prolomení WPA/WPA2-PSK přes WPS snadno a rychle (praxe) | mrpear.net

Prolomení WPA/WPA2-PSK přes WPS snadno a rychle (praxe)

BackTrack Linux 5 R3 - GNOME desktop

Zhruba před čtvrt rokem jsem tady na blogu nakousl problematiku prolomení WPA-PSK přes WPS a na závěr jsem slíbil praktickou demonstraci provedení útoku. Je na čase splnit slib a proto právě nyní píši tento příspěvek, ve kterém popíši použití několika běžně dostupných nástrojů k prolomení WPS a tím získání hesla k wifi síti zabezpečené pomocí WPA(2)-PSK. Myslím si, že pro spoustu z vás to bude mnohem příjemnější čtení, než teoretické plkání v článku předchozím ;).

UPDATE: Uzavřel jsem komentáře, protože názory začaly přerůstat spíše v diskuzní fórum s nádechem nejde se mi nabourat sousedovi na wifi, co s tím? Samozřejmě těm, kteří do diskuze přispěli s čistějšími úmysly tímto děkuji a případně se omlouvám za to, že již není možné na jejich příspěvky reagovat. Zároveň pro všechny s ne moc čistými úmysly musím bohužel pro vás konstatovat, že velmi úspěšně roste zabezpečení proti tomuto útoku a to díky přílivu nových routerů do domácností. Tyto routery používají tu nejjednodušší ochranu proti útoku hrubou silou a to že zamknou WPS po několika neúspěšných pokusech (dokonce na dobu rostoucí exponenciálně) a útok je tak v podstatě nereálný.

Na úvod samozřejmě musím začít tím, že provádět takovéto útoky na cizí sítě za účelem získat k nim přístup je silně neslušné a možná i něco víc. Proto zdůrazňuji, že následující postup píši hlavně pro ty, kteří si chtějí ověřit zabezpečení vlastní sítě a nebo chtějí upozornit na slabě zabezpečenou síť svého souseda. Zároveň je tento postup vhodný pro ty, kteří si chtějí ověřit teoretické znalosti získané v mém předchozím příspěvku.

Reklama

Předpoklady

K provedení úspěšného útoku budeme potřebovat následující věci:

Mít, resp. útočit na router s aktivím WPS je opravdu nutnost, protože útočíme na slabinu WPS, nikoliv WPA-PSK či WPA2-PSK.

UPDATE: BackTrack už není aktuální

…a nelze ho oficiální cestou stáhnout. Postup popsaný níže ale stále platí!

Nejlepší je přejít na Kali Linux, nabízí stejné nebo lepší nástroje. Kdo chce BackTrack 5, může využít torrent, kde tato distribuce bude určitě ještě dlouhou dobu ke stažení k dispozici.

Co získáme?

Pokud bude náš útok úspěšný, získáme přes slabinu WPS heslo k wifi síti, tedy část PSK z WPA(2)-PSK. Útok a jeho časová náročnost nemá vůbec žádnou souvislost s kvalitou použitého klíče (hesla), protože znovu opakuji, útočíme na WPS, nikoliv na WPA. Nadále platí, že WPA jako takové nelze prolomit jinak než hrubou silou a je tak teoreticky samo o sobě neprolomitelné v případě, že je heslo dostatečně silné.

Představení BackTrack Linux

BackTrack Linux bude náš hackovací nástroj (nikoliv háčkovací). Jedná se o speciální linuxová distribuci zaměřující se na bezpečnost s využitím hackingu. BackTrack Linux nabízí kompilaci nástrojů, pomocí kterých lze provádět útoky (hacking) a tím ověřovat úroveň zabezpečení testovaných obětí. Ačkoliv v distribuci použité nástroje pro hacking můžete získat i do kterékoliv jiné běžné linuxové distribuce (a možná i do Windows), v BackTrack Linux máte vše sladěno a připraveno pro snadné použití — o čemž se koneckonců sami za chvíli přesvědčíte.

Stažení a příprava

Aktuální verzi si můžete stáhnout vždy na stránce BackTrack Linux — downloads, v době psaní článku je aktuální verzí BackTrack 5 R3. Pokud distribuci ještě nemáte, začněte stahovat, přeci jen stáhnou 3GB dat není na chvilku. Velmi vhodné vzhledem k rychlosti je stahovat distribuci přes torrent (pozn.: alespoň po dlouhé době využijete torrent klienta pro něco, k čemu byl doopravdy stvořen ;)).

Ke stažení je na výběr několik kombinací hotových systémů — 32 a 64 bitové systémy a prostředí plochy (desktop environment) GNOME nebo KDE. Pokud nevíte o co jde, zvolte třeba GNOME a 32 bitovou variantu. GNOME preferuji já a veškeré ukázky tady budou právě z tohoto prostředí. 32 bitová varianta systému poběží na každém (i starším) stroji, zatímco 64 bitová verze má předpoklady být výkonnější než 32 bitová, ale poběží pouze na podporovaném hardware (architektuře) — nějakou dobu už jsou v podstatě všechny notebooky a PC na Intel platformě 64 bitové (x64).

K dispozici je ISO obraz a také obraz pro virtualizované prostředí (VMWare). Já preferuji ISO obraz, který fyzicky vypálím na DVD a z něj pak nabootuji hotový systém na nějakém notebooku, který mám zrovna k dispozici. BackTrack ve virtualizovaném prostředí jsem ještě nezkoušel, přeci jen se trošku bojím problémů s detekcí hardware.

BackTrack Linux se neinstaluje, je to live distribuce, která se spouští přímo z DVD a může se rovnou používat. Tedy přesněji řečeno, je to jeden z možných způsobů použití. Díky tomu lze distribuci spustit na téměř libovolném stroji bez dlouhých příprav.

Startujeme BackTrack Linux

Takže máme staženo a vypáleno, DVD vloženo v notebooku a startujeme.

Pokud je v mechanice vloženo DVD a notebook přesto startuje klasicky do běžného systému, tak zřejmě nemá nastaveno bootování z optické mechaniky. Většinou lze pořadí bootování jednorázově určit stiskem klávesy F12 při nabíhání BIOSu, popř. je nutné pořadí bootování změnit právě v nastavení BIOSu. Konkrétní nastavení se odvíjí od modelu notebooku.

Potvrzením (stiskem ENTER) prvních dvou boot-dotazů systém naběhne do textového režimu (příkazový řádek), ve kterém můžeme začít pracovat. Je ale vhodné vstoupit do grafického režimu a pracovat v okýnkách. Prostředí pracovní plochy spustíme zadáním příkazu:

startx

Po načtení pracovní plochy se ocitneme v příjemném prostředí, které nebude dělat problémy ani čistě Windows uživatelům.

BackTrack Linux 5 R3 - GNOME desktop
BackTrack Linux 5 R3 – GNOME desktop

I v prostředí GNOME ale budeme pracovat pouze s příkazovým řádkem. Výhodou oproti klasickému příkazovému řádku může být to, že si těchto oken můžeme otevřít hned několik. K otevření okna příkazového řádku použijeme horní lištu, kde je vedle nabídky System připraven zástupce pro jeho spuštění.

BackTrack Linux 5 R3 - příkazový řádek
BackTrack Linux 5 R3 – příkazový řádek

Hackujeme

Nyní nás čeká provedení samotného útoku. Pomocí pár utilit vytvoříme z wifi karty a našeho počítače penetrační nástroj.

Přepnutí wifi karty do monitorovacího režimu

Prvním krokem je přepnutí bezdrátové karty do monitorovacího režimu. K tomu použijeme utilitu airmon-ng a to v následující syntaxi:

airmon-ng start wlan0

BackTrack Linux 5 R3 - airmon-ng
BackTrack Linux 5 R3 – airmon-ng

Parametr wlan0 je označení fyzické wifi karty. Linux čísluje tyto karty od nuly, jedná se tedy o první kartu. Pokud je v systému více karet (například interní + přes USB), je možné parametr upravit na požadovanou hodnotu. Po provedení příkazu se vytvoří nový virtuální adaptér s označením mon0, se kterým budeme později pracovat.

Pozn.: Pokud chcete zobrazit seznam všech síťových karet v systému (včetně virtuálních), použijte příkaz ifconfig.

Získání informací o routeru

K samotnému útoku potřebujeme znát MAC adresu testovaného routeru, tedy fyzickou adresu tohoto zařízení. Pokud teď testujeme vlastní router, máme více možností, jak adresu zjistit. Nejjednodušší cesta je přes webové rozhraní routeru, popř. může být tato adresa vytištěna na některém z jeho štítků. Nezapomeňme ale, že většina routerů umožňuje MAC adresu změnit (většinou se klonuje z PC).

My si ale zahrajeme na opravdového hackera a potřebnou informaci si zjistíme pomocí utility airodump-ng. Skutečný hacker totiž většinou k routeru, na který útočí, nemá přístup.

airodump-ng mon0

Utilita akceptuje více parametrů, pro základní sken okolí ale stačí pouze předat označení adaptéru, který chceme použít. Všimněte si, že jsme použili již virtuální adaptér mon0.

airodump-ng
airodump-ng

Necháme airodump běžet nějakou chvíli, dokud se v seznamu neobjeví požadovaný router. Z výpisu je patrný SSID každé sítě (její název) a také MAC adresa zařízení. Jakmile vidíme požadovaný záznam, stiskneme Ctrl+C a vrátíme se tak zpět do příkazového řádku.

Zahájení brute-force útoku

V tuto chvíli máme všechny potřebné informace pro spuštění útoku. Na řadu přichází poslední utilita reaver, která provede samotný útok hrubou silou.

Za předpokladu, že MAC adresa našeho routeru je 11:22:33:44:55:66 a pro útok použijeme virtuální mon0 adaptér, pustíme reaver s následujícími parametry:

reaver -i mon0 -b 11:22:33:44:55:66 -vv

První dva parametry jsou zřejmé, poslední z nich -vv instruuje reaver, aby byl velmi výřečný (very verbose), což má za následek poskytnutí detailního výpisu na obrazovku během útoku.

Reaver - právě spuštěno
Reaver – právě spuštěno

Co když se útok nerozjede?

Pokud se po spuštění útoku začne objevovat následující hláška:

[!] WARNING: Failed to associate with 11:22:33:44:55:66 (ESSID: nazev)

Můžeme zkusit spustit v druhém okně příkazového řádku (terminálu) aireplay, který začne generovat provoz ve wifi síti a tím pomůže odstranit problém s asociací.

spustíme aireplay (první terminál)
#aireplay-ng mon0 -1 120 -a 11:22:33:44:55:66 -e název routeru (wifi sítě)

spustíme reaver (druhý terminál)
#reaver -i mon0 -A -b 11:22:33:44:55:66 -vv

Nepřehlédněte, že reaver dostal navíc parametr -A.

Pokud se útok zastaví ihned po úspěšné asociaci s routerem, tedy zůstane stát na této hlášce:

[+] Associated with 11:22:33:44:55:66 (ESSID: nazev)

není s největší pravděpodobností na routeru aktivní WPS (alespoň tak se u mě reaver v tomto případě choval). Můžeme ještě zkusit otestovat stav WPS pomocí utility wash:

wash -i mon0 -C

U aktivního WPS by měl wash vypsat verzi WPS (1.0) a hodnota WPS Locked musí být No.

Určitě mi dejte v komentářích vědět, zda něco z toho pomohlo.

Jak to funguje?

Finta celého útoku je v tom, že router potvrdí správnost první poloviny osmimístného PINu bez ohledu na to, zda souhlasí zbytek. Reaver tak v první fázi postupně zkouší všechny možnosti v rozsahu 0000yyyy až 9999yyyy. Pokud je potřeba na jeden PIN zhruba 3 až 5 sekund, je zřejmé, že u PINu začínajícího devítkou bude útok hrubou silou trvat mnohem déle (až 12 hodin), než u PINu začínajícího například jedničkou (hodina až dvě). Jistotou ovšem je, že pokud router nemá implementovány žádné obranné mechanizmy, bude útok vždy úspěšný a to v řádu maximálně desítek hodin.

Druhá část útoku je již mnohem rychlejší, protože druhá části PINu má sice také čtyři číslice, ale poslední z nich je kontrolní součet, který lze odvodit z předcházejících sedmi číslic. Je tedy nutné vyzkoušet pouze hodnoty v rozsahu xxxx000z až xxxx999z, kde xxxx již známe z předcházející první části a hodnotu kontrolního součtu zdopočítáme.

Reaver - úspěšný útok
Reaver – úspěšný útok

Útok na tento konkrétní PIN netrval déle než dvě hodiny. Pro zajímavost ještě snímek nastavení WPS na testovaném routeru:

Router QSS/WPS nastavení
Router QSS/WPS nastavení

Po úspěšném útoku máme k dispozici dva velmi důležité údaje. Samotné heslo k WPA(2)-PSK a také PIN k WPS! Pomocí PINu můžeme opakovaně útočit a získávat okamžitě heslo k WPA. Pokud tedy majitel routeru změní pouze heslo a PIN zůstane původní, je to pro útočníka jen minimální překážka.

Reaver - hack s použitím PINu
Reaver – hack s použitím PINu

Jak je vidět, opakovaný útok netrval déle než 4 sekundy.

Co se může během útoku pokazit

Útok se nemusí povést vždy. Hlavním důvodem může být to, že router nemá aktivní WPS nebo WPS vůbec nepodporuje. Pak samozřejmě útočit na WPS nelze. Router může také implementovat jeden či více obranných mechanizmů, které mohou útok značně časově prodloužit či dokonce v reálné praxi znemožnit. Z těchto poznatků také plyne jediná účinná obrana proti tomuto druhu útoku — vypnout WPS nebo mít router implementující obranné mechanizmy proti brute-force útoku.