Jak odzyskać hasło z zaszyfrowanej postaci – hash?

Przedstawiam Wam sposoby używa programów, dzięki którym będziemy mogli łatwo i przyjemnie i czasochłonne (sometimes not) odzyskać zakodowane hasło.

Tak haseł się nie łamie, a odzyskuje się, tytuł ma za zadanie przyciągnąć.

Będziemy się skupiali na ogólnej czynności jaką jest odzyskiwanie zakodowanego hasła, głównie patrząc na funkcję skrótu MD5.

1. HashCat

Program się instaluje, potem można przenieść go na pendriva zrobić wersję portable z GUI umożliwiający łamanie wielu rodzai hashy.

1. Hash, importowany przez program z pliku, u mnie txt, lista hashy w oknie obok wzięta z forum, może być ich dużo jak widać.
2. Plik z saltami, zapisane tak samo jak hashe, w pliku, oddzielone odpowiednikiem znaku n z systemów UNIX
3. Długość sprawdzanych haseł określamy w liczbach, które sami sobie wpisujemy.
4. Charset, z którego program buduje hasła także wpisujemy sami
5. Outfile, plik do którego program zapisuje wynik, znalezione hasła, niekonieczne bo w czasie działania programu hashe i znalezione hasła są wyświetlane w oknie działania programu.

1. Sposoby szukania hasła, o jejku, możesz sobie załadować słownik albo walić brute-forcem, albo tworzyć słownik, albo cośtam jeszcze, sami sobie sprawdzajcie co do czego jest.

1. Lista hashy jest spora. To nie cała lista bo nie lubię nowego painta w Win7 więc screeny zrobiłem nieco więcej niż połowy tego co program oferuje.

/images/images/hashcat3.jpg

Dobra, koniec teorii. Przechodzimy do praktyki, wygląda to tak:

1. Ustawiasz sobie listę hashy w pliku, dodajesz do niego łącze w programie
2. Ustawiasz rodzaj ataku, długość hasła
3. Klikasz w ten większy prostokąt wyglądający jak przycisk
4. wait…
5. …Profit!

Tak to wyglądało u mnie, do pokazania użyłem pliku ukrytego pod linkiem z cytatu. Cytat stąd.

1. Zaimportowany plik z hashami
2. Użyty charset (tak, między z 0 jest spacja).
3. Znalezione w czasie trzech minut hashe.
4. Ilość znalezionych hashy.


2.BarsWF World Fastest MD5 cracker

2.1 + GUI Macie tutaj link to BarsW Luncher (BawsWF 32bit +64bit + GUI), to wersja z GUI, dzięki czemu każdy n00b^^ sobie poradzi z zapuszczeniem łamacza. W lanczerze ustawia się czy mamy system x86 czy x64, czy użyć samego CPU czy GPU+CPU. Program do działania w trybie CPU+GPU wymaga karty graficznej nVidia wraz z zainstalowanym sterownikiem CUDA. Wadą programu jest to, że łamie tylko jeden hash. Hasło do archiwum to domena tego forum.

1. Wklejasz hash, albo przepisujesz jak wolisz
2. Ustawiasz charset z którego program łamie hash
3. Minimalna długość hasła
4. Czym atakować
5. Jeśli masz system x64 to zaznacz to, będzie trochę szybciej.

W pracy, zmienia hasła z prędkością 127.7 milionów hashy na sekundę (najnowsze karty graficzne GF mają osiągi nawet miliarda!).

Przykład złamanego hasha przez BarsWF

:

Program bardzo FLOPSo-żerny, po włączeniu cracekra ciężo cokolwiek zrobić, włączyć pauzę można zrobić klawiszem Esc, potem wrócić do łamania.


3. Wyszukiwarki

Wyszukiwanie w md5crackerach, pierwsze wyniki z Google:

http://md5crack.com/
http://md5.rednoize.com/
http://www.hashchecker.com/?_sls=search_hash
http://bokehman.com/cracker/
http://www.md5decrypter.co.uk/
http://md5hood.com/
 

4. Tęczowe tablice

Możesz sobie je pobrać albo wygenerować. Jest tego tak gęsto w necie, że nie chce mi się opisywać, zresztą widać wszystko na obrazkach. Ja używam do generowania WinRTGen Ostatni na liście.

Tęczowe tablice można samemu wygenerować w rok, albo pobrać w kilka tygodni, nie wiele jest w sieci stron oferujących pobranie tęczowych tablic, jak są linki to przeważnie nikt tego nie seeduje, jednak są w pewnych źródłach do pobrania:

http://freerainbowtables.mirror.garr.it/mirrors/freerainbowtables/md5/
http://www.insidepro.com/tables.php

Wybieramy sobie rodzaj tablic i zasysamy. Gdy mamy już tęczowe tablice, można przystąpić do łamania has… znaczy odzyskiwania hasła. Stąd pobieramy odpowiadającą nam wersję RainbowCracka.

Gdy mamy już zbudowany lub pobrane tęczowe tablice przystępujemy do użycia ich w celu odkodowania zagubionego hasła.

Użycie RainbowCrack’a:

W tym przykładzie nie zależało mi na złamaniu tych hashy, tylko pokazaniu programu.

Do programu hashe można ładować pojedynczo ręcznie albo masowo dodać plik z listą hashy, tęczowe tablice tak samo ładujemy, w czasie wybierania plików można użyć skrótów klawiaturowych.

 

Po jakimś czasie otrzymujemy wynik pracy:

statistics
——————————————————-
plaintext found: 0 of 3
total time: 57.91 s
time of chain traverse: 57.42 s
time of alarm check: 0.47 s
time of wait: 0.00 s
time of other operation: 0.01 s
time of disk read: 12.44 s
hash & reduce calculation of chain traverse: 149970000
hash & reduce calculation of alarm check: 958346
number of alarm: 252
speed of chain traverse: 2.61 million/s
speed of alarm check: 2.04 million/s

Potwierdzam też screenem:

 

Prędkość może nie oszałamia, ale jest to jeden ze skuteczniejszych sposobów odzyskiwania haseł.


5.IGHashGPU

Program konsolowy nieco podobny do BarsWF, używa jednak tylko GPU (Bars używa GPU+CPU), i ma większe możliwości (znacznie większe). Może szukać hasła dla MD4, MD5 oraz SHA1, wspiera używanie salt’ów Potrafi używać GPU nVidia i ATI. Sposób używa jest podobny do tego jak obsługuje się programu konsolowe w systemach Linux, instrukcja jest zawarta w pliku readme.htm, będącego w archiwum.

Wyróżnia się tym, że wspiera działanie kilku kart graficznych różnych modeli, a nawet producentów, sam uznaję, że jest to najszybszy brute-forcer.

1. Ekran użycia programu:

2. Opcje używania programu:

sf:<znaki_z_tablicy_ASCII> jest to program działający na zasadznie inkrementacji znaków hasła, więc podajemy hasło, którego użyjemy jako pierwsze do ataku.
salt:<hex> sól dorzucana do łamanego hasła w postaci znaków hex
asalt:<string_salt> jak wyżej z tą różnicą, że sól podajemy w postaci znaków z tablicy ASCII
usalt:<string_Unicode> jak wyżej ale z tablicy znaków Unicode
min:<liczba> minimalna długość hasła, domyślnie 4.
max:<liczba> maksymalna długość hasła, max. 3.
h:<hash> hash, który chcemy odnaleźć
t:<rodzaj hashu> MD4, MD5, MD5X2, MD52S, MySQL5.

 

Obsługiwane typy:

md4
sha1
md5
md5x2 md5(md5($hasło).ascii)
md5x2s md5(md5($hasło).$sól)
mysql5 sha1(sha1($hasło))
ipb md5(md5($salt).$md5($pass))
dcc md4(md4($hasło).lowercase($user))

Budowa charset:

c: sdepa caps, smalls (default), digits, special, space, all)
Pierwsze litery oznaczają znaki, z których będą budowane hasła, sądzę, że nie trzeba tłumaczyć.
u:<znaki> użytkownik sam definiuje zakres znaków
uf:<ścieżka_do_pliku> z zawartym charsetem.

3. Przykłady polceń:

Sam zapisuje je w pliku w formacjie bat, używam skryptu windowsowego by za każdym razem nie szukać programu przed cmd.

ighashgpu.exe -t:md5 -c:sd -min:9 -max:9 hash.txt
pause

Powyższe można wrzucić do pliku *.bat. Polecenie oznacza:

Znajdź hasło, zakodowane w MD5, od 9 do 9 znaków długie z pliku hash.txt.


6. JohnTheRipper

Program wieloplatformowy (Linux/OS X/ WIndows), konsolowy bardzo rozbudowany, od prostego łamania hashy, potrafi tworzyć słowniki zgodnie z opisanymi regułami. Rozróżnia wiele hashy(m in. MD5, DES, BSDI, AFS, LM), potrafi je rozpoznać i przejść do ataku. Zajmiemy się podstawowymi możliwościami programu. Zakładam, że każdy potrafi zainstalować ten super-skomplikowany program, oraz że looknął w man john chociaż na chwilę.

Uruchamiamy program z konsoli john test. Polecenie to przeprowadzi benchmark komputera:

1. Test

Wykonywany w celu sprawdzenia poprawności działania JTR.

$ john -test

 

Benchmarking: Traditional DES [64/64 BS]… DONE
Many salts: 989215 c/s real, 1015K c/s virtual
Only one salt: 904913 c/s real, 926910 c/s virtual
Benchmarking: BSDI DES (x725) [64/64 BS]… DONE
 
Many salts: 36148 c/s real, 36705 c/s virtual
Only one salt: 35901 c/s real, 36349 c/s virtual
Benchmarking: FreeBSD MD5 [32/64 X2]… DONE
 
Raw: 8737 c/s real, 8820 c/s virtual
Benchmarking: OpenBSD Blowfish (x32) [32/64 X2]… DONE
 
Raw: 571 c/s real, 579 c/s virtual
Benchmarking: Kerberos AFS DES [48/64 4K]… DONE
 
Short: 301278 c/s real, 303458 c/s virtual
Long: 849023 c/s real, 855954 c/s virtual
Benchmarking: LM DES [64/64 BS]… DONE
 
Raw: 6295K c/s real, 6354K c/s virtual
Benchmarking: NT MD4 [Generic 1x]… DONE
 
Raw: 8017K c/s real, 8104K c/s virtual
Benchmarking: Eggdrop [blowfish]… DONE
 
Raw: 18832 c/s real, 18968 c/s virtual
Benchmarking: M$ Cache Hash [Generic 1x]… DONE
 
Many salts: 12782K c/s real, 12905K c/s virtual
Only one salt: 4821K c/s real, 4848K c/s virtual
Benchmarking: LM C/R DES [netlm]… DONE
 
Many salts: 383391 c/s real, 386215 c/s virtual
Only one salt: 371177 c/s real, 373823 c/s virtual
Benchmarking: NTLMv1 C/R MD4 DES [netntlm]… DONE
 
Many salts: 548274 c/s real, 551156 c/s virtual
Only one salt: 517176 c/s real, 520384 c/s virtual

2. Pierwszy atak.

Żeby móc zapoczątkować atak na hash, musimy je wrzucić do pliku tekstowego, u mnie nazywa się on hash.txt

Zawartość mojego pliku jest taka:

User1:d6a946959f517e8adaa212fe207f5cc8
User2:507199392f0d0b2550ab260c053af68a

Przed przystąpieniem do działania, należy podać rodzaj hash’a inaczej JTR potraktuje User1:d6a946959f517e8adaa212fe207f5cc8 jako dwa kody, które ma złamać, co jest zbędne.

Do typu hasha dodajemy przedrostek raw (surowy), informuje to program, że plik jest tylko dumpem bazy danych w formacie:

User:hash

dlatego podajemy rodzaj hashy jako raw-MD5

całość wygląda tak:

$ john –format:raw-MD5 hash.txt

agilob@agilob:~$ john –format=raw-MD5 hash.txt

Loaded 2 password hashes with no different salts (Raw MD5 [raw-md5])

3. Charset

Z charsetem jest tak, że można go zbudować z podanych w pliku tekstowym znaków, albo używać metody brute-force.

Zajmiemy się tą drugą opcją, gdyż jest znacznie skuteczniejsza.

Mamy do dyspozycji możliwości:

alpha – alfabet
digits – cyfry
lanman – litery, cyfry i kilka najczęściej spotykanych znaków specjalnych,
all – wszystkie znaki z tablicy ASCII
ścieżka_do_pliku – w pliku zawarty jest charset
Wszystkie każdą z powyższych możliwości można użyć do budowania słownika, albo samego ataku.
do ataku z użyciem opcji wyboru charsetu używamy:
–incremental # albo samo -i jedak uważam, że –incremental jest jakby “czytelniejsze”
całość zawrzemy w jednym poleceniu:
$ john –format=raw-MD5 –incremental:alpha hash.txt

4. Przywracanie sesji.

Janek ma możliwość zapisania przerwanej sesji, bez konieczności powtarzania wcześniej wykonywanych prób (jak w BarsWF).

Jeśli czujemy, że atak potrwa długo dodajemy do polecenia:

–session:<nazwa_pliku_z_logiem_sesji>

po przerwaniu pracy decryptera, w katalogu, w którym jesteśmy pojawi się plik o nazwie określonej w poleceniu sesji.

Całość:

$ john –format=raw-MD5 –incremental:alpha –session:sejsa_janka hash.txt

Przywracanie sesji jest jeszcze łatwiejsze. Zamiast <nazwa_pliku_z_logiem_sesji> podajemy wyraz restore.

$ john –restore:sesja_janka

 

Powyższe polecenie otworzy plik z logami JTR i będzie kontynuował pracę.

[Total: 0    Average: 0/5]