Kiedy haker włamuje się do systemu i chce uzyskać dostęp do zakodowanych haseł, musi najpierw złamać kod, za pomoc którego hasło przechowywane jest w bazie danych. Wielu hakerów próbuje w tym celu przeprowadzać dowolny atak, który może być skuteczny. Artykuł ten zademonstruje kilka efektywnych metod łamania haseł oraz przedstawi, jak statystyczna analiza haseł może być wykorzystywana w połączeniu z różnymi narzędziami do wydajnego i pomyślnego crackowania.
Łamanie haseł – co warto wiedzieć o statystyce?
Spis treści
- Łamanie haseł – dlaczego to takie istotne?
- Cena
- Analiza statystyczna
- Statystyczna hybryda – jeszcze szybciej
- Wydajność a czas
- Ukierunkowanie
- Streszczenie
- Łamanie haseł – jak się bronić?
- Podsumowanie
Łamanie haseł – dlaczego to takie istotne?
Łamanie haseł jest coraz mniej popularne. Użytkownicy zmuszani są do tworzenia coraz bardziej skomplikowanych wyrażeń, a niektórych deweloperzy zaczynają używać mechanizmów takich jak Bcrypt zamiast standardowych funkcji kodowania. Kodowanie Bcrypt generuje się znacznie dłużej i szybko, aby wydajnie łamać hasła, dlatego Bcrypt jest niezwykle potężnym narzędziem w walce z tymi atakami. Aby przedstawić obrazowo ten przykład, w 2012 roku stworzono program do generowania haseł, który byłby w stanie generować 350 mld hashów NTLM na sekundę. Prędkość generowani narzędzia Bcrypt to 71 000 hashów na sekundę.
Porównując obydwa modele, można zauważyć, że dla każdego pojedynczego hasha wygenerowanego przez Bcrypt da się wygenerować 5 milionów hashów NTML. Dlatego też, mając do czynienia z algorytmami narzędzia Bcrypt, hakerzy muszą dysponować znacznie większą mocą obliczeniową i nie mogą w każdej sytuacji polegać na Brute Force.
Cena
Wydajność czasowa to klucz aby łamanie haseł było skuteczne. Sprawdzenie każdej kombinacji dla hasła jest jak najbardziej możliwe, jednak czas potrzebny do dokonania tego często bywa nierealny. Dlatego też, pod łamanie haseł najpierw wybierane są metody, które pozwalają na szybkie i efektowne hakowanie, natomiast dopiero później, w przypadku niepowodzenia, stosuje się te wolniejsze (sprawdzające większą liczbę kombinacji). Najszybszą metodą jest prosty atak słownikowy bazujący na liście popularnych lub zhakowanych wcześniej haseł. Następnie wyrażenia słownikowe są modyfikowane poprzez dodawanie cyfr i symboli na końcu słowa lub zmianę kolejności liter.
Podejście takie nazywa jest atakiem hybrydowym lub atakiem opartym na regułach. Kolejnym krokiem jest skorzystanie z uczącej się maszyny, która generuje najbardziej prawdopodobne hasła. Doskonałym przykładem jest metoda Markov’a. Łącząc często spotykane w języku angielskim kombinacje liter (np. ing, er, gu), możliwe jest wygenerowanie wysoce prawdopodobnych możliwości haseł, jak na przykład hasło PASWORD1234, które konstrukcje pokazano poniżej. Pomimo, że hasło byłoby proste do zhakowania za pomocą każdej z powyższych metod, tutaj użyjemy go w celu zaprezentowania metody maski.
Pa+ss+word+1234
Atak za pomocą Maski, czyli zmodyfikowana metoda Brute Force sprawdza wszystkie kombinacje hasła biorąc pod uwagę jego strukturę. Pisząc „strukturę” mam na myśli typ znaków i kolejność, w jakiej tworzą one hasło.
Na przykład, PASSWORD1234 posiada strukturę składającą się z dużej litery, siedmiu małych liter i czterech cyfr (co można zapisać jako ul1111111dddd)
Mała litera (l) lower case,
Duża litera (u) upper case,
Symbol (s) symbol,
Cyfra (d) digit
Jeśli więc haker zdecyduje się na generowanie wszystkich kombinacji za pomocą tych struktury,
w końcu natrafi na hasło Password1234. Hakujący musi zatem zadać sobie pytanie: Jakie struktury haseł powinienem wykorzystać w pierwszej kolejności?
Analiza statystyczna
Aby pomóc mu odpowiedzieć na powyższe pytanie, przeprowadziłem pewną analizę dotyczącą popularnych haseł poszukiwaniu struktur, które występują częściej niż inne. Analizowana próba składa się z ponad 34 milionów publicznie ujawnionych haseł, pochodzących między innymi
z serwisów takich jak RockYou, LinkedIn, phpBB i innych.
Liczba przeanalizowanych haseł: | 34,659,199 | ||
---|---|---|---|
Rockyou | 14,344,391 | eHarmony | 1,513,935 |
10-million-combos | 10,000,000 | phpBB | 184,389 |
8,616,484 |
Poniżej przedstawiono wykres zależności pomiędzy rodzajem maski a częstotliwością jej występowania. Czerwonym kolorem zaznaczono granicę 50% populacji próby.
Oznacza to, że 13 najczęściej stosowanych masek użyto do utworzenia ponad 50% haseł. Ponad 20 milionów haseł z próby używa jednej z 13 struktur. Wyniki te są dość szokujące, jeśli chodzi o uniwersalność struktury hasła. Pozostałe 50% haseł mieści się w długim wykresie po prawej stronie, który został na powyższym obrazku ucięty.
W rzeczywistości, z 260 500 masek, tylko 400 zostało pokazanych na wykresie. Pomysł tworzenia hasła w oparciu o powszechnie znaną strukturę wydaje się nieprawdopodobny. Jednak okazuje się to całkiem normalne, jeśli weźmiemy pod uwagę sposób, w jaki użytkownicy tworzą i zapamiętują hasła. Według przeanalizowanych danych, istnieją logiczne czynniki, które wyjaśniają dlaczego jest to możliwe.
Kiedy użytkownik proszony jest o wymyślenie hasła zawierającego dużą literę, w 90% przypadków będzie to pierwsza litera wyrażenia. Jeśli poprosisz użytkownika o zastosowanie w swoim haśle cyfr, zazwyczaj użyje dwóch cyfr (pewnie będzie to rok urodzenia). Kolejnym częstym wyborem jest zastosowanie na końcu wyrazu czterech cyfr (aktualny lub poprzedni rok kalendarzowy). Kolejne popularne zakończenie hasła to jedna cyfra, a następnie w kolejności są 3 cyfry. Przyzwyczajenia, takie jak te, pozwalają przewidzieć hakerom, jakiej struktury hasła używamy.
Statystyczna hybryda – jeszcze szybciej
Wiedząc już, jakie są najczęstsze struktury, możemy założyć, że użytkownik prawdopodobnie prędzej użyje hasła ziemniak niż zdtuiknsh (losowe litery) pomimo tego, iż obydwa zaczynają się na literę „z” oraz mają po 8 liter.
Dlatego też zakładamy, że w haśle opartym na masce, częściej spotykamy wyraz niż losowe litery. Dla hakerów jest to bardzo pomocne założenie, ponieważ pozwala im wyeliminować ogromną ilość niepotrzebnych kombinacji. Taki sposób hakowania nazywamy jest atakiem hybrydowym wykorzystującym statystykę uniwersalnych struktur haseł.
Wydajność a czas
Jako haker, łamiąc nawet bardzo dużą ilość haseł, często nie masz czasu na zhakowanie ich wszystkich. Jednak złamanie niektórych z nich może pomóc uzyskać dostęp do systemu i skutkować w nowe możliwości. Dlatego też łamanie haseł czasem wymaga określonej ilości czasu, jaką możemy przeznaczyć na hakowanie.
Korzystając ze struktur, które zostały znalezione w poprzedniej analizie, oszust może określić, że chce przeszukiwać 10 najbardziej popularnych struktur w zależności od skomplikowania hasła posortowanego po najkrótszym czasie hakowania. W wyniku tego, haker może określić przedział czasowy, który chce poświęcić na łamanie haseł, np. dokładnie 60 minut. Poniżej zaprezentowano wyniki łamania haseł za pomocą CPU.
W tym przypadku, najszybciej sprawdzoną strukturą było U(W3) dddd, którą definiujemy jako duża litera, 3 małe litery („W” czyli słowo) oraz 4 cyfry. W zestawie było 69 haseł, które pasują do podanej struktury, a mój komputer potrzebował zaledwie minuty, żeby sprawdzić wszystkie kombinacje. Zatrzymałem hakowanie w 62 minucie i okazało się, że zhakowałem 221 hashów, które pasowały do 491 kont, co skutkowało 11% zhakowanych haseł. Powodem dużej różnicy między liczbą zhakowanych haseł, a ilością zhakowanych kont jest spora ilość takich samych haseł (np. w biurach firm, gdzie domyślne hasła często nie są zmieniane). Jeśli haker zdeterminuje pospolite hasło w jakimś środowisku, wówczas wszyscy użytkownicy z tym samym hasłem zostaną zhakowani.
Pomimo, że atak hybrydowy lub atak oparty na zasadach, np. best64 mogłyby zhakować niektóre
z tych haseł szybciej, atakowanie za pomocą Maski zapewnia sprawdzenia większej ilości kombinacji. Jeśli szybsze sposoby nie odniosą sukcesu, powyższe podejście będzie kolejnym krokiem w efektywnym łamaniu hasła. Należy pamiętać również, że na przykład, to hakowanie zostało przeprowadzone na średniej jakości procesorze i jeśli uruchomilibyśmy proces na potężnej karcie GPU, czas mógłby ulec skróceniu nawet do kilku sekund. Dlatego też czas nie jest ważny tak bardzo, jak przemyślana wydajność.
Ukierunkowanie
Analiza statystyczna pomaga nam atakować często stosowane, uniwersalne struktury. Jednak, niektóre narzędzia mogą pomóc nam w określonych aplikacjach. Narzędzie takiej ka CeWL może pobierać słowa ze strony internetowej i tworzyć listę lub słownik dostosowany do słownictwa branżowego. Dodatkowo, jeśli wiemy już, że często spotykane hasła popularne są w środowisku pracy, jako podstawa innych haseł, które mogą być podobne. Na przykład, jeśli zauważyliśmy, że hasło „ArmeCorp1234” było używane przez jednego z pracowników, możemy dołożyć wyrażenie „AcmeCorp” do listy wyszukiwanych słów, aby za chwilę znaleźć inne hasło, np. „AcmeCorp@2015”.
Pomysł korzystania z wcześniej zhakowanych haseł, jak np. „AcmeCorp” oraz zmiany kolejności niektórych, sąsiednich znaków jest niezwykle efektywne w przypadku hakowania haseł należących do dużych korporacji. Z analizy wynika, że dzięki takiej metodzie można zhakować dodatkowo 20% nieznalezionych wcześniej haseł.
Pomniejszanie słownika o niepotrzebne słowa, tak aby wszystkie hakowane hasła spełniały stawiane przez naszą aplikację wymagania jest bardzo ważne, ponieważ nie tracimy czasu na zgadywanie haseł, które nie mają możliwości wystąpienia ze względu na długość lub układ znaków.
Streszczenie
Łamanie haseł rozpoczęte od najszybszego możliwego ataku, opartego na jak najmniejszej ilości kombinacji (standardowy atak słownikowy) i kończenie na najwolniejszym, uwzględniającym wszystkie możliwe kombinacje (czysty Brute Force) to najbardziej idealny sposób przeprowadzania hakowania, zakładający ograniczony czas ataku.
Hakerzy powinni opracować standardową metodologię, opartą na tym założeniu. Jeśli liczba kont, jakie haker chce zhakować zostaje osiągnięta już w pierwszych krokach, być może nie ma sensu kontynuować dalszych sposobów ataku. Jednakże, w wielu przypadkach atak słownikowy może okazać się niewystarczający – lub atakujący chce uzyskać dostęp do jeszcze większej ilości kont – i wtedy pomocne mogą być tzw. ataki hybrydowe oraz ukierunkowany Brute Force, które może wykorzystać analizę statystyczną.
Zatem ustalenie metodologii jest wymogiem krytycznym, jeśli chcemy odnieść sukces, niezależnie od tego, czy użyjemy wymienionych wyżej metod czy technologii zautomatyzowanych. Najnowsze narzędzia takiej jak PRINCE mogą pomóc w hakowaniu haseł. Rozwój narzędzi takich jak PRINCE w stosowaniu metodologii jest ważny, ale zrozumienie funkcjonalności samego narzędzia, a nie tylko ślepe poleganie na nim sprawi, że proces łamania haseł stanie się znacznie bardziej efektywny.
Łamanie haseł – jak się bronić?
Dzięki przeanalizowaniu skompromitowanych haseł, możliwe jest określenie najbardziej popularnych struktur używanych przy ich tworzeniu. Dlatego też, developerzy powinni tworzyć systemy, które powstrzymają użytkowników przed tworzeniem haseł o standardowych strukturach, tak aby kształt wykresu (o którym bywa mowa wcześniej) uległ zmianie na bardziej płaski.
Wadą tego pomysłu jest to, iż bez łatwiej struktury, użytkownicy mogą mieć trudności z zapamiętaniem swoich haseł. W tej sytuacji zaleciłbym zatem stosowanie managerów haseł, które wymagają dwustopniowego uwierzytelniania. Aplikacje te wygenerują oraz przechowają wszystkie Twoje hasła. Wyrażenie przez nie oparte są na losowych strukturach i mogą być tak długie, jak pozwala na to dana aplikacja. Jak wspomniałem wcześniej, hasła szyfrowane przez program Bcrypt to kolejny doskonały sposób na spowolnienie hakerów.
Dodatkowo, dobrym rozwiązaniem mogło by być ustalenie zasad w firmach, które wymagały by od pracowników zapoznania się z niebezpieczeństwami udostępniania i ponownego wykorzystywania tych samych haseł. Nawet jeśli nie były by one do końca przestrzegane i tak były by dosyć wydajnym zabezpieczeniem.
Podsumowanie
Łamanie haseł może wydawać się chaotycznym pomysłem. Jako, że staje się coraz trudniejsze, pojawia się potrzeba ataków ukierunkowanych, opartych na wydajności, a także spersonalizowanych metodologii hakowania. Inwestowanie pieniędzy w ciągłe doskonalenie ilości sprawdzanych znaków na minutę nie jest opłacalne.
Dlatego też zaczynam stosować metodologię i procesy oparte na analizie statystycznej, które mogą ułatwić zgadywanie haseł. Developerzy mogą tworzyć narzędzia do walki z hakerami, natomiast użytkownicy mogą korzystać z managerów haseł, aby zmniejszyć efektywność ataków hakerów. Jednak takie rozwiązania wciąż nie cieszą się zbyt dużą popularnością. Statystyczne ataki na hasła są obecnie efektywne, jeśli chodzi o ilość zhakowanych kont i wydajność czasową.
Pomyśl o swoim haśle i zapytaj sam siebie, jak szybko hakerzy są w stanie złamać Twoje hasło na podstawie jego struktury oraz, jakie czynniki w Twojej firmie mogą spowodować, że Twoje hasło zostanie odgadnięte.
Źródło: www.praterian.com
Jeśli już to nie „łamanie” haseł a zgadywanie haseł. W końcu to jednokierunkowa funkcja skrótu.
Dzięki, następnym razem będziemy bardziej precyzyjni 😉
Bardzo ciekawy artykuł Pani Kasiu.
Zarówno od tej zabezpieczającej jak i łamiącej strony.
Chyba zakradł się błąd:
„Na przykład, PASSWORD1234 posiada strukturę składającą się z dużej litery, siedmiu małych liter i czterech cyfr (co można zapisać jako ul1111111dddd)”
1) w przykładzie zacytowano hasło z 8 wielkich liter i czterech cyfr.
2) jeśli odnieść przykład do treści artykułu to kod powinien wyglądać tak: ulllllllldddd (małe litery L a nie cyfry 1)
Nie zmienia to faktu, że bardzo cenna wiedza została tu przedstawiona w ciekawy sposób.
Pozdrawiam!
Jesli juz to nie „lamanie” hasel a zgadywanie hasel. W koncu to jednokierunkowa funkcja skrotu.
Dzieki, nastepnym razem bedziemy bardziej precyzyjni 😉
Bardzo ciekawy artykul Pani Kasiu. Zarowno od tej zabezpieczajacej jak i lamiacej strony.
Chyba zakradl sie blad:”Na przyklad, PASSWORD1234 posiada strukture skladajaca sie z duzej litery, siedmiu malych liter i czterech cyfr (co mozna zapisac jako ul1111111dddd)”1) w przykladzie zacytowano haslo z 8 wielkich liter i czterech cyfr.2) jesli odniesc przyklad do tresci artykulu to kod powinien wygladac tak: ulllllllldddd (male litery L a nie cyfry 1)Nie zmienia to faktu, ze bardzo cenna wiedza zostala tu przedstawiona w ciekawy sposob.Pozdrawiam!