Połam to jeszcze raz

Niedawno sekurak.pl zorganizował kolejny konkurs z łamaniem hashy. Tym razem dowiedziałem się o nim przypadkiem – ot, wpadło powiadomienie z Discorda, które akurat zauważyłem. Rzuciłem okiem, jest link do wpisu, są hashe, więc warto spróbować, bo do wygrania był kolejny dostęp do Akademii Sekuraka 2024.

Miałem w zasadzie gotowca na podstawie poprzedniego wpisu i writeupu, więc liczyłem, że kilka sztuk wpadnie. I faktycznie, nie zawiodłem się. Opisane wcześniej metody pozwalały złamać 7 do 9 hashy. Skąd rozbieżność? Zależy jak liczyć i jaki się utworzyło dedykowany słownik.

Zajmijmy się trzema hashami, z którymi mógł być problem. Pierwszy to db13ca089eb4860896567399a30558f2c1fc69e7:sekurak.academy.
Przyznaję, że zwyczajnie miałem szczęście. W słowniku zagościł bowiem ciąg sekurakacademy, a OneRuleToRuleThemAll zrobiło resztę. Aż się zdziwiłem, czemu to wpadło, więc sprawdziłem.

Sprawdzenie, która reguła spowodowała dopasowanie robi się zgodnie z opisem z dokumentacji hashcata poprzez dodanie parametrów

--debug-mode=1 --debug-file=matched.rule

Okazuje się, że OneRuleToRuleThemAll ma takie cudo jak

l i7.

Przekładając na bardziej zrozumiały język: zamień wszystkie litery na małe i wstaw kropkę po siódmym znaku. Chwilę po godzinie dziewiętnastej odesłałem 8 złamanych hashy.

Kolejne hasło, które mogło sprawić trudność to złożenie nie dwóch, ale trzech wyrazów. Czułem, że będzie, bo tego typu pojawiały się w poprzednich edycjach. Schemat był zawsze ten sam – dwa wyrazy oddzielone krótkim spójnikiem. Sprawdziłem, ile jest krótkich spójników w moim słowniku. Samych dwuznakowych było aż 428. Uznałem, że to zbyt wiele. W dodatku większość się nie nadawała – zz czy yy po prostu mi nie pasowały.

Postanowiłem spróbować z dwuliterowymi. Ręcznie przejrzałem wszystkie dwuliterowe słowa, wybrałem 25, które wydały mi się najbardziej prawdopodobne, zapisałem do pliku. Dorzuciłem jeszcze 3 jednoliterowe spójniki: i, o, a. Na koniec dodałem 19 wyrazów trzyznakowych. Tak powstał plik laczniki.txt.

Stwierdziłem też, że dla pełnego słownika języka polskiego i tak wyszłoby wiele kombinacji. Hasła z poprzednich edycji były umiarkowanej długości. Postanowiłem wziąć na warsztat tylko wyrazy od 2 do 9 znaków. Nazwałem go 29_slownik_all_nopl.txt. Liczył 845 tys. wierszy.

Krótkim skryptem w Pythonie utworzyłem słownik z wszystkimi kombinacjami wyrazów z 29_slownik_all_nopl.txt oraz 57 łączników. Wynikiem był spory, ale nadal akceptowalny słownik zawierający 48 mln wierszy.

Potem już standardowo – operacja na dwóch słownikach. Pierwszym był 29_slownik_all_nopl_laczniki.txt zaś drugim 29_slownik_all_nopl.txt. Tak udało się złamać 61d54fe02ce6edcde2f5762f2677b3c83d876417:trudnotozgadnac
i kwadrans po dwudziestej pierwszego dnia odesłałem 9 haseł.

Wersja z tworzeniem słownika na dysku nie jest może najefektywniejszym podejściem do haseł zbudowanych z trzech słów, ale jak widać wystarczyła.

Warto w tym miejscu odnotować, że słowo to pojawiało się wcześniej i gdyby człowiek pomyślał, to mógł przyjąć, że będzie i tym razem. Cóż, po fakcie każdy mądry.

Ostatnie hasło jest ciekawą i pouczającą sprawą. Na discordowym kanale pojawiła się informacja, że już dwie osoby mają 9 haseł, w dodatku gdyby połączyć ich odpowiedzi, to będzie komplet, czyli wszystkie hasła z konkursu zostały złamane. Dopuszczałem możliwość, że coś przeoczyłem, bo jak wspominałem do konkursu przystąpiłem w pośpiechu. Na innym kanale Patryk (jego writeup z łamania haseł znajdziecie na tutaj – polecam) też pochwalił się złamaniem 9 hashy.

Po krótkiej rozmowie czego komu brakuje i ustaleniu, że faktycznie chodzi o nas, Patryk rzucił podpowiedzią, że brakujący hash jest podobny do już złamanego, ale po polsku. Cóż, wielkiego wyboru nie było i wkrótce, po dosłownie czterech próbach wykonanych ręcznie, do złamanych dołączył:
283d5cb401e9de6a2e56f97166a639479fb86aee:akademiasekuraka
Komplet haseł odesłałem o 20:23 drugiego dnia konkursu.

Zarówno słowo akademia jak i sekurak oczywiście miałem w słowniku. Zabrakło wersji z deklinacją. Mam zatem pewne wnioski dotyczące słownika na przyszłość…

UPDATE: Artykuł z oficjalnym rozwiązaniem konkursu i statystykami rozwiązań.

Wargames (1983)

Chciałem obejrzeć coś innego, ale znalazłem ten właśnie film. Wargames z roku 1983. Czyli sprzed czterdziestu lat. Postanowiłem obejrzeć, żeby zobaczyć, jak się zestarzał pod względem IT i bezpieczeństwa komputerowego. No i w końcu ocena 7,1 na IMDB to przyzwoity wynik.

Okazuje się, że film zestarzał się… nieźle. Jest nieco anachronizmów, jak choćby wykorzystanie modemów, w dodatku z aparatami starego typu, z osobną słuchawką. Ale poza tym? Całkiem nieźle. Niewiele się jakby zmieniło pod względem bezpieczeństwa systemów komputerowych. Bardziej niż na stary telefon zwróciłem uwagę na to, że na skuterze jeżdżą bez kasków. Choć dziś pewnie zamiast skutera byłaby hulajnoga elektryczna.

Jest i „skanowanie portów”, choć w tym przypadku bardziej mowa powinna być o skanowaniu numerów telefonów, pod którymi może odebrać modem innego systemu. Hasła nieco prostsze niż współcześnie, ale nadal zapisywane na karteczkach. I nadal najprostszą metodą włamania na konto jest zdobycie hasła. Sceny OSINTowe całkiem, całkiem, oczywiście z poprawką na technologię. Są i Ważne Systemy bez zabezpieczeń. No naprawdę zaskakująco mało się zmieniło przez te cztery dekady.

Oczywiście dziś zamiast programu, który uczy się sam od siebie, musiałaby wystąpić AI. Nawet lepiej by tu pasował LLM, biorąc pod uwagę jak przebiega konwersacja i jak się zachowuje program.

Najbardziej jednak rozbawiły mnie sceny, gdzie w imię poprawy kejpiajów zastępuje się ludzi automatami. Mającymi co prawda wady, ale… Od razu przypominają mi się rozmowy z automatycznym chatem, gdzie skrypt z uporem godnym lepszej sprawy robi „zacznijmy jeszcze raz, wybierz temat rozmowy”, choć sprawa zdecydowanie nie dla niego.

Kuleją komputerowe efekty specjalne w finale, choć początkowo centrum sterowania wyglądało całkiem dobrze. Z rzeczy, których już nie ma – budki telefoniczne.

Ocena ogólna: film Wargames można obejrzeć. Jednak mimo wszystko chętnie zobaczyłbym uwspółcześniony remake.

UPDATE: Przy okazji szukania remake’ów (patrz komentarze) znalazłem stronę filmu na Wikipedii. I okazuje się, że incydent z rzekomym atakiem nuklearnym na ZSSR miał miejsce już po premierze. Choć nie przypuszczam, żeby dyżurny miał szansę zobaczyć film przed incydentem.

FireHOL mirror is dead, long live FireHOL mirror!

Jakiś czas temu pisałem, że repozytorium projektu na GitHubie jest nieaktualizowane. Można było się przełączyć na pobieranie danych ze strony projektu FireHOL, ale przy niektórych zastosowaniach jest to mniej wygodne.

W komentarzach do zgłoszonego issue pojawił się link na nowy, lepszy mirror list FireHOL. Jest to stosunkowo świeże i robione przez niezależną od projektu osobę, ale LGTM i mam nadzieję, że będzie działać.

Czemu lepszy mirror? Ano dlatego, że jest parę ulepszeń, albo nawet i poprawek w stosunku do oryginału. Po pierwsze, usunięte są adresy prywatne. Usunięte są także stare blocklisty. I na koniec usunięte zostały niespójności pomiędzy plikami z sieciami i plikami z IP.