Zagrożenia w sieci

Odgadywanie nazw użytkowników i haseł metodą siłową

Odgadywanie nazw użytkowników i haseł metodą siłową

Problem

Aplikacja internetowa nie posiada w tym momencie mechanizmu blokowania konta, napastnik może zatem próbować logo­wania metodą siłową, odgadując wiele często używanych nazw użytkowników i haseł. Zwykle tego rodzaju atak obejmuje siłowe odgadywanie listy prawidłowych nazw użytkowników, a następnie siłowe odgadywanie ich haseł.

Rozwiązanie

Celem niniejszego testu jest sprawdzenie, czy napastnik zdoła zdobyć prawidłowe nazwy użytkowników aplikacji oraz czy będzie mógł odgadywać hasła tak długo, aż znajdzie jedno, które będzie poprawne. Aby dowiedzieć się, czy aplikacja celowo bądź nieumyślnie ujawnia nazwy użytkowników, wykonaj następujące czynności:

Napastnik może spróbować zalogować się, wykorzystując nieistniejącą nazwę użytkownika, a następnie logować się z nazwą użytkownika, która istnieje, ale z nieprawidłowym hasłem. Jeśli odpo­wiedź aplikacji w tych dwóch przypadkach jest różna, oznacza to, że napastnik zdoła znaleźć listę nazw użytkowników w systemie.

W aplikacji powinien istnieć mechanizm resetowania hasła dla użytkowników, którym zda­rzyło się je zapomnieć. Ponieważ nazwy użytkowników muszą być unikatowe, aplikacja powinna informować użytkownika, czy nazwa, której próbuje użyć, już istnieje w systemie. Me­chanizm ten może być wykorzystany przez napastników do wyszukania nazw użytkow­ników.

Jeśli w dowolnym z wymienionych testów aplikacja pozwoli napastnikowi na uzyskanie prawidłowych nazw użytkowników, wynik tej części testu będzie dla niej dodatni. W wy­branej aplikacji może to być fakt godny odnotowania bądź nie. Jeśli jednak wynik kolejnego testu okaże się dodatni, będzie to oznaczało, że zajęcie się przypadkiem jest konieczne.

Następny krok ma na celu stwierdzenie, czy aplikacja umożliwia odgadywanie haseł metodą siłową. Nawet jeśli napastnik nie może uzyskać przekonującej listy nazw użytkowników na podstawie informacji z aplikacji, może spróbować zastosować siłową metodę odgadywania haseł dla popularnych nazw użytkowników — takich, które mogą być prawidłowe w aplika­cji (na przykład jkowalski).

Jeśli dla aplikacji istnieje wymaganie dotyczące mechanizmu blokowania kont po określonej liczbie nieudanych prób podawania danych identyfikacyjnych, należy przetestować ten mechanizm poprzez kilkakrotne wprowadzenie nieprawidłowego hasła dla prawidłowej nazwy użytkownika (zgodnie z wymaganiami). Następnie należy sprawdzić, czy po ta­kiej próbie konto zostało zablokowane (w tym celu należy wprowadzić tę samą nazwę użytkownika wraz z odpowiadającym jej prawidłowym hasłem). Jeśli konto zostało za­blokowane, należy sprawdzić, czy aplikacja zwraca tę samą odpowiedź niezależnie od tego, czy wprowadzone hasło jest prawidłowe. Jeśli po zablokowaniu konta aplikacja zwraca różne odpowiedzi w zależności od tego, czy hasło jest prawidłowe, czy nie, ozna­cza to, że napastnik i tak może odgadnąć hasło metodą siłową. W takiej sytuacji nie bę­dzie on jednak mógł zalogować się do aplikacji tak długo, jak długo konto pozostaje za­blokowane.

Jeśli nie określono wymagania istnienia mechanizmu blokowania kont po pewnej liczbie nieudanych prób, należy sprawdzić, czy aplikacja pomimo to zawiera taki mechanizm. W tym celu należy kilkakrotnie wprowadzić nieprawidłowe hasło dla prawidłowej na­zwy użytkownika (powinno wystarczyć, jeśli zrobimy to dziesięć - piętnaście razy). Na­stępnie należy wprowadzić prawidłowe hasło i sprawdzić, czy konto zostało zablokowa­ne. Jeśli tak się stało, należy sprawdzić, czy aplikacja zwraca tę samą odpowiedź niezależnie od tego, czy wprowadzone hasło jest prawidłowe.

Test dla aplikacji jest dodatni, gdy nie zawiera mechanizmu blokowania kont lub zwraca różne odpowiedzi w zależności od tego, czy wprowadzone hasło jest prawidłowe, czy nie.

DYSKUSJA

Nazwy użytkowników i hasła często daje się odgadnąć metodą siłową nawet wtedy, gdy aplikacja jest wyposażona w mechanizm blokowania kont lub inne środki zapobiegawcze. Aplikacje często próbują być pomocne użytkownikom i wyświetlają różne komunikaty o błędach w zależności od tego, czy nieprawidłowa jest wprowadzona nazwa użytkownika, czy hasło. Często aplikacja zachowuje się w podobny sposób nawet po zablokowaniu konta. Spotykali­śmy się z aplikacjami, które wyświetlały komunikaty o błędach zgodnie z następującym schematem: jeśli była nieprawidłowa nazwa użytkownika, aplikacja generowała komunikat „Nazwa użytkownika lub hasło są błędne"; jeżeli było nieprawidłowe hasło, wyświetlał się komunikat „Uwierzytelnianie nie powiodło się"; gdy hasło było prawidłowe, a konto zostało wcześniej zablokowane, wyświetlał się komunikat „Twoje konto zostało zablokowane". Taki mechanizm dostarcza łatwego sposobu na siłowe odgadywanie nazw użytkowników i haseł.

W przykładzie przytoczonym wcześniej napastnik mógłby wyznaczyć listę nazw użytkowni­ków poprzez próbowanie różnych wartości i notowanie, czy aplikacja wygeneruje komunikat „Nazwa użytkownika lub hasło są błędne", czy też „Uwierzytelnianie nie powiodło się". Na­stępnie napastnik mógłby zastosować metodę siłową w odniesieniu do hasła, obserwując, czy uda mu się zalogować, czy też aplikacja wyświetli komunikat „Twoje konto zostało zablo­kowane". Nawet jeśli napastnik zablokuje konto podczas stosowania metody siłowej, będzie musiał jedynie zaczekać z dostępem do aplikacji do chwili, kiedy konto zostanie odblokowane. Wiele aplikacji odblokowuje konta automatycznie po ustalonym okresie czasu.

W większości systemów napastnikom nie przysparza trudności odgadnięcie przynajmniej niewielkich fragmentów nazw użytkowników i haseł. Jest tak dlatego, że na­zwy użytkowników zwykle są przewidywalne, a wielu użytkowników wybiera bardzo słabe hasła.

Odgadywanie nazw użytkowników i haseł

W zależności od aplikacji napastnik ma do dyspozycji kilka różnych sposobów uzyskania prawidłowych nazw użytkowników i haseł. W wielu systemach wykorzystywane są nazwy użytkowników, do których jest dostęp publiczny lub które łatwo zdobyć (na przykład ope­racja wyszukiwania w serwisie Google frazy „gmail.com" ujawnia wiele prawidłowych nazw użytkowników serwisu Google). W innych przypadkach informacje z aplikacji mogą wyciekać w procesie logowania, resetowania hasła lub rejestracji konta.

Napastnik może próbować odgadnąć nazwy użytkowników poprzez zebranie listy popular­nych nazwisk i wygenerowanie na ich podstawie nazw użytkowników.