Software | Bezpečnost | Hacking

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.

Klepněte pro větší obrázek
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.

Klepněte pro větší obrázek
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.

Klepněte pro větší obrázek
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.

Klepněte pro větší obrázek
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ě:

Klepněte pro větší obrázek
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ů):

Klepněte pro větší obrázek
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 „@.“

Klepněte pro větší obrázek
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ů.

Klepněte pro větší obrázek
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.

Klepněte pro větší obrázek
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😛.

Diskuze (21) Další článek: Jablíčkáři už mohou vyzkoušet Edge na macOS. Microsoft vydal první betaverzi

Témata článku: Software, Google, Internet, Bezpečnost, Hacking, Malware, Heslo, Únik dat, Šifrování, Unicode, Slovník, Facebook Login, Algoritmus, Microsoft Azur, AWS, WWW, John, Ripper, Čínská lidová armáda, Znak, GPU, Hrubá síla, Otisk, Google Cloud


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

10 nejtragičtějších leteckých nehod od roku 2000. Jedna je stále záhadou

10 nejtragičtějších leteckých nehod od roku 2000. Jedna je stále záhadou

** Letecká doprava patří k nejbezpečnějším způsobům cestování ** Čerstvá aféra s Boeingy Max důvěru v bezpečnost létání narušila ** Připomeňme si největší nedávné letecké nehody. Každá ale přispěje k bezpečnosti dalších letů

Karel Kilián | 33

Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky

Aprílové vtípky: Výběr toho nejlepšího kolem počítačů, internetu a techniky

** Výběr nejlepších aprílových vtípků 2019 ** Článek postupně aktualizujeme

redakce | 29

7 nejvýkonnějších jaderných elektráren světa: Temelín ani Dukovany si neškrtnou

7 nejvýkonnějších jaderných elektráren světa: Temelín ani Dukovany si neškrtnou

** Představíme vám sedm nejvýkonnějších jaderných elektráren ** Srovnáme je s Temelínem, Dukovany a největší solární farmou ** Naznačíme, kde tkví hlavní výhody tohoto zdroje elektřiny

Karel Kilián | 115

SpaceX má problém: kosmická loď Crew Dragon explodovala během testu motorů záchranného systému

SpaceX má problém: kosmická loď Crew Dragon explodovala během testu motorů záchranného systému

** SpaceX provedla na Mysu Canaveral testy motorů SuperDraco. ** Ke konci testů došlo k mohutné explozi. ** Nehoda zpozdí první pilotovaný let lodě Crew Dragon.

Petr Kubala | 55



Aktuální číslo časopisu Computer

Velký test fotolabů

Oklamali jsme rozpoznání obličeje

13 tipů pro rychlejší Wi-Fi

Test NVMe SSD 500 GB