Ofensywne bezpieczeństwo sieci Wi‑Fi: ataki na WPA i WPA2
Poznaliśmy już najważniejszenarzędzia, za pomocą których można sprawdzić odpornośćsieci bezprzewodowych na ataki. Teraz czas zastosować zdobyczeofensywnego bezpieczeństwa w praktyce, zaczynając od nasłuchiwaniaruchu. Rozpoznanie jest bowiem pierwszym krokiem na drodze dozrozumienia zagrożeń korzystania z komunikacji przez radiowemedium, dostępne przecież dla każdego.
Jak wspomnieliśmy na początku, do przeprowadzenia testówpenetracyjnych potrzebne jest nie tylko oprogramowanie, ale takżeodpowiedni sprzęt, a konkretnie karta sieci bezprzewodowej/modułWi-Fi, której sterownik pozwala na przełączenie w trybmonitorowania. Normalnie pracując karta Wi-Fi odbiera bowiem tylkopakiety do niej adresowane. Dzięki łatkom do sterownikówniektórych czipsetów, możemy uaktywnić tryb nasłuchu wszystkichpakietów ruchu sieciowego, tzw. monitor. To główny powód, dlaktórego polecamy skorzystanie z dystrybucji Kali Linux, dostarczaona bowiem nie tylko gotowego oprogramowania do testówbezpieczeństwa, ale też odpowiednio „poprawione” sterowniki,tak że nie musimy się samodzielnie bawić w ich łatanie ikompilację.
Aircrack-ng: scyzoryk hakera Wi-Fi
Wszystko-w-jednym – tak można opisać ten pakietoprogramowania, zawierający liczne narzędzia przeznaczone do atakówna bezprzewodowe sieci. Jest on domyślnie zainstalowany w Kali, alechoć umieszczony w systemowym menu, kontrolowany jest wyłącznie zapomocą interfejsu konsolowego. Warto podkreślić, że wprzeciwieństwie do wielu innych linuksowych dystrybucji, któreumieściły aircracka w swoich repozytoriach, w Kali dostajemy jegonajnowszą 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 przedewszystkim ze względu na sporą liczbę usterek występujących wstarszych wersjach.
Zacznijmy od sprawdzenia naszej karty bezprzewodowej. Wydając wterminalu polecenie iwconfig powinniśmy zobaczyć nasz interfejssieciowy. Jeśli go nie ma, to dana karta nie została wykryta – iszczerze mówiąc, biorąc pod uwagę ceny sprzętu, lepiej jestposzukać karty kompatybilnej z Kali, niż tracić czas na próby jejuruchomienia. Bardzo dobry moduł USB Wi-Fi TP-Link TL-WN722N zczipsetem Atherosa jest do kupienia w sklepach internetowych za ok.40 zł – będzie działał bezpośrednio po podłączeniu. Jeślijednak moduł Wi-Fi działa poprawnie, to najpewniej odnalezionyzostanie w systemie jako interfejs wlan0.
Przełączenie Wi-Fi na tryb monitorowania odbywa się za pomocąpolecenia airmon-ng start wlan0 . Prawdopodobnie po uruchomieniudowiecie się, że w tle działa kilka procesów, któreprzeszkadzają 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, wydajemypolecenie airmon-ng check kill – i powtarzamy polecenie airmon-ngstart wlan0.
Teraz, gdy ponownie wydamy polecenie iwconfig, zobaczymy, że wsystemie pojawił się nowy interfejs sieciowy, noszący nazwę wrodzaju wlan0mon. Na tym interfejsie będziemy przeprowadzaliwszystkie niezbędne operacje. Na początek wyświetlmy listę siecibezprzewodowych w otoczeniu za pomocą polecenia airodump-ngwlan0mon . W ten sposób możemy zapoznać się nie tylko z nazwamisieci, ale i innymi ich parametrami, takimi jak siła sygnału,kanał, przepustowość, szyfrowanie i uwierzytelnianie. Oczywiściez 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, czasemtowarzyszy temu zmiana nazwy interfejsu, np. z wlan0 na wlan1.
Jak zabezpieczono WPA i WPA2?
Pierwszy powszechnie stosowany standard szyfrowania WEPodszedł 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-FiProtected Access), będące pełną implementacją standardu 802.11i,mającego zlikwidować podstawowe problemy WEP, w szczególnościsłabą ochronę współdzielonego klucza, brak mechanizmówuwierzytelniania, brak zmienności klucza, słabe szyfrowanie i brakmechanizmów sprawdzania integralności danych. To co znane jest jakoWPA, stanowić miało tymczasowy substytut dla urządzeń, które zewzględu na ograniczenia sprzętowe nie są w stanie podołaćwymogom 802.11i.
Uwierzytelnianie w WPA2 możliwe jest na dwa sposoby: albo zapomocą znanego wszystkim klientom współdzielonego klucza PSK, albopoprzez indywidualne dane logowania (para login/hasło lubcertyfikat), przetwarzane przez niezależny od punktu dostępowegoserwer Radius. Ta pierwsza forma używana jest powszechnie nie tylkow domach, ale nawet w wielu korporacjach – konfigurować Radiusa poprostu większości się nie chce, wiele urządzeń też miewaproblemy z poprawnym włączeniem się do takiej sieci. Współdzielonyklucz PSK, którym jest ciąg od ośmiu do 63 znaków ASCII (64 cyfryheksadecymalne), przekazywany jest po protokole EAP(Extensible Authentication Protocol) – wtedy taka metodauwierzytelniania 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 dowygenerowania klucza PMK (Pairwise Master Key). Wykorzystywana jest wtym celu funkcja skrótu PBKDF2, w której argumentami klucz PSK oraz4096 iteracji kodu uwierzytelniania wiadomości HMAC-SHA1 z kluczemtajnym, a nazwa sieci bezprzewodowej (SSID) wykorzystana jest jakokryptograficzna sól. Klucz PMK jest kluczem stałym na cały czastrwania sesji.
Na tym jednak nie koniec. Wytyczne 802.11i zakładają, że (wprzeciwieństwie do WEP) rozszyfrowanie jednego pakietu nie możeoznaczać odszyfrowania całej transmisji, więc każdy pakiet musidostać osobny klucz szyfrujący. Z tego wynika też, że niemożliwajest 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). Tendrugi sluży właśnie do szyfrowania transmisji grupowej doaktualnie połączonych klientów i jest zmieniany po każdymodłączeniu urządzenia. Odbywa się to za pomocą procesu o nazwie4-way handshake. Zaprojektowano ją tak, by punkt dostępowy i klientmogły sobie udowodnić, że znają PSK i PMK, bez ujawniania tegoklucza. Szyfrują więc wysłane do siebie wiadomości, którychodszyfrowanie jest możliwe tylko jeśli już te klucze posiadają –i jeśli odszyfrowanie się powiedzie, stanowi dowód znajomościPMK. Klucz PTK powstaje następująco:
Punkt dostępowy wysyła na początku 4-way handshake do klientapewną unikatową, pseudolosową 256-bitową liczbę (tzw. Anonce).To wystarczy, by klient miał wszystko czego potrzebuje dowygenerowania 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 tworzywięc PTK i wysyła do punktu dostępowego swoje Snonce wraz z kodemspójności i uwierzytelnienia MAIC, co pozwala punktowi dostępowemuna utworzenie PTK po swojej stronie. Wtedy punkt dostępowy tworzy iwysyła klucz GTK wraz z kolejnym numerem (używanym w grupoworozsyłanych pakietach) i kolejnym kodem MAIC, a klient odpowiada nato potwierdzeniem jego otrzymania.
Jak już wspomnieliśmy, klucze PTK i GTK są stałe dla sesji. Cowięc z szyfrowaniem pakietów jednorazowymi kluczami? Tu możliwościsą dwie. Gdy wprowadzano 802.11i, szybko się okazało, że dostępneurządzenia sieciowe mają zbyt małą moc obliczeniową, byzrealizować założenia standardu. „Pomostowy” standard WPA,zaprojektowany tak, by działać na sprzęcie obmyślonym oryginalniedla WEP, wprowadził więc protokół TKIP(Temporal Key Integration Protocol), który wykorzystuje 128-bitowyklucz szyfru RC4 do szyfrowania każdego pakietu i wprowadza liczneusprawnienia, uniemożliwiające łatwe przeprowadzenie ataków,które dosłownie rozkładały na łopatki WEP. M.in. poradzono sobiez atakami relatedkey, wprowadzając funkcję mieszającą, działającą na haśledo sieci i wektorze inicjującym przed ich szyfrowaniem, atakamimodyfikacji pakietów, zastępując sumę kontrolną CRC32 przez64-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, gdzieCCM to Counter Mode with CBC-MAC, a CBC-MAC to Cipher Block ChainingMessage Authentication Code). Wykorzystuje on szyfr AES z 128-bitowymkluczem na 128-bitowych blokach, robiąc w sumie to samo co TKIP,tylko bardziej elegancko i bezpieczniej, na mocniejszychkryptosystemach (choć oczywiście wymagając większej mocyobliczeniowej).
Jak to zaatakować?
Wydaje się, że sytuacja napastnika jest nieciekawa. Samoprzechwycenie pakietów transmisji nic nie daje – są zaszyfrowaneindywidualnymi kluczami. Nawet jeśli zdobędzie się klucz PSK, tonie wystarczy do odszyfrowania przechwyconej transmisji, ponieważnieznane są wartości *nonce wykorzystane przy konstrukcji kluczaPTK. 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/WPA2jest słownikowy atak siłowy. Wykorzystuje się tu fakt, że nawetjeśli nie znamy klucza PSK, to możemy przechwycić dane przesyłanepodczas procesu 4-way handshake, a następnie zgadując wartościPSK, generować na tej podstawie PMK i PTK i sprawdzać, czy sięzgadzają. Teoretycznie atak taki byłby przeraźliwie trudny, zewzględu na ogromną wielkość przestrzeni możliwych kluczy, ale wrzeczywistości jest znacznie łatwiej. Napastnik może miećuzasadnione podejrzenia co do natury PSK, jego długości i użytychznaków – warto tu zauważyć, że dotyczy to przede wszystkimpunktów dostępowych oferowanych masowo przez dostawców sieci. Ichhasła to zwykle ciąg 8-10 znaków alfanumerycznych. Dziesięć lattemu 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żetestować kilkaset tysięcy haseł na sekundę, co sprawia, żeprzetestowanie 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żnatzw. tęczowe tablice (rainbow tables), wykorzystujące zjawisko kolizji wkryptograficznych funkcjach skrótu, czyli odwzorowania dwóch różnych ciągów danych o dowolnej długości na tensam krótszy ciąg – skrót. Napastnik generuje zbiór skrótówdla wszystkich możliwych PSK (zwykle o zadanych parametrach), anastępnie szuka wśród nich takiego skrótu, który będziepasował do PSK.
Jako że w WPA2 wartości klucza sesji (PMK) zależą od nazwysieci (SSID), spełniającej rolę kryptograficznej soli, dla różnychstandardowych 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 czyinnych miejscach Sieci. Zainteresowani z łatwością mogą znaleźćw Internecie takie tablice dla najpopularniejszych nazw siecibezprzewodowych w Polsce. Co najważniejsze, wykorzystanie tęczowychtablic 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 zasadzieprzeróbka starego ataku chop-chop przeciwko zabezpieczeniom WEP,otwierająca drogę do fałszowania pakietów i wstrzykiwania ich dosieci, co pozwalało na np. przeprowadzenie ataku DoS na urządzeniebez konieczności łączenia się z nim. W 2013 roku, ulepszającmetodę Becka i Tewsa, badacze Mathy Vanhoef i Frank Piessensprzedstawilimetodę pozwalającą na szybsze wstrzyknięcie pakietów iprzeprowadzenie ataku DoS, przeprowadzenie skanowania portów nakliencie, zresetowanie licznika algorytmu Michael i wreszcierozszyfrowanie transmisji między punktem dostępowym i klientem.Praca ta sprawiła, że dziś WPA uważane jest za niebezpieczne inie 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 przechwyceniawstępnej komunikacji między klientem a punktem dostępowym,wspomnianego 4-way handshake. Nie zajmuje to wiele czasu, nie musimydługo zbierać pakietów, jak to było kiedyś przy atakach na WEP.Prawdziwe wyzwanie przyjdzie później – to skonstruowanie słownikai jego sprawdzenie na zebranym materiale.
Uruchamiamy Kali Linuksa i przełączamy urządzenie sieciowe wtryb nasłuchu, poleceniem airmon-ng start wlan0. Jak to już zostałoopisane, w razie potrzeby zabijamy zbędne procesy i powtarzamy topolecenie. Następnie zaczynamy gromadzić pakiety poleceniemairodump-ng wlan0mon. Na liście dostępnych w okolicy sieci Wi-Fipowinniśmy znaleźć tę, której bezpieczeństwo będziemytestowali. W naszym wypadku przygotowaliśmy sobie sieć o prostejnazwie WLAN, jak widać wykorzystującej WPA2 z szyfrowaniem CCMP.Skopiujmy sobie do schowka adres MAC, zakończmy działanie airodumpakombinacją klawiszy Ctrl-C i spróbujmy przechwycić 4-wayhandshake.
Robimy to poleceniem airodump-ng -c 8 --bssid 94:0C:6D:AC:57:02 -wWLAN wlan0mon. Parametr c odpowiada za kanał, parametr bssid toadres MAC punktu dostępowego (widoczny wcześniej na liście), wokreśla nazwę plików, w których będą zapisywane zbierane dane,zaś wlan0mon to oczywiście aktualna nazwa monitorującegointerfejsu sieciowego.
Mijają kolejne sekundy, nic się nie dzieje, czekamy na jakieśurządzenie. W końcu jednak pojawia się ofiara (tzn. klient). Zpierwszego (B8:0F:B9:D5:C0:7D) jakoś nie udało się niczegowykraść. Za chwilę jednak pojawił się drugi klient(C8:F7:33:04:73:65), którego handshake zostało przechwycone – oczym 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, nicnie szkodzi, by obejrzeć naszą zdobycz w tym snifferze. Znajdziemyją wpisując do filtra pakietów ciąg EAPOL (to nazwa protokołuuwierzytelniania ze standardu 802.11x).
A co, jeśli w rozsądnym czasie nikt nowy nie połączy się zatakowanym punktem dostępowym? Tu niestety pozostaje rozłożyćręce i czekać dalej. Znacznie lepiej jest jednak, jeśli wykryjemyjuż połączonego klienta. Możemy wymusić deautentykację klienta,po której będzie musiał on łączyć się ponownie. Zrobimy topoleceniem aireplay-ng -0 2 -a 94:0C:6D:AC:57:02 -cC8:F7:33:04:73:65 wlan0mon. Parametr -0 określa liczbę powtórzeńdeautentykacji, -a to adres MAC punktu dostępowego, zaś -c adresklienta, którego chcemy odłączyć. Jak widać, ponownie udało sięuzyskać 4-way handshake.
Teraz pozostaje zorganizować sobie słownik – i zrobić ze swoichkart graficznych domowy klaster obliczeniowy. Tą kwestią (i nietylko tą) zajmiemy się w części trzeciej naszego przewodnika poofensywnym bezpieczeństwie Wi-Fi.