Prolomení WEP

Z Milan Kerslager
Verze z 4. 12. 2014, 17:15, kterou vytvořil Milan.Kerslager (diskuse | příspěvky) (Externí anténa: Jak prolomení klíče funguje)
(rozdíl) ← Starší verze | zobrazit aktuální verzi (rozdíl) | Novější verze → (rozdíl)
Přejít na: navigace, hledání

Prolomení WEP (též Wi-Fi cracking atp.) je poměrně jednoduchý postup, který pomocí speciálních nástrojů dokáže zjistit WEP klíč. Demonstrace snadnosti toho útoku slouží k lepšímu pochopení důležitosti zabezpečení Wi-Fi sítí, což je komplexní problematika, která je popsána v slajdech pro přednášku o bezpečnosti, které jsou dostupné na stránce Soubor:Bezdrátové sítě.odp.

Zranitelnost WEP

Šifrování pomocí WEP je prolomeno a existuje několik postupů, pomocí kterých je možné z odposlechu zašifrovaného provozu zjistit symetrický šifrovací klíč. Proto není bezpečné toto šifrování používat. Základním problémem WEP šifrování je fakt, že k inicializačnímu vektoru je přidán sdílený symetrický klíč a celek je předán šifře RC-4. To vede k možnosti využít statistické útoky, protože první bajty výstupu šifry silně korelují se zmíněným klíčem. Tuto slabinu odstraňuje TKIP, který je součástí WPA. U WPA2 je pak problematická RC-4 nahrazena šifrou AES, což dále kvalitu zabezpečení zvyšuje.

Na ukázku je možné zřídit vlastní AP, které zabezpečíme pomocí WEP klíče. Na přístupový bod připojíme klienta a zajistíme, aby dostatečně komunikoval, tj. nejlépe aby přes bezdrátovou síť prohlížel webové stránky nebo stahoval data. Do jeho dosahu umístíme počítač, který bude sloužit k odposlechu bezdrátového provozu. V případě, že vysílací AP bude v bezprostřední blízkosti, může se stát, že přijímající bezdrátová karta bude zahlcena a paradoxně budeme mít problémy s odposloucháváním provozu. V tomto případě je možné vysílající AP umístit do sousední místnosti nebo vložit mezi vysílač a přijímač kovovou překážku.

Bezdrátové rozhraní

Informace o tom, jaké nastavení má bezdrátové rozhraní v počítači, podává příkaz iwconfig, který je nutné spustit jako root (správce systému) v okně terminálu (viz Konzole v Linuxu – Správa systému a Příkazový řádek v Unixu):

# iwconfig
lo        no wireless extensions.

eth1      IEEE 802.11  ESSID:"RADIUS"  Nickname:""
          Mode:Managed  Frequency:2.412 GHz  Access Point: 00:1A:30:2C:57:F0   
          Bit Rate=54 Mb/s   Tx-Power:24 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Managementmode:All packets received
          Link Quality=5/5  Signal level=-45 dBm  Noise level=-91 dBm
          Rx invalid nwid:0  Rx invalid crypt:35  Rx invalid frag:0
          Tx excessive retries:2094  Invalid misc:0   Missed beacon:0

eth0      no wireless extensions.

Z výpisu je patrné, že bezdrátové rozhraní je v počítači nazváno eth1. Aktuálně je připojeno k bezdrátové síti RADIUS.

Zjištění bezdrátové sítě

Základní informace o okolních bezdrátových sítích se šíří pomocí majákových rámců (beacon frame), které obsahují název sítě (SSID), frekvenci, na které bezdrátová síť vysílá (v pásmu 2,4 nebo 5 GHz), informace o použitém zabezpečení sítě a další údaje.

# iwlist eth1 scanning
         Cell 01 - Address: 00:1A:30:2C:57:F0
                   ESSID:"RADIUS"
                   Mode:Managed
                   Frequency:2.412 GHz (Channel 1)
                   Quality:5/5  Signal level:-37 dBm  Noise level:-94 dBm
                   IE: IEEE 802.11i/WPA2 Version 1
                       Group Cipher : CCMP
                       Pairwise Ciphers (1) : CCMP
                       Authentication Suites (1) : 802.1x
                   Encryption key:on
                   Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 6 Mb/s; 9 Mb/s
                             11 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                             48 Mb/s; 54 Mb/s
         Cell 02 - Address: 00:24:01:8F:93:00
                   ESSID:"PrivateNet"
                   Mode:Managed
                   Frequency:2.437 GHz (Channel 6)
                   Quality:1/5  Signal level:-90 dBm  Noise level:-93 dBm
                   Encryption key:on
                   Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                             9 Mb/s; 12 Mb/s; 48 Mb/s; 18 Mb/s; 24 Mb/s
                             36 Mb/s; 54 Mb/s

Z výpisu je patrné, že v dosahu jsou dvě bezdrátové sítě. Jako první je bezdrátová síť RADIUS, která vysílá na kanálu 1, její přístupový bod (AP) má MAC adresu 00:1A:30:2C:57:F0 a ke které je aktuálně počítač podle předchozího výpisu připojen. Druhá síť se nazývá PrivateNet, vysílá na kanále 6, její přístupový bod má MAC adresu 00:24:01:8F:93:0E.

Odposlech provozu

Odposlech provozu lze provádět pouze na vlastních zařízeních nebo na zařízeních, u kterých máte majitelem tuto činnost schválenu! Pro odposlech provozu je nutné, aby byla bezdrátová karta počítače uvedena do klidu, a proto je nutné se odpojit od bezdrátové sítě (zde síť RADIUS). V grafickém prostředí je možné kliknout na ikonu bezdrátového připojení a zvolit Odpojit.

Airodump-ng

Pro odposlech provozu můžeme použít monitorovací nástroj airodump-ng, který se nachází v balíčku aircrack-ng. Nainstalujeme ho příkazem:

yum -y install aircrack-ng
Přepnutí do monitorovacího režimu

Pro zahájení monitorování je nutné přepnout bezdrátovou kartu do monitorovacího režimu, k čemuž je možné použít dále uvedený příkaz, který zároveň vytvoří nové virtuální monitorovací zařízení mon0. Díky tomu je možné zároveň být připojen přes původní rozhraní k bezdrátové síti (zde eth0) a zároveň na virtuálním zařízení monitorovat bezdrátový provoz (viz dále). Pro přepnutí bezdrátové karty do monitorovacího režimu zadejte příkaz:

airmon-ng start eth1

Seznam bezdrátových rozhraní lze vypsat výše uvedeným příkazem iwconfig, přičemž monitorovací zařízení bude identifikováno tak, jak je uvedeno v následujícím příkladu jeho výstupu. Všimněte si nastaveného monitorovacího režimu zobrazeného zápisem Mode:Monitor:

mon0      IEEE 802.11bg  Mode:Monitor  Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:off

Pokud byste chtěli uvést zařízení do původního stavu, tj. zrušit právě vytvořené monitorovací zařízení (například pokud výše uvedený příkaz spustíte dvakrát a vytvoří se vám zbytečně další virtuální zařízení mon1 – jejich seznam vypíše již zmíněný příkaz iwconfig), použijte příkaz:

airmon-ng stop mon1

Někdy se nepovede virtuální monitorovací zařízení mon0 vytvořit, ale do monitorovacího režimu je přepnuto samotné původní bezdrátové síťové rozhraní (zde eth1), které lze v takovém případě použít pro zachycování provozu také (důležitý je stav Mode:Monitor).

Bezdrátové síťové zařízení lze do monitorovacího režimu převést též ručně příkazem iwconfig (pokud je vypsána chyba, že je zařízení busy, je potřeba ho nejprve deaktivovat, a pak zase aktivovat pomocí down a up):

ifconfig eth1 down
iwconfig eth1 mode monitor
ifconfig eth1 up
Monitorování

Vlastní monitorování pak provedeme následujícím příkazem, který jako poslední parametr má monitorovací zařízení (zde mon0):

airodump-ng --ivs -w data --bssid 00:24:01:8F:93:00 --channel 6 mon0

Ve výše uvedeném příkazu způsobí parametr --ivs zaznamenávání pouze inicializačních vektorů (tj. tříbajtových údajů), což značně uspoří místo na disku. Data budou zaznamenávána do souborů začínajících na řetězec data, které budou v opakovaných spuštěních rozlišeny čísly (tj. data-01.ivs, data-02.ivs atd.). Pomocí parametru --bssid je určeno, že budou zaznamenávány pouze inicializační vektory vysílané přístupovým bodem s MAC adresou 00:24:01:8F:93:00, který vysílá na kanálu 6 (parametr --channel). Zaznamenávání bude prováděno z rozhraní bezdrátové karty mon0.

Ze zaznamenaných inicializačních vektorů je možné vypočítat šifrovací klíč. Pro úspěšné dekódování šifrovacího klíče je nutné nasbírat zhruba alespoň 25 000 vektorů (pro 64bitový klíč), spíše však mnohem více (tj. 100 000 až milióny). Potřebný počet je závislý na štěstí, s jakým bude šifrovací klíč při výpočtu odhadován. Monitorování není nutné při výpočtech přerušovat, klíče je v Linuxu možné ze souboru, do kterého jsou zapisovány, zároveň i číst.

Ve výstupu programu je zobrazena přehledná tabulka, která zobrazuje aktuální stav:

BSSID              PWR  Beacons   # Data  CH  MB  ENC   ESSID

00:24:01:8F:93:00   46       15     3416   6  54. WEP   PrivateNet 
00:09:5B:1F:44:10   36       54        0  11  11  OPN   NETGEAR

BSSID              STATION            PWR  Packets  Probes

00:24:01:8F:93:00  00:09:5B:EB:C5:2B   48      719  PrivateNet
00:24:01:8F:93:00  00:02:2D:C1:5D:1F  190       17  PrivateNet

Význam jednotlivých zkratek:

  • BSSID – MAC adresa přístupového bodu
  • PWR – síla signálu, jak ji oznamuje bezdrátová karta; hodnota závisí na hardware karty a ovladači, význam má proto její relativní úroveň (resp. zvyšování či snižování); hodnota −1 znamená, že oznamování síly signálu není podporováno
  • Beacons – počet majákových rámců rozesílaných přístupovým bodem (při nejnižší rychlosti 1 Mbps je jich rozesíláno 10 za vteřinu, takže číslo se může velmi rychle zvyšovat)
  • Data – počet zachycených datových paketů (včetně broadcastů); při WEP počet unikátních inicializačních vektorů
  • CH – číslo kanálu (z majákového rámce); poznámka: někdy jsou zachyceny rámce ze sousedních kanálů, i když airodump neskáče po kanálech, protože dochází k interferencím ze sousedních kanálů
  • MB – maximální rychlost podporovaná přístupovým bodem (je-li MB=11, jde o 802.11b; je-li MB=22, jde o 802.11b+; vyšší hodnoty jsou 802.11g; tečka za číslem 54 indikuje podporu krátké preamble)
  • ENC – aktuální šifrovací algoritmus (OPN – žádné šifrování; WEP? – WEP nebo vyšší, pokud není dost dat k rozlišení WEP a WPA; WEP (bez otazníku) označuje statický nebo dynamický WEP nebo WPA, pokud je použito TKIP nebo CCMP)
  • ESSID – též označováno jako SSID (může být prázdné, pokud není vysíláno, avšak v tomto případě se airodump pokusí SSID zjistit z odpovědí na probe rámce nebo žádostí o asociaci)
  • STATION – MAC addresa asociovaných stanic; v uvedeném příkladu jsou zobrazeny dvě stanice (00:09:5B:EB:C5:2B a 00:02:2D:C1:5D:1F)

Program Wireshark

Bezdrátový provoz lze odposlouchávat též programem Wireshark (tshark), avšak je nutné ho nastavit tak, aby zachytával též hlavičky bezdrátových rámců (IEEE 802.11),[1] které jsou delší a obsahují více údajů, než hlavičky klasických ethernetových rámců. Pokud máte k dispozici dostatečně novou verzi programu Wireshark a knihoven pcap, můžete na příkazovém řádku použít následující zápis:

tshark -n -i eth1 wlan[0] != 0x80
tshark -n -i eth1 wlan host 08:00:08:15:ca:fe and wlan[0] != 0x80 (chyba!)

Zobrazovací filtr (Display filter) vypadá následovně:

wlan.addr==08.00.08.15.ca.fe
wlan.fc.type_subtype != 0x08
wlan_mgt.ssid == "PrivateNet" 

Subtyp 0x80 označuje majákové rámce, které nejsou pro zachytávání inicializačních vektorů důležité.

Problémy při odposlechu provozu

Pro dešifrování provozu nejsou k ničemu majákové rámce (beacon frame), ve kterých se přístupový bod ohlašuje, protože jsou vždy rozesílány nešifrovaně. Pokud karta žádný provoz nepřijímá, jste možná příliš vzdáleni nebo je karta přepnuta do odlišného režimu (B vs. G) nebo nasloucháte na nesprávném kanálu (frekvenci). Příčinou může být i chyba ve firmware nebo neschopnost ovladačů poskytnout možnost přepnout kartu do monitorovacího režimu (monitor mode, též promiskuitní režim), což je obvyklá situace v Microsoft Windows nebo v Linuxu při používání originálních uzavřených binárních ovladačů přímo od výrobce bezdrátové karty.

Dekódování klíče

Dekódování klíče lze provádět pouze na vlastním síťovém provozu nebo v případě, že máte majitelem tuto činnost schválenu! Pro dekódování šifrovacího klíče z nasbíraných inicializačních vektorů se používá příkaz aircrack-ng:, který se pokusí z dostupných zaznamenaných inicializačních vektorů určit symetrický šifrovací klíč.

aircrack-ng *.ivs

Zápis *.ivs umožní zpracovat všechny IVS soubory, které byly uloženy jednotlivými spuštěními monitorovacího příkazu airodump-ng. Výpočet klíče je možné ovlivnit různými parametry. Pokud známe délku použitého klíče, můžeme ji uvést pomocí parametru -n 64, kde 64 je délka klíče (běžně též 128). Délku výpočtu hrubou silou je možné ovlivnit (prodloužit) nastavením parametru například -f 128. V takovém případě je možné, že bude stačit méně nasbíraných inicializačních vektorů, ale výpočet se výrazně prodlouží. Též je možné použít experimentální útoky hrubou silou (přepínače -x a -y).

Útoky na bezdrátovou síť

Útoky na bezdrátovou síť lze provádět pouze vůči vlastním zařízením nebo na zařízení, u kterých máte majitelem tuto činnost schválenu! Útoky na bezdrátovou síť se většinou provádějí s cílem vyprovokovat nějaký síťový provoz, protože to znamená generování nových inicializačních vektorů, které útočník potřebuje nasbírat. Útoky se provádějí zejména v případě, kdy na bezdrátové síti není žádný síťový provoz nebo dokonce není připojen žádný klient. Odkazy na relevantní stránky jsou uvedeny níže.

Připojený neaktivní klient

V tomto případě lze vysíláním falešných rámců například vyprovokovat odpojení a opětovnou asociaci klienta na přístupový bod.

Bez připojeného klienta

V takovém případě je nutné provokovat samotný přístupový bod.

Kontrola správnosti klíče

Implicitně je na přístupových bodech použita Open-System Authentication, která dovoluje asociaci jakéhokoliv klienta, přičemž není použitý klíč kontrolován. Klíč je používán až při přenosu dat, takže v případě nesprávného klíče není možné odesílat ani přijímat data. Druhou možností je Shared-Key Authentication, kdy klient šifruje již samotnou výzvu k asociaci. Tato metoda se však nepoužívá, protože je při ní možné zjistit šifrovací klíč. Z uvedeného vyplývá, že úspěšná asociace na přístupový bod není zárukou, že klíč je správný. Správnost klíče je nutné ověřit přenosem dat nebo odposlechem probíhajícího provozu.

LiveCD

Pokud máte možnost nabootovat notebook nebo počítač z CD nebo USB, můžete zkusit linuxovou LiveCD distribuci, která obsahuje nástroj aircrack-ng a v jádře má podporu pro váš bezdrátový čip. Seznam některých je na níže uvedené adrese. Vyberte si distribuci, která je průběžně vyvíjena, budete mít větší šanci na to, že váš bezdrátový čip bude podporován.

LiveCD startujte nejlépe přímo, bez virtualizace. Ve virtuálním prostředí je možné je používat také, avšak je nutné zprostředkovat přímý přístup Linuxu k bezdrátové kartě, tj. přímý přístup skrze USB nebo skrze PCI sběrnici (podle typu bezdrátové karty).

Některé bezdrátové karty potřebují nahrát firmware, který nemusí být součástí linuxové distribuce, ale je možné ho sehnat na Internetu (většinou je získán z ovladačů pro Windows). Zmínka o chybějícím firmware bude zřejmá ve výpisu příkazu dmesg.

Externí anténa

Pokud je signál slabý, je možné použít externí směrovou anténu. Bohužel většina notebooků nemá vyveden konektor pro externí WiFi anténu. Ale některé bezdrátové USB karty umožňují připojit externí anténu a zároveň jsou podporovány v Linuxu, například TP-LINK TL-WN722N (neověřeno), TP-LINK TL-WN422G (ověřeno).

Jak prolomení klíče funguje

Při snaze získat klíč máme k dispozici zašifrovanou komunikaci. Při hádání klíče se využívá Narozeninový problém k provedení Narozeninového útoku. Podrobnější vysvětlení metody „PTW“ a „FMS/Korek“ naleznete v dokumentaci programu aircrack-ng (anglicky).[2]

Reference

  1. http://en.wikipedia.org/wiki/IEEE_802.11#Frames – formát rámců bezdrátové sítě podle IEEE 802.11
  2. http://www.aircrack-ng.org/~~V:/doku.php?id=aircrack-ng – popis programu aircrack-ng a metod výpočtu WEP klíče

Externí odkazy

Programy pro crack WEP klíče

TODO

  • airsnort
  • kismet