Vyšla nová verze legdnárního programu John the Ripper k prolamování zahašovaných hesel. Dnes si ho představíme na několika příkladech.

Vyšla nová verze legdnárního programu John the Ripper k prolamování zahašovaných hesel. Dnes si ho představíme na několika příkladech.

Hašovací funkce se dnes používá k vypočítání otisku libovolných vstupních dat. Výsledkem je textový řetězec, který by měl odpovídat pouze těmto datům. Proto se hašovací funkce používá třeba ke kontrole stažených souborů. Pokud otisk odpovídá údaji od výrobce, stáhli jsme opravdu originál a nikoliv třeba podvržený malware. 

Hašovací funkce se dnes používá k vypočítání otisku libovolných vstupních dat. Výsledkem je textový řetězec, který by měl odpovídat pouze těmto datům. Proto se hašovací funkce používá třeba ke kontrole stažených souborů. Pokud otisk odpovídá údaji od výrobce, stáhli jsme opravdu originál a nikoliv třeba podvržený malware. 

Hašovací funkce se používají také ke skrytí uživatelských hesel ve webových databázích. Namísto slova „heslo“ tedy bude v databázi jeho otisk. Provozovatel služby naše heslo nezná a stejně tak útočník, který mu databázi ukradne, což se děje docela často.

Hašovací funkce se používají také ke skrytí uživatelských hesel ve webových databázích. Namísto slova „heslo“ tedy bude v databázi jeho otisk. Provozovatel služby naše heslo nezná a stejně tak útočník, který mu databázi ukradne, což se děje docela často.

Vžijme se do role útočníka, který právě získal databázi s haši hesel. Z délky haše a dalších parametrů lze odhadnout, jaký algoritmus jej vytvořil. V tomto případě se jedná o dnes už bezpečnostně zastaralý mechanizmus MD5.

Vžijme se do role útočníka, který právě získal databázi s haši hesel. Z délky haše a dalších parametrů lze odhadnout, jaký algoritmus jej vytvořil. V tomto případě se jedná o dnes už bezpečnostně zastaralý mechanizmus MD5.

Hesla se z hašů získávají reverzním způsobem – doslova otrockou prací třeba pomocí slovníku. Program tedy počítá haš pro slovo za slovem a porovnává jej s hašem, který chceme rozlousknout. Jelikož jsou lidé nepoužčitelní a často volí stále ta samá hesla, existují rozsáhle slovníky uniklých hesel, které mohou celý proces výrazně zrychlit.

Hesla se z hašů získávají reverzním způsobem – doslova otrockou prací třeba pomocí slovníku. Program tedy počítá haš pro slovo za slovem a porovnává jej s hašem, který chceme rozlousknout. Jelikož jsou lidé nepoužčitelní a často volí stále ta samá hesla, existují rozsáhle slovníky uniklých hesel, které mohou celý proces výrazně zrychlit.

Pojďme si to vyzkoušet v John the Ripper. Předložil jsem mu MD5 haš slova „rohlik“ a použil jeden z českých slovníků. Jelikož je v něm i slovo rohlik, program pro něj spočítal haš velmi brzy – prakticky okamžitě. 

Pojďme si to vyzkoušet v John the Ripper. Předložil jsem mu MD5 haš slova „rohlik“ a použil jeden z českých slovníků. Jelikož je v něm i slovo rohlik, program pro něj spočítal haš velmi brzy – prakticky okamžitě. 

Další možností je hrubá síla, kdy John the Ripper vyzkouší všechny možné kombinace znaků. U pětiznakového slova „pecka“ mu to trvalo 7 sekund.

Další možností je hrubá síla, kdy John the Ripper vyzkouší všechny možné kombinace znaků. U pětiznakového slova „pecka“ mu to trvalo 7 sekund.

Lidé při tvorbě hesel často zaměňují znaky u běžných slovníkových slov za číslice nebo třeba zavináče. Programy typu John the Ripper na to myslí a pracují s nastavitelnými pravidly zástupných znaků. Když tedy začne analyzovat slovníkové slovo zuzanka, zároveň vyzkouší zuz@nk@, protože znak „a“ při tvorbě hesla často zaměňujeme právě za znak zavináče.

Lidé při tvorbě hesel často zaměňují znaky u běžných slovníkových slov za číslice nebo třeba zavináče. Programy typu John the Ripper na to myslí a pracují s nastavitelnými pravidly zástupných znaků. Když tedy začne analyzovat slovníkové slovo zuzanka, zároveň vyzkouší zuz@nk@, protože znak „a“ při tvorbě hesla často zaměňujeme právě za znak zavináče.

Tentokrát John the Ripper rozlousknul otisk slova zvonek. S použitím slovníku jej zjistil prakticky okamžitě.

Tentokrát John the Ripper rozlousknul otisk slova zvonek. S použitím slovníku jej zjistil prakticky okamžitě.

Pokud namísto slovníku použijeme hrubou sílu John the Ripper na běžném kancelářském notebooku (starší ULV Core i5) odhalí šestimsítné heslo zvonek za dvě a půl minuty.

Pokud namísto slovníku použijeme hrubou sílu John the Ripper na běžném kancelářském notebooku (starší ULV Core i5) odhalí šestimsítné heslo zvonek za dvě a půl minuty.

Hašovací funkce se dnes používá k vypočítání otisku libovolných vstupních dat. Výsledkem je textový řetězec, který by měl odpovídat pouze těmto datům. Proto se hašovací funkce používá třeba ke kontrole stažených souborů. Pokud otisk odpovídá údaji od výrobce, stáhli jsme opravdu originál a nikoliv třeba podvržený malware. 
Hašovací funkce se používají také ke skrytí uživatelských hesel ve webových databázích. Namísto slova „heslo“ tedy bude v databázi jeho otisk. Provozovatel služby naše heslo nezná a stejně tak útočník, který mu databázi ukradne, což se děje docela často.
Vžijme se do role útočníka, který právě získal databázi s haši hesel. Z délky haše a dalších parametrů lze odhadnout, jaký algoritmus jej vytvořil. V tomto případě se jedná o dnes už bezpečnostně zastaralý mechanizmus MD5.
Hesla se z hašů získávají reverzním způsobem – doslova otrockou prací třeba pomocí slovníku. Program tedy počítá haš pro slovo za slovem a porovnává jej s hašem, který chceme rozlousknout. Jelikož jsou lidé nepoužčitelní a často volí stále ta samá hesla, existují rozsáhle slovníky uniklých hesel, které mohou celý proces výrazně zrychlit.
10
Fotogalerie

John Rozparovač: Rozlouskneme heslo fiktivního ministerského náměstka

  • Vyšla nová verze legendárního programu k prolamování hesel
  • Vyzkoušíme si, jak funguje
  • Zjistíme heslo fiktivního úředníka z uniklé databáze

Vyšel nový John Rozparovač 1.9.0! Cože? No přece John the Ripper – dnes už ikonický textový program, ve kterém můžete po večerech zkoušet prolomit třeba heslo do Windows vaší babičky. A jelikož jsme už na Živě.cz sami dlouho nic neprolamovali, tak si to dnes vyzkoušíme.

Hašovací funkce

John patří do kategorie nástrojů, které se specializují na dekódování hesel, které před námi někdo (OS, webová služba aj.) skryl pomocí některé z hašovacích funkcí. Tedy pomocí algoritmu, který převede libovolná data na jejich matematický otisk – textový řetězec o pevné délce, který v ideálním případě odpovídá pouze těmto datům.

ee447e32-7b22-4b86-9e44-c62cb3814128
Výpočet MD5 otisku pro stažený EXE program z internetu a porovnání, zda-li odpovídá otisku, který autor programu vystavil na svém webu

Hašovací funkce se proto používají třeba pro kontrolu integrity dat. Představte si například, že tímto způsobem vypočítáte otisk nějakého velkého 1GB souboru. Každý, kdo si jej stáhne, pak může na počítači znovu spočítat otisk, a pokud bude odpovídat původní hodnotě, měli byste mít jistotu, že s daty po cestě nikdo nemanipuloval – třeba hacker, který vám odeslal podvržený soubor s virem.

V praxi to tak jednoduché být nemusí, neboť hromada hašovacích algoritmů selhala právě proto, že útočník mohl vypočítat stejný otisk i pro svoje data a kompromitovat tak originál, ale to je zase jiný příběh.

Jak se dnes ukládají hesla na webu

S rozmachem internetu se hašovací funkce brzy uplatnila i na každém webu, který spravoval uživatelské účty. Představme si třeba hypotetické stránky Klubu přátel mopsů. Když si každý z nich zřizoval účet a vybíral přihlašovací jméno a heslo, do databáze na serveru se neuložilo heslo v původním znění, ale namísto toho se pro něj spočítal otisk právě pomocí některé z hašovacích funkcí.

Namísto záznamu:

  • Uživatelské jméno: kedlubna
  • Heslo: heslo

se do databáze zaznamenalo třeba:

  • Uživatelské jméno: kedlubna
  • Heslo: 955db0b81ef1989b4a4dfeae8061a9a6

Smršť znaků výše odpovídá populárnímu hašovacímu algoritmu MD5, který je sice z bezpečnostního hlediska už roky překonaný, ale díky jeho podpoře napříč platformami se pro různé účely používá dodnes.

768e03b3-86ab-4d2b-ab92-8c52db54f341
Vygenerování MD5 otisku slova „heslo“ na jednom z mnoha webových generátorů

Díky tomu, že je v databázi uložený pouze otisk hesla, to skutečné nezná ani provozovatel webové služby. Když by mu tedy nějaký uličník vykradl celý server (a že se to stává docela často), namísto skutečných hesel uvidí jen smršť znaků.

Útok na hypotetického náměstka

Dobrá, vžijme se nyní do role zkušeného čínského hackera 张伟, který se rozhodl, že zaútočí na kritickou infrastrukturu českého státu. Analýzou na sociálních sítí brzy zjistil, že je nejmenovaný ministerský náměstek členem i našeho psího klubu a že jeho kybernetická gramotnost silně pokulhává, takže dost možná používá stejné heslo napříč internetem.

张伟 nejprve zaútočí na náš webový server, získá přístup do databáze a stáhne tabulku s přihlašovacími údaji, ve které brzy najde záznam se jménem vysokého úředníka a otisk jeho hesla ve znění: 4aa5a6d2faaa3781c69d0f0fc001f249.

Jelikož má každý hašovací algoritmus svá pravidla, lze z jeho podoby zjistit, o jakou techniku se jedná. Ostatně, na internetu najdete hromadu webových detektorů – třeba Hash Analyzer, podle kterého se jedná o otisk ve formátu MD4 nebo MD5.

837d46af-e92e-4281-a8ca-bb1561ab43b1
Z podoby haše lze zjistit, o jaký algoritmus se asi jedná

MD5? Proboha, to v roce 2019 opravdu není dobrá vizitka našeho Klubu přátel mopsů! Jako kdejaký malý web ale vznikl kdysi na počátku století, kdy byly současné standardy bezpečnosti WWW ještě v plenkách.

Ze stejného důvodu zároveň často trpí nedostatkem vědomostního/časového kapitálu k modernizaci – u podobné kategorie stránek by to mohlo být třeba přihlašování skrze některou z věrohodných autorit (Google Sign-In for Websites, Facebook Login, Log in with Twitter, české MojeID atp.).

Veškerý management pak za nás řeší některý ze zmíněných ekosystémů a v našich databázích jsou leda identifikátory uživatelů a nikoliv jejich hesla (respektive otisky těchto hesel).

Slovníkový útok na „rohlik“

Fajn, takže už víme, že se nejspíše jedná o široce rozšířený otisk ve formátu MD5, jak jej ale proměnit zpět v původní heslo? Tady už na řadu konečně nastupuje celý zástup aplikací, které používají nejrůznější reverzní techniky počínaje slovníky a konče hrubou silou (brute-force).

Základní princip slovníků je vlastně zcela prostý. Dejme tomu, že bychom měli po ruce obrovský soubor se všemi českými slovy. Program by pak mohl postupně pro každé z nich vypočítat MD5 otisk a porovnat jej s otiskem pana náměstka.

713f4783-1fec-4a8e-8ce3-efe117d16726
Příklad českého slovníku bez diakritiky se 162 tisíci slov

Při předpokladu, že jsou lidé nepoučitelní, pak může být pravděpodobnost, že náměstek použil nějaké primitivní heslo, poměrně vysoká. Při rychlosti dnešních počítačů, grafických karet, specializovaných FPGA/ASIC čipů a při možnosti krátkodobého pronájmu superpočítačového výkonu v cloudu (Google Cloud, Microsoft Azure, Amazon Web Services) to pak může být otázka okamžiku.

Pojďme si to rychle vyzkoušet. Mějme MD5 otisk slova rohlik ve znění ff2078912318c97fcabde0b0cdcf141a a slovník českých slov bez diakritiky se 162 tisíci slov. Internet je jich plný – stačí použít Google.

Otisk (nebo více otisků po řádcích) uložíme třeba do souboru hashe.txt a pomocí příkazu níže řekneme Johnovi Rozparovači, že se jedná o otisky ve formátu MD5 a má použít náš český slovník k jejich rozlousknutí:

john.exe --format=raw-md5 --wordlist=../cesky.txt hashe.txt

John bude... Rychlý. Velmi rychlý, slovo rohlik totiž v našem slovníku figuruje a John jej najde prakticky okamžitě:

f77de179-e483-4f86-9eb2-88b9147d6e42
Textový John the Ripper použil slovník a z haše získal slovo rohlik

Dnešní slovníky jsou přitom mnohem sofistikovanější. Už jej neplní pouze obecná slova, ale i nejčastější podoby skutečných hesel právě ze zmíněných úniků. Pokud tedy někdo použije třeba tradiční hesla 1111111, password aj., ve svém katalogu je bude mít každý pořádný slovník.

Matematika ze základní školy

Dejme ale tomu, že náš 张伟, toho času důstojník kybernetického oddělení Čínské lidové armády, takový slovník nemá. Na řadu proto nastupuje hrubá síla, kdy program zkouší jednu kombinaci všech možných znaků za druhou.

Pokud jste na základní škole nepropadali z matematiky, dobře víte, že jich může být opravdu mnoho. Kdybychom hádali heslo, které může mít pět malých znaků anglické abecedy a číslic (bez diakritiky a dalších speciálních znaků), bude počet variant odpovídat číslu 36560 466 176, protože každý z pěti znaků může nabývat některé z těchto 36 možností: 0123456789abcdefghijklmnopqrstuvwxyz.

60,5 milionů kombinací je opravdu málo. To by stačilo snad jen před pár desítkami let. Takové heslo odhalíme na běžném kancelářském laptopu (Core i5) hrubou sílou nejvýše za pár sekund.

Pojďme si to opět vyzkoušet. Tentokrát tedy hrubou sílou bez slovníku na otisku 2064b9bd336c166e135ef891ee7432bf, který patří slovu pecka (5 znaků):

f665109a-7c4e-4e3c-a30f-7156a3419ffb
Textový John the Ripper tentokrát bez slovníku jen s hrubou sílou

Jak vidno ze snímku výše, na mém pracovním kancelářském laptopu John the Ripper rozlouskl původní slovo za 7 sekund. 

10 000 000 000 000 000 000 000 000

Složitost hesla zvýšíme o celý řád, pokud vezmeme v potaz i velká písmena. Počet kombinací nám rázem poskočí na 625, což dělá nějakých 916 milionů. Vzhledem k výpočetní rychlosti současných počítačů však ani to nestačí. Pokud bychom ale namísto základních znaků ASCII zapojili do hry kompletní Unicode, posouváme se o několik vesmírů dál, protože Unicode momentálně eviduje už více než 100 000 možných znaků počínaje západní latinkou a konče emoji.

I kdybychom nebrali v úvahu všechny kombinace, 100 0005 (10 000 000 000 000 000 000 000 000) je i tak astronomické číslo. A přitom se stále jedná o pětiznakové heslo. Třeba takové: Hesl😍.

Zuzanka není bezpečná. Ale ani Zuz@nk@!

Jedna věc je ovšem teorie a druhá lidský mozek, se kterým počítají i vývojáři podobných prolamovačů hesel. Hesla se snažíme různě zjednodušovat při zachování jejich zdánlivé složitosti, mnohdy to ale nepomůže.

Představte si například heslo zuz@nk@. Má pět písmen abecedy a také dva znaky zavináče, které by mohly počet kombinací navýšit o mnoho řádů. Zkušený prolamovač hesel ale dobře ví, že podle takového vzorů vytváří heslo kdekdo, a tak stanoví jednoduché pravidlo, že u znaku „a“ se má otestovat i varianta s „@.“

eca3304d-e6cd-43e4-ba24-be09c6d67ae5
John the Ripper není hloupý. Používá sadu pravidel pro zástupné znaky.

Pravidla pro zástupné znaky dnes podporuje každý slušný prolamovač hesel včetně našeho Johna Rozparovače, a tak heslo zuz@nk@ odhalí prakticky okamžitě, protože základní slovo zuzanka najde ve slovníku a použije u něj i naše pravidlo s nahrazením znaků.

Heslo našeho hypotetického náměstka

Díky těmto a dalším optimalizačním technikám, které mohou zneužívat třeba i některých dokumentovaných zranitelností v hašovacích algoritmech, se pak čas potřebný k prolomení hesla zkrátí v ideálním případě i o několik řádů.

e43f23e8-374b-4d8b-a81d-647205b8ff68
Okamžité rozpoznání hesla díky slovníku

Náš hypotetický čínský hacker to měl ale tentokrát poměrně snadné. Jak jsme si totiž stanovili už v úvodu, kybernetická gramotnost našeho ministerského náměstka je relativně malá. John the Ripper za pár okamžiků zobrazil kýžené šestimístné heslo zvonek.

da3ddd5c-732a-4455-b80e-54f4d7ecf523
Hrubá síla naopak rozluštila šestimístné heslo za 2,5 minuty

Můžete si jej ostatně sami otestovat třeba v tomto generátoru MD5 na webu. Řetězci zvonek skutečně odpovídá otisk 4aa5a6d2faaa3781c69d0f0fc001f249.

Naštěstí to bývá složitější

Prolamování hesel na skutečném internetu je naštěstí o něco složitější. Weby už dnes povětšinou používají pokročilejší hašovací algoritmy a také takzvanou sůl – třeba několik pseudonáhodných znaků, které se k původnímu heslu přidají před samotným hašováním, a tak bychom bez znalosti mechanizmu generování této soli získali poškozené (osolené) heslo.

Zlepšuje se ale i software. Jednou z novinek poslední verze Johna Rozparovače tak je například podpora FPGA akcelerátorů, které překonají i GPU čipy. Jedinou obranou je proto dlouhé heslo, které je zároveň snadno zapamatovatelné, a tak nehrozí, že si jej napíšete na nástěnku.

Třeba MameRadiClankyKubyCizka😛.

Určitě si přečtěte

Články odjinud