29 września 2010

Analiza wzorców haseł przyszłością ataków słownikowych?

W grudniu 2009 roku miał miejsce potężny wyciek poufnych danych. W wyniku udanego ataku typu SQL Injection wymierzonego w serwis RockYou, włamywaczowi ukrywający się pod pseudonimem igigi udało się wykraść poświadczenia należące do ponad 32 milionów użytkowników. Wszystkie przechwycone dane zostały ostatecznie upublicznione. Tego typu przypadki stanowią oczywiście nie lada gratkę dla osób zainteresowanych przeprowadzaniem (lub też odpieraniem) ataków słownikowych. Spójrzmy więc, w jak interesujący sposób takie incydenty mogą się przyczynić do opracowania jeszcze bardziej śmiercionośnych słowników haseł, ale również pozwalają na rozwój metod testowania bezpieczeństwa poświadczeń.

Oczywiście ogromna baza haseł stała się od razu obiektem rozmaitych badań. Dzięki temu poznaliśmy przykładowo listę najczęściej występujących w tymże zbiorze haseł. Są to odpowiednio:
  • 123456
  • 12345
  • 123456789
  • Password
  • iloveyou
  • princess
  • rockyou
  • 1234567
  • 12345678
  • abc123
  • Nicole
  • Daniel
  • babygirl
  • monkey
  • Jessica
  • Lovely
  • michael
  • Ashley
  • 654321
  • Qwerty
Zgodnie z przewidywaniami, królują więc hasła niezwykle łatwe do złamania lub nawet odgadnięcia. Optymistycznie nie nastraja również rozkład długości haseł:
W tym momencie wydawało by się, że komputerowi przestępcy mogą już spokojnie zaktualizować słowniki używane w trakcie ataków, pentesterzy mogą doposażyć własne słowniki używane do testowania bezpieczeństwa poświadczeń, a dalsze analizowanie ponad 32 milionów haseł nie ma już większego sensu. Spróbujmy jednak jeszcze dokładniej przyjrzeć się naszej testowej próbce.

Specjaliści z zakresu bezpieczeństwa często starają się nas przekonać, że wystarczająco bezpieczne hasło stanowi przykładowo fraza składająca się z co najmniej dziesięciu znaków i zawierająca przynajmniej: jedną dużą i jedną małą literę, cyfrę oraz znak interpunkcyjny lub specjalny. Spójrzmy na dwa przykładowe hasła spełniające powyższe wymogi:
  • Passw0rd1.
  • D,!kE6N$o.
Mimo, że obie frazy spełniają nasze założenia, to jednak pierwsze z haseł jest znacznie mniej bezpieczne od tego drugiego. Wynika to z bardzo prostej przyczyny. Otóż po pierwsza fraza Passw0rd1. jest związana z popularnym słownikowym hasłem password. Po drugie, hasło to zawiera bardzo charakterystyczne wzorce.

Jak nie trudno zgadnąć, hasła tworzone przez ludzi cechują się właśnie pewnymi typowymi przekształceniami oraz charakterystycznymi połączeniami znaków. Spróbujmy właśnie pod tym kątem przyjrzeć się naszej ogromnej bazie haseł.

Dokładna analiza ponad 32 milionów haseł nie pozostawia żadnych wątpliwości. Hasła tworzone przez internautów bardzo często charakteryzują się pewnymi określonymi wzorcami. Przykładowo:
  • hasła złożone wyłącznie z wielkich lub małych liter: 14.366.751 wystąpień (44%)
  • hasła złożone wyłącznie z cyfr: 5.192.998 wystąpień (16%)
  • hasła złożone wyłącznie ze znaków interpunkcyjnych oraz specjalnych: 4.860 wystąpień (0,015%).
Stosunkowo często zaobserwować można natomiast następujące charakterystyczne połączenia:
  • litera+cyfra: 9.834.095 wystąpień (30%), przykładowo: emillio1, holiday2, itp.
  • cyfra+litera: 895.916 wystąpień (2,75%), przykładowo: 3orange, 1loveyou, itp.
  • litera+znak interpunkcyjny: 240.993 wystąpień (0,74%), przykładowo: skating., balboa!, itp.
  • litera+znak interpunkcyjny+cyfra: 185.610 wystąpień (0,57%), przykładowo: dude!2, kaitlyn.1, itp.
Poza tym, uwagę zwracają pewne typowe przekształcenia polegające na podmianie znaków:
  • o -> 0: 30.485 wystąpień, przykładowo: il0veyou, ge0rge, itp.
  • i/l -> 1: 57.456 wystąpień, przykładowo: 1loveyou, P1ayer, itp.
  • s -> 5: 9.867 wystąpień, przykładowo: du5tin, eclip5e, itp.
  • b/g -> 6: 7.059 wystąpień, przykładowo: straw6erry, hun6ry, itp.
  • g -> 9: 6.599 wystąpień, przykładowo: an9els, en9ine, itp.
Warto również zauważyć, że zgodnie z oczekiwaniem, pewne znaki interpunkcyjne występują znacznie częściej od innych, chodzi oczywiście o kropkę (0,7%) oraz wykrzyknik (0,55%). Szczególnie popularne okazały się również hasła rozpoczynające się od znaków #1 (np. #1king) oraz zakończone znakami 1. (np. dark1.).

Powyższe spostrzeżenia wyraźnie potwierdzają tezę dotyczącą obecności pewnych charakterystycznych wzorców w hasłach używanych przez użytkowników serwisów i systemów informatycznych. Moim zdaniem zaawansowane badania nad tego typu zależnościami mogą się przyczynić do opracowania wyjątkowo skutecznych ataków słownikowych (oraz metod testowania bezpieczeństwa poświadczeń), dzięki utworzeniu słowników zawierających nie tylko najpopularniejsze hasła, ale odwzorowujących również najpopularniejsze wzorce i przekształcenia stosowane przez internautów. Oczywiście powyższa analiza powinna również stanowić dla nas wszystkich wskazówkę odnośnie tego, jakich fraz i przekształceń należy we własnych hasłach unikać!