Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Bezpieczeństwo sieci Wi-Fi – część 4. (Standard 802.11i czyli WPA i WPA2)
Wstęp
Wymagania stworzone dla 802.11i mogły być zbyt wysokie dla niektórych urządzeń, a masowe i szybkie wdrożenie WPA było możliwe dzięki prostej aktualizacji oprogramowania. WPA zawiera niektóre zmiany zaprojektowane dla 802.11i mające zlikwidować największe podatności WEP.
W tej sytuacji pełna implementacja standardu 802.11i, określona została jako WPA2, a na jej wdrożenie ze względu na konieczność aktualizacji sprzętu należało trochę poczekać.
Najważniejsze problemy WEP, które postanowiono rozwiązać w 802.11i to:
- ochrona współdzielonego klucza – hasło dostępowe do sieci jako jedyny mechanizm kontroli dostępu powinno być lepiej chronione,
- bezpieczeństwo szyfrowania – hasło stanowiące dostęp do sieci stanowi wspólny klucz szyfrujący, co osłabia bezpieczeństwo,
- uwierzytelnianie – brak wsparcia dla zaawansowanych technologii uwierzytelniania pozwalających na identyfikację poszczególnych użytkowników, a nie z wykorzystaniem współdzielonego sekretu (przykładami mogą być indywidualny login/hasło lub certyfikaty),
- zmienność klucza – brak mechanizmu zapewniającego odpowiednią częstotliwość zmiany klucza,
- integralność – słabe mechanizmy zapewniające integralność danych.
RSN
W celu przebudowy koncepcji bezpieczeństwa w sieciach Wi-Fi standard 802.11i wprowadził pojęcie Robust Security Network (RSN), mające rozwiązać opisane powyżej problemy WEP.
Koncepcja RSN zawiera następujące elementy związane z bezpieczeństwem architektury sieci:
- uzgodnienie polityk bezpieczeństwa, czyli wymiana informacji o dostępnych metodach uwierzytelniania i szyfrowania,
- uwierzylenianie podłączanego urządzenia z wykorzystaniem protokołu 802.1X,
- ustalenie metod szyfrowania i wymiana kluczy kryptograficznych (4-way handshake),
- główny klucz szyfrujący jest chroniony i nigdy nie jest używany bezpośrednio do szyfrowania, lecz do generowania tymczasowych kluczy szyfrujących,
- zapewnienie poufności i integralności sieci dzięki użyciu TKIP i CCMP.
1. Uwierzytelnianie
Już w WEP podjęto próbę wprowadzenia mechanizmu uwierzytelniania podłączanych do sieci urządzeń, lecz jak wspominałem poprzednio, nie spełniło to swojej roli. Rozwijając 802.11i, przyjęto wdrożenie standardu 802.1X i protokołu EAP (Extensible Authentication Protocol) do uwierzytelniania. Możliwe są dwa rodzaje uwierzytelnienia z wykorzystaniem:
- współdzielonego klucza określanego jako PSK (Pre-Shared Key), znanego wszystkim użytkownikom sieci (analogicznie jak to miało miejsce w przypadku WEP),
- bardziej złożonych danych dostępowych, np. indywidualnego loginu i hasła, czy certyfikatów X.509.
W przypadku 802.1X, EAP zaimplementowany jest jako EAPOL czyli „EAP over LAN” (Więcej szczegółów dotyczących EAP znajdzie się w kolejnej części cyklu dotyczącej WPA-Enterprise.)
Dostęp do sieci radiowych z wykorzystaniem współdzielonego klucza działa analogicznie jak w przypadku opisywanego wcześniej WEP: użytkownik przed podłączeniem się do sieci musi podać wspomniany klucz. Rozwiązanie to ze względu na swoją prostotę jest stosowane w domach i małych firmach i określa się je jako WPA-Personal lub WPA-PSK. PSK podawany jest jako 64 cyfry hex lub 8–63 drukowalnych znaków ASCII. W tym przypadku obsługa procesu wymiany danych kryptograficznych (tzw. 4-way handshake, o którym poniżej) wykonywana jest przy użyciu metody EAP-PSK.
Drugie podejście określane jest jako WPA-Enterprise. W tym przypadku wymagany jest dodatkowy element w postaci serwera Radius, wykonującego operację uwierzytelniania, autoryzacji i księgowania (po ang. tzw. AAA: authentication, authorization, accounting). Dzięki temu zyskujemy następujące dodatkowe funkcjonalności:
- Indywidualne dane dostępowe do sieci dla każdego użytkownika/urządzenia.
- Możliwość uwierzytelniania infrastruktury, do której następuje podłączenie użytkownika, co pozwala uniknąć ataków z podstawionym AP.
- Odłączenie danego użytkownika od sieci nie wymaga zmiany klucza dostępu dla wszystkich pozostałych użytkowników, ponieważ unieważniamy dane dostępowe tylko jednego użytkownika.
- Uwierzytelnienie następuje przed podłączeniem się użytkownika do sieci.
- Zarządzanie użytkownikiem w sieci, np. podłączenie go do wybranego VLAN-u, kontrola czasu, godzin dostępu itp.
- Możliwość realizacji księgowania (zliczania czasu połączenia, przesłanych danych itp.) w przypadku stosowania limitów.
Należy jednak pamiętać, że zbudowanie infrastruktury opartej na 802.1X i serwerze Radius jest dużo bardziej skomplikowane i wymaga sprzętu potrafiącego współpracować w ramach wybranej metody EAP.
W wyniku opisanego powyżej procesu uwierzytelniania ustalany zostaje klucz PMK (Pairwise Master Key), który jest stały podczas trwania całej sesji i powinien być starannie chroniony. Dla WPA-PSK PMK tworzony jest przy pomocy funkcji haszującej PBKDF2 z użyciem SSID, PSK oraz 4096 iteracji HMAC (dla WPA PBKDF2-MD5, a dla WPA2 PBKDF2-SHA1). W przypadku WPA-Enterprise, PMK ustalany jest w ramach sesji EAP z serwerem Radius. Z wykorzystaniem PMK generowane są klucze używane bezpośrednio do szyfrowania transmisji.
W momencie wydania standardu 802.11i w 2004 roku program certyfikacji urządzeń wykonywany przez Wi-Fi Alliance obejmował tylko jedną, stosunkowo trudną w implementacji: metodę uwierzytelniania EAP-TLS. W kolejnych latach jednak dodawano nowe metodyy ułatwiające wdrażanie WPA-Enterprise.
2. Handshake
W RSN konieczne jest generowanie osobnego klucza szyfrującego dla każdego pakietu, dzięki czemu nawet rozszyfrowanie pojedynczego pakietu, nie pozwala na odszyfrowanie całej transmisji.
Oznacza to także, że każda para klient–AP, używa innego klucza szyfrującego (znanego tylko obu stronom), który nie pozwala na realizację transmisji grupowej. Z tego powodu w RSN wymagane jest utworzenie dwóch kluczy używanych bezpośrednio do szyfrowania: dla transmisji indywidualnej (Pairwise Transient Key, PTK) oraz grupowej (Group Transient Key, GTK). Klucz grupowy musi być aktualizowany po każdym odłączeniu się urządzenia, aby uniemożliwić mu odbieranie pakietów multicastowych czy broadcastowych.
W ramach standardu 802.11i wprowadzono operację nazywaną 4-way handshake, realizowaną przy pomocy EAP-PSK, służącą do tworzenia kluczy PTK i GTK z wykorzystaniem PMK.
Przebiega ona w następujący sposób:
- AP wysyła do klienta nonce – pewną unikatową dla danej sesji wartość, która powinna być nieprzewidywalna dla atakującego (określaną dalej jako ANonce).
- Klient wysyła własny nonce do AP (określany jako CNonce) wraz z sumą kontrolną MIC.
- AP wysyła do klienta GTK numer sekwencyjny do transmisji grupowej oraz MIC.
- Klient wysyła potwierdzenie do AP.
Sumy MIC w handshake są używane tylko w przypadku zastosowania TKIP.
Po zakończeniu powyższego procesu następujące dane są konkatenowane: PMK, ANonce, CNonce, AP MAC, klient MAC, a potem kierowane jako wejście do funkcji PBKDF2 w celu utworzenia PTK.
W przypadku potrzeby utworzenia nowego klucza GTK po odłączeniu się jednego z klientów AP wysyła nowy klucz, a klient tylko potwierdza jego zmianę.
3. Poufność i integralność transmisji
Po zakończeniu 4-way handshake klient otrzymuje klucze PTK i GTK niezbędne do szyfrowania danych. Są one stałe dla danej sesji (jeśli nie było operacji renegocjacji kluczy). Zgodnie z tym co zostało napisane wcześniej, każdy pakiet powinien być szyfrowany osobnym kluczem oraz posiadać lepszą ochronę przed ingerencją niż było to w WEP.
W związku z tym standard 802.11i wprowadził CCMP, który miał zrealizować to zadanie. Jednak okazało się, że CCMP jest zbyt wymagające sprzętowo i zablokowałoby szybkie wdrożenie WPA. W związku z tym dla WPA przygotowano alternatywne rozwiązanie, którym jest TKIP.
WPA2, czyli pełna implementacja standardu 802.11i, wymaga obowiązkowego wspierania CCMP.
4. TKIP
TKIP (Temporal Key Integration Protocol) stanowi rozszerzenie mechanizmu szyfrowania bazującego na RC4 z WEP zatem możliwe było jego wdrożenie tylko przez aktualizację sterowników i oprogramowania. TKIP jest bezpośrednio odpowiedzialny za szyfrowanie każdego pakietu innym kluczem i używa do tego celu 128-bitowego klucza.
Słabość WEP została w głównej mierze wykazana w trakcie ataków typu 'related key’, które były możliwe, ponieważ WEP dokonywał konkatenacji 'passphrase’ z wektorem inicjującym (IV). W TKIP zastosowano specjalną funkcję mieszającą, która w nietrywialny sposób dokonuje połączenia passphrase i IV przed przekazaniem ich do RC4, zapobiegając atakom typu 'related key’.
Kolejnym z problemów WEP była możliwość przeprowadzania ataków z powtórzeniem, czyli wielokrotnym przesyłaniem do atakowanej sieci tego samego pakietu.
TKIP zapobiega tym atakom przez wprowadzenie licznika sekwencyjnego pakietów, który powoduje, że AP odrzuca pakiety spoza zakresu obsługiwanych w tym momencie wartości.
W WEP do zapewniania integralności danych zastosowano CRC32, które niestety zostało zaprojektowane do wykrywania błędów, a nie zapewnienia integralności danych. W związku z tym nie oferuje odpowiedniego poziomu zabezpieczenia – jeden z ataków umożliwiał np. modyfikację pakietu bez konieczności odszyfrowywania go, jeśli znana była jego zawartość.
Jednak powszechnie znane algorytmy służące do zapewnienia integralności były dość wymagające obliczeniowo. Ostatecznie zdecydowano się więc na kompromis w postaci algorytmu „Michale” (64-bitowy MIC, Message Integrity Check). CRC32 z WEP nadal jest używane. Jeśli AP wykryje 2 niepoprawne sumy MIC w ciągu 60 s, rozpocznie operację wygenerowania nowego klucza szyfrującego sesji.
5. CCMP
CCMP jest skrótem od CCM mode Protocol. CCM określa tryb pracy algorytmów kryptograficznych i oznacza Counter Mode with CBC-MAC (Cipher Block Chaining Message Authentication Code). Przekładając to na język bardziej przystępny, jest to tryb pracy algorytmu kryptograficznego, którym w CCMP jest AES. Pracuje w trybie „counter” wraz z sumami uwierzytelniającymi wiadomość generowanymi w trybie „cipher block chaining”. AES jest używany z 128-bitowym kluczem i blokiem o takim samym rozmiarze.
CCMP realizuje dokładnie te same zadania co opisywany powyżej TKIP, rozwiązując ostatecznie problemy, które pojawiły się w przypadku WEP. Ze względu na zastosowanie algorytmu AES, jego bezpieczeństwo kryptograficzne jest znacząco większe niż w przypadku TKIP. W przypadku stosowania sieci o standardzie 802.1n, CCMP jest wymagany do osiągnięcia prędkości większych niż 54Mb/s.
Bezpieczeństwo
Teraz, po tym długim wstępie, skoro wiemy, co się zmieniło w WPA/WPA2, względem WEP, możemy w końcu zająć się analizą bezpieczeństwa. Jak już wspomniałem, wiele problemów obecnych w WEP zostało rozwiązane w standardzie 802.11.
Przypomnijmy je:
- samo podsłuchiwanie transmisji (przechwytywanie pakietów) nie pozwala na jej odszyfrowanie ze względu na zmienny w czasie klucz szyfrujący (w przypadku WEP wystarczyło przechwycenie odpowiednio dużej liczby pakietów, aby złamać hasło); aby było to możliwe muszą zaistnieć jeszcze dodatkowe warunki osłabiające bezpieczeństwo infrastruktury,
- posiadanie przechwyconej transmisji, lecz bez handshake, nie pozwoli na jej rozszyfrowanie, nawet w przypadku znanej wartości PSK, ponieważ nie są znane wartości (nonce), niezbędne do odtworzenia klucza PTK, który jest bezpośrednio odpowiedzialny za szyfrowanie,
- naprawienie problemu z kolizją IV,
- zastosowanie algorytmów niepodatnych na ataki „related key” (TKIP czasowo rozwiązał problem, ale ze względu na odkryte podatności zalecane jest stosowanie CCMP),
- lepsze zabezpieczenie integralności pakietów (TKIP to poprawiał częściowo, CCMP rozwiązało już ostatecznie),
- zaawansowane mechanizmy uwierzytelniania z wykorzystaniem 802.1X.
1. Czy WPA ma jakieś naprawdę poważne podatności?
Odpowiedź na to pytanie brzmi TAK.
Oto najważniejsze z nich:
- Podatność na atak siłowe off-line, w przypadku zastosowania uwierzytelniania z wykorzystaniem PSK (czyli WPA-Personal), także przy użyciu tęczowych tablic.
- Atak siłowy on-line na protokół WPS, pozwalający uzyskać PSK (tej tematyce poświęcę osobny odcinek cyklu).
- Podatności kryptograficzne w TKIP.
2. Ataki siłowe
Pierwsza z podatności wynika z faktu, że klucz PTK, używany do zabezpieczana transmisji jest tworzony z wykorzystaniem PSK (a dokładniej PMK, które dla WPA-Personal jest tworzone na bazie PSK) i pewnych danych przesyłanych podczas 4-way handshake.
Nawet jeśli nie jest znany PSK, ale uda się przechwycić dodatkowe wartości używane podczas 4-way handshake, można przeprowadzić atak siłowy mający na celu zgadnięcie PSK i uzyskanie dostępu do sieci. Istota ataku polega na wypróbowywaniu różnych wartości PSK, obliczenia dla nich PMK i PTK oraz sprawdzaniu, bazując na przechwyconych danych z 4-way handshake, czy jest to poprawna wartość.
Ze względu na rozmiar przestrzeni dopuszczalnych wartości PSK (8–63 drukowalnych znaków ASCII jak passphrase) sprawdzenie całej przestrzeni można uznać za praktycznie niewykonalne. Konieczny byłby do tego spory klaster HPC lub odpowiednio duża liczba kart GPU. W praktyce atak ten realizuje się poprzez atak słownikowy, czyli sprawdzamy czy hasło nie znajduje się w słowniku. Przejrzenie nawet dużych słowników przy pomocy 4-rdzeniowego procesora może zostać wykonane w ciągu kilku dni lub szybciej (w zależności od słownika). Jednak jeśli danego hasła nie ma w naszym słowniku, atak zakończy się niepowodzeniem.
Ponieważ opisywana podatność nie wynika ze słabości kryptograficznych, w tym przypadku na skuteczność ataku nie ma wpływu liczba zebranych pakietów (jak to miało miejsce w przypadku WEP). Jedynym wymaganiem jest przechwycenie 4-way handshake, gdyż potrzebne są wymieniane w nim informacje niezbędne od obliczenia PTK.
Alternatywny dla ataku słownikowego jest atak przy pomocy tęczowych tablic. Jego istota polega na wykorzystaniu zjawiska kolizji obecnego w funkcjach hashujących.
Ze względu na stałą i stosunkowo niedużą długość wyniku działania funkcji hashującej, można pokusić się o wygenerowanie jeden raz wszystkich dostępnych wartości, co może się zmieścić nawet w kilku do kilkuset GB (w zależności od użytej funkcji hashującej). Następnie wystarczy wyszukać na tej liście hash, którego wartość początkową chcemy znaleźć i go użyć. Ze względu na zjawisko kolizji, niekoniecznie będzie to ta sama wartość PSK, użyta przez administratora sieci, ale da ona dokładnie ten sam hash.
W przypadku sieci Wi-Fi pregenerowane są wartości PMK, które zależą także od SSID. W związku z tym dla tych samych haseł, ale różnych SSID koniecznie jest wygenerowanie osobnych tablic. Kolejnym zyskiem z takiego podejścia, jest oszczędność czasu na obliczenie 4096 iteracji w funkcji PBKDF2 dla każdego hasła. Oszczędność oczywiście polega na tym, że hashe obliczamy raz na wstępie i zapisujemy na dysku, a podczas właściwego testu, poszukujemy tylko danego hasha w tablicy, co jest dużo mniej czasochłonne, niż pełne wykonanie funkcji PBKDF2 dla każdego sprawdzanego hasła.
Należy pamiętać, że wprowadzenie TKIP miało na celu szybkie i proste usunięcie głównych technologicznych podatności WEP. Jednak nie wszystkie problemy udało się usunąć. Stosowanie szyfrowania wykorzystującego RC4, pomimo wprowadzonych modyfikacji, zawiera nadal pewne podatności, których nie usunie się bez wymiany RC4 na inny bezpieczniejszy algorytm.
W 2007 opisano podatności określane jako „short packet spoofing”, pozwalające w pewnych szczególnych warunkach, na rozszyfrowanie krótkich pakietów o znanej strukturze, np. ARP. Jednak ta podatność nie pozwala na uzyskanie klucza PSK, lecz strumienia klucza użytego do zaszyfrowania danego pakietu. Pozwala na to wstrzyknięcie kilku pakietów do sieci, powodujących np. wysłane danych przez użytkownika do Internetu.
Dalsze badania w tym zakresie doprowadziły w 2013 do opracowania metody pozwalającej na rozszyfrowanie całej transmisji do klienta przy pomocy fragmentacji. Oprócz tego, istnieje możliwość obejścia wykrywania niepoprawnych sum MIC przez zachowanie odpowiedniej przerwy czasowej pomiędzy zmodyfikowanymi pakietami.
3. Dziurawe oprogramowanie
Opisane powyżej podatności dotyczą architektury sieci Wi-Fi. Jednak bezpieczeństwo sieci bezprzewodowych zależy także od jakości oprogramowania je obsługującego, takiego jak sterowniki, biblioteki do obsługi interfejsów itp. Wraz ze wzrostem skomplikowania architektury sieciowej rośnie poziom skomplikowania kodu programistycznego, a co z tym idzie, przybywa potencjalnych błędów implementacyjnych.
Jedną z efektywniejszych metod poszukiwania takich błędów, jest fuzzing, czyli wysyłanie niepoprawnie sformatowanych lub losowych danych z założeniem, że pojawią się błędy przy ich obsłudze. Praca porusza ten temat w obszerny sposób, pokazując jak wiele błędów można w ten sposób znaleźć. W praktyce, najwięcej błędów dotyczy systemów z rodziny Windows.
Podsumowanie
Kończąc omawianie cech odróżniających WPA/WPA2 od WEP, warto podkreślić, że proces zapewniania bezpieczeństwa sieciom Wi-Fi trwa.
W kolejnej części cyklu zaprezentuję zaś praktyczną stronę bezpieczeństwa sieci WPA i WPA2.
Bibliografia
—Adam Smutnicki
Bezpieczeństwo sieci Wi-Fi – część 1 (wstęp)
Bezpieczeństwo sieci Wi-Fi – część 2. (wprowadzenie do nasłuchiwania ruchu)
Bezpieczeństwo sieci Wi-Fi – część 3. (WEP)
Bezpieczeństwo sieci Wi-Fi – część 5. (testowanie WPA i WPA2)
Bezpieczeństwo sieci Wi-Fi – część 6. (bezpieczeństwo WPS)
Bezpieczeństwo sieci Wi-Fi – część 7. (WPA/WPA2-Enterprise: 802.1X i EAP)
Bezpieczeństwo sieci Wi-Fi – część 8. (WPA/WPA2-Enterprise: RADIUS)
CCMP to Counter Mode with Cipher Block Chaining Message Authentication Code Protocol. Poza tym serwer aaa typu radius, niestety ale nie ma pelnej szyfracji. Lepszym rozwiazaniem jest tacacs lub kerberos. Poza tym radius po udp a tacacs po tcp. Pozdrawiam
Bardzo fajny i wyczerpujący artykuł, można się sporo dowiedzieć…
Witam,
Czy mógłbym wykorzystać część artykułu do napisania elaboratu(praca dodatkowa na studia) o sieciach WEP oraz WPA?
Pozdrawiam
nie
Nie czytałem nigdy lepszego poradnika, totalna profeska bez zbędnych informacji, również cała bibliografia zasługuje na medal.
Witam,
Chyba literówka się wkradła. W 4-way handshake klient wysyła SNonce, a nie CNonce.
Pozdrawiam.