r   e   k   l   a   m   a
r   e   k   l   a   m   a

Ofensywne bezpieczeństwo sieci Wi-Fi: ataki na WPA i WPA2

Strona główna AktualnościBEZPIECZEŃSTWO

Poznaliśmy już najważniejsze narzędzia, za pomocą których można sprawdzić odporność sieci bezprzewodowych na ataki. Teraz czas zastosować zdobycze ofensywnego bezpieczeństwa w praktyce, zaczynając od nasłuchiwania ruchu. Rozpoznanie jest bowiem pierwszym krokiem na drodze do zrozumienia zagrożeń korzystania z komunikacji przez radiowe medium, dostępne przecież dla każdego.

Jak wspomnieliśmy na początku, do przeprowadzenia testów penetracyjnych potrzebne jest nie tylko oprogramowanie, ale także odpowiedni sprzęt, a konkretnie karta sieci bezprzewodowej/moduł Wi-Fi, której sterownik pozwala na przełączenie w tryb monitorowania. Normalnie pracując karta Wi-Fi odbiera bowiem tylko pakiety do niej adresowane. Dzięki łatkom do sterowników niektórych czipsetów, możemy uaktywnić tryb nasłuchu wszystkich pakietów ruchu sieciowego, tzw. monitor. To główny powód, dla którego polecamy skorzystanie z dystrybucji Kali Linux, dostarcza ona bowiem nie tylko gotowego oprogramowania do testów bezpieczeństwa, ale też odpowiednio „poprawione” sterowniki, tak że nie musimy się samodzielnie bawić w ich łatanie i kompilację.

Aircrack-ng: scyzoryk hakera Wi-Fi

Wszystko-w-jednym – tak można opisać ten pakiet oprogramowania, zawierający liczne narzędzia przeznaczone do ataków na bezprzewodowe sieci. Jest on domyślnie zainstalowany w Kali, ale choć umieszczony w systemowym menu, kontrolowany jest wyłącznie za pomocą interfejsu konsolowego. Warto podkreślić, że w przeciwieństwie do wielu innych linuksowych dystrybucji, które umieściły aircracka w swoich repozytoriach, w Kali dostajemy jego najnowszą wersję (na czas pisania tego tekstu jest to 1.2.0-rc3). Jest to ważne nie tylko ze względu na nowości, ale przede wszystkim ze względu na sporą liczbę usterek występujących w starszych wersjach.

r   e   k   l   a   m   a

Zacznijmy od sprawdzenia naszej karty bezprzewodowej. Wydając w terminalu polecenie iwconfig powinniśmy zobaczyć nasz interfejs sieciowy. Jeśli go nie ma, to dana karta nie została wykryta – i szczerze mówiąc, biorąc pod uwagę ceny sprzętu, lepiej jest poszukać karty kompatybilnej z Kali, niż tracić czas na próby jej uruchomienia. Bardzo dobry moduł USB Wi-Fi TP-Link TL-WN722N z czipsetem Atherosa jest do kupienia w sklepach internetowych za ok. 40 zł – będzie działał bezpośrednio po podłączeniu. Jeśli jednak moduł Wi-Fi działa poprawnie, to najpewniej odnaleziony zostanie w systemie jako interfejs wlan0.

Przełączenie Wi-Fi na tryb monitorowania odbywa się za pomocą polecenia airmon-ng start wlan0 . Prawdopodobnie po uruchomieniu dowiecie się, że w tle działa kilka procesów, które przeszkadzają w pracy w tym trybie – i lepiej je od razu zabić. Skrypt przedstawia ich numery PID, więc wystarczy wydać polecenie kill (z kolejnymi numerami PID), by przeszkadzających procesów się pozbyć. By potwierdzić, że procesy zostały ubite, wydajemy polecenie airmon-ng check kill – i powtarzamy polecenie airmon-ng start wlan0.

Teraz, gdy ponownie wydamy polecenie iwconfig, zobaczymy, że w systemie pojawił się nowy interfejs sieciowy, noszący nazwę w rodzaju wlan0mon. Na tym interfejsie będziemy przeprowadzali wszystkie niezbędne operacje. Na początek wyświetlmy listę sieci bezprzewodowych w otoczeniu za pomocą polecenia airodump-ng wlan0mon . W ten sposób możemy zapoznać się nie tylko z nazwami sieci, ale i innymi ich parametrami, takimi jak siła sygnału, kanał, przepustowość, szyfrowanie i uwierzytelnianie. Oczywiście z interfejsu wlan0mon możemy korzystać także w innych programach, uruchamiając np. popularny sniffer sieciowy Wireshark.

Wyłączenie trybu monitorowania odbywa się za pomocą polecenia airmon-ng stop wlan0mon . Jak możemy sprawdzić za pomocą iwconfig, powoduje to przywrócenie „normalnego” trybu pracy, czasem towarzyszy temu zmiana nazwy interfejsu, np. z wlan0 na wlan1.

Jak zabezpieczono WPA i WPA2?

Pierwszy powszechnie stosowany standard szyfrowania WEP odszedł w zapomnienie, rzadko kiedy można jeszcze natrafić na zabezpieczone nim punkty dostępowe (w kolejnym odcinku cyklu przypomnimy, jak łatwo WEP wydaje swoje tajemnice). Zastąpiło go rozwiązanie o nazwie WPA2 (od Wi-Fi Protected Access), będące pełną implementacją standardu 802.11i, mającego zlikwidować podstawowe problemy WEP, w szczególności słabą ochronę współdzielonego klucza, brak mechanizmów uwierzytelniania, brak zmienności klucza, słabe szyfrowanie i brak mechanizmów sprawdzania integralności danych. To co znane jest jako WPA, stanowić miało tymczasowy substytut dla urządzeń, które ze względu na ograniczenia sprzętowe nie są w stanie podołać wymogom 802.11i.

Uwierzytelnianie w WPA2 możliwe jest na dwa sposoby: albo za pomocą znanego wszystkim klientom współdzielonego klucza PSK, albo poprzez indywidualne dane logowania (para login/hasło lub certyfikat), przetwarzane przez niezależny od punktu dostępowego serwer Radius. Ta pierwsza forma używana jest powszechnie nie tylko w domach, ale nawet w wielu korporacjach – konfigurować Radiusa po prostu większości się nie chce, wiele urządzeń też miewa problemy z poprawnym włączeniem się do takiej sieci. Współdzielony klucz PSK, którym jest ciąg od ośmiu do 63 znaków ASCII (64 cyfry heksadecymalne), przekazywany jest po protokole EAP (Extensible Authentication Protocol) – wtedy taka metoda uwierzytelniania nosi nazwę EAP-PSK (napotkacie też inne metody, wykorzystujące inne mechanizmy uwierzytelniania (np. EAP-TLS, EAP-FAST czy EAP-GTC).

Uwierzytelnienie po protokole EAP z użyciem PSK prowadzi do wygenerowania klucza PMK (Pairwise Master Key). Wykorzystywana jest w tym celu funkcja skrótu PBKDF2, w której argumentami klucz PSK oraz 4096 iteracji kodu uwierzytelniania wiadomości HMAC-SHA1 z kluczem tajnym, a nazwa sieci bezprzewodowej (SSID) wykorzystana jest jako kryptograficzna sól. Klucz PMK jest kluczem stałym na cały czas trwania sesji.

Na tym jednak nie koniec. Wytyczne 802.11i zakładają, że (w przeciwieństwie do WEP) rozszyfrowanie jednego pakietu nie może oznaczać odszyfrowania całej transmisji, więc każdy pakiet musi dostać osobny klucz szyfrujący. Z tego wynika też, że niemożliwa jest za pomocą tego klucza transmisja grupowa, do wielu klientów. Uznano więc za konieczne wygenerowanie dwóch kluczy szyfrujących – PTK (Pairwise Transient Key) oraz GTK (Group Transient Key). Ten drugi sluży właśnie do szyfrowania transmisji grupowej do aktualnie połączonych klientów i jest zmieniany po każdym odłączeniu urządzenia. Odbywa się to za pomocą procesu o nazwie 4-way handshake. Zaprojektowano ją tak, by punkt dostępowy i klient mogły sobie udowodnić, że znają PSK i PMK, bez ujawniania tego klucza. Szyfrują więc wysłane do siebie wiadomości, których odszyfrowanie jest możliwe tylko jeśli już te klucze posiadają – i jeśli odszyfrowanie się powiedzie, stanowi dowód znajomości PMK. Klucz PTK powstaje następująco:

Punkt dostępowy wysyła na początku 4-way handshake do klienta pewną unikatową, pseudolosową 256-bitową liczbę (tzw. Anonce). To wystarczy, by klient miał wszystko czego potrzebuje do wygenerowania PTK, konstruowanego przez konkatenację (złożenie) klucza PMK, liczby Anonce, liczby pseudolosowej klienta (tzw. Snonce) oraz adresów MAC punktu dostępowego i urządzenia. Klient tworzy więc PTK i wysyła do punktu dostępowego swoje Snonce wraz z kodem spójności i uwierzytelnienia MAIC, co pozwala punktowi dostępowemu na utworzenie PTK po swojej stronie. Wtedy punkt dostępowy tworzy i wysyła klucz GTK wraz z kolejnym numerem (używanym w grupowo rozsyłanych pakietach) i kolejnym kodem MAIC, a klient odpowiada na to potwierdzeniem jego otrzymania.

Jak już wspomnieliśmy, klucze PTK i GTK są stałe dla sesji. Co więc z szyfrowaniem pakietów jednorazowymi kluczami? Tu możliwości są dwie. Gdy wprowadzano 802.11i, szybko się okazało, że dostępne urządzenia sieciowe mają zbyt małą moc obliczeniową, by zrealizować założenia standardu. „Pomostowy” standard WPA, zaprojektowany tak, by działać na sprzęcie obmyślonym oryginalnie dla WEP, wprowadził więc protokół TKIP (Temporal Key Integration Protocol), który wykorzystuje 128-bitowy klucz szyfru RC4 do szyfrowania każdego pakietu i wprowadza liczne usprawnienia, uniemożliwiające łatwe przeprowadzenie ataków, które dosłownie rozkładały na łopatki WEP. M.in. poradzono sobie z atakami related key, wprowadzając funkcję mieszającą, działającą na haśle do sieci i wektorze inicjującym przed ich szyfrowaniem, atakami modyfikacji pakietów, zastępując sumę kontrolną CRC32 przez 64-bitowy kod Michael, oraz atakami przesyłania tego samego pakietu, poprzez dodanie licznika sekwencji pakietów, pozwalającego odrzucić nieobsługiwane aktualnie wartości.

Pełna implementacja 802.11i, czyli WPA2, stosuje zamiast TKIP protokół CCMP (uwaga, rozwinięcie tej nazwy jest nietrywialne: CCM mode Protocol, gdzie CCM to Counter Mode with CBC-MAC, a CBC-MAC to Cipher Block Chaining Message Authentication Code). Wykorzystuje on szyfr AES z 128-bitowym kluczem na 128-bitowych blokach, robiąc w sumie to samo co TKIP, tylko bardziej elegancko i bezpieczniej, na mocniejszych kryptosystemach (choć oczywiście wymagając większej mocy obliczeniowej).

Jak to zaatakować?

Wydaje się, że sytuacja napastnika jest nieciekawa. Samo przechwycenie pakietów transmisji nic nie daje – są zaszyfrowane indywidualnymi kluczami. Nawet jeśli zdobędzie się klucz PSK, to nie wystarczy do odszyfrowania przechwyconej transmisji, ponieważ nieznane są wartości *nonce wykorzystane przy konstrukcji klucza PTK. Nie ma jak modyfikować zaszyfrowanych pakietów, wykorzystać kolizji wektorów inicjalizujących, jak wspomniano, nie działają też ataki related key.

Nie wszystko jest stracone. Podstawową metodą ataku na WPA/WPA2 jest słownikowy atak siłowy. Wykorzystuje się tu fakt, że nawet jeśli nie znamy klucza PSK, to możemy przechwycić dane przesyłane podczas procesu 4-way handshake, a następnie zgadując wartości PSK, generować na tej podstawie PMK i PTK i sprawdzać, czy się zgadzają. Teoretycznie atak taki byłby przeraźliwie trudny, ze względu na ogromną wielkość przestrzeni możliwych kluczy, ale w rzeczywistości jest znacznie łatwiej. Napastnik może mieć uzasadnione podejrzenia co do natury PSK, jego długości i użytych znaków – warto tu zauważyć, że dotyczy to przede wszystkim punktów dostępowych oferowanych masowo przez dostawców sieci. Ich hasła to zwykle ciąg 8-10 znaków alfanumerycznych. Dziesięć lat temu takie hasła były nie do złamania, dziś jednak napastnik, który wyda kilka tysięcy złotych na mocne karty graficzne, może testować kilkaset tysięcy haseł na sekundę, co sprawia, że przetestowanie całego słownika zajmuje raptem kilka dni pracy klastra.

Zdobycie słownika nie jest trudne. Napastnik może albo sam go wygenerować, za pomocą narzędzi takich jak maskprocessor (dostępny w Kali), albo poszukać w Sieci. Wiele takich zestawów słownikowych jest naprawdę pomocnych, gdyż zawiera w sobie hasła, które wyciekły z różnych serwisów online, a dobrze wiemy, jak chętnie nieobeznani z bezpieczeństwem lubią wielokrotnie wykorzystywać to samo hasło. Sprawdzić czas trwania ataku siłowego dla zadanych parametrów hasła i określonej mocy obliczeniowej można np. za pomocą dostępnego online kalkulatora.

Jeśli atak słownikowy się nie powiedzie, zastosować można tzw. tęczowe tablice (rainbow tables), wykorzystujące zjawisko kolizji w kryptograficznych funkcjach skrótu, czyli odwzorowania dwóch różnych ciągów danych o dowolnej długości na ten sam krótszy ciąg – skrót. Napastnik generuje zbiór skrótów dla wszystkich możliwych PSK (zwykle o zadanych parametrach), a następnie szuka wśród nich takiego skrótu, który będzie pasował do PSK.

Jako że w WPA2 wartości klucza sesji (PMK) zależą od nazwy sieci (SSID), spełniającej rolę kryptograficznej soli, dla różnych standardowych nazw sieci generuje się oddzielne tablice. To są właśnie te ogromnych rozmiarów (często 100 GB i więcej) pliki „rainbow tables”, które czasem znaleźć można w tych czy innych miejscach Sieci. Zainteresowani z łatwością mogą znaleźć w Internecie takie tablice dla najpopularniejszych nazw sieci bezprzewodowych w Polsce. Co najważniejsze, wykorzystanie tęczowych tablic pozwala przyspieszyć sprawdzanie hasła nawet stukrotnie, pozwalając na ataki nawet tym, którzy nie mają pod ręką porządnych kart graficznych.

W 2013 roku uległo wreszcie samo WPA-TKIP (ale nie WPA2-CCMP). Już w 2008 roku badacze Martin Beck i Erik Tews pokazali, jak rozszyfrować niektóre pakiety w tak zabezpieczonej komunikacji, jeśli są krótkie, a ich struktura znana. Była to w zasadzie przeróbka starego ataku chop-chop przeciwko zabezpieczeniom WEP, otwierająca drogę do fałszowania pakietów i wstrzykiwania ich do sieci, co pozwalało na np. przeprowadzenie ataku DoS na urządzenie bez konieczności łączenia się z nim. W 2013 roku, ulepszając metodę Becka i Tewsa, badacze Mathy Vanhoef i Frank Piessens przedstawili metodę pozwalającą na szybsze wstrzyknięcie pakietów i przeprowadzenie ataku DoS, przeprowadzenie skanowania portów na kliencie, zresetowanie licznika algorytmu Michael i wreszcie rozszyfrowanie transmisji między punktem dostępowym i klientem. Praca ta sprawiła, że dziś WPA uważane jest za niebezpieczne i nie zaleca się już jego stosowania.

Atak słownikowy: przechwycenie 4-way handshake

Po tym teoretycznym wstępie przyjrzymy się na sieć bezprzewodową WPA/WPA2, który zaczyna się od przechwycenia wstępnej komunikacji między klientem a punktem dostępowym, wspomnianego 4-way handshake. Nie zajmuje to wiele czasu, nie musimy długo zbierać pakietów, jak to było kiedyś przy atakach na WEP. Prawdziwe wyzwanie przyjdzie później – to skonstruowanie słownika i jego sprawdzenie na zebranym materiale.

Uruchamiamy Kali Linuksa i przełączamy urządzenie sieciowe w tryb nasłuchu, poleceniem airmon-ng start wlan0. Jak to już zostało opisane, w razie potrzeby zabijamy zbędne procesy i powtarzamy to polecenie. Następnie zaczynamy gromadzić pakiety poleceniem airodump-ng wlan0mon. Na liście dostępnych w okolicy sieci Wi-Fi powinniśmy znaleźć tę, której bezpieczeństwo będziemy testowali. W naszym wypadku przygotowaliśmy sobie sieć o prostej nazwie WLAN, jak widać wykorzystującej WPA2 z szyfrowaniem CCMP. Skopiujmy sobie do schowka adres MAC, zakończmy działanie airodumpa kombinacją klawiszy Ctrl-C i spróbujmy przechwycić 4-way handshake.

Robimy to poleceniem airodump-ng -c 8 --bssid 94:0C:6D:AC:57:02 -w WLAN wlan0mon. Parametr c odpowiada za kanał, parametr bssid to adres MAC punktu dostępowego (widoczny wcześniej na liście), w określa nazwę plików, w których będą zapisywane zbierane dane, zaś wlan0mon to oczywiście aktualna nazwa monitorującego interfejsu sieciowego.

Mijają kolejne sekundy, nic się nie dzieje, czekamy na jakieś urządzenie. W końcu jednak pojawia się ofiara (tzn. klient). Z pierwszego (B8:0F:B9:D5:C0:7D) jakoś nie udało się niczego wykraść. Za chwilę jednak pojawił się drugi klient (C8:F7:33:04:73:65), którego handshake zostało przechwycone – o czym mówi komunikat w prawym górnym rogu (WPA handshake: 94:0C:6D:AC:57:02) – i zapisane do pliku z rozszerzeniem .cap.

W Kali pliki .cap są domyślnie powiązane z Wiresharkiem, nic nie szkodzi, by obejrzeć naszą zdobycz w tym snifferze. Znajdziemy ją wpisując do filtra pakietów ciąg EAPOL (to nazwa protokołu uwierzytelniania ze standardu 802.11x).

A co, jeśli w rozsądnym czasie nikt nowy nie połączy się z atakowanym punktem dostępowym? Tu niestety pozostaje rozłożyć ręce i czekać dalej. Znacznie lepiej jest jednak, jeśli wykryjemy już połączonego klienta. Możemy wymusić deautentykację klienta, po której będzie musiał on łączyć się ponownie. Zrobimy to poleceniem aireplay-ng -0 2 -a 94:0C:6D:AC:57:02 -c C8:F7:33:04:73:65 wlan0mon. Parametr -0 określa liczbę powtórzeń deautentykacji, -a to adres MAC punktu dostępowego, zaś -c adres klienta, którego chcemy odłączyć. Jak widać, ponownie udało się uzyskać 4-way handshake.

Teraz pozostaje zorganizować sobie słownik – i zrobić ze swoich kart graficznych domowy klaster obliczeniowy. Tą kwestią (i nie tylko tą) zajmiemy się w części trzeciej naszego przewodnika po ofensywnym bezpieczeństwie Wi-Fi.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.