Wprowadzenie


Problem słabych haseł w społeczeństwie jest coraz bardziej widoczny. Często słyszy się o tym, że miliony danych użytkowników zostały skradzione lub nastąpiło włamanie na konta bankowe. Przeciętny użytkownik internetu posiada kilkanaście kont na różnorodnych portalach, aplikacjach i serwisach webowych. Hasła do tych kont niestety często są identyczne lub bardzo do siebie podobne. Wiadomą rzeczą jest to, że niektóre witryny dbają o bezpieczeństwo danych swoich użytkowników w należyty sposób, jak banki czy serwisy pocztowe. Jednak większość serwisów narażona jest na wycieki haseł, które oczywiście nie są przetrzymywane w postaci czystego tekstu.

Hasła przetrzymywane są w bazach danych w postaci skrótów – hashy, które po podaniu przez użytkownika hasła dopasowywane są do niego za pomocą algorytmów szyfrujących. W teorii, hasha nie da się odtworzyć w pasujące do niego hasło. Jest to tylko zbiór losowych znaków. Cały czas powstają nowe, dłuższe i bardziej skomplikowane algorytmy szyfrujące. Współczesne, stosowane na całym świecie funkcje hashujące wydają się być bezpieczne, i rzeczywiście takie są. W całym problemie chodzi o podejście użytkowników. Ustawianie popularnych haseł oraz powtarzanie ich na różnych kontach. W tym tekście pokażemy, że jednostronne, bezpieczne algorytmy szyfrujące na nic się nie zdadzą, jeśli hash zostanie skradziony, a hasło jest za słabe.

Przykład złamanych haseł użytkowników z popularnego słownika hakerskiego


Jak łamane są hasła?


Aby złamać hasło z wykradzionego hasha potrzeba kilku rzeczy. Pierwszą z nich jest słownik znanych i popularnych haseł. W internecie dostępna jest ogromna ilość przygotowanych słowników. Niektóre zawierają tysiące haseł, niektóre miliony, a inne jeszcze więcej. Popularne słowniki hakerskie to nawet setki megabajtów danych zapisanych w pliku tekstowym. Drugim wymaganiem jest jednostka sprzętowa wyposażona w mocną kartę graficzną. Właśnie tak, oprogramowania do łamania hashy pozwalają na przeprowadzanie obliczeń na procesorach graficznych. Dzięki temu obliczenia wykonywane są dużo szybciej, gdyż architektura kart graficznych pozwala na przeprowadzanie obliczeń równolegle. Ostatnią rzeczą jest oczywiście program, który służy jako narzędzie hakerskie do odgadnięcia hasła. Jednym z najbardziej popularnych jest Hashcat (www.hashcat.net). Najnowsza wersja programu pozwala na wykorzystanie zarówno CPU jak i GPU naszego urządzenia oraz wspiera ponad 200 algorytmów hashujących, co czyni go idealnym do tego narzędziem.

Całość procesu wygląda następująco. Program hashuje wszystkie hasła ze słownika (bądź wygenerowane automatycznie) wybranym przez nas algorytmem. Załóżmy, że jest to MD5, gdyż cyberprzestępca wykradł hasło zaszyfrowane właśnie w ten sposób. Następnie porównuje każdy z wygenerowanych hashy z tym, który chcemy złamać. Jeśli uda się znaleźć dopasowanie to w odpowiedzi otrzymujemy hasło w postaci tekstowej odpowiadające naszemu hashowi. Poniżej przykład złamania hasha w programie Hashcat:

Przykład złamania hasha w programie Hashcat

Czas trwania łamania hasha zależy od wielu czynników. Głównie od wydajności karty graficznej i procesora, ale również od złożoności hasła oraz od wybranej metody łamania, ponieważ jest ich kilka. Podstawową i najprostszą metodą łamania hashy jest brute force. Nie potrzeba do niej słownika z hasłami, gdyż hasła generowane są maszynowo za pomocą kombinacji znaków podanych jako parametr wejściowy. Metoda ta jest wysoce nieefektywna dla złożonych haseł, np. zawierających małe i duże litery lub o liczbie znaków większej niż 8. Ilość możliwych kombinacji haseł składających się tylko z małych liter o 7 znakach to 267 (około 8 miliardów), co dla większości komputerów nie jest wyzwaniem obliczeniowym. Dla hasła o 9 znakach zawierających małe i duże litery jest to już (26*2)9. Do wygenerowania i sprawdzenia takiej ilości hashy przeciętny komputer potrzebowałby prawdopodobnie kilku lat. Dlatego właśnie stosowane są polityki wymuszające długość i złożoność hasła oraz jego cykliczne zmiany co pewien okres czasu.

Metoda słownikowa często daje lepsze rezultaty niż brute force. Jak wspominaliśmy na początku, użytkownicy mają tendencję do stosowania powszechnych haseł. Kombinacje cyfr „123456” czy słowa „[email protected]” używane są nagminnie. Każdy, kto posiada hasło tego typu do konta dającego dostęp do cennych danych powinien je zmienić natychmiast! Te hasła są na samym szczycie list „top common passwords”. Hakerzy używają ich do łamania słownikowego w pierwszej kolejności. Nowatorskie metody crackingu pozwalają na przeprowadzanie ataku mieszanego (rule-based attack), który pozwala na kilkukrotne zwiększenie prawdopodobieństwa złamania hasła. Polega on braniu haseł ze słowników i przestawianie znaków w słowach oraz mieszaniu kilku haseł ze sobą, wedle ustalonych przez atakującego reguł. Dzięki temu hasło ,,Password1234” zostanie szybko złamane.


Trochę teorii


Tworzenie hasha to nic innego jak szyfrowanie hasła odpowiednim algorytmem szyfrującym, zwanym także funkcją skrótu. Im bardziej skomplikowana funkcja, tym dłużej trwa szyfrowanie, a więc i także łamanie takiego hasła. Idealne funkcje skrótu powinny zachowywać się jak funkcje losowe, będąc jednocześnie funkcjami łatwymi do obliczenia. Nie powinno być więc możliwości wywnioskowania żadnych użytecznych informacji na temat zaszyfrowanej wiadomości, mając do dyspozycji jedynie jej skrót. Jednak to, czy dana funkcja jest bezpieczna wnioskuje się głównie na podstawie odporności na znane ataki kryptoanalityczne. Nie opiera się tego na matematycznych dowodach gwarantujących niemożność złamania, ponieważ taka funkcja musiałaby być funkcją jednokierunkową, a istnienie takich nie zostało dotychczas dowiedzione. Poważne słabości znaleziono m.in. w algorytmach MD2, MD4, SHA1, MD5, które historycznie uchodziły za bezpieczne. Aktualnie nie powinno się stosować żadnego z nich. Zalecane są nowsze funkcje haszujące takie jak SHA-512, SHA-3, RSA.


Podsumowanie


Na rynku cyberbezpieczeństwa istnieją już rozwiązania mogące kontrolować w zaawansowany sposób poziom złożoności haseł w organizacji. Inteligentne systemy sprawdzają czy użytkownik nie ustawia na przykład hasła znajdującego się w zaimportowanym słowniku z darknetu, lub czy hasło nie zawiera popularnych słów i ciągów znaków.