Hashcat dla bazy pomarańcze.dot.net
Napisał: Patryk Krawaczyński
28/04/2019 w Bezpieczeństwo 2 komentarze. (artykuł nr 692, ilość słów: 820)
Z
ałóżmy, że mamy listę 2.036.445 haseł, które są zahaszowane algorytmem md5crypt. Naszym celem nie jest złamanie jak największej liczby haseł w dowolnym czasie, ale chcemy to zrobić jak najszybciej (24h). W tym celu musimy sięgnąć po najniżej wiszące owoce – czyli wykorzystać dane odnoszące się do najczęściej używanych haseł przez użytkowników. Najpopularniejsze hasła to te błyszczące słowa, które od razu pojawiają się w czyimś umyśle, gdy strona internetowa poprosi o utworzenie jednego z nich. Wszystkie są niezwykle łatwe do zapamiętania i dzięki temu dziecinnie proste do odgadnięcia za pomocą ataku słownikowego. Kiedy Mark Burnett przeanalizował 3.3 miliona haseł w 2014 roku w celu określenia tych najczęściej używanych – odkrył, że 0.6 procent to 123456. Dlatego używając 10 najczęstszych haseł – cracker może średnio odgadnąć 16 z 1000.
Do testów użyjemy hashcat v5.1.0-947, który zostanie uruchomiony na MacOS:
git clone https://github.com/hashcat/hashcat.git mkdir -p hashcat/deps git clone https://github.com/KhronosGroup/OpenCL-Headers.git hashcat/deps/OpenCL cd hashcat/ && make
Łamaniem zajmie się skromna karta graficzna Intel(R) Iris(TM) Graphics 650, 384/1536 MB allocatable, 48MCU
. Według benchmarku hashcat jest ona w stanie łamać md5crypt z prędkością:
Hashmode: 500 - md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Iterations: 1000) Speed.#2.........: 423.2 kH/s (53.30ms) @ Accel:256 Loops:250 Thr:8 Vec:1
423.000 tysięcy różnych haseł konwertowanych do łamanego hasha w każdej sekundzie.
Naszą bazę będziemy testować przeciwko 1 słownikowi, który zawiera 10.000 najpopularniejszych haseł wygenerowanych na podstawie analizy 10 milionowego zbioru. Test uruchomiony został za pomocą polecenia:
hashcat --session trelemorele -m 500 passwords.txt -O
Mając listę 10.000 najpopularniejszych haseł udało się złamać: 705 użytkowników w ciągu 10 minut; 3497 w ciągu 1 godziny; 10.170 w ciągu 5 godzin; 26.728 w ciągu 10 godzin; 63.425 w ciągu 24 godzin:
Session..........: trelemorele Status...........: Exhausted Hash.Name........: md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) Hash.Target......: crack.txt Time.Started.....: Sat Apr 27 21:49:06 2019 (1 day, 0 hours) Time.Estimated...: Sun Apr 28 21:58:36 2019 (0 secs) Guess.Base.......: File (passwords.txt) Guess.Queue......: 1/1 (100.00%) Speed.#2.........: 233.9 kH/s (1.39ms) @ Accel:64 Loops:62 Thr:8 Vec:1 Recovered........: 63425/2036445 (3.11%) Digests, 63423/2036423 (3.11%) Salts Recovered/Time...: CUR:39,2840,62980 AVG:43,2625,63008 (Min,Hour,Day) Progress.........: 20364230000/20364230000 (100.00%) Rejected.........: 2036423/20364230000 (0.01%) Restore.Point....: 10000/10000 (100.00%) Restore.Sub.#2...: Salt:2036422 Amplifier:0-1 Iteration:992-1000 Candidates.#2....: 123456 -> brady Started: Sat Apr 27 21:48:55 2019 Stopped: Sun Apr 28 21:58:37 2019
W ciągu tego czasu udało nam się złamać 3.11% całego zbioru. Możemy teraz sprawdzić jakie hasła dominowały w ujawnionych haszach. Top 50 najczęściej występujących haseł z zostało wygenerowanych za pomocą poleceń:
cat hashcat.potfile | cut -d ':' -f 2 > analyze.txt cat analyze.txt | tr -s ' ' '\n' | sort | uniq -c | sort -k 1n -n | tac \ | awk '{ print $2, $1 }' | cat -n | less
# hasło: ilość: 1. 12345678 3715 2. 12345 3508 3. 1234 3145 4. 0000 2681 5. 123456 2115 6. zaq12wsx 2090 7. 123456789 1040 8. qwerty123 954 9. 11111 942 10. 123 872 11. 1qaz2wsx 807 12. 1111 682 13. 1qazxsw2 605 14. 1q2w3e4r 573 15. 1234qwer 518 16. qwerty 502 17. karolina 488 18. qweasdzxc 458 19. 11111111 384 20. 111111 382 21. 1234567890 381 22. q1w2e3r4 338 23. qwerty12 326 24. qwer1234 321 25. qwertyuiop 279 26. monika 277 27. 12qwaszx 260 28. 123qweasd 250 29. aleksandra 247 30. 123qwe 246 31. allegro 237 32. samsung1 222 33. polska 217 34. abcd1234 212 35. qwertyui 204 36. qazwsx123 204 37. barcelona 197 38. qwerty1234 185 39. sebastian 179 40. jordan23 179 41. skorpion 172 42. michal 157 43. mercedes 157 44. 1q2w3e4r5t 157 45. trustno1 150 46. samsung 150 47. qwerty12345 143 48. qweasd123 143 49. qwe123 141 50. qwerty11 138
Gdybyśmy dysponowali większą liczbą kart graficznych to najprawdopodobniej skończyłoby się to rozbiciem większego słownika ( 100.000 lub 1.000.000 ) na mniejszcze części i puszczeniu obliczeń równolegle, ponieważ największy słownik dla w/w karty graficznej przewiduje 64 dni pracy.
Więcej informacji: Jak szybko przestępcy mogą złamać hashowanie haseł wykorzystane w Morele.net?, Baza danych 2,5 miliona klientów Morele.net wrzucona do sieci, Today I Am Releasing Ten Million Passwords
Poniżej lista Top 50 z słownika bardziej wzbogaconego o polskie słowa, którym udało się złamać 105475 haszy:
Poniżej lista Top 100 z słownika wzbogaconego o polskie wycieki, którym udało się złamać 389598 haszy:
Wszystkie złamane hasze dostępne są tutaj.