Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Jak szybko przestępcy mogą złamać hashowanie haseł wykorzystane w Morele.net?
Jak pewnie wiecie ostatnio wyciekło około 2.2 miliona kont użytkowników z Morele.net – w tym zahashowane hasła.
Wprawdzie sam sklep nie pisze o wykorzystanej metodzie hashowania, tutaj rąbka tajemnicy uchyliła osoba, która wykradła dane.
Jest to funkcja md5crypt (nie mylić z MD5), wspierana przez hashcata. Funkcja ta używa maksymalnie 8 znakową sól. Takie zresztą warianty (sól 8 znaków) widzieliśmy w zamazanych fragmentach wyciekniętych hashy.
Na potrzeby testowe używaliśmy hashcata 5.0, wykorzystującego kartę graficzną NVIDIA GTX 1070. Uwaga – NIE MAMY (i nawet mieć nie chcemy) realnej bazy.
Wracając do głównego tematu, na wspomnianej karcie prędkość łamania pojedynczego solonego hasha to 6,7 miliona sprawdzeń na sekundę:
Session..........: hashcat Status...........: Running Hash.Type........: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) Hash.Target......: md5crypt.txt Guess.Mask.......: ?l?l?l?l?l [5] Guess.Queue......: 5/8 (62.50%) Speed.#1.........: 6772.8 kH/s (8.08ms) @ Accel:512 Loops:250 Thr:32 Vec:1 Recovered........: 0/1000 (0.00%) Digests, 0/1000 (0.00%) Salts Progress.........: 177684480/11881376000 (1.50%) Rejected.........: 0/177684480 (0.00%)
Bardziej obrazowo: dla hasła 8-znakowego (składającego się z losowych, małych liter) mamy 26^8 = 208827064576 możliwości, prędkość łamania pojedynczego hasha 6 772 000 sprawdzeń na sekundę. Czyli pesymistycznie do złamania potrzeba 208827064576 / 6 772 000 = 30836 sekund (około 8,5h). Czas łamania wariantów haseł < 8 znaków pomijamy – nie wnosi to wiele do rozważań.
Tak wyglądają obliczenia przy łamaniu jednego hasha. Jeśli ktoś chce ich złamać np. 1000 to czas wydłuża się (pesymistycznie) 1000 razy = 8500h = 354 dni.
Dla hasła bardziej złożonego (małe, duże litery, cyfry – hasło wygenerowane losowo) mamy 375 dni dla jednego hasła. Na małym klastrze złożonym z ośmiu nowszych kart – to okolice 15 dni.
Czy wykorzystanie md5crypt() jest lepsze od MD5() ?
Zdecydowanie lepsze. Dla 'gołego’ MD5() prędkość łamania jest około 1000 razy większa:
Session..........: hashcat Guess.Mask.......: ?l?l?l?l?l?l?l?l [8] Guess.Queue......: 8/8 (100.00%) Speed.#1.........: 5114.0 MH/s (11.56ms) @ Accel:128 Loops:32 Thr:1024 Vec:1 Recovered........: 375/1000 (37.50%) Digests, 0/1 (0.00%) Salts Progress.........: 78485913600/208827064576 (37.58%) Rejected.........: 0/78485913600 (0.00%)
Co więcej hasła można łamać hurtem (czyli podobną prędkość ma łamanie jednego hasła jak i miliona).
Wszystkie te dywagacje są przy hasłach składających się z losowej kombinacji znaków – ale wiele użytkowników będzie miało hasła słownikowe – lub niemal słownikowe. Zauważcie, że przeglądnięcie całego słownika języka polskiego (np. milion słów; nota bene: istnieją mniejsze, ale i większe słowniki) – dla jednego hasła to rząd wielkości kilku sekund. Dla miliona kont – też jest w zasięgu złodzieja.
Pewnie trzeba dać wiarę informacji, którą podaje Z3S:
złodziej twierdzi, że złamał już kilkaset tysięcy haszy haseł i jest to możliwe
Podsumowując – jeśli używacie hasła słownikowego lub prawie słownikowego (np. Katarzyna1) – może być ono dość szybko złamane. Jeśli używacie losowej kombinacji małych liter – graniczną wartością jest 10 znaków (od tego momentu złamanie będzie dość trudne). Jeśli macie w haśle np. losową kombinację małych, dużych liter, znaków specjalnych – granicą będzie 9 znaków.
Tak czy siak warto zmienić hasło. Po stronie serwerowej, do hashowania haseł polecamy wykorzystać bcrypt(), choć warto to zrobić dobrze…
–sekurak
Miałem tam konto,hasło złożone z 15 losowych znaków. GL :) Ale i tak zmieniłem na nowe,tym razem 32 znaki cya later
Osobiście używam totalnie śmieciowych haseł do serwisów tego typu. Jeżeli chodzi o dane osobowe to nie ma tam nic co właściwie nie jest ogólnodostępne. Pytanie co może mi grozić jeżeli ktoś złamie moje hasło oraz będzie w posiadaniu danych z takiego serwisu? W mojej opinii nic ale może ktoś mnie naprostuje?
Mając Twoje pełne dane z nr pesel? Brać kredyty, chwilówki
A uzyles tej samej pary email/login/haslo w innych serwisach i tam nie zmieniles hasla? Jak tak to sam sobie odpowiedz, jak nie to bedziesz „tylko” dostawal wiecej spamu.
Śmieciowe hasło do sklepu, w którym podajesz najprawdopodobniej dane personalne aby otrzymać paczkę?
Brzmi jak świetna rada (y).
Albo bait na który złapałeś mnie.
Niekoniecznie trzeba coś kupować, żeby mieć tam konto, nieprawdaż? :) Np. w celu zapisania jakiegoś zestawu lub rzeczy do listy ulubionych.
Może o innego rodzaju śmieciowe mu chodzi – jak robiłem zakupy w morelach musiałem tam założyć konto, z którego później i tak nie zamierzałem korzystać wygenerowałem mega skomplikowane z Last Passa do użytku tylko na ten raz – dla mnie śmieciowe, bo nie do zapamiętania i nie do wykorzystania ponownie ;-).
Wszystkie dane, które podaję w sklepie, są ogólnodostępne (może oprócz nr tel ale w moim przypadku on również jest ogólnodostępny).
Jak mnie gdzieś proszą o pesel to sobie stamtąd idę po prostu.
Co komuś da posiadanie danych w których posiadanie może wejść absolutnie każdy?
Ale rozumiesz że to bardziej chodzi o to ze ludzie ustawiają te same hasla do innych serwisow, Allegro, banków itp?
Jak wyciagnie dane personalne to Ci moze strzelic wala lub Twoim znajomym. Choc raczej poziom ameby trzeba miec zeby to lyknac. Nr tel tez mozna krecic. Po co sie wystawiac na takie ryzyko….
Nie wiem jakie dane podajesz w sklepach internetowych ale w moim przypadku ciężko byłoby na tym wałki kręcić – podaję tylko to, co jest niezbędne do wysyłki. Równie dobrze ktoś może podejść do mojej skrzynki na listy i sobie wyciągnąć jakiś list – zdobędzie te same dane. Poza tym prowadzę DG – moje dane teleadresowe są ogólnodostępne.
Skąd w sklepie internetowym miałby się wziąć pesel? Ok, może w niektórych kontach, gdzie ktoś brał coś na raty, nie wiem, w życiu nic na raty nie brałem. W normalnym sklepie nigdy żadnego peselu nie podawałem, a swój adres do wysyłki i nazwisko i tak podałeś już w stu innych sklepach zamawiając cokolwiek
Głównie będzie mógł zaadresować maile i smsy do ciebie po imieniu i nazwisku. Przy odrobinie szczęścia, może uda mu się ciebie gdzieś złapać…
Raczej efektywniejsze jest wysyłanie w jego imieniu…
Bolesne.
Przecież jak masz np. jednoosobową to twoje dane i tak są w sieci ogólnodostępne.
Bcrypt nie jest zly, ale niedlugo juz bedzie sie zalecac Argon2, ktora jest bardziej odporna na zrownoleglanie.
Miałem 20 znakowe hasło z samych cyfr i znaków specjalnych… raczej jestem bezpieczny ale i tak pozmieniałem hasła ALBO dałem 2fa tam gdzie miałem takie samo
Czyli z solą jeden wektor ataku prawie przepadł :)
Próbowałem niedawno złamać hasło md5crypt z 8-znakową solą… szukałem jakiejkolwiek kolizji… szukanie słownikowe idzie szybko… ale bez sukcesu. Zapuściłem próbę na nie-słownikowym brute-force… no i po kilku dniach odpuściłem :( A szkoda, ponieważ atakuję swój własny router z softem OpenWRT (GPLv2 gdzie producent złamał licencję i nie udostępnił źródeł)… no i wskoczyłem bez problemu na OS z pominięciem hasłą… ale router ma podsystem (też OpenWRT i identyczne hasło roota) i tam już nie mogę znaleźć skutecznego wektora… dropbear byłby najłatwiejszy gdybym znał to hasło (mam tylko hash+salt md5crypt)…
Nawet nie wiem po co to piszę… i tak nikogo nie obejdzie