Zgłoś incydent
Zgłoś incydent

Co wycieki danych mówią o hasłach
10 stycznia 2022 | CERT Polska | #hasła, #analiza, #wycieki

Analiza upublicznionych haseł

Wycieki haseł zdarzają się niestety bardzo często a ich skutki mogą być bardzo poważne. Incydenty tego typu, oprócz oczywistej szkody dla osób dotkniętych wyciekiem, mają dużą wartość analityczną. Analiza haseł upublicznionych w wyciekach pozwala na lepsze zrozumienie poziomu wiedzy i nawyków użytkowników, co umożliwia poznanie ich słabości. Postanowiliśmy na podstawie danych pochodzących z wycieków, w tym wycieków z polskich serwisów, przeprowadzić własną analizę pod kątem tego, jakie słabe strony można zaobserwować w stosowanych często hasłach.

Ograniczenia analizy

Należy zwrócić uwagę na to, że wyniki analizy oraz oparte o nią wnioski są obarczone kilkoma niemożliwymi do wyeliminowania zniekształceniami, które należy brać pod uwagę przy interpretacji danych:

  1. W wielu przypadkach upublicznione zostają jedynie złamane hasła. Oznacza to, że nie będzie tam najbardziej skomplikowanych haseł, których nie udało się odkryć. Statystyka zbudowana częściowo w oparciu o takie dane będzie sugerować, że stosowane przez użytkowników hasła są słabsze niż w rzeczywistości.

  2. Dane zawierają często hasła do kont starych oraz nieaktywnych. Mogą więc nie odzwierciedlać w należyty sposób aktualnego poziomu bezpieczeństwa oraz wiedzy użytkowników.

  3. Bardzo mało jest źródeł danych z serwisów, miejsc lub instytucji, gdzie poziom wiedzy i wymagania stawiane użytkownikom są wyższe. Nie pozwala to na zbudowanie rzetelnego obrazu bezpieczeństwa użytkowników, którzy pracują w instytucjach lub korzystają z usług podmiotów dbających o edukację swoich użytkowników oraz odpowiednią politykę haseł.

Pomimo powyższych ograniczeń dane pochodzące z wycieków są najlepszym dostępnym źródłem i pozwalają na zbudowanie przynajmniej przybliżonego obrazu poziomu wiedzy i bezpieczeństwa użytkowników.

Długość hasła

Obserwacje poczynione na podstawie obsługiwanych przez CERT Polska incydentów wskazują, że wyniki analizy statystycznej długości stosowanych haseł, nie odbiegają w znaczący sposób od rzeczywistości. Na rys. 1 przedstawiono wyniki badania rozkładu haseł ze względu na ich długość.

Rys. 1 Częstość występowania haseł o określonej długości.

Można zaobserwować, że ponad połowa haseł w analizowanych zbiorach była nie dłuższa niż 8 znaków. Długość hasła, według aktualnych badań jest głównym czynnikiem stanowiącym o jego sile. Jest to jednocześnie jedna z najważniejszych charakterystyk, która wymaga poprawy ze strony internautów.

Hasła najczęściej używane

Przegląd najczęściej pojawiających się haseł może dostarczyć kolejnych wartościowych informacji. Na listingu 1 zaprezentowano 50 najpopularniejszych haseł.

Listing 1. 50 najpopularniejszych haseł w analizowanym zbiorze


1. 123456 18. 1qaz2wsx 35. zxcvbnm
2. qwerty 19. 1234567 36. kasia
3. 12345 20. qwerty123 37. 1q2w3e4r
4. 123456789 21. qwerty1 38. kochanie
5. zaq12wsx 22. 123123 39. lol123
6. 1234 23. 0 40. kasia1
7. 12345678 24. bartek 41. natalia
8. polska 25. damian 42. myszka
9. 111111 26. michal 43. 11111
10. misiek 27. qwe123 44. 1qazxsw2
11. monika 28. polska1 45. lukasz
12. 123 29. password 46. mateusz1
13. marcin 30. karolina 47. komputer
14. mateusz 31. kacper 48. 666666
15. agnieszka 32. maciek 49. qazwsx
16. 123qwe 33. samsung 50. piotrek
17. 1234567890 34. qwertyuiop

Przedstawione dane dobrze ukazują prawidłowości wg których tworzone są hasła. Są to przede wszystkim imiona lub zwroty osobowe, ale również hasła zbudowane z użyciem prostych schematów klawiatury komputera. Ponadto hasła takie jak polska1, kasia1, czy mateusz1 dobrze obrazują sposób, w jaki najczęściej użytkownicy próbują wzmocnić swoje hasło lub dostosować je do wymogów stawianych przez dostawcę usługi.

UWAGA!

Jako uzupełnienie tej analizy CERT Polska publikuje polską wersję słownika haseł. Zawiera on zestaw około miliona najpopularniejszych haseł ujawnionych w wyciekach, posortowanych malejąco od haseł najbardziej popularnych. Motywacją dla udostępnienia tego typu słownika jest ułatwienie administratorom systemów wdrożenia polityki haseł zgodnej z zaleceniami. O ile trudność i potrzebny czas na przygotowanie (albo pozyskanie) takiego słownika dla przestępcy jest znikomy, nie jest to zadanie proste dla administratora systemu. Wszystkie hasła znajdujące się w słowniku były publicznie dostępne oraz wystąpiły więcej niż jeden raz.

Hasła słabe i trochę mniej

O sile hasła świadczy trudność w jego złamaniu. Proces „łamania haseł” polega na próbie ich odgadnięcia. W zależności od scenariusza ataku i złożoności hasła, proces zgadywania może być stosunkowo skuteczny albo niemal niemożliwy do wykonania.

Ataki online

Poprzez ataki online rozumiemy sytuacje, gdy hasło jest łamane poprzez próby logowania z jego użyciem. W takim przypadku niemal niemożliwe do odgadnięcia będą hasła, co do których atakujący nie posiada żadnej wiedzy, a nie są one skrajnie proste. Dodatkowo usługi online posiadają często zabezpieczenia mające utrudniać tego typu ataki. Jednym z nich jest ograniczenie liczby oraz częstotliwości prób logowania. Ponadto popularność mechanizmów utrudniających automatyzację takiego ataku – jak na przykład CAPTCHA stanowią dodatkową przeszkodę. Od wejścia w życie w 2019 roku wymagań dyrektywy PSD2, część usługodawców (a przede wszystkim sektor bankowy) jest zobowiązana do wymagania dwuskładnikowego uwierzytelnienia przy logowaniu na nieznanym urządzeniu. Wszystkie z powyższych mechanizmów sprawiają, że w wielu przypadkach tego typu atak staje się zupełnie nieskuteczny. Atak taki będzie możliwy, jeśli atakujący będzie dysponował bardzo niewielką liczbą wysoce prawdopodobnych potencjalnych haseł. Taką listę można pozyskać lub wygenerować posługując się wyciekami danych. Jeżeli użytkownik użył takiego samego, lub podobnego hasła do atakowanej usługi, jak do innego serwisu, z którego hasła wyciekły, atakujący może łatwo stworzyć niewielką listę potencjalnych haseł i sprawdzić tylko kilka możliwości.

Ataki offline

Sytuacja wygląda zupełnie inaczej jeśli chodzi o odzyskiwanie haseł bez prób uwierzytelnienia się do serwisu. Najczęściej, w przypadku wycieku danych, upublicznione zostaną zabezpieczone (zahashowane) hasła. W takim przypadku, atakujący próbując je „złamać”, nie jest ograniczony żadnymi dodatkowymi zabezpieczeniami jak w przypadku aktywnych prób logowania. Prędkość zgadywania haseł ograniczy jedynie algorytm użyty do ich zabezpieczenia oraz moc obliczeniowa jaką dysponuje atakujący. Na dzień dzisiejszy, przy tego typu atakach obliczenia wykonywane są najczęściej przez karty graficzne (GPU). Dla lepszego zobrazowania kosztu oraz czasu potrzebnego do przeprowadzenia różnych ataków posłużymy się przykładem. W tym celu założymy wykorzystanie jednej z najmocniejszych konsumenckich kart graficznych NVIDIA RTX 3090. Pomimo tego, że koszt zakupu takiej karty jest wysoki, koszt wynajęcia serwera obliczeniowego wyposażonego w tę kartę wynosi jedynie 4 zł za godzinę, co pokazano na rys. 2.

czas ataku=przestrzeń haseł * liczba soli / szybkość hashowania

Rys 2. Oferta wynajmu serwera obliczeniowego z kartą RTX 3090

Jak atakowane są hashe haseł

W tej sekcji przyjrzymy się kosztom finansowym oraz czasowym ataków na różne przykładowe bazy danych z hasłami, zabezpieczonymi zarówno przestarzałymi, jak i obecnie rekomendowanymi algorytmami hashującymi. W celu odzyskania haseł rozpatrzone zostaną następujące popularne i potencjalnie skuteczne metody ataku:

  • Słownik zawierającym 1 milion haseł
  • Połączenie słownika (milion haseł) oraz zestawu 34 101 reguł z kolekcji d3ad0ne.rule – co daje w sumie 3.4101E+10 potencjalnych haseł
  • Sprawdzenie wszystkich 8 znakowych haseł, co oznacza 6.634E+15 haseł

Dwie pierwsze metody, oparte na słownikach nie gwarantują odzyskania żadnego hasła, chociaż w praktyce są bardzo skuteczne i wydajne. Ostatnia metoda natomiast gwarantuje odzyskanie wszystkich haseł o długości 8 znaków – niezależnie od poziomu ich skomplikowania. Użyty w tym przykładzie algorytm zabezpieczający nie używa tzw. soli. Jest to metoda wyliczania hashy wykorzystująca element losowy. Dzięki temu dwa takie same hasła reprezentowane są przez różne hashe. Brak soli znacznie zwiększa wydajność ataku, szczególnie dla dużych zbiorów hashy, gdyż wszystkie hasła są zgadywane równocześnie.

czas ataku=przestrzeń haseł * liczba soli / szybkość hashowania

Gdzie:

przestrzeń haseł – liczba kandydatów haseł

liczba soli – liczba unikalnych soli. W przypadku braku soli przyjmuje się 1

szybkość hashowania – średnia ilość hashy obliczana w jednostce czasu

UWAGA!

Podany wzór jest pesymistyczną estymacją. Rzeczywisty czas ataku będzie mniejszy, ponieważ wraz z każdym znalezionym hasłem maleje liczba unikalnych soli, co zmniejsza przyszłą ilość obliczeń.

Znając czas potrzebny do przeprowadzenia ataku, obliczenie kosztu to jedynie pomnożenie czasu przez koszt pracy (wynajmu) serwera obliczeniowego.

Czas i koszt ataku na hashe haseł

Znając szybkość obliczania hashy dla poszczególnych algorytmów można w prosty sposób obliczyć czas oraz koszt ataku dla poszczególnych metod. Tabela 1 prezentuje czas oraz koszt przeprowadzenia opisanych wyżej ataków na bazy danych zabezpieczone różnymi algorytmami.

Tab. 1 Porównanie szacunkowego czasu i kosztu ataku na różne algorytmy hashujące przy różnych scenariuszach ataku

algorytm wydajność [H/s] metoda ataku przestrzeń haseł liczba haseł do odzyskania czas ataku [h] koszt ataku [pln]
SHA1 22 757 600 000 słownik 1 000 000 100 000 1.2E-8 4.8E-8
1
słownik + reguły 34 101 000 000 100 000 0.00041 0.0016
1
bruteforce 6.63E+15 100 000 80.97 323.9
1
SHA1
($pass.$salt)
22 777 500 000 słownik 1 000 000 100 000 0.0012 0.0048
1 1.2E-8 4.8E-8
słownik + reguły 34 101 000 000 100 000 41.58 166.34
1 0.00041 0.0016
bruteforce 6.63E+15 100 000 8 090 591.73 32 362 366.92
1 80.9059173 323.62
Bcrypt
(32 iteracje)
96 662 słownik 1 000 000 100 000 287.37 1 149.48
1 0.0028 0.011
słownik + reguły 34 101 000 000 100 000 9 799 611.01 39 198 444.06
1 97.99 391.98
bruteforce 6.63E+15 100 000 1 906 472 586 289 7 625 890 345 155.50
1 19 064 725.86 76 258 903.45

Z przedstawionych danych wyraźnie widać ogromny wpływ algorytmu użytego do zabezpieczenia haseł na koszt ataku. Widać również wyraźnie, że nawet w przypadku użycia silnego algorytmu, odzyskiwanie pojedynczych haseł nadal jest możliwe jeśli nie są one dostatecznie silne. Zachęcamy do zapoznania się z naszym artykułem o tym jak tworzyć silne hasła.

UWAGA!

Tabela 1 celowo pomija koszt ataku na hasła zbudowane w oparciu o pełne zdania, zgodnie z zaleceniami CERT Polska ponieważ:

  • Przestrzeń wszystkich 5-wyrazowych haseł można szacować pesymistycznie na 3.2E+26 a optymistycznie na 1E+30 – w zależności od przyjętego rozmiaru słownika (200 000 lub 1000 000). Wygenerowane losowo hasło (składające się z liter, cyfr i znaków specjalnych) o porównywalnej sile musiałoby mieć między 13 a 16 znaków.
  • Nie istnieje na dzień dzisiejszy narzędzie pozwalające na wydajne przeprowadzenie praktycznego ataku na tak zbudowane hasła. Sprawia to, że powyższe obliczenia (a w szczególności wydajność) byłyby znacznie zafałszowane.
  • Wydajnie przeprowadzony teoretyczny atak na pojedyncze hasło zabezpieczone przestarzałym algorytmem SHA1 zająłby 445 184 418 lat.

W związku z powyższym, uznano, że dołączenie takiego przykładu do zestawienia nie miałoby realnej wartości porównawczej.

Udostępnij: