W dziedzinie etycznego hakowania i testów penetracyjnych, przełamywanie zabezpieczeń haseł stanowi fundamentalny element w procesie uzyskiwania nieautoryzowanego dostępu do systemów lub serwerów.
W obrębie systemów informatycznych oraz baz danych, hasła niezwykle rzadko przechowywane są w formie otwartego tekstu.
Zamiast tego, przed zapisaniem w bazie danych, hasła przechodzą proces haszowania, a następnie porównywane są z zapisanym hashem podczas procedury uwierzytelniania.
Sposoby przechowywania tych skrótów hasłowych różnią się w zależności od zastosowanej metody szyfrowania. Mając dostęp do skrótów, można podjąć próby odzyskania oryginalnych haseł.
Ten artykuł ma na celu przybliżenie procesu łamania skrótów haseł przy użyciu potężnego narzędzia wiersza poleceń, jakim jest Hashcat.
Zatem, przejdźmy do rzeczy.
Zanim jednak zaczniemy…
Czym jest funkcja skrótu?
Haszowanie jest procesem przekształcania danych wejściowych, takich jak zwykły tekst, w ciąg znaków o stałej długości. Proces ten wykorzystuje funkcję matematyczną znaną jako funkcja skrótu. Algorytm ten jest w stanie zamienić dowolny tekst, niezależnie od jego długości, na losową kombinację liczb i liter.
- „Wejście” to inaczej wiadomość, która ma zostać zaszyfrowana.
- „Funkcja skrótu” to algorytm szyfrujący, np. MD5 czy SHA-256, który konwertuje ciąg na skrót.
- „Wynik” to inaczej uzyskana wartość skrótu.
Co to jest Hashcat?
Hashcat jest uważany za jedno z najszybszych narzędzi służących do odzyskiwania haseł. Został zaprojektowany z myślą o szybkim łamaniu skomplikowanych haseł. Oprócz tego, Hashcat jest również zdolny do przeprowadzania ataków opartych na listach słów oraz metodą brutalnej siły.
Hashcat występuje w dwóch wariantach: opartym na procesorze (CPU) i opartym na karcie graficznej (GPU). Narzędzie wykorzystujące GPU jest w stanie znacznie szybciej łamać skróty niż procesor. Informacje dotyczące wymagań sterowników GPU można znaleźć na oficjalnej stronie internetowej projektu.
Funkcje
- Dostępny za darmo i na zasadach otwartego oprogramowania (open-source).
- Obsługuje ponad 200 różnych typów algorytmów haszujących.
- Kompatybilny z wieloma systemami operacyjnymi, takimi jak Linux, Windows i macOS.
- Możliwość wykorzystania zarówno procesora (CPU) jak i karty graficznej (GPU).
- Pozwala na łamanie wielu skrótów jednocześnie.
- Wsparcie dla soli szesnastkowych i zestawów znaków szesnastkowych, a także automatyczne dostrajanie wydajności.
- Wbudowany system testów porównawczych.
- Możliwość obsługi rozproszonych sieci łamiących hasła za pomocą nakładek.
Szczegółowe informacje o pozostałych funkcjach można znaleźć na stronie internetowej Hashcat.
Instalacja Hashcat
Przed rozpoczęciem instalacji, należy upewnić się, że system Linux jest zaktualizowany do najnowszej wersji.
W tym celu należy uruchomić terminal i wpisać:
$ sudo apt update && sudo apt upgrade
Hashcat jest zazwyczaj preinstalowany w dystrybucji Kali Linux. Narzędzie można znaleźć w sekcji poświęconej łamaniu haseł. Jeżeli jednak konieczna jest ręczna instalacja w innej dystrybucji, należy wpisać w terminalu następujące polecenie:
$ sudo apt-get install hashcat
Użycie narzędzia
Aby rozpocząć pracę z Hashcat, niezbędne jest posiadanie skrótów haseł. Jeśli nie mamy żadnych skrótów, utworzymy je.
W celu utworzenia skrótów z użyciem wiersza poleceń, należy skorzystać z poniższego formatu:
echo -n "input" | algorithm | tr -d "-">>outputfiename
Poniżej znajduje się przykład, gdzie kilka słów zostało przekształconych w skróty za pomocą algorytmu MD5:
┌──(root💀kali)-[/home/writer/Desktop] └─# echo -n "newsblog.pl" | md5sum | tr -d "-">>crackhash.txt echo -n "password123" | md5sum | tr -d "-">>crackhash.txt echo -n "Webtechnology" | md5sum | tr -d "-">>crackhash.txt echo -n "microsoftteams" | md5sum | tr -d "-">>crackhash.txt echo -n "recyclebin" | md5sum | tr -d "-">>crackhash.txt
Wynik zostanie zapisany w pliku o nazwie crackhash.txt.
Teraz sprawdzimy skróty zapisane w tym pliku.
┌──(root💀kali)-[/home/writer/Desktop] └─# cat crackhash.txt 066d45208667198296e0688629e28b14 482c811da5d5b4bcd497ffeaa98491e3 72a2bc267579aae943326d17e14a8048 2192d208d304b75bcd00b29bc8de5024 caae8dd682acb088ed63e2d492fe1e13
Jak widać, mamy teraz kilka skrótów gotowych do złamania. To właśnie jest procedura tworzenia skrótu przy użyciu wybranego algorytmu.
Kolejnym krokiem jest uruchomienie narzędzia Hashcat w systemie Linux. Aby skorzystać z Hashcat, wystarczy użyć poniższego polecenia:
$ hashcat --help
Polecenie to wyświetli wszystkie dostępne opcje, które są potrzebne do uruchomienia narzędzia. W terminalu można znaleźć listę wszystkich trybów ataku oraz algorytmów haszujących.
Ogólna postać polecenia wygląda następująco:
$ hashcat -a num -m num hashfile wordlistfile
W tym przypadku 'num’ oznacza konkretny tryb ataku i numer algorytmu haszującego. Przewijając terminal, można znaleźć dokładne numery dla każdego trybu ataku i algorytmu haszującego, np. dla MD4 liczba wynosi 0, a dla SHA256 wynosi 1740.
Lista słów, której użyjemy, to popularna lista „rockyou”. Można ją znaleźć w katalogu /usr/share/wordlists.
Można również użyć polecenia „locate” aby zlokalizować ścieżkę do tej listy słów:
┌──(root💀kali)-[/home/writer] └─# locate rockyou.txt
Finalnie, aby złamać skróty za pomocą pliku listy słów, należy użyć następującego polecenia:
$ hashcat -a 0 -m 0 ./crackhash.txt rockyou.txt
Po uruchomieniu tego polecenia, może pojawić się błąd „Token length exception”, który można łatwo rozwiązać.
Aby naprawić ten błąd, należy zapisać każdy skrót w osobnym pliku. Błąd ten występuje, gdy prędkość procesora lub karty graficznej jest zbyt niska. W przypadku, gdy komputer posiada szybki procesor, można bez problemu łamać wszystkie hasła z jednego pliku.
Po rozwiązaniu problemu i naprawieniu błędów, wynik będzie wyglądał następująco:
┌──(root💀kali)-[/home/writer/Desktop] └─# hashcat -a 0 -m 0 hashcrack.txt rockyou.txt hashcat (v6.1.1) starting... OpenCL API (OpenCL 1.2 pocl 1.6, None+Asserts, LLVM 9.0.1, RELOC, SLEEF, DISTRO, POCL_DEBUG) - Platform #1 [The pocl project] ============================================================================================================================= * Device #1: pthread-Intel(R) Core(TM) i5-8265U CPU @ 1.60GHz, 2403/2467 MB (1024 MB allocatable), 4MCU Minimum password length supported by kernel: 0 Maximum password length supported by kernel: 256 Hashes: 1 digests; 1 unique digests, 1 unique salts Bitmaps: 16 bits, 65536 entries, 0x0000ffff mask, 262144 bytes, 5/13 rotates Rules: 1 Dictionary cache built: * Filename..: rockyou.txt * Passwords.: 14344405 * Bytes.....: 139921671 * Keyspace..: 14344398 * Runtime...: 1 sec 8276b0e763d7c9044d255e025fe0c212: [email protected] Session..........: hashcat Status...........: Cracked Hash.Name........: MD5 Hash.Target......: 8276b0e763d7c9044d255e025fe0c212 Time.Started.....: Sun Dec 12 08:06:15 2021 (0 secs) Time.Estimated...: Sun Dec 12 08:06:15 2021 (0 secs) Guess.Base.......: File (rockyou.txt) Guess.Queue......: 1/1 (100.00%) Speed.#1.........: 1059.6 kH/s (0.52ms) @ Accel:1024 Loops:1 Thr:1 Vec:8 Recovered........: 1/1 (100.00%) Digests Progress.........: 4096/14344398 (0.03%) Rejected.........: 0/4096 (0.00%) Restore.Point....: 0/14344398 (0.00%) Restore.Sub.#1...: Salt:0 Amplifier:0-1 Iteration:0-1 Candidates.#1....: 123456 -> pampam Started: Sun Dec 12 08:06:13 2021 Stopped: Sun Dec 12 08:06:16 2021
W powyższym wyniku, po informacjach dotyczących pamięci podręcznej słownika, można zauważyć, że skrót hasła został złamany i hasło zostało ujawnione.
Podsumowanie
Mam nadzieję, że dzięki temu artykułowi udało się lepiej zrozumieć proces użycia narzędzia Hashcat do łamania haseł.
Być może zainteresują Cię również inne narzędzia do ataków siłowych (brute-force) wykorzystywane w testach penetracyjnych oraz zestawienie najlepszych narzędzi do tych testów.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.