MD5 Cracking

Kategorie: IT/Security | Zobrazen: 13540x Datum: 13.3.2007

Máte MD5 hash a nevíte, jak z něj dostat heslo? Tento článek vám poví, jak na to.

V případě úspěšného proniknutí do webové aplikace / databáze, se můžeme často setkat s hesly v tomto tvaru: 02fec283a4a59afa3678c49d09cc7805. Nejedná se o vlastní heslo, ale o tzv. otisk hesla vytvořený pomocí hashovací funkce MD5. Hashovací funkce jsou jednosměrné. To znamená, že z řetězce vytvoříme hash jednoduše, ale pokud známe pouze hash, mělo by být odhalení původního řetezce (hesla) nemožné. U MD5 je to pravda pouze z části.

Od srpna roku 2004 je znám postup k nalezení kolize dvou řetězců. V praxi to vypadá tak, že vám program vyplivne dva řetězce, které mají stejný hash (to by se hashovacím funkcím stávat nemělo). To je ale nám, kteří chceme z hashe dostat původní řetězec, na nic. Tyto vygenerované řetězce jsou velice dlouhé a často obsahují i netisknutelné znaky. Tato metoda trvala dříve asi 8 hodin, ale díky objevu předního českého kryptoanalytika Vlastimila Klímy se tato doba snížila na cca jednu minutu. Zde je homepage jeho projektu. V případě, že tedy někde uslyšíte, že "MD5 byla prolomena" nemluví se o ničem jiném, než o kolizi dvou řetězců. Zjistit ale z hashe původní řetězec pomocí určitého algoritmu, je však nadále nemožné.

My ale máme hash a potřebujeme zjistit původní řetězec. Jaké tedy máme možnosti? V podstatě jsou asi čtyři. A pokud tyto selžou, není prakticky šance, že původní řetězec naleznete. Podívejme se tedy podrobněji na jednotlivé metody.

Brute-force attack

Tento způsob luštění je založen na testování všech možných řetězců o zvolené délce nad zvolenou znakovou sadou. Tou může být velká a malá abeceda, číslice a speciální znaky. Dejme tomu, že si zvolíme, že chceme generovat řetězce o délce 1 - 5 a v nich používat pouze malá písmena anglické abecedy. Těch je 26. Celkový počet vygenerovaných řetězců tedy bude 26ˆ1 + 26ˆ2 + 26ˆ3 + 26^4 + 26ˆ5 + 26ˆ6. Vyjde nám obrovské číslo. Z každého vygenerovaného řetězce je vytvořen hash a ten je porovnán s naším hashem. Pokud původní řetězec (heslo), který hledáme, byl dlouhý 1 až 5 znaků a obsahoval pouze malá písmena anglické abecedy, program ho během několika sekund odhalí. Tímto způsobem pracuje brute-force attack. Vypadá to ideálně, ale praxe není tak růžová. Hesla jsou většinou delší než pouhých pět znaků a obsahují i velká písmena, číslice a znaky. Vygenerování a porovnání tak obrovského množství řetězců trvá celkem dlouhou dobu. Zkuste si vypočítat počet kombinací, který je potřeba na prolomení devítimístného hesla, složeného z čísel a velkých a malých písmen. Dostanete tak obrovské číslo, že by vygenerování takového počet kombinací řetězců zabralo klidně i několik desítek let. Tato metoda je v praxi tedy využitelná na hesla tak do 6 až 7 znaků - záleží na tom, jak dlouho jste ochotni čekat. Programem, který zvládne louskat MD5 (brute-force i dictionary(viz dále)) je například Cain & Abel.
Pro představu jsem sestavil tabulku, ze které je zřejmá časová náročnost louskání MD5 hashů různě dlouhých hesel programem Cain & Abel (předpokládal jsem, že hesla obsahují pouze malá písmena anglické abecedy a číslice):

Heslo Znaků Hash Čas
a2b 3 47cf26c17f2ef17fb3d3a5967b83dbbd zlomek vteřiny
xs3o 4 689101f13c29393b4cfa696662433e3f zlomek vteřiny
d9u2k 5 beb6bb3b5cf6abdc9c915c71fc3d5290 6 s
ak74ka 6 9b9b12c2fe191e341d8a88159c6f8d33 26 s
heslo12 7 1d7efc5be9a522837bd7880072dd0042 3 h
heslo123 8 6a284155906c26cbca20c53376bc63ac > 10 h

Dictionary attack

Neboli také slovníkový útok je metoda podobná té předchozí až na to, že řetězce nejsou generovány, ale jsou brány z externího souboru. Ten se nazývá slovník a většinou to je obyčejný textový soubor, který na každém řádku obsahuje jedno slovo. Při tomto typu louskání záleží hlavně na slovníku jaký použijete a také hodně na štěstí.

Rainbow tables

Rainbow tables jsou tabulky s předgenerovanými hashi. To znamená, že hashe se nemusí generovat z náhodně zkoušených řetězců, ale rovnou se vyhledávají v tabulce. Velikost tabulek se pohybuje od 700MB (3-14 znaků: malá písmena) až třeba po 40GB (1-14 znaků latin1) a každý si může předgerovat svoji tabulku přesně na míru. Může si vybrat rozsah, typ hashe (md5) a znakovou sadu. Prolomení hashe se pak pohybuje kolem 10 minut. Tak to byla teorie. Já Rainbow tables v praxi nezkoušel, hlavně kvůli nedostaku místa na disku. Tabulka, která by za něco stála by totiž měla asi 64 GB, což by bylo ještě snesitelné, jenže na Pentiu 3 GHz by se generovala asi tři týdny, což si v reálu nedovedu představit. Pokud někdo s Rainbow tables máte zkušenosti, uvítám je v Názorech. Ještě přidám odkaz na Project RainbowCrack, kde se dozvíte více.

MD5 Online cracking

Toto je vlastně spojení rainbow tables a databáze hashů, ke kterým ze známý původní řetězec. Vše navíc funguje přes webový prohlížeč jako webová aplikace, do které pouze vložíte hash a aplikace vám vyplivne původní řetězec. No nezní to krásně? Samozřejmě, že to nefunguje vždy. Tipuji, že například takový hash pro řetězec A.x4a&/s4-s5 v online databázi nenajdete, ale zase na druhou strany si přiznejme, jak dlouho by trvalo jeho odhalení pomocí brute-force. Webů, zaměřujících se na tuto "službu" je více. Zde je několik příkladů:

http://passcracking.ru
http://www.milw0rm.com/cracker/insert.php
http://www.gdataonline.com/seekhash.php
http://md5.rednoize.com/

Nyní si pojďme shrnout, jaké máme tedy možnosti v případě, že získáme hash a potřebujeme z něj zjistit původní řetězec. Nejprve se určitě vyplatí navštívit několik webů s online MD5 crackery (viz linky nahoře). Nestojí to téměř žádný čas a v případě, že se daný hash už nachází v databázi, dostanete okamžitě původní řetězec. V případě, že zde s hashem neuspějete, nezbývá vám nic jiného než brute-force / dictionary attack.

Z tohoto článku vyplývá také jisté ponaučení. Že nevíte jaké? Z tabulky nahoře jasně vyplývá závislost délky hesla a použitých znaků na době louskání. Jako minimální délku hesla bych zvolil 8 znaků. Pokud tedy použijete heslo například 'heslo1' a útočník se dostane k jeho MD5 hashi, nebude pro něj velký problém heslo zjistit. Naproti tomu hash takovéhoto hesla 'h0Es0_k_M4ilU' bude pro útočníka neprolomitelný.

Stoyan's signature

Předcházející článek: Netradiční metoda násobení

Následující článek: Kubuntu - Instalace a konfigurace

Libí se vám tento článek? Zalinkujte ho: Linkuj tento článek

Přidej svůj komentář

sedaha
sedaha(zavinac)seznam.cz
kde bereš tu jistotu že hash je vždy MD5 a ne např. SHA ???
25.10.2007 8:06:28
 
158.196.64.*
sedaha
sedaha(zavinac)seznam.cz
není trochu blbost předpokládat, že moje netmaska je typu C ? vlastně ve skutečnosti tomu tak není...
25.10.2007 8:08:50
 
158.196.64.*
skic
a co kdyz se hesla ukladaji jako: md5(password."neco neco neco") ?
7.12.2007 23:36:08
 
62.204.226.*
killeer
michal.tolar(zavinac)centrum.cz
pro zjištění uživaelů v pc pro program ophcrack potřebuju zjidtit hash, kde ho najdu? prosím napište mi sem michal.tolar@centrum.cz
7.3.2008 7:37:32
 
194.228.61.*
Husny
milanhusner(zavinac)seznam.cz
dotaz, odchytil sem si hash hesla z qipu, je v kodovani MD5 schavlne sem ho nastavil na aaaa pak jsem heslo zmenil 2x az zpatky na aaaa a dostal sem jinou hash nez pri puvodnim aaaa , takze to muzu pro jedno heslo mit milion hashu jo ? to pak nam sou databaze hashu podle kteryho se to kontroluje k nicemu, nebo se platu ?? poradte kde dik
30.4.2008 14:19:33
 
90.176.66.*
Tomasko
Tominko20123(zavinac)azet.sk
ahoj,prosuim vas,kde najdem navod,na pouzivanie programu Cain & Abel,bo na tejto stranke som to nenasiel,prosim vas,napiste,a kto by mal cas,a vie s tym narab mohol by napisat ;)
18.6.2008 18:55:39
 
78.41.175.*
sg11.tk
sedaha: zkus si porovnat MD5 hash a SHA1 hash.
2D47AE7E4D6786BFDBCD541E3236DBB0
2D7844A8FE1BFA496F33B503463FFD6767A8951F
a hadej ktery je ktery

skic: tomu "neco neco neco" se rika sul. Pak si musis upravit cracker pro BF, nebo vytvorit upraveny wordlist.

killeer: myslis SYSKEY? video

Husny: co sem tak cetl, tak pry na prihlaseni staci 16 bajtu z hashe hesla. Proto se mozna ten zbyten nejak doplnuje... Pak je moznost ze se pouziva challenge-response. btw cim si to odchytil?

Tomasko: staci cist a premyslet, ten program je jednoduchy. Popřípadě manuál
7.2.2009 22:31:38
 
83.208.167.*
josm
josm(zavinac)azet.sk
a nevis jak pomocu teho programu zistim heslo na PC? anglicky neumim
22.3.2009 21:13:21
 
91.127.63.*
kenty
kentx(zavinac)seznam.cz
ahoj lidi ci se naucit hekovat a stahl sem si program cain a abel pls napiste mi na mail a pomozte mi s tim diky
19.5.2009 17:07:47
 
212.158.129.*
nwm
d4ag(zavinac)seznam.cz
ahoj potřebuju zjistit heslo icq 445292571 ..strašně ho potřebují...jinak kdby něco tak se mi ozvete ..
19.9.2009 14:15:11
 
94.112.109.*
hellou
16prco16(zavinac)azet.sk
ja by som potreboval zistit heslo na par uctov na kec pretoze nejaky ludaa zalozili niky a dali do nich fotku mojej zenulky. no ide o to ze ich chcem zmazat
29.3.2010 18:36:49
 
81.0.116.*
Nový komentář
Nick: 784" />

Smajlíci:

:-D :-) :-/ :-( ;-) :-P 8-) [b][/b] [i][/i] [url][/url]
Web:
Email:
Komentář:
Opište prosím číslo 784 (ochrana proti SPAMu)
 
       * Pole Komentář podporuje BBCode tagy
© Stoyan, 2006 - 2012