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

Włamanie do WPA2 w ciągu minut. Pixie Dust – „magiczny pył” na routery

Strona główna AktualnościBEZPIECZEŃSTWO

Pokazaliśmy już, jak poważnym zagrożeniem może być pozostawienie w routerze włączonej funkcji Wireless Protected Setup (WPS) – napastnik może wykorzystać ją do uzyskania naszego hasła do sieci bezprzewodowej w ciągu zaledwie kilku do kilkudziesięciu godzin. W rzeczywistości może być jeszcze gorzej. Na rynku sporo jest routerów, których implementację WPS zaatakować można jeszcze efektywniej, uzyskując hasło w ciągu co najwyżej kilkunastu minut. Przyjrzymy się więc bliżej temu, jak działa „magiczny pył”, wykorzystywany w tego rodzaju atakach – i zastanowimy, co napastnik może jeszcze zrobić, gdy WPS wyłączony, hasło długie i skomplikowane, a firmware routera aktualne, bez jakichkolwiek znanych luk.

Atak na WPS wykorzystywał słabość w implementacji zabezpieczenia PIN-em, pozwalającego na uwierzytelnienie urządzenia w punkcie dostępowym bez konieczności wpisywania hasła – po takim uwierzytelnieniu to klient dostawał kompletną konfigurację sieci, wraz z hasłem WPA2-PSK. Złamanie ośmio-, a w praktyce siedmiocyfrowego PIN-u było zaś znacznie prostsze, niż się komukolwiek wydawało: autorom tego zabezpieczenia pomyliło się dodawanie z mnożeniem, wskutek czego liczba kombinacji z 107 spadła do 104+103, czyli jedynie 11 tysięcy. Wciąż jednak był to atak online, wymagający stałego połączenia z routerem, zajmujący wiele godzin i wiążący się z ryzykiem wykrycia i zablokowania dostępu.

Losowość to trudna sprawa

W 2014 roku Dominique Bongard odkrył jeszcze gorszy błąd w implementacji WPS, który umożliwił atak offline na wiele modeli routerów, pozwalając uzyskać hasło sieci zabezpieczonej przez WPA2 w ciągu nawet kilku minut. Zakładamy, że po lekturze poprzedniego artykułu z tego cyklu macie już podstawową wiedzę o procesie wymiany danych w Wireless Protected Setup – pokażemy więc teraz, gdzie tkwi błąd, i na co on pozwala.

r   e   k   l   a   m   a

Przypomnijmy kolejnych osiem wiadomości wysyłanych między klientem (rejestrującym – registrar) a routerem (rejestrowanym – enrolee) podczas uwierzytelnienia WPS. Jak Tym razem jednak przyjrzymy się im dokładniej. Zapewne zastanawiacie się, dlaczego to punkt dostępowy/router jest urządzeniem rejestrowanym (enrolee), a klient jest urządzeniem rejestrującym (registrar), a nie na odwrót? Prawdopodobnie Wi-Fi Alliance uznało, że w przeciwnym wypadku protokół byłby bezwartościowy w scenariuszach zakładających wykorzystanie urządzeń bez wyświetlaczy (headless).

M1: Rejestrowany wysyła do rejestrującego 128-bitową jednorazową liczbę (nonce) N1 i swój klucz publiczny (PKE). Po jego otrzymaniu, rejestrujący generuje swój klucz publiczny (PKR) i 128-bitową jednorazową liczbę N2, a następie wylicza sobie klucz Diffiego-Hellmana (DHKey) i klucz wyprowadzający klucz (KDK). Z nich są wyliczane następnie 256-bitowy klucz uwierzytelniający AuthKey do uwierzytelniania wiadomości protokołu rejestrowania, 128-bitowy klucz dla kluczy KeyWrapKey (KWK) do szyfrowania tajnych liczb jednorazowych i danych konfiguracyjnych oraz 256-bitowy rozszerzony główny klucz sesji EMSK, służący do wyprowadzenia kolejnych kluczy.

M2: teraz rejestrujący wysyła do rejestrowanego swoją liczbę N2 i swój klucz publiczny PKR, oraz kodem HMAC z wmieszanym kluczem tajnym, wyprowadzonym z wiadomości M1 i M2.

M3: rejestrowany wysyła teraz do rejestrującego kody E-Hash1 E-Hash2 – to ponownie kody HMAC z kluczem tajnym, powstające z odpowiednio z kluczy PKE, PKR, pierwszej części PIN-u (PSK1) i 128-bitowej jednorazowej liczby E-S1, oraz z kluczy PKE, PKR, drugiej części PIN-u (PSK2) i 128-bitowej jednorazowej liczby E-S2.

M4: rejestrujący odpowiada rejestrowanemu wyliczeniem R-Hash1 i R-Hash2 – to kody HMAC powstające odpowiednio z 128-bitowej losowej liczby R-S1, PSK1, PKE i PKR, oraz 128-bitowej losowej liczby R-S2, PSK2, PKE i PKR, żądając dowiedzenia pierwszej połowy PIN-u.

M5: Rejestrowany udowadnia posiadanie pierwszej połowy PIN-u, zwracając zaszyfrowaną KSK liczbę E-S1, której autentyczność jest sprawdzana wyliczeniem odpowiedniego HMAC z E-S1, PSK1, PKE i PKR.

M6: Rejestrujący żąda w analogiczny sposób dowiedzenia drugiej połowy PIN-u, (tu użyta zostaje 128-bitowa losowa liczba R-S2).

M7: Rejestrowany zwraca liczbę E-S2, której towarzyszą dane konfiguracyjne.

M8: Rejestrujący ustawia sobie odpowiednią konfigurację sieci.

Czytelnicy, którzy wczytali się uważnie w to, co dzieje się w M1-M8 dzieje, mogą zauważyć jedną ciekawą rzecz. Sporo tam losowości. To też zauważył Bongard – jeśli moglibyśmy zgadnąć liczby E-S1 i E-S2, to moglibyśmy siłowo wyliczyć PSK1 i PSK2 offline, nie martwiąc się o mechanizmy ochronne w postaci przerywania połączeń. I jak się szybko okazało, w wielu routerach zgadnięcie tych liczb jest bardzo proste. Są one wynikami pracy generatorów liczb pseudolosowych, często bardzo niskiej jakości, o niskiej entropii. Jak ktoś pogrzebie w firmware routerów, łatwo odtworzy początkowy stan generatora, by wyprowadzić z niego poszukiwane liczby.

Grzebanie rozpoczęło się od routerów z czipsetami Broadcoma. Wykorzystano w nich znany od kilkudziesięciu lat generator LCG. W tym wypadku nie pobiera on żadnej zewnętrznej entropii, a obie liczby generowane są zaraz po jednorazowej liczbie urządzenia rejestrowanego. Do tego zastosowany optymalizację, wskutek której 7 bitów ziarna losowości może być wyprowadzone z ostatniego wynikowego bajtu. Znana jest też funkcja je wyprowadzająca – więc wystarczy przeprowadzić wymianę wiadomości do M3, wziąć liczbę N1 z M1, siłowo wyliczyć stan generatora pseudolosowego, z tego wyliczyć E-S1 i E-S2, a następnie siłowo wyliczyć PSK1 i PSK2 z E-Hash1 i E-Hash2. Sukces!

Równie fajnie do sprawy podszedł Realtek, generując sobie liczby pseudolosowe z czasu uniksowego (liczba sekund od 1 stycznia 1970 roku), i co więcej korzystając z tego samego generatora do generowania N1 na początku. Tak więc jeśli cała wymiana zajdzie w jednej sekundzie, to E-S1=E-S2=N1. Jeśli zajmie nieco więcej czasu, też nie ma problemu, wystarczy znaleźć ziarno, które dało nam N1, powiększyć je i w wyniku uzyskamy E-S1 i E-S2. Kilka minut pracy procesora klasy i5 – i sukces!

Broadcom i Realtek przynajmniej się starały. Z badań hakerów wynika, że Ralink i Mediatek poszły po linii najmniejszego oporu. Tam E-S1 i E-S2 nigdy nie są generowane, są zawsze równe zero. Sukces jest natychmiastowy.

Jest więc źle: entropia routerów jest niska (choć mogłaby być bardzo wysoka, czerpiąc np. z aktualnego stanu fal radiowych), wiele urządzeń ma dokładnie ten sam stan po restarcie, nietrudno jest zmusić urządzenia zdalnie do restartu i zaatakować je zaraz po tym. Co gorsze, liczba dotkniętych tą podatnością modeli idzie w dziesiątki – w tych tańszych nikt nawet nie udaje, że coś tam w środku jest innego prócz referencyjnej implementacji czipsetu z doklejonym interfejsem z inną skórką. Stąd też siłowy atak offline na WPS sprawdza się znacznie częściej, niż można by było oczekiwać. Długo jeszcze się to nie zmieni, gdyż kwestia losowości jest chyba ostatnią rzeczą, o której producenci punktów dostępowych myślą. Dowodzą tego zaprezentowane przez Bongarda odpowiedzi od producentów, które sparafrazować można chyba tylko popularnym zawołaniem nic się nie stało.

Wniosek jest prosty. Jeśli jeszcze WPS nie wyłączyliście, zróbcie to teraz. Jak za chwilę pokażemy, złamanie WPS w routerach o słabej losowości jest bardzo proste.

Pixie Dust: magiczny pył w trybach routerów

Narzędzia już znacie. W Kali Linuksie zaczynamy od przełączenia Wi-Fi w tryb monitorowania (airmon-ng start [nazwa interfejsu]), pamiętając o zabiciu przeszkadzających w tym procesów. Następnie uruchamiamy washa do pozyskania SSID, kanału i adresu MAC routerów z aktywnym WPS (wash -i [nazwa interfejsu w trybie monitorowania] -s -C)

Po zdobyciu tych danych sięgamy po Reavera. Nie będziemy musieli jednak tym razem czekać, sprawdzając jeden PIN po drugim. Wystarczy nam jedynie pozyskać trochę danych. Potrzebujemy PKE, PKR, E-Hash1, E-Hash2, E-Nonce i AuthKey. W tym celu wydajemy polecenie

reaver -i [nazwa interfejsu w trybie monitorowania] -c [kanał] -b [adres MAC routera] -vvv

Jak tylko zdobędziemy niezbędne dane, po otrzymaniu wiadomości M3, należy przerwać atak kombinacją Ctrl-C.

Uwaga: reaver pozwala teraz na automatyczne przerwanie protokołu WPS, by działać tylko w trybie PixieLoop. Po dodaniu do polecenia flagi -P wiadomość M4 nie zostanie nigdy wysłana, program zapętla komunikację od M1 do M3. Dzięki temu unikamy ryzyka zablokowania napastnika przez router.

W razie problemów z powiązaniem z routerem, można użyć polecenia:

aireplay-ng -1 0 [nazwa interfejsu w trybie monitorowania] -a [adres MAC routera]

a następnie przy wywoływaniu reavera zastosować flagę -A, za sprawą której narzędzie to nie będzie samo próbowało powiązania.

Teraz, aby przeprowadzić atak offline, musimy wydać polecenie, przy którym będzie sporo kopiowania i wklejania długich ciągów liczb szesnastkowych. Należy więc zrobić to uważnie:

pixiewps -e [PKE] -r [PKR] -s [E-Hash1] -z [E-Hash2] -a [AuthKey] -n [E-Nonce]

Jeśli atakowany router należy do grona tych, w których wykorzystano kiepski generator liczb pseudolosowych, PIN zostanie wyliczony niemal natychmiast. Wówczas uzyskanie hasła WPA2-PSK do sieci ofiary jest już trywialne:

reaver -i [nazwa interfejsu w trybie monitorowania] -c [kanał] -b [adres MAC routera] -p [wyliczony przez pixiewps PIN]

W Kali Linuksie domyślnie wykorzystywana jest sforkowana wersja Reavera (reaver-wps-fork-t6x), która sama potrafi przeprowadzić ten atak w sposób automatyczny. Jeśli z jakiegoś powodu jej w Kali nie macie (albo chcecie skorzystać z niej w innej dystrybucji), to pobrać ją możecie z GitHuba (git clone https://github.com/t6x/reaver-wps-fork-t6x) i skompilować:

cd reaver-wps-fork-t6x/src
./configure
make
make install

wystarczy wydać polecenie:

reaver -i [nazwa interfejsu w trybie monitorowania] -c [kanał] -b [adres MAC routera] -vvv -K 1 -f

Jest to metoda równoważna wcześniej opisanej, mniej przydatna edukacyjnie, za to bardziej praktyczna.

Lista routerów, wobec których można zastosować ten atak, jest dość długa. Znajdziecie na niej m.in. modele:

  • D-Linka (DIR-501, DIR-605L, DIR-610N, DIR-615, DIR-626L i GO-RT-N150),
  • Linksysa (E1700, RE1000, WRT160N),
  • Netgeara (EX2700, EX6100, JNR3210 i PR2000),
  • TP-Linka (TD-W8951ND, TL-WDR3500 i TL-WR841HP),
  • Belkina (F5D8236-4, F6D4230-4, F7D5301, F7D5301, F9K1103, F9K1105 i F9K1110),
  • oraz Asusa (RT-N10E, RT-N12E, RT-N15, RT-N56U).

Oczywiście wiele zależy od wersji sprzętu i oprogramowania – w kolejnych modyfikacjach producenci czasem (sic!) usuwali podatność na Pixie Dust. Jeśli jednak wasze urządzenia znajdują się na niej, to wyłączenie WPS jest sprawą priorytetową.

Taktyka optymalnego ataku

Zastanówmy się więc, jak napastnik może przygotować się do ataku na typową, domową sieć bezprzewodową. Pierwszym jego krokiem będzie na pewno sprawdzenie, czy czasem sieć nie jest zabezpieczona przez WEP. Jeśli jest, to złamanie jej zajmie najwyżej kilka minut, bez względu na siłę hasła. Jeśli jednak wykorzystane zostały zabezpieczenia WPA/WPA2 i WPS jest włączone, to napastnik spróbuje wykorzystać atak na WPS offline (opisany tu Pixie Dust), a jeśli okaże się on niemożliwy, zastosuje zwykły atak na WPS online.

Niektórzy mogą być przekonani, że nowe implementacje WPS, stosujące środki obrony przed siłowymi atakami, takie jak wydłużanie czasu między nieudanymi próbami czy wręcz wyłączanie WPS w razie nadmiernej liczby prób, skutecznie ochronią ich sieć. Tak jednak nie jest. Cierpliwy napastnik sięgnie po takie skrypty jak ReVdk3-r1 czy mdk3, by zmusić punkt dostępowy do restartu.

Jeśli i to zawiedzie, napastnikowi pozostaje przechwycenie komunikacji 4-way handshake i atak siłowy. Dzisiaj, gdy w cenie taniego samochodu osobowego można zbudować klaster obliczeniowy o mocy przekraczającej moc superkomputerów sprzed 10 lat, a w sieci znaleźć można gotowe słowniki ze standardowymi hasłami i tęczowe tablice, taki atak jest całkiem realny – jak pokazaliśmy, nasz redakcyjny klaster GPU z raptem dwiema kartami Radeon 7970 w ciągu ok. 4 dni z prawdopodobieństwem 50% złamie hasło składające się z ośmiu liter.

Są przecież jednak ludzie stosujący tylko WPA2 z kilkunastoznakowym hasłem pełnym też cyfr i znaków niealfanumerycznych, którzy stosują nowoczesne firmware routerów, takie jak OpenWRT czy DD-WRT, WPS wyłączyli na „dzień dobry” – czy oni mogą spać spokojnie? Niestety nie. Istnieje wiele innych metod pozyskania hasła, dostępnych nawet dla średniozaawansowanych napastników. Jedną z najbardziej niepokojących jest stworzenie fałszywego punktu dostępowego, tzw. Złego Bliźniaka (Evil Twin), z którym połączy się urządzenie ofiary tylko dlatego, że fałszywy punkt dostępowy ma silniejszy sygnał – a to otwiera drogę do całej listy innych ataków, pozwalających np. wykraść hasło sieci bezpośrednio z systemu Windows.

Należy więc traktować Wi-Fi z rezerwą i świadomością słabości w dziedzinie bezpieczeństwa, pamiętając, że czasem napastnikowi wcale nie potrzeba zdobyć hasła – czasem np. wystarczy odciąć „prawowite” urządzenie od sieci. Tak jest np. w wypadku coraz popularniejszych kamerek IP monitoringu, które przesyłają obraz do centrali po sieci bezprzewodowej. Sprytny haker może takie kamerki „oślepić” z łatwością nawet za pomocą smartfonu – więc o jakim tu bezpieczeństwie mówimy?

W kolejnym odcinku serii przyjrzymy się właśnie takim bardziej zaawansowanym zagrożeniom.

© 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.