łamanie haseł
| Po angielsku | password cracking |
|---|---|
| Którą formą pisać | po polsku Polska nazwa przyjęła się w tekstach i w wyszukiwarce — używaj jej samodzielnie. |
| Inne formy | crackowanie haseł · łamanie hashy · łamanie skrótów haseł |
| Kategoria | Ataki i socjotechnika |
Łamanie haseł (password cracking) to odzyskiwanie haseł z ich skrótów, zwykle po wykradzeniu bazy użytkowników. MITRE opisuje je jako technikę, w której atakujący odzyskuje użyteczne dane logowania z pozyskanych skrótów haseł: systematycznie zgaduje hasła użyte do obliczenia skrótu albo korzysta z gotowych tęczowych tablic [1]. Łamanie odbywa się zazwyczaj na sprzęcie atakującego, poza siecią ofiary [1]. Nie wymaga więc wysyłania prób logowania do strony i nie zostawia śladów w jej logach.
Jak działa
Serwis nie powinien przechowywać haseł wprost, tylko ich skróty. OWASP wyjaśnia, że funkcja skrótu (hashing) jest jednokierunkowa: skrótu nie da się „odszyfrować” i uzyskać z niego pierwotnej wartości [3]. Szyfrowanie jest przeciwnie funkcją dwukierunkową, dlatego OWASP uznaje je za właściwe dla haseł tylko w szczególnych przypadkach, gdy trzeba odzyskać ich postać jawną [3]. Łamiący nie próbuje więc odwrócić skrótu. Generuje kandydatów na hasło, liczy dla każdego skrót tym samym algorytmem i porównuje wynik z zapisanym. Zgodność oznacza, że hasło zostało odgadnięte.
Schemat poniżej pokazuje typowy przebieg po wycieku danych.
Sekurak rozróżnia dwa rodzaje ataków na hasła. Atak online polega na wysyłaniu do usługi wielu zapytań z danymi uwierzytelniającymi, a atak offline jest atakiem kryptograficznym na skróty haseł, którego celem jest znalezienie oryginału [6]. Łamanie haseł to atak offline.
| Cecha | Atak online | Atak offline (łamanie) |
|---|---|---|
| Cel | formularz logowania, API [6] | skróty z wykradzionej bazy [6] |
| Gdzie działa | na serwerze ofiary | na sprzęcie atakującego [1] |
| Co go spowalnia | limity prób [5] | koszt obliczeniowy skrótu [2] |
| Widoczność | nieudane logowania w logach | brak śladów po stronie ofiary |
Metody
Sekurak opisuje kilka sposobów generowania kandydatów [6]:
- atak słownikowy — sprawdzanie wyrazów i haseł z list;
- reguły — modyfikacje wyrazów ze słownika, na przykład dopisanie cyfr lub zamiana liter;
- maski — przeszukiwanie haseł o określonym wzorcu znaków;
- ataki hybrydowe — połączenie słownika z pełnym przeglądem kombinacji, czyli atakiem siłowym (brute-force).
Tęczowe tablice to inna droga: zamiast liczyć skróty na bieżąco, atakujący przeszukuje wcześniej obliczone zestawienia [6]. Obliczenia przyspieszają karty graficzne, które według Sekuraka wielokrotnie przewyższają w tym zadaniu procesory [6]. MITRE wśród śladów tej techniki wymienia narzędzia John the Ripper i Hashcat oraz wysokie obciążenie procesora lub karty graficznej [1].
Zagrożenia i skutki
Słabość, która ułatwia łamanie, MITRE opisuje jako CWE-916: produkt liczy skrót hasła schematem, który nie wymaga wystarczającego nakładu obliczeń, by atak był niewykonalny albo kosztowny [2]. Szybkie algorytmy, zwykle zaletą, stają się tu wadą. Atakujący może użyć obliczeń masowo równoległych, w tym chmury, kart graficznych, układów ASIC i FPGA [2].
Odzyskane hasło ma wartość daleko poza serwisem, z którego wyciekło. Użytkownicy powtarzają hasła, więc pary login–hasło trafiają na combolisty (combolist) i są używane w atakach credential stuffing. Tam, gdzie system przyjmuje sam skrót zamiast hasła, łamanie nie jest nawet potrzebne; to przypadek pass-the-hash.
W WordPressie
W WordPressie skróty haseł użytkowników leżą w tabeli wp_users. Trafiają w obce ręce na przykład przez SQL injection we wtyczce albo przez kopię bazy pozostawioną na serwerze. Od sposobu ich zapisu zależy, ile kosztuje łamanie.
Wpis zespołu rdzenia z 17 lutego 2025 roku zapowiedział, że WordPress 6.8 przejdzie z przenośnego schematu phpass na bcrypt, liczony natywną funkcją PHP password_hash() [4]. Według autorów zmiana wzmacnia bezpieczeństwo haseł, bo znacznie zwiększa koszt obliczeniowy złamania skrótu [4]. Szczegóły:
- bcrypt ma limit 72 bajtów, dlatego WordPress najpierw liczy skrót SHA-384 hasła, a zapis oznacza prefiksem
$wp$2y$[4]; - istniejące skróty są przeliczane na bcrypt przy najbliższym logowaniu użytkownika albo zmianie hasła [4];
- hasła aplikacji, klucze resetu hasła, klucze żądań dotyczących danych osobowych i klucz trybu odzyskiwania przechodzą z phpass na szybki, ale kryptograficznie bezpieczny algorytm BLAKE2b [4];
- programista może włączyć Argon2 filtrem
wp_hash_password_algorithm[4].
add_filter( 'wp_hash_password_algorithm', fn() => PASSWORD_ARGON2ID );
Konta, które od aktualizacji się nie logowały, zachowują stary skrót. Po wycieku bazy to one są najłatwiejszym celem.
Jak się bronić
Obrona polega na tym, by każdy skrót kosztował jak najwięcej prób. OWASP wskazuje trzy zadania soli: zmusza atakującego do łamania skrótów pojedynczo, uniemożliwia użycie tęczowych tablic i ukrywa, że dwaj użytkownicy mają to samo hasło [3]. Pieprz (pepper) jest wspólny dla wszystkich haseł i nie powinien być przechowywany razem ze skrótem [3].
MITRE zaleca funkcje adaptacyjne, takie jak bcrypt, scrypt i PBKDF2, w których da się ustawić liczbę iteracji albo ilość potrzebnej pamięci [2]. Takie KDF zwiększają koszt ataku siłowego i czynią tęczowe tablice niepraktycznymi [2]. OWASP preferuje Argon2id z parametrami m=19456 (19 MiB), t=2, p=1, a bcrypt uznaje za rozwiązanie dla starszych systemów, z czynnikiem pracy co najmniej 10 [3]. Zaznacza też, że obliczenie skrótu powinno trwać krócej niż sekundę, bo zbyt wysoki koszt grozi odmową usługi [3].
NIST wymaga soli długości co najmniej 32 bitów i zaleca czynnik kosztu tak wysoki, jak to praktyczne bez szkody dla wydajności [5]. Zaleca też dodatkową operację skrótu z kluczem albo szyfrowania kluczem tajnym znanym tylko weryfikatorowi, przechowywanym osobno, na przykład w module sprzętowym [5]. Skradziona sama baza nie wystarcza wtedy do łamania. Nowe hasła trzeba porównywać z listą haseł popularnych, przewidywalnych i znanych z wycieków [5]. Dla samego użytkownika najskuteczniejsze są długie, unikatowe hasła z menedżera haseł oraz uwierzytelnianie wieloskładnikowe (multi-factor authentication, MFA), które MITRE wymienia jako środek zaradczy [1].
Historia i przykłady
Sekurak opisał metody łamania haseł, w tym ataki słownikowe, reguły, maski i rolę kart graficznych, w kompendium opublikowanym 6 lutego 2013 roku [6]. Zmianę w WordPressie ogłosił 17 lutego 2025 roku John Blackbourn z zespołu rdzenia. Wpis uzasadnia przejście z phpass na bcrypt znacznym wzrostem kosztu obliczeniowego złamania skrótu [4].
Przypisy
6- [1] Brute Force: Password Cracking (T1110.002) · MITRE ATT&CK
- [2] CWE-916: Use of Password Hash With Insufficient Computational Effort · MITRE
- [3] Password Storage Cheat Sheet · OWASP
- [4] WordPress 6.8 will use bcrypt for password hashing · WordPress.org
- [5] NIST SP 800-63B-4: Digital Identity Guidelines — Authentication and Authenticator Management · NIST
- [6] Kompendium bezpieczeństwa haseł – atak i obrona (część 2.) · Sekurak