Hashcat dla konkursu Sekuraka Academy 2024

nfsec.pl 6 miesięcy temu

S

ekurak opublikował kolejny konkurs dotyczący łamania haseł. Tym razem było 10 to pozycji, a nie 12. Konkurs wystartował 31 października 2023 o 11:37, a informacja o nim dotarła do mnie o 12:15. O 12:34 miałem już dwa hasła. Pierwszym krokiem było szybkie stworzenie „dedykowanego” słownika. Zaznaczyłem cały tekst na stronie konkursu i wkleiłem je do CyberChef. Zamiana spacji („\s”) na znaki nowych linii („\n”) gwałtownie zwróciła słownik, który mógł zostać użyty do pierwszej próby. Czyste uruchomienie łamania słownikiem nie zwróciło żadnych wyników, ale dodanie modyfikatorów zwróciło pierwszy wynik:

hashcat -a0 -m100 to_crack.txt sekurak_dic.txt -r OneRuleToRuleThemStill.rule db13ca089eb4860896567399a30558f2c1fc69e7:sekurak.academy

Kolejnym krokiem był tryb: słownik + słownik, aby połączyć w pary frazy z każdego słownika, co zwróciło drugi hasz:

hashcat -a1 -m100 to_crack.txt sekurak_dic.txt sekurak_dic.txt 9ca2065c0db9c96e7c2610bc3646991b590620f8:sekurak2024

Wracając do pracy zostawiłem program hashcat w trybie brute-force, co po godzinie 16:00 wyświetlało już kolejne dwa złamane hasła:

hashcat -a3 -m100 to_crack.txt cc713abadd413446b499a795a963e3358e6bea37:Ow0jw2 11611d749d0a4df9a91bdc6967a05a4a85df7ffb:anw22ii2

i perspektywę długiego łamania dłuższych haseł – dlatego przerwałem dalszą pracę programu. Przyszedł czas na „ślepą furię”, czyli słownik który tworzę od jakiegoś czasu wzbogacając go o różnego rodzaju polskie wycieki. Co interesujące jego systematyczne uzupełnianie i nastawianie na polskie realia spowodowało wzrost złamanych haseł z serwisu pomarańcze.net z 105475 do 389598 pozycji (pokazując, iż proste, stare hasła wciąż są powtarzane i używane w innych serwisach). Schemat działania był analogiczny do poprzedniego słownika: 0) czysty słownik #2 1) słownik #2 + zasady modyfikujące 2) słownik #2 + słownik #2 3) słownik #2 + słownik #2 + zasady modyfikujące 4) słownik #1 + słownik #2 (i odwrotnie) 5) słownik #1 + słownik #2 + mody (i odwrotnie). W ciągu godziny (z przerwami) zabawy kombinacje te wypluły:

d451fa69378f9a246cff1a0f3bf0979b1df643ee:grzechu1234 283d5cb401e9de6a2e56f97166a639479fb86aee:akademiasekuraka 3c37442f864f1921808a2440c7657311df38b919:bezpiecznykurak

Przy okazji pracy z słownikami – postanowiłem zaktualizować własny o nowe słowa dodane do literaków. Zauważyłem też, iż jest wersja z odmianami słów zawierająca więcej wyrazów i zwrotów. Podobnie, jak w przypadku pierwszego słownika – ułożenie go wymagało kilku zabiegów – usunięcie kropek, przecinków; zamiana spacji na nowe linie itd. W ten sposób słowo et seq. zamieniło się w seq + rak, co złamało w trybie słownik #2 + słownik #2 kolejny hasz:

61e5851b40d661bd046bdd96577fc4e81b7ae625:seqrak

Przerwałem działanie programu hashcat i o 18:00 wysłałem pierwszą paczkę 8’miu haseł. Późnym wieczorem zrobiłem jeszcze przegląd dotychczas złamanych haseł i do „sekurakowego” słownika postanowiłem jeszcze dodać frazy, których nie było w tekście, ale były na obrazkach. Uznałem, iż dobrymi kandydatami na hasło będą: WronBrodaty, on1Ry, SpaceOutlaw, ZygzakEtylowasyl, VPS, NAS, WireGuard i ich różne kombinacje. Gdy wznowiłem przerwane działanie programu hashcat podał on kolejny hasz:

e68e8854e4da8055832f1a00ced5ac8772611a64:bezpiecznakura

Powtórzenie kombinacji z nowymi hasłami nie wniosło nic do procesu. O 22:18 wysłałem drugą paczkę 9’ciu haseł. Przed snem puściłem jeszcze w ruch wszystkie, czyste słowniki z SecLists oraz wersje z modyfikatorami. Zero wyników sugerowało hasło bardziej złożone np. z trzech słów, jak to miało miejsce w poprzedniej edycji (ciezkatosprawa). Do tworzenia słownika potrzebnego do łamania tego typu haseł przystąpiłem dopiero wieczorem kolejnego dnia. Optymistycznie patrząc zadanie wydawało się dość proste: wystarczy z jednego słownika zrobić inny, który będzie miał połączone ze sobą każde słowo z tego samego słownika:

hashcat -a1 --stdout nfsec_pl.txt nfsec_pl.txt > double_nfsec_pl.txt

Po kilkudziesięciu minutach intensywnej pracy dysku i komunikacie o kończącym się miejscu zdałem sobie sprawę, iż chyba przesadziłem z ilością słów, które chciałem wzajemnie połączyć. „Przecież one będą działać jak mnożnik wielkości pierwotnego pliku”. Przerwałem proces, jak nowy słownik posiadał już 385 GB. Usunąłem go i skupiłem się na stworzeniu trzeciego słownika zawierającego tylko zaimki i przyimki umieszczając słowo „to” na pierwszym miejscu. Połączyłem nowy słownik z moim mając nadzieje, iż wiele słów w różnych odmianach z tymi częściami mowy stworzy jakieś logiczne frazy:

hashcat -a1 --stdout nfsec_pl.txt zaimki_przyimki.txt > double_nfsec_pl.txt

Łączenie trwało kilkanaście minut, a kilku gigabajtowy słownik spokojnie zmieścił się na dysku. Alternatywą dla tego takiego łączenia słowników może być generowanie w locie drugiego słowa, co oszczędza miejsce na dysku, ale wymaga wielokrotnego uruchamiania programu hashcat:

for i in `cat zaimki_przyimki.txt`; do echo hashcat -a1 -m100 to_crack.txt nfsec_pl.txt \ nfsec_pl.txt --rule-left \'\$"$i"\' | bash; done

Dodając jeszcze jedną pętlę i opcję -rule-right możemy choćby stworzyć potworka łamiącego hasło czterowyrazowe. Niemniej jednak dodanie tego samego słownika jako źródła trzeciego słowa rozpoczęło proces łamania:

hashcat -a1 -m100 to_crack.txt double_nfsec_pl.txt nfsec_pl.txt

37 minut później ukazał się ostatni hash:

61d54fe02ce6edcde2f5762f2677b3c83d876417:trudnotozgadnac

2 listopada o 00:20 wysłałem ostatnią paczkę 10’ciu haseł. 8 lis 2023 o 11:22 otrzymałem informację o wygranej. Oprócz frajdy konkurs był doskonałym pretekstem, aby dopracować własny słownik i uzupełnić w nim małą lukę, czyli odmiany polskich słów z i bez znaków diakrytycznych.

Idź do oryginalnego materiału