Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Bezpieczeństwo sieci Wi-Fi – część 5. (testowanie WPA i WPA2)
Wstęp
Atakujący sieci Wi-Fi najczęściej wykorzystują podatność PSK na ataki słownikowe, czyli ataki na WPA-Personal. Wszystkie hasła, które można uznać za słownikowe lub generowane z wykorzystaniem pewnych przekształceń słownika, należy uznać za niewystarczająco bezpieczne. Z tego powodu należy używać długich haseł, składających się z co najmniej kilkunastu losowych znaków, zawierających zarówno małe, duże litery, cyfry i znaki specjalne. Atak na takie hasło jest – przynajmniej dziś – nadal praktycznie niewykonalny.
Dodatkowo wskazane jest nieużywanie popularnych SSID, ustawianych przez producentów z powodu opisanego powyżej ataku za pomocą tęczowych tablic. Oprócz tego zgodnie z zaleceniami należy używać CCMP zamiast TKIP.
Jeśli zastosowano mechanizmy uwierzytelniania serwerów Radiusa, do których się podłączamy, oraz odpowiednio zabezpieczono komunikację pomiędzy AP a serwerem, nie ma możliwości podstawienia fałszywego AP, ponieważ klient i tak się do niego nie podłączy. Wybór odpowiedniej metody EAP zapewnia, że nawet podsłuchanie transmisji pomiędzy klientem a AP, nie ujawni danych dostępowych (hasło i login), ponieważ będą zaszyfrowane, np. w tunelu TLS. Hasło PMK jest także nadawane przez serwer Radius, w ramach szyfrowanego tunelu, zatem atak słownikowy będzie nieskuteczny. W związku z tym widać wyraźnie, że bezpieczeństwo WPA-Enterprise jest znacząco większe niż WPA-Personal. Jednak wdrożenie WPA-Enterprise wymaga dużo większych nakładów pracy oraz kosztów.
Atak z przechwyceniem 4-way handshake
Skupię się teraz na opisie i pokazaniu, jak można przeprowadzić test bezpieczeństwa sieci Wi-Fi zabezpieczonej PSK. Atak jest możliwy zarówno na sieci zabezpieczone WPA jak i WPA2, ponieważ nie dotyczy bezpośrednio zmian wprowadzonych przez WPA2 względem WPA.
1. Przygotowanie do ataku
Wspomniałem, że praktyczny atak na WPA-Personal wymaga przechwycenia 4-way handshake, gdyż potrzebne są wymieniane w nim informacje. Żadna inna część komunikacji nie jest potrzebna. Scenariusz potencjalnego ataku na taką sieć wygląda następująco:
- Rozpoczynam nasłuchiwane ruchu w sieci, nastawiając się na przechwycenie 4-way handshake.
- Po przechwyceniu 4-way handshake rozpoczynam sprawdzanie haseł dostępnych w słowniku, upewniając się, czy sieć nie była zabezpieczona którymś z nich.
Chociaż scenariusz wygląda na bardzo prosty, na wstępie pojawiają się dwa problemy:
- Co zrobić jeśli nie udało mi się przechwycić 4-way handshake.
- Jak zdobyć/skonstruować dobry słownik.
Dobry słownik, to klucz do sukcesu i jest to temat na kolejny cykl artykułów, dlatego nie będę się nim tutaj zajmował.
Natomiast jeśli chodzi o problem z przechwyceniem 4-way handshake, to możliwe są następujące przyczyny:
- Brak klientów podłączonych do sieci – z tym niestety nie można nic zrobić.
- Jesteśmy za daleko od klienta/AP i sygnał do nas nie dociera – można popracować nad poprawą sygnału odbieranego z sieci, zbliżyć się do AP lub zastosować inną antenę.
- W sieci widać ruch, ale nie udało się zarejestrować 4-way handshake – oznacza to zapewne, że rozpoczęto nasłuchiwane po tym, jak wszyscy klienci się podłączyli i nie było żadnego nowego. W tej sytuacji można albo oczekiwać dalej, albo wysłać do jednego z klientów informację anulującą jego uwierzytelnienie (ang. deautentykacja), wymuszając tym samym wykonanie 4-way handshake.
2. Przykładowy atak
Przejdźmy więc w końcu do czynów. Konfiguracja sprzętowa i softwarowa jest taka sama, jak w przykładach omówionych w poprzednich częściach cyklu.
1. Rozpoczynam nasłuchiwane obecnych sieci Wi-Fi, aby zebrać dane dotyczące testowanej sieci. Przełączam kartę w tryb monitor nasłuchujący na wszystkich kanałach:
root@debian:~# airmon-ng start wlan1 root@debian:~# airodump-ng mon0
2. Wybieram do testowania sieć z SSID: „WPA-test”, zapisując jej parametry.
3. Wyłączam tryb monitor dla wszystkich kanałów i przełączam kartę w tryb monitor tylko dla kanału 11, na którym działa analizowana sieć.
root@debian:~# airmon-ng stop mon0 root@debian:~# airmon-ng start wlan1 11
4. Rozpoczynam nasłuchiwanie ruchu sieciowego dla analizowanej sieci, oczekując na 4-way handshake.
airodump-ng -c 11 --bssid 5C:4C:A9:6B:EC:CD -w wpa-test mon0
Na zrzucie poniżej wpisu „STATION” pojawią się dane, gdy w sieci będzie znajdował się klient. W tym momencie nie ma żadnego. Zebrane dane zostaną zapisane w plikach rozpoczynających się „wpa-test”, tak jako podano w opcji „-w”.
5. Na poniższym zrzucie widać, że pojawił się klient: dowodzi tego wyświetlenie jego danych w sekcji „STATION”. W prawym górnym rogu pojawił się komunikat, że przechwycono 4-way handshake wraz z informacją od jakiego klienta.
6. Gdyby w analizowanej sieci znajdował się już klient, a nie udało się przechwycić handshake, wynik będzie wyglądał analogicznie do poniższego zrzutu.
7. W tej sytuacji można spróbować wykonać deautentykację klienta przy pomocy następującego polecenia:
root@debian:~# aireplay-ng -0 1 -a 5C:4C:A9:6B:EC:CD -c BC:CF:CC:FD:82:D3 mon0 22:04:50 Waiting for beacon frame (BSSID: 5C:4C:A9:6B:EC:CD) on channel 11 22:04:50 Sending 64 directed DeAuth. STMAC: [BC:CF:CC:FD:82:D3] [ 5|65 ACKs]
Doprowadzi to do przechwycenia handshake. Opcją -a podaję MAC AP, a opcją -c MAC klienta, którego chcę odłączyć od sieci.
8. Przechwycone 4-way handshake można podejrzeć, np. przy pomocy wiresharka, otwierając w nim plik wpa-test-01.cap, utworzony w katalogu, w którym uruchomiłem wcześniej airodump-ng. Wpisując w górne okienko filtrowania frazę „eapol”, uzyskuję wynik prezentujący poszczególne etapy handshake (zrzut poniżej).
9. Atak słownikowy na przechwycone handshake wykonuje się przy pomocy polecenia:
root@debian:~# aircrack-ng -w slownik -b 5C:4C:A9:6B:EC:CD wpa-test-01.cap
Co w moim przypadku zakończyło się sukcesem i uzyskaniem hasła.
Jednym z rozwiązań na duże słowniki jest przechowywanie ich w postaci spakowanej i rozpakowywanie w locie z wrzuceniem bezpośrednio na wejście aircrack-ng. Można to zrobić np. tak:
root@debian:~# xzcat slownik.xz | aircrack-ng -w - -b 5C:4C:A9:6B:EC:CD wpa-test-01.cap
Ataki na WPA z użyciem GPU
Istota ataku słownikowego na WPA polega na wykorzystaniu mocy obliczeniowej do przeszukiwania słownika z hasłami. Ta operacja bardzo łatwo podlega zrównoleglaniu, osiągając bardzo wysoki jego współczynnik.
Operacje matematyczne używane podczas obliczeń tworzących klucze WPA mogą być w pełni wykonywane przy użyciu procesorów kart graficznych. Dzisiejsze GPU są wielokrotnie szybsze od CPU w zakresie pewnych wybranych operacji matematycznych i pozwalają znacząco poprawić skuteczność ataku słownikowego na WPA.
Jednym z najlepszych narzędzi do tego celu jest hashcat, który określany jest jako najszybszy kraker WPA/WPA2 na świecie. Siła hashcata tkwi w jego zaawansowanej optymalizacji, pozwalającej w pełni wykorzystać możliwości kart GPU. Używanie hashcata jest bardzo proste i wygodne, a wszystkie potrzebne informacje są dostępne na stronie projektu.
Podsumowanie
W tej części serii pokazałem nowe elementy bezpieczeństwa sieci Wi-Fi wprowadzone w ramach standardu 802.11i, czyli WPA/WPA2. Widać wyraźnie, że bezpieczeństwo WPA jest nieporównywanie wyższe niż WEP. Opisane podatności w nieznacznej mierze mają charakter podatności kryptograficznych czy błędów na poziomie architektury, oczywiście przy założeniu, że używane jest zalecane aktualnie WPA2 z CCMP.
Przedstawiony atak ma charakter ataku siłowego i ze względu na rozgłoszeniowy charakter sieci Wi-Fi bardzo ciężko jest się przed nim chronić. Problem będzie się z czasem powiększał ze względu na wzrost mocy obliczeniowej CPU i GPU.
Bibliografia
- tutoriale aircrack
- hashcat
- wiele interesujących tutoriali dotyczących bezpieczeństwa Wi-Fi
—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ęść 4. (Standard 802.11i czyli 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)
Wszystko ladnie, pieknie. Tylko zastanawia mnie co da komus dostep do sieci? Co taki czlowiek moze zrobic? O tym chcialbym przeczytać w nast. artykule.
Zobaczymy co na to autor, ale generalnie kolejne części są w trakcie pisania (choć raczej tematyka WPA2-Enterprise).
Dodajcie to, że hashcat jest mniej wydajny od pyrita.
Sam nie wiem jak z tą wydajnością – masz może jakieś benchmarki porównawcze?
Adrian, na przykład ktoś może popełnić przestępstwo wykorzystując dostęp przez Twoją sieć. Nie chciałbyś mieć na głowie imprezy z gośćmi w kominiarkach, prawda? :)
@Adrian. Z fajniejszych to podmiana DNS, podsłuchiwanie rozmów telefonicznych (oczywiscie wiadomo kiedy), próba zarazenia wirusami, kontrola sprzędtu AGD (;D) i wiele wiele innych.
Btw: Fajne imię;)
Ale wiesz, dużo jest informacji o tym jak ludzie łamią WEP/WPA, a nie ma nic o tym co dalej mogą z tym zrobić i (z tego co piszecie) mogą być tego konsekwencje.
Pomyślcie że nie wszyscy mają możliwość korzystania z własnego neta, jak się „poprosi” sąsiada o hasło, to w tedy można jakoś funkcjonować – pozdrawiam.
Drugą możliwością jest wykorzystanie przejętego internetu jako proxy.
Trzecią jest możliwość wykorzystania tego w ataku man in the middle.
Czwartą to wykorzystanie cudzego internetu do darmowego poboru (zwłaszcza jak ma szybsze łącze) np. po antence dzięki wirtualnej maszynie.
Dziwne, że do tej pory nikt jeszcze nie zauważył problemu tzw. routerów wypożyczanych przez Toyę. Każdy z nich ma domyślnie ustawione hasło składające się z ośmiu cyferek a żeby było śmieszniej urządzenia te nie mają panelu admina (albo to ja jestem taki głupi i go nie umiałem znaleźć) więc niemożliwa jest też jego zmiana. Oczywiście identyfikacja takiego „celu” jest banalnie prosta.
Cześć,
Nie orientujesz sie może o ile krótszy jest czas porównywania z hasłami z rozpakowanego już wcześniej słownika w formie tekstowej niż z słownika spakowanego, rozpakowywanego w locie ?
radeon r9 290x , i jedziemy 200000 kombinacji na sekunde z hashcatem ;0