W ostatnim czasie na jednym serwerze postanowiłem wykonać szybki audyt haseł. Słabe hasła użytkowników nadal stanowią duży problem w wielu systemach.. Wyniki były dość ciekawe, bardzo szybko udało się wyłapać kilku delikwentów posiadających hasła nie spełniające jakichkolwiek rozsądnych norm. Niestety nie miałem ustawionej odpowiedniej polityki haseł – ustawienia default. Wykorzystałem do tego John The Ripper.
Po krótce John The Ripper to program potrafiący łamać hasła, można go wykorzystać do szybkiego wyszukania kont, które posiadają słabe hasła. Stworzony początkowo na dla systemów Unix, aktualnie działa również na Windows, DOS, BeOS, and OpenVMS. Obsługuje formaty DES, RSA, MD4 i MD5, Kerberos AFS oraz hasze Windows LM, można go zmusić do obsługi innych formatów za pomocą odpowiednich łatek. Program łamie hasełka za pomocą ataku słownikowego lub brute-force.
Do wyszukania najsłabszych haseł można użyć opcji -single.
john -single /etc/shadow
Ten sposób skanowania korzysta z GECOS, czyli po prostu z danych wprowadzonych w /etc/passwd (często są to takie dane jak imię i nazwisko, telefon, ewentualnie jakiś nick) i ich kombinacji, np. odwrotny zapis, zapis poprzedzony cyfra, kilkukrotny zapis.
Przykład użycia:
Dodajemy usera ze słabym hasłem i zaczynamy się bawić…
mojamaszyna:~# adduser testuser
Dodawanie użytkownika `testuser'...
Dodawanie nowej grupy `testuser' (1001)...
Dodawanie nowego użytkownika `testuser' (1015) w grupie `testuser'...
Tworzenie katalogu domowego `/home/testuser'...
Kopiowanie plików z `/etc/skel' ...
Podaj nowe hasło UNIX:
Ponownie podaj hasło UNIX:
passwd: hasło zostało zmienione
Zmieniam informację o użytkowniku testuser
Wpisz nową wartość lub wciśnij ENTER by przyjąć wartość domyślną
Imię i nazwisko []: user testowy
Numer pokoju []:
Telefon do pracy []:
Telefon domowy []:
Inne []: john
Is the information correct? [Y/n] y
mojamaszyna:~# grep 'testuser' /etc/shadow > usertetowy_john
mojamaszyna:~# nice john usertetowy_john
Loaded 1 password hash (FreeBSD MD5 [32/32])
test (testuser)
guesses: 1 time: 0:00:00:00 100% (1) c/s: 1066 trying: test
mojamaszyna:~#
Jak widać powyżej, złamanie takiego słabego hasła trwa dosłownie moment.
Przykłady innych wywołań:
- słownik
- brute-froce:
john -wordfile:lista_hasel.lst hasla_do_zlamania.txt
john -incremental:alpha hasla_do_zlamania.txt
– znaki alfanumeryczne
john -incremental:digits hasla_do_zlamania.txt
– cyfry
john -incremental:lanman hasla_do_zlamania.txt
– litery, liczby i część znaków specjalnych
john -incremental:all hasla_do_zlamania.txt
– wszystkie znaki
john -users:nazwa_usera hasla_do_zlamania.txt
– łamanie hasła dla wybranego usera
john -group:nazwa_grupy hasla_do_zlamania.txt
– łamanie hasła dla wybranej grupy
Pełna lista przypadków użycia:
zless /usr/share/doc/john/EXAMPLES.gz
Udanej zabawy!