54.224.184.33

Security @ FIT

Security Research Group

WPA2: Útoky z vnútra siete
24.02.2012, autor: Kačic Matej

V dnešnej dobe sú wifi siete široko rozšírenou technológiou, ktorú používa väčšina notebookov a mobilných zariadení. Ochrana týchto sietí z vonkajšej strany je väčšinou zabezpečená protokolom WPA2 a silným šifrovacím algoritmom AES. Avšak, zamysleli ste sa niekedy nad tým, ako sú tieto siete zabezpečené z vnútornej strany? 

 Wifi siete od svojho vzniku prešli niekoľkými fázami vývoja, pri ktorých sa odstránili bezpečnostné chyby kompromitujúce bezdrôtovú sieť. Dnes používaný štandard 802.11i [1], známy ako WPA2, používa silný šifrovací algoritmus AES. Tento spôsob je v dnešnej dobe považovaný za bezpečný pri dodržaní určitých pravidiel pri návrhu a konfigurácii siete. Položme si ale otázku, či nám stačí sieť zabezpečiť len z vonkajšej strany alebo sa zamyslíme nad jej bezpečnosťou z vnútra?

Hierarchia kľúčov

Štandard WPA2 používa niekoľko úrovní kryptografických kľúčov pre rôzne druhy rámcov. Na vrchole hierarchie kľúčov, ktorú podrobne ilustruje Obrázok 1, sú dva kľúče, ktorých použitie je závislé na zvolenej variante autentifikácie wifi siete. Prvý, spoločne zdieľaný kľúč (pre-shared key) je používaný pri sieťach v malých firmách a domácnostiach. Na druhej strane veľké firmy používajú autentifikáciu pomocou druhej varianty 802.1x [2], ktorej výsledkom je Master Session Key (MSK). Oba kľúče sa používajú k odvodeniu ďalšieho kľúča nazvaného Pairwise Master Key (PMK), z ktorého je následne odvodený Pairwise Transient Key (PTK). Tento kľúč je unikátny pre každého klienta bezdrôtovej siete a prístupový bod ho používa pre komunikáciu s ním. PTK kľúč je teda unikátnym kľúčom v rámci každého spojenia medzi klientom a prístupovým bodom.

Obr. 1: Bloková schéma hierarchie kľúčov

Použitie PTK kľúča pre posielanie všesmerových rámcov by bolo veľmi neefektívne, pretože prístupový bod by musel preposlať každý všesmerový rámec všetkým pripojeným klientom. Tento problém autori normy vyriešili použitím iného typu kľúča určeného pre tento druh komunikácie. Prístupový bod po pripojení nového klienta a taktiež po odpojení už pripojeného klienta generuje náhodný Group Master Key (GMK), z ktorého sa odvodí nový Group Transient Key (GTK) kľúč, spoločný pre všetkých pripojených klientov. Významom tohto kľúča je šifrovanie a dešifrovanie všesmerových rámcov. Poslednými kľúčmi v hierarchii sú kľúče určené pre EAPOL rámce a dočasný kľúč. EAPOL alebo Extensible Authentification Protocol over LAN je sieťový autentifikačný protokol používaný v štandarde IEEE 802.1X , ktorý zabezpečuje fyzický prístup do počítačovej siete na základe vypínania portov zariadenia napr. switchu. EAPOL rámce manažujú bezpečnú komunikáciu medzi sieťovým zariadením a aktuálne pripájanej stanice. Posledným kľúčom je dočasný kľúč, ktorý je vstupom pre šifrovacie algoritmy chrániace prevádzku siete. 

Zraniteľnosť GTK kľúča

Významom GTK kľúča je jeho použitie ako šifrovacieho kľúča všesmerových rámcov v prístupovom bode a ako dešifrovacieho kľúča týchto rámcov v pripojených klientoch. Za normálnych okolností, kedy komunikácia prebieha presne tak ako definoval štandard, klient bezdrôtovej siete nikdy nepoužije GTK kľúč k šifrovaniu všesmerových rámcov, a zároveň všetka komunikácia je smerovaná od klienta k prístupovému bodu a nikam inam. Za túto časť komunikácie je zodpovedný ovládač bezdrôtovej karty, ktorý štandardne neumožňuje zmeniť vysielanie paketov tak, aby sa líšili od normy. Môže však nastať situácia kedy autentifikovaný klient začne porušovať tento štandard, a tým sa postaví do role útočníka, ktorý začne vysielať všesmerové rámce zašifrované práve GTK kľúčom. Dôsledkom tohto správania začnú všetky stanice pripojené k prístupovému bodu prijímať a dešifrovať prijaté rámce v domnienke, že rámce pochádzajú od prístupového bodu [3]. Týmto spôsobom dokáže útočník vložiť do bezdrôtovej siete akýkoľvek typ všesmerového paketu, čím sa úspešne podarí oklamať prístupový bod i všetkých pripojených klientov. Možnými realizáciami zraniteľnosti GTK kľúča môžu byť útoky typu ARP cache poisoning, manipulácia s DNS záznamami, rôzne DoS útoky, injekcia malwaru  a podobne.  

Implementácia GTK zraniteľnosti

Pre jednoduchú realizáciu útoku je nutné vykonať úpravy v ovládači wifi karty. V dnešnej dobe, v čase opensource éry, sa úprava ovládačov značne zjednodušuje, ale na druhej strane je potrebná odborná znalosť problematiky. Ovládačom vhodným pre takúto úpravu je napríklad linuxový ovládač Madwifi, ktorý je vďaka svojej stabilite a výkonnosti známy u penetračných testerov wifi sietí.Prvým krokom úpravy ovládača je nastaviť rámec posielaný z pripojeného klienta tak, aby si všetky zariadenia v sieti mysleli, že paket pochádza z distribučného systému, čo docielime zmenou príznakov ToDS a FromDS všesmerového rámcu (viď Box 1).Ďalším nutným krokom v úprave ovládača je správne nastaviť polia adries v hlavičke rámca tak, aby boli v poradí všesmerová MAC adresa, MAC adresa prístupového bodu (BSSID) a nakoniec MAC adresa klienta. Na záver nám stačí zmeniť resp. vybrať správny kľúč pre šifrovanie rámca. Musíme teda zabezpečiť, aby bol rámec šifrovaný GTK kľúčom na miesto kľúča PTK. Vyššie menované úpravy sú postačujúce pre generovanie správnych rámcov na linkovej vrstve, stačí už len správne vložiť paket vyššej úrovne. Druhým spôsobom ako implementovať túto zraniteľnosť je vytvorenie požadovaného paketu binárne od najnižšej vrstvy. Pri vytváraní je nutné nastaviť všetky príznaky na správnu hodnotu, naplniť polia adries a nakoniec zašifrovať paket pomocou GTK kľúča. Takto vytvorené pakety môžeme vkladať do práve prebiehajúcej komunikácie, a tým realizovať rôzne druhy útokov. 

Hlavička rámca (viď obrázok 2), ako definuje štandard IEEE 802.1, obsahuje dva bity známe ako ToDS a FromDS (DS – Distribution system). Kombinácia týchto bitov určuje typ zariadenia, s ktorým je sieťový paket asociovaný:

  • ToDS=1, rámec je určený pre distribučný systém
  • FromDS=1, rámec pochádza z distribučného systému
  • ToDS=1, FromDS=1, komunikácia medzi dvoma AP distribučného systému
  • ToDS=0, FromDS=0, komunikácia v Ad-Hoc sieti posiela len prístupový bod klientom. 

Rámec ďalej obsahuje tri polia adries, ktorých význam je nasledovný:

  • Address 1, cieľová adresa
  • Address 2, zdrojová adresa
  • Address 3, adresa prístupového bodu siete, ale v prípade broadcastu je sú všetky bity nastavené na 1

Obr. 2: IEEE 802.11 Broadcast rámce

Rámce poslané z distribučnej siete sa od rámcov poslanej do nej, ako ilustruje obrázok 2, líšia rôznymi nastaveniami príznakov FromDS a ToDS, a tiež rôznym poradím hardwarových adries.  

Cache poisoning

ARP protokol je protokol linkovej vrstvy slúžiaci k prekladu IP adries na MAC adresy. V prípade, že sa určitá stanica snaží komunikovať s inou stanicou, potrebuje jej MAC adresu, ktorú získa buď z ARP tabuľky alebo použije broadcast ARP výzvu. Útok typu ARP cache poisoning[4] je útokom na linkovej vrstve, ktorý je už dlhšiu dobu známy. Pomocou tohto útoku je možné napríklad realizovať DoS útok otrávením ARP záznamu predvolenej brány vo vyrovnávacích pamätiach všetkých pripojených klientov, čím bezdrôtová sieť prakticky prestane fungovať, alebo je možné kradnúť (odchytávať) citlivé informácie pripojených staníc tým, že útočník postaví seba medzi prístupový bod a stanicu (Man-in-the-middle). Za normálnych okolností sa útok typu ARP cache poisoning snaží zmeniť (otráviť) vyrovnávaciu pamäť tým, že posiela upravené ARP rámce. Podľa štandardu 802.11i sa všetka komunikácia smerujúca od klienta musí posielať cez prístupový bod a je šifrovaná kľúčom odvodeným od PTK kľúča, ktorý je pre každého klienta unikátny. Dôsledkom čoho sa tento útok stáva detekovateľným na prístupovom bode alebo na inom sieťovom prvku. Detekcia na sieťových prvkoch LAN siete je možná vďaka tomu, že prístupový bod spája bezdrôtovú sieť so sieťou LAN. Kolízna doména je síce pre každý typ siete iná, ale broadcast doména je spoločná, a tým sa broadcast ARP rámce dostanú na sieťové prvky LAN siete. 

  

Obr. 3: Klasický vs. Stealth ARP cache poisoning

Zraniteľnosť GTK kľúča nám umožňuje poslať upravený ARP paket typu „Ja som brána“ klientovi, ktorý úspešne príjme tento paket a bude ho považovať za legitímny paket poslaný prístupovým bodom. Klientova ARP tabuľka sa v tomto momente začne upravovať tak, že MAC adresa prístupového bodu bude nahradená MAC adresou útočníka, čím sa útočníkovi začnú posielať pakety, ktoré klient odosiela. Tieto pakety sa útočníkovi nebudú posielať priamo, ale poputujú cez prístupový bod klasickou cestou ako definuje štandard. Klient vytvorí IP paket a zašifruje ho svojím PTK kľúčom. Prístupový bod tento paket dešifruje, zistí pre koho je určený (útočník), a odošle ho útočníkovi, ktorý v tomto momente dostáva všetku komunikáciu danej stanice zašifrovanú už svojím PTK kľúčom. Útočník získané pakety analyzuje, čím získava citlivé dáta, ktorých príkladom sú heslá odoslané pomocou protokolu ftp. Prijaté pakety útočník obvykle nezahadzuje, ale odosiela ich predvolenej bráne, čím je zaručená transparentnosť útočníka, ktorý sa stáva novou predvolenou bránou pre klienta. Útok predstavený na predchádzajúcich riadkoch nám dovolí realizovať ARP cache poisoning spôsobom, ktorým ho nie je možné detekovať na prístupovom bode a ani na žiadnom sieťovom zariadení LAN siete. Pre realizáciu útoku stačí mať upravený madwifi ovládač [6], ktorého úprava bola podrobne popísaná v predchádzajúcej časti, a použiť nástroj arping [7]. Šifrovanie a správnu 802.11 hlavičku zabezpečí upravený madwifi driver a nástroj arping nám začne generovať arp pakety. Použitie nástroja arping je nasledovné:

# arping –i ath0 IP_klient –s MAC_útočníka –S IP_Brány –c 10000

Následne nám stačí aktivovať IP forwarding pre zaručenie transparentnosti útočníka a pomocou nástroja tcpdump alebo wireshark si môžeme pozrieť komunikáciu klienta. 

Možnosti ochrany

Zraniteľnosť GTK kľúča umožňuje útočníkovi vo vnútri siete realizovať rôzne typy útokov bez možnosti ich detekcie. Na prvý pohľad sa môže zdať, že správca siete nemá moc možností ako tomu zabrániť. Prvou možnosťou ako zabezpečiť sieť proti zneužitiu tejto zraniteľnosti je úprava firmwarov   existujúcich wifi zariadení tak, aby sa pre každého klienta generoval rozdielny náhodný GTK kľúč, ktorý sa asociuje s klientom, štandardnou cestou, pomocou 4-way handshaku. Záleží však na snahe výrobcoch prístupových bodov, ako sa k tomuto problému postavia. Je však nad mieru jasné, že do vydania novej normy, ktorá je v nedohľadne, sa pravdepodobne nových verzií firmwaru nedočkáme. Drahšie prístupové body sú väčšinou schopné zvýšiť bezpečnosť siete použitím techniky „Access point isolation“, kde stanica wifi siete je pripojená na svoj vlastný virtuálny prístupový bod. Klienti sú tým pádom totálne izolovaný, v dôsledku čoho útoky popísané v predchádzajúcej časti nebudú fungovať. V prípade, že sa útočníkovi podarí infikovať ARP tabuľku niektorého z klientov siete, tak vďaka tejto technike útočníkovi nebudú prichádzať žiadne dáta. Treťou možnosťou je nasadenie klientských IDS systémov ako napríklad Snort [8] alebo ARP watcher na jednotlivých zariadeniach bezdrôtovej siete. Tieto systémy sú schopné detekovať zmeny a rôzne anomálie. Nevýhodou tohto prístupu je nemožnosť nainštalovať tento druh softwaru na mobilné zariadenia (mobil, tablet a iné). Podľa môjho názoru poslednou, a zároveň najlepšou možnosťou ako zabezpečiť WiFi sieť je použitie ďalšieho stupňa ochrany. Bezdrôtový variant systému IDS, Wireless IDS, poskytuje dostatočnú ochrannú vrstvu proti väčšine útokov [9]. Funkčnosť takéhoto druhu systému je zaručená špeciálnymi sondami, kde každá z nich sa snaží analyzovať bezdrôtovú komunikáciu chráneného územia. Výsledky z každej sondy sú posielané na centrálny server, kde prebieha podrobnejšia analýza, a v prípade podozrenia je vyvolaný alarm alebo vhodné protiopatrenie. 

Dopad na bežného užívateľa

Úspešnosť využitia zraniteľnosti GTK kľúča je podmienená faktu, že útočník musí byť autentifikovaný v sieti. Z tohto predpokladu vyplýva, že útočník je s najväčšou pravdepodobnosťou z vnútorného prostredia, ale na druhej strane nie vždy tomu tak musí byť. Veľké množstvo ľudí i administrátorov firemných sietí sa slepo spoliehajú na bezpečnosť štandardu WPA2, a na jeho silný šifrovací algoritmus AES, a pritom zabúdajú použiť dostatočne silné heslá pre zabezpečenie ich wifi sietí. Zraniteľnosť popísaná v tomto článku sa dotýka všetkých užívateľov wifi sietí bez výnimky toho, či používajú režim zdieľaného hesla alebo autentifikáciu pomocou protokolu 802.1x.

Na prvý pohľad sa môže zdať, že táto zraniteľnosť nie je až tak vážna. Väčšina ľudí sa v dnešnej dobe naučili používať zabezpečené spojenie https používajúce kryptografické protokoly SSL. Predstava, že by niekto sledoval, prípadne modifikoval naše bankové účty je desivá. Použitím zraniteľnosti GTK kľúča, spolu s útokom ARP cache poisoing, nástrojom sslstrip [10] a trochou šťastia, kedy užívateľ „odklikne“ výnimku pre neznámy certifikát, sa nám úspešne podarí sledovať a v horšom prípadne aj modifikovať bankové operácie užívateľa. 

Ďalším využitím tejto zraniteľnosti je použitie techniky DNS spoofing [11]. Táto technika sa snaží meniť DNS záznam určitej domény tak, aby doména smerovala na náš server, na ktorom beží verná kópia informačného systému odpovedajúca pôvodnej doméne (viď obrázok 4). Podvrhnutie DNS záznamu, podobne ako útok na vyrovnávaciu pamäť ARP záznamov, je útokom typu „Man-In-The-Middle“. V praxi sú potom nič netušiacemu užívateľovi, po prihlásení do informačného systému, odcudzené jeho prihlasovacie údaje. V najhoršom prípade môže užívateľ slepo autorizovať bankovú transakciu, ktorú ani nevidel.  

Obr. 4: DNS spoofing

Záver

Každým dňom pribúda viac a viac mobilných zariadení využívajúcich bezdrôtové siete. Notebooky, tablety a smartphony sa stávajú našou každodennou súčasťou, preto je úlohou každého správcu siete zabezpečiť spravovanú sieť z vonkajšej i vnútornej strany čo najlepším spôsobom.  Článok poskytol prehľad hierarchie kľúčov štandardu, ktorý je považovaný v dnešnej dobe za bezpečný, a na druhej strane ukázal zraniteľnosť, ktorá umožňuje realizovať rôzne útoky bez možnosti detekcie štandardnými spôsobmi. Podmienka pripojenia útočníka do siete vyvoláva v niektorých z nás otázku, či je vôbec nutné sa zaoberať týmto problémom. Odpoveďou na otázku môže zvýšená pravdepodobnosť útoku vedená legitýmnym užívateľom v rozsiahlych korporátnych bezdrôtových sieťach so stovkami užívateľov. Detekcia a vypátranie pôvodcu útoku v tak rozsiahlej sieti nemusí byť vôbec jednoduchá, preto by správcovia týchto sietí mali zvážiť inštaláciu, pomerne drahej, ochrannej vrstvy v podobe systému bezdrôtového IDS. 

Matej Kačic, Petr Hanáček

Článok vznikol za podpory Ministerstva školstva ČR ako súčasť výskumného zámeru MSM0021630528: Výzkum informačních technologií z hlediska bezpečnosti a ako súčasť projektu FIT-S-11-1 Pokročilé bezpečné, spolehlivé a adaptivní IT.