Przyspieszyć hashcata

Na blogu nfsec.pl pojawił się wczoraj wpis dotyczący crackowania hashy md5crypt[1] przy pomocy hashcat. Spojrzałem na sprzęt i moją uwagę przykuła wydajność karty Intela Intel(R) Iris(TM) Graphics 650:

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

Mam Intel Corporation Skylake GT2 [HD Graphics 520] widzianą jako Intel(R) Gen9 HD Graphics NEO i hashcata w wersji v5.1.0 (binarka, stable), na potrzeby zabaw z platformami CTF, o których wspominałem niedawno. Część zadań wymaga użycia brute force. Chociaż nie było do tej pory okazji wyjść poza coś typu gotowy słownik, to pewnie jeszcze się przyda. Rzecz w tym, że moja karta jest znacznie wolniejsza:

Hashmode: 500 - md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Iterations: 1000)
Speed.#1………: 156.1 kH/s (76.04ms) @ Accel:256 Loops:250 Thr:8 Vec:4

Rozumiem, że to inny sprzęt i inny system (u mnie Debian w wersji unstable), ale postanowiłem podrążyć temat.

Po pierwsze, zauważyłem, że mam starsze pakiety OpenCL dla Intela. Aktualizacja nie przyniosła co prawda poprawy wydajności, ale na innym sprzęcie (Ubuntu) była w ogóle niezbędna do poprawnego działania hashcata. Bez najnowszej wersji md5crypt w ogóle nie dawał się tam łamać.

Po drugie, hashcat, którego użyłem w wersji z GitHub (wersja development) to v5.1.0-951-g6caa7869 (również niezbędny na Ubuntu do poprawnego łamania md5crypt). Efekt okazał się całkiem przyjemny:

Hashmode: 500 - md5crypt, MD5 (Unix), Cisco-IOS $1$ (MD5) (Iterations: 1000)
Speed.#1………: 232.7 kH/s (51.57ms) @ Accel:256 Loops:250 Thr:8 Vec:4

Niemal połowę szybciej. Warto aktualizować soft i sterowniki, nawet, jeśli wersja wygląda na tylko nieznacznie nowszą. Co ciekawe, przyrost wydajności jest tak duży tylko dla niektórych algorytmów, w tym md5crypt. Inne, jak zwykłe md5 różnice mają jedynie symboliczne:

Hashmode: 0 - MD5
Speed.#1………: 476.6 MH/s (51.75ms) @ Accel:128 Loops:32 Thr:256 Vec:4

Hashmode: 0 - MD5
Speed.#1………: 493.4 MH/s (50.09ms) @ Accel:512 Loops:128 Thr:16 Vec:4

Tyle tym razem – trochę o instalacji i uruchomieniu hashcata, trochę o przyspieszeniu na poziomie softu. Mam świadomość, że to trochę takie wyścigi ślimaków, ale… jak się nie ma co się lubi, to się lubi co się ma. Może kiedy indziej będzie o doborze parametrów i budowie skutecznych słowników do crackowania hashy przy pomocy hashcata.

[1] Ładnie po polsku, owinięte w bawełnę, nazywa się to audyt haseł. Ewentualnie, mniej owijając w bawełnę, łamanie funkcji skrótu haseł. Zostanę jednak przy brzydkiej, potocznej wersji angielskiej.

Owsianka zwykła

Poprzednio było o owsiance proteinowej. Szukałem – nadal gotowej – alternatywy i nie sposób w sklepie nie zauważyć, że producent ma w ofercie także zwykłą owsiankę o nazwie Owsianka z ranka[1]. Cena to jakieś 1,69 zł. Większy wybór smaków, ale z testowanych nadal wygrywa malina z białą czekoladą. To dobrze, będzie łatwiej porównać. Tym razem skład wygląda następująco:

Składniki: 72,9% płatki owsiane, 10,5% cukier puder trzcinowy, 8% mleko w proszku odtłuszczone, 4% kawałki białej czekolady (cukier, tłuszcz kakaowy, mleko w proszku pełne, emuglator: lecytyny), 3,5% kawałki malin liofizowany, aromaty, tapioka.


składnik masa [g]cena [zł]udział [%]masa w porcji [g]ilość porcji w opak.koszt w porcji [zł]
płatki owsiane5002,9974,0048,1010,400,29
czekolada biała1004,004,002,6038,460,10
mleko w pr. Odtł.2509,888,005,2048,080,21
cukier puder trzcin5005,3910,506,8373,260,07
maliny lio.5025,703,502,2821,981,17
suman.d47,9610065n.d1,84

Lekko oszukałem w tabeli – brakowało mi 100%, więc dosypałem płatków, a cenę białej czekolady wziąłem na oko, bo Piotr i Paweł przez internet nie miał, a nie będę kupował tabliczki czekolady na Allegro – na pewno będzie w najbliższym sklepie.

Jak widać, jeśli chodzi o koszty, to tego wariantu owsianki zupełnie nie opłaca się robić samemu, przynajmniej nie w takim wygodnym wariancie z zamawianiem przez net – wyjdzie drożej, niż gotowiec. Jedyne na czym można oszczędzić, to mniej śmieci w postaci plastikowych kubeczków.

Niestety, ta wersja mniej mi pasuje niż proteinowa. Rozważam dosypywanie mleka w proszku lub WPC, albo zupełnie DIY. Tak czy inaczej, jak już znajdę idealny wariant, co raczej nieprędko nastąpi, to opiszę.

[1] Geniusz marketingu to wymyślał. Tendencja do ubezdźwięczniania się kłania…

UPDATE: Ostatecznie zacząłem samodzielnie robić owsiankę. Mój przepis na owsiankę, zarówno zwykłą jak i proteinową znajdziecie w tym wpisie.

Security score compare

Nazwa projektu jest nieciekawa, ale przyznaję, nie miałem weny. Za to mówi wszystko. Zaczęło się od porównywania punktacji na platformach do zabaw z security wśród znajomych z pracy. Szybko zeszło na to, że suche porównywanie wyników nie jest zbyt fajne, lepiej byłoby rysować wyniki w czasie.

I tak powstał skrypt w Pythonie, który pobiera wyniki z Root Me oraz RingZer0 Team Online CTF[1], parsuje HTML przy pomocy regexpa[2] i zapisuje do bazy SQLite. W innym trybie pobiera dane dla podanej platformy i generuje obrazek z wykresem punktacji. Taki jak poniżej:

Przykładowy ocenzurowany wykres generowany przez security score compare

Po drodze jest parę uproszczeń, typu dopełnianie braków zerami „od lewej”. Jest to bardzo wstępna wersja, ale działa i coś tam już widać. Strzelać z tego nikt nie będzie. 😉

Security score compare znaleźć można na GitHubie. Może komuś się przyda, albo nawet ktoś pomoże w rozwoju?

Jakby ktoś się zastanawiał, czemu ostatnio jest mniej wpisów na blogu, to tak, mam nowe zajęcie w czasie wolnym. 😉

[1] Nie są to wszystkie platformy na których się bawimy, ale te dwie są najpopularniejsze i… nie wymagają logowania, by sprawdzić punktację.
[2] Tak, wiem, ble i fuj. Ale działa.