<- Poprzedni rodział -- Następny rozdział ->

Rozdział 12: Sieć WPA/WPA2 oraz tworzenie własnych słowników

Jak z tytułu wynika zajmiemy się sieciami z szyfrowaniem WPA/WPA2. Są one następstwem sieci WEP, która jak już się dowiedzieliście z poprzedniego rozdziału są łatwe do rozszyfrowania. Twórcy naprawili wszystkie wady dlatego sposoby jakie poznaliśmy w poprzednim rozdziale w stosunku do tej sieci są bezużyteczne. Jeżeli chcesz to sprawdź, upewnisz się, że tak naprawdę jest.

Jak zapewne zastanawiasz się czym WPA, a WPA2 różni się. Otóż są one bardzo podobne do siebie, z tą różnicą, że WPA używa szyfrowania TKIP, natomiast WPA2 CCMP. Są to dwa szyfrowania różniące się sposobem zapisu naszego hasła. Nie będę zagłębiał się w różnice między tymi dwoma ponieważ sposoby uzyskania hasła są takie same.

12.1. WPS – sposób na uzyskanie hasła bez użycia słownika.

WPS jest to sposób podłączenia takiego urządzenia jak drukarka bez konieczności podawania hasła. Na urządzeniach występuje w formie przycisku. Jeżeli wciśniesz na drukarce przycisk WPS, następnie na swoim routerze, połączą się ze sobą automatycznie bez podawania jakiegokolwiek klucza. Natomiast warto wiedzieć, że połączenie następuje dzięki ośmiocyfrowego kodu pin który składa się tylko z cyfr. W związku z tym wyznacza bardzo mały zakres ilości kombinacji co ułatwia złamanie hasła.

Jest jeszcze jedna sprawa. Aby udało się uzyskać kod pin w taki sposób, WPS musi być źle skonfigurowany. Bardzo często zdarza się taka sytuacja z powodu wygody. Jeżeli WPS jest dobrze skonfigurowany do uwierzytelnienia hasła należy skorzystać z wcześniej wymienionej autoryzacji poprzez kliknięcie na obu urządzeniach. Niestety niektórzy administratorzy sieci dla wygody konfigurują tą opcję bez konieczności autoryzacji przy pomocy przycisków, pomimo, że znajdują się one na urządzeniach.

W przypadku jeżeli router jest skonfigurowany prawidłowo, odrzuci każde zapytanie o pin, chyba, że zostanie kliknięty na routerze przycisk.

Myślę, że domyślasz się nad ideą najbliższych podrozdziałów. Ma ona pokazać, że konfiguracja dla własnej wygody może doprowadzić do ułatwienia osobom nieupoważnionym dostępu do naszej sieci.

Czasami do sieci w której logujemy się na nasze konta bankowe, czy też komunikujemy się ze znajomymi, przez taki błąd wszystkie wymienione informacje mogą zostać przechwycone. Myślę, że ani wy ani ja nie chcielibyśmy, aby ktoś podsłuchiwał nasze prywatne rozmowy, a już na pewno nie chcielibyśmy aby miał dostęp do naszego konta bankowego.

Dla przykładu mogę podać, że jeden z moich znajomych który prowadzi firmę korzystał z takiej opcji. Bardzo szybko wskazałem mu jaki błąd popełnia szczególnie, że często logował się do konta firmowego w swoim biurze, a pracownicy korzystali z systemów B2B.

Możliwe, że do testów stworzyłeś sieć przy wykorzystaniu albo drugiego adaptera bezprzewodowego, albo tak jak pokazałem rozdziale 10 skorzystałeś z laptopa oraz botowalnego Linuksa. Jeżeli sieć z której korzystasz na co dzień jest typu WPA/WPA2, nadarza Ci się ogromna okazja na przetestowanie jej i wprowadzenie poprawek. W związku z tym proponuję nie tworzyć sieci tylko skorzystać z własnej.

12.2. Wykorzystujemy WPS do uzyskania hasła

Abyśmy mogli cokolwiek zrobić musimy wyszukać sieci które nie mają zablokowanej opcji WPS. Większość, sposobów wykorzystania WPS do złamania hasła w nowszych routerach jest automatycznie zablokowane, nie wymagają jakiejkolwiek konfiguracji w związku z tym nie da się ich wykorzystać.

Jednakże tego sposobu uczymy się z dwóch powodów:

  • Po pierwsze wypada wiedzieć co to jest WPS i jak z niego korzystać;
  • Łamanie haseł przy pomocy słownika jest bardzo czasochłonne dlatego pierwszą metodą jaką powinieneś wypróbować jest właśnie ta;

Do wyszukania sieci które nie mają zablokowanego WPS korzystamy z polecenia:

sudo wash --interface wlan0

Pamiętaj, że po --interface musisz wpisać nazwę interfejsu który został przypisany do adaptera bezprzewodowego.

Powinna wyświetlić się lista sieci, które nie mają zablokowanego WPS. Świadczy o tym kolumna Lck gdzie mamy wpisane no, co po polsku oznacza nie. Z wyświetlonej listy wybieramy naszą sieć, a następnie korzystamy z poznanego wcześniej polecenia:

sudo aireplay-ng --fakeauth 30 -a 33:98:13:66:12:19 -h 22:35:62:07:78:43 wlan0

W ramach przypomnienia po -a wpisujemy adres mac naszego celu, po -h adres naszego routera. Jedno co się zmienia to liczba wpisana po opcji --fakeauth ponieważ już nie używamy wartości 0 tylko 30. Liczba ta oznacza odstęp pomiędzy próbami złamania hasła. Wykonujemy podział terminatora i w drugiej konsoli wpisujemy:

reaver --bssid 33:98:13:66:12:19 --channel 1 --interface wlan0 -vvv --no-associate

Większa część polecenia nie powinna Cię zaskoczyć. Jedynie ostatnia jej część.

Opcja -vvv oznacza, że wszystkie informacje zostaną wyświetlone. Jest to o tyle istotne, że jeżeli wystąpi jakiś błąd będziemy mieli dokładną informację gdzie się pojawił.

Ostatnia opcja oznacza, że wykorzystujemy własną metodę associacji. W naszym wypadku korzystamy z polecenia aireplay-ng.

Oprogramowanie reaver posiada swój własny sposób associacji. Musimy wtedy skorzystać z polecenia w poniższy sposób:

reaver --bssid 33:98:13:66:12:19 --channel 1 --interface wlan0

Bez ostatniej opcji skorzystamy z wbudowanego sposobu.

Dlaczego pokazuję na to dwa sposoby?

Tutaj dochodzę do pewnych wątpliwości nad funkcjonalnością wbudowanej associacji oprogramowania reaver. Niestety w wielu wypadkach ona po prostu nie działa lub nie działa we właściwy sposób dlatego zalecanym przeze mnie sposobem jest ten z wykorzystaniem dwóch oddzielnych poleceń.

12.3. Błąd „Failed to associate with…”

W przypadku wystąpienia powyższego błędu należy zmienić czas wstrzymania pomiędzy próbami na 100:

sudo aireplay-ng --fakeauth 100 -a 33:98:13:66:12:19 -h 22:35:62:07:78:43 wlan0

Zmianę jaką należy wykonać w poleceniu podkreśliłem. Jeżeli nadal wystąpi ten sam błąd należy próbować z wyższymi wartościami.

12.4. Błąd 0x3 i 0x4

Jeżeli napotkasz błąd tego typu oznaczać będzie, że router nie akceptuje pakietów typu NACK dlatego aby móc iść dalej musimy wyłączyć ich wysyłanie. Robimy to jak pokazałem poniżej:

reaver --bssid 60:02:92:69:23:14 --channel 1 --interface wlan0 -A --no-nacks

Oczywiście uruchamiamy również polecenie do associacji. Tak naprawdę oprócz --no-nacks zmienia się jeszcze -A. Opcja ta jest skrótowym odpowiednikiem opcji --no-associate. Możemy używać ich wymiennie. Nie użyłem skróconej wersji od samego początku tylko po to by ułatwić zrozumienie materiału. Teraz jak jest wszystko dla Ciebie jasne możesz używać skróconych wersji opcji. Wszystkie możliwości poznasz po wpisaniu reaver --help.

12.5. Odblokowanie WPS

Jeżeli pozbyliśmy się wszystkich powyższych problemów, o ile oczywiście wystąpiły, po pierwszej, czwartej lub którejś z kolei próbie sprawdzenia pinu, WPS się zablokuje. Otrzymamy informację typu:

[!] WARNING: Detected AP rate limiting, waiting 60 seconds before re-checking

Możliwe, że pamiętasz jak wspominałem w jednym z wcześniejszych paragrafów o kolumnie LCK. Wyświetlona wartość pierwotnie była no. Jeżeli teraz wpiszesz polecenie wash w taki sam sposób jak wyżej to zauważysz, że nie ma już no tylko jest tam wartość yes co oznacza, że WPS został zablokowany.

Teraz mamy dwa wyjścia aby odblokować możliwość dalszych prób złamania hasła.

12.5.1. Odłączenie wszystkich od sieci

Ten sposób powinien być już znany ponieważ omawialiśmy polecenie do odłączania wszystkich użytkowników sieci w rozdziale 9. Dlatego bez większego rozpisywania się pozwolę sobie jedynie na powtórzenie:

sudo aireplay-ng --fakeauth 100000000000000 -a 33:98:13:66:12:19 wlan0

Odłączamy od sieci wszystkich użytkowników co sprawi, że zaistnieje konieczność restartu routera, co za tym idzie odblokowania WPSa.

Jeżeli tracisz nagle połączenie z internetem i masz odblokowanego WPS to pierwszą rzeczą jaką powinieneś zrobić to sprawdzić czy właśnie nie został on zablokowany. Jeżeli tak oznaczać będzie, że ktoś próbuje złamać hasło.

Ta opcja jest najszybsza pod względem tego co musimy wykonać. Natomiast jest najmniej efektywna ze względu na to, że wymaga ingerencji osoby trzeciej aby odblokować WPS.

12.5.2. Wykorzystanie mdk3 do odblokowania WPS

Oprogramowanie posłuży nam do celu opisanego w tytule podrozdziału, ale obecnie nie jest zainstalowane w systemie Kali Linux.

Tutaj pewna uwaga, jeżeli przeszedłeś w tryb monitorowania i robisz wszystko według moich zaleceń to nie masz dostępu do internetu. Najszybciej odzyskasz połączenie uruchamiając maszynę wirtualną ponownie, wszelka zabawa z poleceniami trwa o wiele dłużej.

Wykonajmy instalację niezbędnego oprogramowania:

sudo apt-get install mdk3

Po zainstalowaniu możemy przejść do próby odblokowania WPS. Zrobimy to tak jak prezentuję w poniższym poleceniu:

sudo mdk3 wlan0 a -a A4:98:13:6D:A9:19 -m

W pierwszej części określamy interfejs adaptera sieciowego. Opcja a występująca po interfejsie sieciowym oznacza mod jaki chcemy wykorzystać. W naszym wypadku jest to DoS Mode.

Następnie -a oznacza, że chcemy, aby atak był przeprowadzony na określony adres mac.

Ostatnia opcja -m oznacza, że program będzie wykorzystywał tylko istniejące adresy.

Przyznam, że w większości nowych routerów powyższy sposób nie działa, ale zawsze warto spróbować. Program podłącza ogromną liczbę klientów do routera dzięki czemu powinien sam się zrestartować, a my uzyskamy dalszą możliwość sprawdzenia kolejnego / kolejnych pinu / pinów.

12.6. Podsumowanie WPS

Jak myślę, zauważyłeś, że ten sposób nie jest tak efektywny jakbyśmy sobie wyobrażali. Ale to dobrze. Wiemy już, że nawet przy odblokowanym WPS nie jest to takie łatwe i wymaga sporej ilości czasu. W tym wypadku na pewno należy sprawdzić jak zachowa się nasz router i w razie czego poszukać bardziej bezpiecznego szczególnie jeżeli udało Ci się zdobyć pin.

Dla waszej wiedzy z tego co testowałem kilka routerów większość z nich odblokowuje się po tak około 5-10 minutach co też wydłuża znacznie czas złamania hasła. Przyznam, że nigdy nie obliczałem czy w tej sytuacji bardziej opłaca się poczekać czy też skorzystać z ataku słownikowego, którym zajmiemy się w dalszej części rozdziału.

W przypadku dwóch sposobów do odblokowania WPSa pierwszy warto zastosować kiedy drugi nie zadziała, ale tylko wtedy gdy WPS nie blokuje się na niskiej liczbie zapytań o pin. Dlaczego? Myślę, że każdy z was domyśliłby się, że coś jest nie tak i albo zaprzestał ponownego uruchamiania routera albo zaczął sprawdzać w czym tkwi problem.

12.7. Pozyskiwanie pliku handshake

O tym czym jest plik handshake i dokładnym opisem zająłem się w rozdziale 9 dlatego tutaj przypomnę tylko polecenia. Zakładam oczywiście, że twój adapter jest uruchomiony w trybie monitorowania oraz wiesz którą sieć chcesz sprawdzić:

sudo airodump-ng --bssid 00:11:22:33:44:55 --channel 9 --write nois wlan0

Zapisujemy dane do pliku i następnie po podzieleniu konsoli terminatora wpisujemy drugie:

sudo aireplay-ng --deauth 1000000000 -a 00:11:22:33:44:55 -c 00:11:22:33:44:66 wlan0

W przypadku wybranego urządzenia w sieci robimy jak powyżej. Jeżeli chcemy wstrzymać ruch całej sieci należy skorzystać z polecenia:

aireplay-ng --deauth 1000000000 -a 00:11:22:33:44:55 wlan0

Trzecim sposobem jest poczekać, aż ktoś nowy połączy się z siecią. Niezależnie od sposobu musimy poczekać aż otrzymamy informację:

CH 9 ][ Elapsed: 9 mins ][ 2021-10-18 16:31 ][ WPA handshake: 00:11:22:33:44:55

I mamy niezbędny plik do odszyfrowania hasła. Teraz co dalej?

12.8 Tworzenie własnego słownika

Jeżeli chcemy skorzystać ze sposobu słownikowego musimy taki posiadać. W tym wypadku albo tworzymy własny ręcznie, poszukujemy w internecie lub generujemy przy użyciu zewnętrznego oprogramowania. Myślę, że dwa pierwsze sposoby nie sprawią wam żadnych trudności, chociaż przyznaję, tworzenie własnego słownika ręcznie nie należy do bardzo skutecznych praktyk. Szczególnie, że znając jeden z programów do tego przeznaczonych jesteśmy w stanie wygenerować taki wpisując odpowiednie właściwości.

Inna sytuacja ma miejsce kiedy używamy ataku socjalnego. Jeżeli znamy osobę do której sieci chcemy się dostać najlepiej jest zapisać słowa z jakich możliwe, że hasło może się składać. Jest jeszcze jedno ale. W większości wypadków takie hasło składa się z części tych słów. O tym jak wygląda atak socjalny zajmiemy się w późniejszym czasie.

Chciałbym podkreślić, że umiejętność tworzenia własnego słownika jest jedną z bardziej wartościowych umiejętności jakie można nabyć. Przyczyną tego jest to, że atak słownikowy wykorzystywany jest w każdym przypadku próby złamania hasła.

12.8.1. Oprogramowanie Crunch

Aby w pełni nauczyć się korzystać z oprogramowania crunch należałoby napisać książkę lub poświęcić cały kurs temu programowi. Niestety na łamach tego rozdziału omówię tylko najczęściej wykorzystane sposoby. Do głębszego zapoznania się z nim polecam podręcznik man.

Poznajmy jak polecenie wygląda:

crunch od do abc -o slownik.txt

Tym razem nim przejdziemy do praktycznego przykładu zajmiemy się jego szczegółowym opisem. Po wpisaniu nazwy polecenia wpisujemy liczbę od ilu znaków hasło ma się zaczynać. Po spacji wpisujemy z ilu maksymalnie hasło ma się składać. Następnie wpisujemy jakie znaki ma zawierać. Ja tutaj wpisałem abc czyli słownik będzie zawierał wszystkie możliwe kombinacje pomiędzy znakami od do zawierające abc. Po opcji -o wpisujemy nazwę słownika jaki chcemy nadać.

UWAGA! Specjalnie nie używam w nazwach plików polskich znaków oraz staram się nie używać spacji tylko znaku podkreślenia.

Teraz posiadając teoretyczną wiedzę stwórzmy swój własny słownik.

crunch 6 8 abc -o slownik.txt Crunch will now generate the following amount of data: 81648 bytes 0 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 9477 crunch: 100% completed generating output

Stworzyliśmy bardzo mały słownik składający się z 9477 kombinacji. Jak i również zajmujący 81646 bitów. Może się wydawać, że 9477 linii haseł to dużo, ale uwierz mi jest to naprawdę mało. Niebawem będziesz tworzył słowniki które będą ważyły i Tera Bajty, ale o tym później.

Im mniejszy słownik tym mniejsze prawdopodobieństwo, że się tak naprawdę uda, ale szybciej wykonamy atak i dowiemy się czy dany słownik jest coś warty czy też nie.

Podchodząc do tego bardziej socjalnie jesteśmy w stanie osiągnąć bardzo dużo. Przykładowo wiemy, że hasło składa się z 8 znaków, zaczyna się na a i kończy na b. Przy takich zasobach wiedzy możemy zapisać polecenie w poniższy sposób:

crunch 8 8 abc -o slownik.txt -t a@@@@@@b Crunch will now generate the following amount of data: 6561 bytes 0 MB 0 GB 0 TB 0 PB Crunch will now generate the following number of lines: 729 crunch: 100% completed generating output

Spójrzcie na powyższy przykład. Stworzyliśmy teoretycznie taki sam słownik, ale użyliśmy tego co wiedzieliśmy. Nasz słownik pomijając już ilość miejsca zajmowanego zmalał do 729 linii z 9477. Bardzo ogromna różnica! Dlatego to polecenie stwarza naprawdę bardzo ogromne możliwości tworzenia w zależności od posiadanej wiedzy o celu.

12.9. Zdobycie hasła z pliku handshake

Po stworzeniu słownika przyszedł czas by go wykorzystać. Ostatni stworzony miał tylko 729 linii dlatego będzie odpowiedni do wykonania testu. Jak pewnie wiesz, hasło do twojej sieci nie znajduje się w nim dlatego otwórz plik słownika i na samym końcu dodaj hasło do twojego wi-fi. Następnie skorzystajmy z polecenia:

sudo aircrack-ng nois-01.cap -w slownik.txt

Powinniśmy otrzymać informacje o czasie wykonania oraz klucz. Czas jaki zostanie poświęcony na odnalezienie hasła jest całkowicie uzależniony od tego jaki mamy komputer, a szczególnie w tym wypadku procesor. U mnie przejście przez te 700 haseł nie zajęło nawet sekundy.

12.10. Zapisywanie sesji

W poprzednim paragrafie korzystamy ze słownika który posiada bardzo małą ilość haseł. Przyznam, że taki słownik nigdy nie jest wykorzystywany. No chyba, że jak wspomniałem wcześniej podchodzimy do tego bardziej socjalnie. Najczęściej słowniki zawierają bardzo dużo rekordów i złamanie hasła z ich wykorzystaniem trwa kilka dni lub godzin. Jeżeli próbowałeś już sesję złamania hasła z większym słownikiem to zauważyłeś, że nie trwa to kilka sekund. Jeżeli w pewnym momencie przerwałeś działanie programu i uruchomiłeś go ponownie to sesja rozpoczęła się od początku. Jest to bardzo niewygodne szczególnie gdy złamanie hasła trwa długo, dlatego musimy poznać sposób zapisania sesji w momencie przerwania. Nim do tego przejdziemy stwórzmy większy słownik:

crunch 6 8 abcd1234 -o slownik2.txt

Słownik który stworzyliśmy zajmuje około 160 MB. Przejście przez niego zajmie średnio około 20 minut przy wykorzystaniu maszyny wirtualnej. Oczywiście w zależności od przydzielonych zasobów. Później pokażę jak tworzy się słowniki wielkości TB.

Aby móc zapisywać sesję musimy skorzystać z programu John the Ripper. Postanowiłem polecenie podzielić na dwa etapy nim przedstawie je jako całość dlatego pierwsza część wygląda następująco:

john --wordlist=slownik2.txt --stdout

Myślę, że pierwszej części się domyślasz natomiast druga może niektórym sprawić pewne trudności. Otóż --stdout jest to standardowy system wyjścia, czyli to co wyświetla się na monitorze. W systemach Linux możemy przesłać te dane w dowolne miejsce, dlatego my zrobimy to w następujący sposób:

john --wordlist=slownik2.txt --stdout --session=nois | aircrack-ng -w - -b 00:11:22:33:44:55 nois-01.cap

Nim przejdziemy do bardziej zaawansowanej części polecenia w --session wpisujemy nazwę pod jaką dana sesja złamania hasła ma zostać zapisana. Następnie napotykamy | czyli tzw. „pipe”, niestety nie znam odpowiednika tej nazwy w języku polskim, a rura nie za bardzo mi pasuje. Otóż dzięki temu pipe przekażemy dane z johnego do aircrack-ng. Następnie po -w powinna wystąpić nazwa słownika z którego chcemy skorzystać. Wpisujemy – ponieważ w johnym już przekazaliśmy słownik i automatycznie zostanie przepisany. Po opcji -n wpisujemy adres mac sieci której chcemy złamać hasło, a na samym końcu podajemy nazwę pliku handshake.

Po uruchomieniu polecenia w wyżej przedstawiony sposób rozpocznie się proces łamania hasła. Aby zatrzymać należy wcisnąć przycisk „q” i zaczekać chwilę aż sesja się zapisze.

W celu przywrócenia należy skorzystać z polecenia:

john --restore=nois | aircrack-ng -w - -b 00:11:22:33:44:55 nois-01.cap

Niewiele różni się od poprzedniego dlatego tylko wspomnę, że po opcji --restore wpisujemy nazwę sesji jaką nadaliśmy przy przekazaniu danych.

12.11. Wykorzystanie słowników o dużej pojemności

Jak widzieliście w poprzednim paragrafie słownik który stworzyliśmy zajmował 160 MB. W rzeczywistości wykorzystuje się większe słowniki. Takie które ważą nawet 1 TB jak i więcej dlatego najprawdopodobniej nie masz aż tyle wolnego miejsca by trzymać taki słownik jak i również sens trzymania czegoś o takiej pojemności na dysku mija się z celem. Aby nie było konieczności zapisywania tak dużej ilości danych musimy wykorzystać wszystkie polecenia które poznaliśmy w tym i w kilku poprzednich podrozdziałach. Zacznijmy od stworzenia bardzo dużego słownika:

crunch 8 8

W ten sposób stworzymy słownik o ogromnej pojemności. Jeżeli użyłeś polecenia w powyższy sposób i określiłeś nazwę pod jaką ma figurować aby przerwać jego działanie należy przycisnąć ctrl + z. Wszystkie pozostałe dyrektywy możemy wpisać tak jak pokazywałem wcześniej. Korzystamy z minimalnej wartości 8 znaków ponieważ hasło do sieci WPA2 tyle wymaga. Przyjrzyjmy się teraz dalszej części polecenia:

crunch 8 8 | john --stdin --session=nois1 --stdout

Jest ono bardzo podobne do poznanego wcześniej przy zapisywaniu sesji, ale tym razem my nie przekazujemy zapisanego słownika tylko dane ze słownika tworzonego w „locie” dlatego po pipe znajduje się --stdin czyli standardowe wejście. Oznacza to, że dane tworzone w locie zostają przekazane do Johnego jako słownik. Poznajmy ostatnią część polecenia:

crunch 8 8 | john --stdin --session=nois1 --stdout | aircrack-ng -b 00:11:22:33:44:55 -w - nois-01.cap

Teraz dane ze słownika oraz nazwa sesji w której zostają zapisywane nasze postępy są obsługiwane przez Johnego. Po raz kolejny przy pomocy pipe wszystko to co zawiera Johny zostaje przesłane do aircrack-ng i działa tak samo jak tłumaczyłem wcześniej. Jeżeli chcemy przerwać obecną sesje korzystamy z q.

Zapisywanie sesji w przypadku tak ogromnych słowników ma szczególne znaczenie. Dlatego spójrzmy jak możemy wrócić do miejsca w którym skończyliśmy:

crunch 8 8 | john --restore=nois1 | aircrack-ng -b 00:11:22:33:44:55 -w – nois-01.cap

Jedyna różnica znajduje się w drugiej części polecenia. Pamiętajcie tylko, że pliki sesji zapisywane są w miejscu w którym obecnie znajdujecie się w konsoli. Można je rozpoznać po rozszerzeniu .rec. Dobrze jest również stworzyć do każdej sieci którą testujemy oddzielny folder, i w nim zapisywać wszystkie uzyskane dane.

12.12. Wykorzystanie Hashcat

Poznaliśmy już bardzo wiele sposobów na złamanie hasła, natomiast czym różni się ten? Tak naprawdę niczym oprócz jednej istotnej funkcji. Każdy program wykorzystuje procesor w celu uruchomienia jakiejś funkcji, czy też sam system wykorzystuje procesor do uruchomienia programu. Jest to jak najbardziej normalne. Procesor jest głównym urządzeniem komputera do obsługi takich czynności. Przy złamaniu hasła programy wcześniej poznane również wykorzystują procesor czyli CPU. Hashcat pozwala skorzystać z opcji procesora, ale daje nam możliwość skorzystania z GPU czyli naszej karty graficznej. Zapytasz dlaczego jest to takie istotne? Otóż karta graficzna ciągle wyświetla obraz na monitorze. To co widzimy podzielone jest na miliony małych elementów zwanymi pikselami. Piksel nie jest elementem stale wyświetlanym. GPU czyli nasza karta graficzna ciągle odświeża te piksele, czyli wykonuje w kółko tą samą czynność.

Chciałbym zwrócić uwagę, że jeżeli staramy się złamać hasło zgodnie z poznanymi wcześniej metodami to ciągle wykonujemy tą samą czynność przekazując jedynie zmodyfikowane lekko dane. Można by powiedzieć, że wzorzec idealny jak w przypadku GPU. Masz monitor przed sobą czy też jakiś wyświetlacz, czy dostrzegasz, że piksele w tak szybkim tempie ulegają zmianom? Jeżeli nie no to właśnie Ci to uświadomiłem.

Jeżeli wykorzystamy GPU naszej karty graficznej powinniśmy wydobyć hasło o wiele szybciej niż w przypadku CPU.

Dopowiem tylko aby to miało jakikolwiek sens wykorzystanie oprogramowania hashcat musi być na systemie zainstalowanym na dysku, a nie przy wykorzystaniu wirtualizacji. Z powodu lepszej dostępności sterowników graficznych do systemu Windows program opiszę przy wykorzystaniu tego systemy, a nie Kali Linux.

12.12.1. Konwersja pliku handshake do pliku odczytywanego przez hashcat

Nim przejdziemy do jakiegokolwiek łamania hasła musimy przekonwertować plik handshake na taki który obsługuje hashcat. Aby tego dokonać należy skorzystać z polecenia:

aircrack-ng nois-01.cap -J nois-01

Oczywiście musimy znajdować się w folderze gdzie umieściliśmy zdobyty wcześniej plik handshake.

12.12.2. Pobranie i instalacja Hashcat

Ze względu na to, że korzystamy ze aireplay-ng musimy pobrać trochę starszą wersję oprogramowania, aby plik handshake przekonwertowany do postaci pliku hashcat mógł zostać obsłużony. Pamiętaj aby przekonwertowany plik handshake oraz słownik, ten 160 MB, który stworzyliśmy w jednym z poprzednich paragrafów przenieść do systemu Windows.

Po wykonaniu powyższych czynności pozostało pobrać hashcata. Musimy pobrać wersję 3.30 która znajduje się pod adresem https://hashcat.net/files/hashcat-3.30.7z

Dla niektórych prezentowany format może być zaskoczeniem. Ściągnięty plik jest to skompresowane archiwum przy pomocy oprogramowania 7 ZIP. Porównać go można do bardziej znanego WinZipa lub WinRara, ale w 100% darmowego. W celu możliwości rozpakowania archiwum musimy posiadać zainstalowany program 7 Zip, który pobieramy ze strony https://www.7-zip.org/. Po zainstalowaniu, klikamy prawym klawiszem myszki na ściągnięty plik hashcat-3.30.7z i wybieramy z menu wypakuj tutaj.

Hashcat jest oprogramowaniem uruchamianym przy pomocy konsoli. W systemie Windows również posiadamy konsolę, ale innego rodzaju. Nie będę tutaj rozpoczynał tego tematu ponieważ powershell jak i również cmd jest tematyką bardzo obszerną o której pisane są książki.

W celu uruchomienia konsoli należy na klawiaturze odnaleźć przycisk Windows (flaga) i przytrzymując go wcisnąć S. Pojawi się pole tekstowe w którym wpisujemy cmd i wciskamy enter. Możemy również skorzystać z ikony lupy lub pola wyszukiwania na pasku i wpisać cmd, oczywiście o ile taką ikonę lub pole posiadamy.

Powinna pojawić się podobna konsola do tej poznanej w Linuksie. W przypadku komend występują znaczne różnice. Obecnie potrzebne będą trzy polecenia.

Pierwsze z nich to polecenie przechodzenia pomiędzy partycjami. W zależności na jakiej partycji zapisałeś ściągnięte pliki naszym obecnym celem jest dostać się do tego folderu. Ja posiadam kilka partycji, a pliki zapisałem na F. Gdy uruchamiamy konsole w przedstawiony sposób przenosi nas na dysk C, do folderu naszego konta. Jeżeli chcemy przejść na inną partycję należy wpisać przypisaną literę partycji z dwukropkiem i wcisnąć enter. Czyli w moim wypadku wpisuję F: i wciskam enter. Powinniśmy znajdować się już na wybranej partycji.

Przydałoby się polecenie które wyświetli co znajduje się w obecnym miejscu. W Linuksie często do tego celu korzystaliśmy z polecenia ls. W systemie Windows wykorzystuje się polecenie dir. Aby przejść do folderu korzystamy już ze znanego nam polecenia cd.

Na dysku F stworzyłem specjalny folder o nazwie siec w nim umieściłem plik handshake, słownik oraz rozpakowałem program hashcat do folderu hashcat-3.30. Wcześniej do folderu hashcat-3.30 przekopiowałem handshake i słownik by było mi łatwiej. Teraz aby dostać się do folderu gdzie mam hashcata muszę wykonać polecenia:

F:\>cd siec\hashcat-3.30

Zwróć uwagę, że w Linuksie przy przejściu między folderami korzystaliśmy z / natomiast w Windows korzystamy z \.

12.12.3. Wykorzystanie GPU

Program jest bardzo rozbudowany dlatego warto zapoznać się z dostępnymi opcjami. Listę wyświetlimy dzięki wpisaniu:

hashcat64.exe --help

Pamiętaj jednak, że jeżeli twój procesor jest 32 bitowy to musisz skorzystać z pliku:

hashcat32.exe --help

Wyświetli się ogromna lista dlatego warto trochę poczytać. Naszym celem jest złamać hasło do sieci WPA/WPA2, wykorzystując do tego kartę graficzną oraz własny słownik.

Wyświetlmy listę sprzętu który możemy wykorzystać:

hashcat64.exe -I (I jak Irena)

Istotne w informacji która wyświetliła się na ekranie jest Platform ID #1, Device ID #1 oraz typ procesora Type: GPU. W ten oto sposób znaleźliśmy informacje dotyczące dostępnego urządzenia które posłuży nam do złamania hasła.

Nadeszła pora aby skorzystać z hashcata. Polecenie będę starał składać stopniowo tak aby każdą z opcji wytłumaczyć. Dlatego zacznijmy od:

hashcat64.exe -m

Na samym początku musimy określić rodzaj hasha jaki chcemy złamać. Czyli zgodnie z informacjami z listy po wpisaniu --help wpisujemy -m. Następnie z obszernej listy Hash modes odnajdujemy liczbę przypisaną WPA/WPA2. Czyli powinniśmy już mieć:

hashcat64.exe -m 2500

Nastała chwila w której chcemy określić z jakiego urządzenia hashcat ma skorzystać by złamać hasło. Z pierwszej listy dostępnych opcji możemy wyczytać, że opcja -d jest odpowiedzialna za urządzenia. Dodajemy ją do polecenia, które powinno wyglądać tak jak poniżej:

hashcat64.exe -m 2500 -d 1

Zauważyłeś zapewne, że po opcji -d wpisałem jedynkę. Zgodnie z opcją -I moje GPU znajduje się pod numerem ID 1 dlatego po opcji -d musisz wpisać liczbę ID odpowiadającą za twoją kratę graficzną.

hashcat64.exe -m 2500 -d 1 nois-01.hccap slownik2.txt

Pozwoliłem sobie połączyć dalszą część polecenia ze względu na brak jakichkolwiek opcji. Plik hccap oraz słownik przekopiowałem do folderu hashcata jak już wspomniałem. Dlatego po wybraniu procesora wpisuję nazwę pliku hccap oraz nazwę pliku słownika. Słownik może nie jest ogromny, ale przy wykorzystaniu programu aircrack-ng oraz wirtualizacji zajęło by mi to około 20 minut, natomiast przy wykorzystaniu karty graficznej:

Started: Wed Nov 24 20:12:20 2021 Stopped: Wed Nov 24 20:12:30 2021

...10 sekund… Chyba to przemawia samo przez siebie?

12.12.4. System Linux

Wykonanie tego samego w systemie Linux prawie niczym nie różni się. Pobieramy ten sam plik, rozpakowujemy go, kopiujemy do folderu hashcat plik hccap oraz słownik. Natomiast musimy mieć zainstalowane sterowniki do karty graficznej i to najlepiej te z oficjalnej strony producenta.

Jedyną różnicą jest plik z którego będziemy korzystali do obsługi hashcata. Otóż w Windows korzystamy z .exe natomiast w Linuksie będziemy korzystali z pliku .bin. Jednak nim uda się uruchomić hashcata musimy nadać uprawnienia uruchomienia plikowi .bin. Robimy to przy pomocy polecenia:

chmod +x hashcat64.bin

lub

chmod +x hashcat32.bin

Następnie korzystamy z polecenia prawie, że w identyczny sposób jak to przedstawiłem powyżej, czyli:

./hashcat64.bin -m 2500 -d 1 nois-01.hccap slownik2.txt

Pamiętajmy tylko, że musimy umieścić ./ przed nazwą pliku. Co ważniejsze wynik jaki osiągnąłem na systemie Linux Mint to:

Started: Wed Nov 24 21:59:05 2021 Stopped: Wed Nov 24 21:59:14 2021

...9 sekund...

Jest to bardzo dobry wynik. Akurat nie będę tutaj pisał, że 1 sekunda i już Linux jest lepszy ponieważ taka różnica mogła wystąpić z bardzo wielu względów jak np. ilości uruchomionego oprogramowania w chwili skanowania czy też aktualnego użycia karty graficznej.

Jest jednak jedno… Obala to mit, że system Windows sprawdzi się lepiej pod względem wykorzystania GPU. Natomiast wyobraź sobie teraz połączenie Cruncha + Johnego + Hashcata, narzędzie idealne do łamania hasła.

Podsumowanie

Szyfrowanie WPA/WPA2 jest jednym z najbardziej istotnych w obecnym czasie ponieważ najczęściej występuje. Z tego powodu warto dość wnikliwie zapoznać się z tematem. Myślę, że wiesz już dlaczego wypada w swoim routerze wyłączyć funkcję WPS lub chociaż ograniczyć jej działanie do tego stopnia by prezentowany sposób złamania hasła nie był opłacalny.

W dalszej części zapoznałeś się z tym jak stworzyć słownik. Taki słownik wykorzystać można w bardzo wielu przypadkach dlatego ich tworzenie jest bardzo istotnym narzędziem które warto bardzo dobrze znać. W naszym wypadku wykorzystaliśmy słownik do złamania hasła szyfrowania WPA/WPA2. Obecnie ta technika jest jedną z najbardziej efektywnych, ale jak już zauważyłeś zajmuje bardzo dużo czasu dlatego masz już pewność, że hasło dostępu do twojej sieci musi być skomplikowane i nie powinno być szablonowe inaczej w miarę szybki sposób zostanie złamane.

Zajęliśmy się również przyspieszaniem etapu złamania hasła gdzie w bardzo łatwy sposób wykorzystując kartę graficzną zrobimy to kilkanaście razy szybciej.

Przyznam, że pierwszy raz wykorzystywałem hashcata w systemie Linux, a raczej pierwszy raz używałem Linuksa i hashcata z wykorzystaniem GPU, dlatego jestem mile zaskoczony pod względem otrzymanych wyników. Działa to tak samo szybko dlatego przekonałem się, że nie ma konieczności wykorzystywania Windowsa do tego celu.

<- Poprzedni rodział -- Następny rozdział ->

Strona stosuje pliki cookies w celu profilowania, oraz analizuje statystykę ruchu. Prosimy o zapoznanie się z naszą polityką prywatności i wyrażenie zgody na podejmowane działania. W przypadku braku zgody i pozostaniu na niej strona może nie działać właściwie.

Akceptuję warunki zawarte w Polityce Prywatności

Nie akceptuję warunków i chcę opuścić stronę