Łamanie hasła WPA2 – czy standard ten jest faktycznie bezpieczny?
Cóż… w przeciwieństwie do WEP, WPA2 posiada zarówno szyfrowanie AES jak i system CCMP, co czyni go znacznie bezpieczniejszym standardem. Nie można tak po prostu odczytać stałego klucza znanego z WEP i to komplikuje nieco sprawę przy łamaniu haseł – choć tylko w momencie, w którym hasło jest naprawdę dobre. To jak szalenie ważne jest ustawienie odpowiednio mocnego hasła Wi-Fi udowodnię poniżej, przeprowadzając serię testów. Testy odnoszą się do najbardziej popularnych ataków – przechwycenie handshake i późniejsze odszyfrowanie klucza za pomocą brute force oraz metodą słownikową, a także atak na WPS, czyli na jeden z najbardziej niebezpiecznych systemów w routerach z ostatniej dekady. Na początek przyjrzyjmy się pierwszej metodzie.
Zbieranie informacji do złamania hasła WPA2 – przechwycenie handshake – jak to robią?
Żeby w ogóle mieć możliwość złamania hasła WPA2, trzeba najpierw zebrać wszystkie potrzebne informacje dotyczące wybranej przez nas sieci. Tutaj posłuży stary, dobry Linux, a właściwie najprostszy w obsłudze takich rzeczy – Kali. System możemy odpalić nawet na wirtualnej maszynie i dostępny jest dla wszystkich – kompletnie za darmo. Kali ma wszystkie potrzebne narzędzia natywnie wbudowane w aplikacjach i choć nadal operuje na zasadzie wpisywania komend, nie trzeba ściągać dodatkowych rzeczy z repozytorium Github. Do ataku posłużą znane wszystkim narzędzia airmon-ng, airodump-ng oraz aireplay-ng, choć będzie ich jeszcze więcej w dalszej części artykułu.
Żeby w ogóle myśleć o takich rzeczach, trzeba mieć do dyspozycji odpowiedni sprzęt, a mowa tutaj oczywiście o karcie sieciowej, której chipset wspiera możliwość wejścia w tryb „nasłuchu”. Ponownie – ze względów bezpieczeństwa nie napiszę co to za model karty. Tu oczywiście przychodzi z pomocą pierwsze narzędzie – airmon-ng. Po ówczesnym wyłączeniu systemów WPA supplicant czy network, airmon-ng wprowadzi naszą kartę w tryb „monitor” i pozwoli korzystać z późniejszych, do nasłuchiwania wszystkich dostępnych kanałów na częstotliwości 2.4 GHz.
Za pomocą airodump-ng, możemy rozpocząć poszukiwania sieci, która nas interesuje. Wpisujemy odpowiednią komendę i naszym oczom ukazują się dosłownie wszystkie sieci aktualnie rozsyłające sygnał – nawet te ukryte. Identyfikujemy w taki sposób nasz potencjalny cel, który w tym wypadku jest oznaczony jako IThardware-Mercusys i IThardware-TP-link. Informacje wyświetlające się na ekranie mówią bardzo dużo. Oznaczony jest kanał, na którym operuje dany router (access point), jego szyfrowanie oraz ilość danych aktualnie przesyłanych, adres i adresy podłączonych do niego urządzeń (telefonów, laptopów itp.).
Następnie wskazujemy programowi interesujący nas router, wpisujemy odpowiednią komendę, która odfiltruje resztę z pasma i zapisujemy do pliku przechwycone pakiety. W tym momencie następuje zwrot, bo przechwycenie tak zwanego „handshake” musi odbyć się wtedy, kiedy do routera jest podłączone urządzenie Wi-Fi – obojętnie jakie. Jeśli go nie ma, czekamy po prostu aż ktoś się połączy. Jeśli już są urządzenia, które przeszły weryfikację, możemy je zmusić do tego, by te połączyły się ponownie.
Wpisując komendę do aireplay-ng, możemy wysłać pakiety do urządzenia (deautoryzacja) i z tą pomocą zmusimy je do ponownego połączenia. W tym momencie następuje właśnie autoryzacja, na której nam najbardziej zależy – czyli przechwycenie handshake. Jeśli operacja się nie udała, może to oznaczać że sygnał jest zbyt słaby i zgubiliśmy odpowiednie informacje w eterze, ale kilkukrotne powtórzenie czynności zapewni nam odpowiedni pakiet. Stosowna informacja wyświetli się w górnym rogu ekranu. I to tyle. Tyle wystarczy do rozpoczęcia ataku offline, za pomocą którego odgadniemy hasło Wi-Fi wybranej przez nas sieci.
Brute Force – brutalna siła odgadnie wszystko… no prawie wszystko
Zaprezentowany powyżej obrazek pokazuje jak niebezpieczne jest ustawianie hasła złożonego tylko z ośmiu znaków, zawierającego tylko cyfry. Do złamania hasła z pliku, który wcześniej wygenerowaliśmy w airodump-ng, posłużył mi znany program Hashcat w trybie CUDA oraz karta graficzna NVIDIA GeForce RTX 2080 Super. W tym wypadku skorzystałem z ataku brute force, a więc nie ma tu mowy o wpisaniu swojego hasła do słownika i „oszukiwaniu” samego siebie. Zauważcie, że nawet licząc wszystkie możliwe kombinacje, od 00000000 do 99999999 (100 milionów pozycji lub 10^8), hasło znalezione zostało po nieco ponad dwóch minutach i nawet jeśli hasłem było by ostatnie na liście, czyli właśnie 99999999, zajęłoby mi to niecałe pięć minut i to w momencie, w którym sprzęt nie jest wykorzystywany w stu procentach.
Co z hasłami dłuższymi? Tu problem jest podobny, bo nawet hasło 12-znakowe, które składa się wyłącznie z cyfr, możemy złamać relatywnie szybko – wygenerowanie wszystkich kombinacji (jest ich bilion, czyli 10^12) potrwa w tym wypadku około 17 dni, choć proces można skrócić, wykorzystując lepszy komputer lub nawet wynajmując serwer. 17 dni może się wydawać długim procesem, ale trzeba pamiętać, że jest to atak offline. To oznacza, że włamywacz wcale nie potrzebuje siedzieć z laptopem obok Waszego domu.
Załóżmy teraz, że nasze hasło składa się z małych liter, cyfr oraz kilku wybranych znaków specjalnych. Daje nam to w sumie 46 możliwych znaków, a przy 8-znakowym haśle, kombinacji do odgadnięcia będzie ponad 20 bilionów (46^8). Dużo? Owszem, ale nawet przy takim haśle wyposażony w GeForce RTX 2080 Super komputer złamałby je w ciągu 288 dni – w najgorszym możliwym przypadku (na obrazku powyżej hasło 9-znakowe łamane w ponad 3 lata). Choć taki czas już na starcie odrzuci każdego włamywacza, nic nie stoi na przeszkodzie byś zwiększył jego frustrację generując hasło dłuższe, na przykład 12-znakowe. W tym wypadku liczba kombinacji jest tak duża, że włamywaczowi z opisywaną kartą graficzną nie starczy życia, by te hasło złamać. Prawie 90 trylionów kombinacji (46^12) oznacza kilkanaście tysięcy lat łamania. I to jest drodzy czytelnicy właśnie przewijające się przez cały artykuł mocne hasło.
Atak słownikowy – kiedy brute force zajmuje zbyt dużo czasu
Ataki brute force można skrócić do naprawdę niewielkiej ilości czasu, używając specjalnie zaprojektowanych słowników, czyli haseł, które ludzie wpisują najczęściej. Imiona, nazwy własne, daty urodzenia. To wszystko jest generowane pod człowieka, by ten mógł to zapamiętać. Oczywiście po drugiej stronie również stoi człowiek, który w każdej chwili może wskazać komputerowi żeby ten nie odgadywał wszystkich możliwych kombinacji i skupił się tylko na tych wybranych. Atak słownikowy może mieć ogromną wartość, szczególnie teraz – w dobie wszechobecnych mediów społecznościowych. Ustalenie imion czy daty urodzenia celu jest niesłychanie proste – co wręcz może przerażać. No dobrze, ale jak to działa? Cóż.. pierwszym etapem jest ściągnięcie odpowiedniego słownika lub wygenerowanie swojego, specjalnie zaprojektowanego pod ten konkretny cel.
Słowników w sieci jest dużo – na przykład PWN, ale wygenerowanie swojego może również przynieść wymierne rezultaty. W tym wypadku narzędziem do generowania będzie crunch lub wordgen w systemie Linux, choć trzeba wspomnieć, że tworzenie wszystkich haseł zupełnie niezwiązanych z tematem jest co najmniej nieefektywne. Tak czy inaczej, do łamania znów wykorzystamy program Hashcat, który będzie porównywał „hash” przechwycony z wygenerowanym hashem ze słownika. Program ten jest jednak bardziej wyrafinowany i potrafi dużo więcej niż tylko porównywać suche wyrazy. Włamywacze chętnie korzystają również z opcji maskowania. Na przykład dajmy na to nazywam się Andrzej i jest to naszym głównym hasłem, które może się pojawić w haśle Wi-Fi. Może to być Andrzej78, andrzej19832209 lub nawet @ndrz3j2209193. Jak widać kombinacji hasła jest mnóstwo i to ostatnie wydaje się być naprawdę mocne – wydaje się. Hasło takie nadal ma w sobie filar zwykłego imienia i w taki sposób możemy zaatakować je za pomocą maski. Podajemy dla Hashcat specjalną formułę, by ten użył specyficznych zamienników – na przykład z A na @ i próbujemy. Dodawane w tym wypadku jest tylko kilka znaków, a nie cała litania nowych słów i takie hasło również szybko zostanie odszyfrowane.
Atak słownikowy jest bardzo efektywny, ale tylko w momencie, w którym hasło faktycznie zawiera znany wyraz. Nieważne czy jest to nazwa samochodu, drzewa, kraju, imię czy data urodzenia. Nie powinieneś stosować tych rzeczy w swoim haśle Wi-Fi – a właściwie w żadnym haśle, w ogóle. Tylko kompletnie przypadkowy ciąg liter, cyfr i znaków specjalnych uchroni Cię przed atakiem słownikowym i tylko w momencie, w którym hasło będzie odpowiednio długie. Jeśli nadal używasz opisywanych tu rzeczy, zalecam natychmiastową zmianę. Dla ukazania jak bardzo atak słownikowy skraca ewentualny czas do odgadnięcia hasła, przytoczę na koniec kilka przykładów. Na przykład 8-znakowe hasło „bagietka”, czyli po prostu zwykły 8-znakowy rzeczownik, który pojawia się w każdym słowniku, zostanie w ataku słownikowym złamane w dosłownie kilkanaście sekund i kilka minut w ataku brute force. Hasło „b@g1etka” zostanie złamane metodą słownikową w kilka minut, a metodą brute force w kilkaset dni. Natomiast hasło „konstantynopolitanczykowianeczka” zostanie złamane metodą słownikową w kilkadziesiąt sekund, a metodą brute force – w 10 oktylionów lat. Widzicie już o czym tu mowa? Jeśli hasło, w całości, pojawia się w dowolnym słowniku, atak będzie zakończony sukcesem i to w bardzo krótkim czasie, niezależnie od tego, jak długie ono jest.
Pokaż / Dodaj komentarze do: Bezpieczne Wi-Fi – dlaczego warto postawić na dobry router?