background image

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.

background image

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 

background image

oferuje.

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!

background image

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 

background image

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

background image

:

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. 

Szukajki

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.

background image

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 

background image

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 

background image

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źć

background image

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 

background image

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

background image

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:

background image

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 wyrazrestore.

john –restore:sesja_janka

 

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


Document Outline