Brutalne łamanie haseł

Ataki siłowe na serwisy internetowe, choć proste w swej koncepcji, są trudne do zwalczania. Nawet jeśli hakerowi nie uda się złamać hasła, może skutecznie utrudnić użytkownikom dostęp do ich kont.

Typowym zagrożeniem dla serwisów internetowych są ataki siłowe (brute force). Jest to prosty w swej idei atak polegający na systematycznym sprawdzaniu każdej możliwej kombinacji znaków aż do momentu, kiedy trafi się na tę właściwą. Jeśli jakaś strona internetowa wymaga uwierzytelniania, jest dobrym celem dla takiego ataku. Ataki siłowe niosą ze sobą dwa rodzaje ryzyka: po pierwsze, może dojść do włamania do kont użytkowników, a po drugie jest to niepotrzebne ruch trafiający do serwera. Ten rodzaj zagrożenia, choć wykazuje pewne podobieństwa ataków do ataków DDoS, jest zupełnie niezależny. Jego cel jest bowiem całkiem inny – chodzi o to, aby uzyskać dostęp do jakiś zasobów.

Stosując metodą siłową, atakujący ma szansę złamać hasło. Jednak przy ogromnej liczbie kombinacji może to trwać latami. W zależności od długości hasła i jego złożoności, liczba możliwych kombinacji sięga bilionów. Aby przyspieszyć obliczenia, w atakach stosuje się słowniki zawierające wyrazy (lub ich drobne modyfikacje, np. z zerem w miejscu litery „o”). Taki ataki słownikowy trwa bez porównania krócej. Ataki typu brute force są z reguły przeprowadzane z użyciem powszechnie dostępnych narzędzi wykorzystujących listy słów (słowniki) i zestawy reguł, które przyspieszają odgadnięcie haseł. Choć takie ataki są łatwe do wykrycia, trudno im zapobiec. Przykładowo, wiele narzędzi do ataków siłowych na bazie protokołu http wykorzystuje pośredniczące, otwarte serwery proxy. Ponieważ żądania przychodzą z różnych adresów IP, nie wystarczy prosta blokada jednego adresu IP, aby zatrzymać atak. Sytuacja może być jeszcze bardziej skomplikowana, ponieważ niektóre narzędzia przy każdej próbie wysyłają inną nazwę użytkownika, nie da się więc również zablokować jednego konta z powodu zbyt wielu błędnych prób logowania.

Zobacz również:

  • Użytkownicy dalej konfigurują łatwe do odgadnięcia hasła

Blokowanie kont

Oczywistą metodą obrony przed atakami siłowymi wydaje się blokowanie kont, które znalazły się pod obstrzałem. Jest to częsta praktyk – po określonej liczbie nieudanych prób logowania dostęp do konta zostaje automatycznie zablokowany. Blokada konta może być również automatycznie zdejmowana po upływie zdefiniowanego czasu lub ręcznie przez administratora. Jednakże blokowanie kont nie zawsze jest najlepszym rozwiązaniem, ponieważ w ten sposób atakujący może łatwo zablokować dostęp do dużej liczby kont. W praktyce niektóre strony są celem tak wielu ataków, że wprowadzenie zasady blokowania kont jest kompletnie niepraktyczne. Operator takiej strony musiałby stale zajmować się przywracaniem dostępu użytkownikom. Ewentualnie, zamiast całkowicie blokować dostęp do konta, można po kilku nieudanych próbach logowania ograniczać jego funkcjonalność. Nawet jeśli dostęp do konta zostanie zablokowany, atak może trwać nadal, pochłaniając zasoby komputerowe i ludzkie.

Z blokowaniem kont wiążą się też inne problemy i niedogodności. Ponieważ blokowane są tylko istniejące konta, atakujący może w ten sposób zbierać nazwy użytkowników, analizując odpowiedzi o błędach. Atakujący może również stale atakować określone konto, permanentnie blokując do niego dostęp. Blokady kont są nieefektywne przeciwko atakom, w którym jedno hasło jest sprawdzane na długiej liście nazw użytkowników. Konta o największych uprawnieniach, np. konta administratorów, często są wyłączane poza regułę blokowania dostępu. Jednocześnie te konta są najbardziej pożądanym celem ataków.

Blokowanie kont w niektórych sytuacjach jest efektywne, ale tylko w kontrolowanym środowisku lub w przypadkach, kiedy zagrożenie atakami jest bardzo duże. W większości przypadków całkowite blokowanie dostępu do kont nie jest skuteczną metodą zatrzymywania ataków siłowych.

Przebieg ataku siłowego

Aby przeprowadzić atak siłowy, trzeba wykonać kilka czynności. Po pierwsze, należy zweryfikować, czy w atakowanym serwis jest wyłączone blokowanie dostępu do kont, ewentualnie, czy można łatwo ominąć ten mechanizm. Kolejnym krokiem jest ustalenie formatu nazwy użytkowników i sporządzenie ich potencjalnej listy. Następnie należy zweryfikować, które konta z tej listy faktycznie istnieją. Po tych przygotowaniach atakujący może przejść do testowania haseł na potwierdzonych kontach.

Dwa pierwsze kroki są proste do przeprowadzenia. Wystarczy wykonać kilka nieudanych prób logowania, aby przekonać się, czy jest włączona blokada dostępu do kont. Jeśli zaś chodzi o format nazwy użytkowników, powszechnym trendem jest stosowanie adresów e-mail (taki format jest łatwy do zapamiętania dla użytkowników).

Znając ten format, można przejść do określenia konkretnych nazw. Jeśli atakujący chce uzyskać dostęp do firmowej strony, stworzenie listy potencjalnie istniejących kont również jest dość proste. Firmowe adresy e-mail najczęściej występują w kilku popularnych formatach, np.: imię[email protected] czy [email protected] , itp. Następnie atakujący przechodzi do weryfikacji, które adresy faktycznie istnieją. Jest na to kilka sposobów. Można spróbować zalogować się na nie. Jeśli administrator strony był niefrasobliwy, w przypadku poprawnego adresu pojawi się informacja, że podano jedynie błędne hasło. Można również skorzystać z formularza rejestracji, który poinformuje, czy dany adres jest już zajęty. Z reguły jednak atakujący wykorzystują narzędzia, które automatycznie zweryfikują, które adresy faktycznie istnieją.

Ostatnim krokiem jest wykorzystanie zautomatyzowanego oprogramowania, które będzie sprawdzało kolejne kombinacje znaków, aby złamać hasła do znalezionych kont.

Udane logowanie

Kolejną często rozważaną metodą jest rozróżnianie prób logowania do konta ze znanych i nieznanych urządzeń. Mechanizm blokowania konta sprawdza, czy z danego urządzenia dokonano wcześniej udanej próby logowania, np. na podstawie pliku cookies zapisanego przez przeglądarkę WWW. Jest to metoda mniej podatna na zmasowane ataki siłowe niż proste blokowanie dostępu do kont, a jednocześnie dość łatwa do wdrożenia.

Inne środki zaradcze

Jest jeszcze kilka skutecznych sposobów radzenia sobie z atakami siłowymi. Po pierwsze, sukces takiego ataku zależy od czasu, więc prostym rozwiązaniem jest zastosowanie losowych odstępów między kolejnymi sprawdzeniami poprawności hasła. Wprowadzenie kilku sekundowej pauzy znacznie spowolni przebieg ataku, a jednocześnie nie utrudni dostępu do kont uprawnionym użytkownikom. Jednakże wprowadzenie takiej pauzy wydłuży tylko jednowątkowe ataki i jest mniej efektywne, jeśli atakujący wysyła jednocześnie wiele żądań autoryzacji.

Kolejną metodą jest blokowanie ruchu przychodzącego z adresu IP, z którego dokonano wielu nieudanych prób logowania. Wadą tego rozwiązania jest ryzyko zablokowania dostępu dużej grupie użytkowników widzianej pod jednym wspólnym, publicznym adresem IP, należącym do bramki internetowej firmowej sieci czy serwera proxy używanego przez ISP.

Kolejną wadą jest to, że narzędzia hakerskie mogą łączyć się przez wiele różnych serwerów proxy i wysyłać tylko po kilka żądań z każdego adresu. Korzystając z powszechnie dostępnych list otwartych serwerów proxy (np.http://tools.rosinstrument.com/proxy), atakujący może łatwo obejść mechanizm blokujący adresy IP. Ponieważ najczęściej blokada adresu IP nie następuje po jednej nieudanej próbie, atakujący może wysłać z każdego serwera proxy kilka żądań. Mając listę tysiąca otwartych serwerów proxy, można wykonać kilka tysięcy prób logowania i nie aktywować automatycznej blokady adresów IP. Niezależnie od wad tej metody, stosuje się ją w serwisach borykających się z dużą liczbą ataków.

Prostą i zaskakująco skuteczną metodą jest takie zaprojektowanie strony internetowej, aby zachowywała się niestandardowo po nieudanej próbie logowania. Przykładowo, większość stron zwraca komunikat „HTTP 401 error”, oznaczający podanie błędnego hasła. W takiej sytuacji serwer mógłby zwracać fałszywy komunikat „HTTP 200 succes”, ale użytkownikowi wyświetlać zgodnie z prawdę informację o błędnie podanym haśle. Takie zachowanie zmyli narzędzia automatycznie przeprowadzające atak siłowy. Jeszcze lepszym rozwiązaniem jest zmienne zachowanie serwera, które powinno zniechęcić większość atakujących, poza najbardziej zdeterminowanymi. Przykładowo, można wyświetlać różne komunikaty o nieudanej próbie logowania i informujące użytkownika o konieczności ponownego podania hasła.

Niektóre narzędzia hakerskie mają wbudowane funkcje rozpoznające, że na stronie pojawił się komunikat o błędzie. Ich działanie polega najczęściej na wyszukiwaniu określonych słów i fraz, np. „Błędne hasło” i kontynuowania ataku, jeśli znajdą taką frazę. Prostym sposobem oszukania tych narzędzi jest umieszczenie w komentarzu w kodzie HTML strony informującej o udanym logowaniu długiej listy fraz wskazujących, że podano błędne hasło.

Po kilku nieudanych próbach logowania można poprosić, aby użytkownik podał nie tylko swoją nazwę i hasło, ale także dodatkowe informacje, np. odpowiedział na sekretne pytanie. To nie tylko utrudnia przeprowadzanie zautomatyzowanych ataków, ale również uniemożliwia atakującemu dostęp do konta, nawet jeśli uda mu się zdobyć nazwę użytkownika i właściwe hasło. Jeśli okaże się, że serwis internetowy jest pod zmasowanym atakiem, może wymusić na wszystkich użytkownikach podawanie dodatkowych danych.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200