Hesla se dnes již necrackují pomocí „rainbow tables“ ani hrubou silou. Takže tohle nejspíš nebyl únik hesel v čitelné podobě, ale někdo těch 750 tisíc hesel vylámal a nahrál na web. Taky jsem je zkusil cracknout.
České internetové nákupní galerii Mall.cz unikla jakási data. Rozebírá to Lupa, která se dostala k souboru s čitelnými hesly uloženému na Ulož.to. Data tam byla dostupná zhruba měsíc, přičemž se soubor na Ulož.to objevil koncem července 2017. Přečetl jsem snad všechny články (a komentáře pod nimi!), které se tématu týkají a kromě jiného jsem se dozvěděl, že se muselo jednat o únik dat v čitelné podobě a že hesla se lámou pomocí předpočítaných tabulek a hrubou silou, tedy zkoušením všech možných kombinací. Nemuselo a takhle se hesla dnes fakt spíš nelámou.
Malá rekapitulace faktů: již smazaný soubor na Ulož.to obsahoval 735 956 unikátních e-mailových adres (Troy Hunt jich do služby na prohledávání úniků Have I Been Pwned? importoval jen 735 405, vynechal adresy s diakritikou a s dalšími nevalidními znaky) a celkem 766 421 hesel v čitelné podobě, z nichž zhruba 216 tisíc vypadá jako náhodně generovaný řetězec šesti alfanumerických znaků (malá a velká písmena a číslice). Později se ukázalo, že to byla hesla generovaná a posílaná Mallem při prvním nákupu.
Dále také víme, že ten soubor na Ulož.to neobsahoval všechny účty, např. moje heslo vygenerované password managerem a používané od roku 2009 pouze na Mallu (97DS9WK14qMrAbzftnwd
) v něm není, což může být proto, že ho do doby zveřejnění toho souboru nikdo necracknul. Ostatně domnívám se, že někdo si z Mallu odnesl více (hashů) hesel než bylo v souboru na Ulož.to. Jednak Mall zresetoval i hesla, která v něm nebyla, viz třeba já, a jednak mi pár dní po zveřejnění incidentu jeden člověk, říkejme mu třeba Honza, napsal, že se mu někdo úspěšně přihlásil do jeho účtu na Steamu, což prý byla jediná služba, na které měl stejné heslo jako na Mallu. Jenže Honzův účet a (prý v hlavě vymyšlené) heslo ve zveřejněných datech Mallu nejsou. Všechno naštěstí dobře dopadlo, Honzu i jeho účet na Steamu zachránila dvou-faktorová autentizace.
Unikla data v čitelné podobě? Mohla, ale taky nemusela.
Výkonné stroje na crackování hesel staví Sagitta HPC, nyní Terahash, foto Jeremi Gosney
Na lámání hesel z uniklých databází (tzv. offline útoky) se dnes nepoužívají tzv. předpočítané tabulky, známé také jako rainbow tables. Jejich vytváření je časově náročné, navíc zbytečně obsahují spoustu záznamů, které neodpovídají tomu, jak uživatelé hesla vytváří. S možností obecných výpočtů na grafických kartách (GPU) se na crackování hesel používají spíš ty. Programy jako např. hashcat nebo John the Ripper na GPU vytváří tzv. kandidáty, které porovnávají s dostupnými hashi. Když najdou shodu, tak kandidáta označí jako heslo, které danému hashi odpovídá. U hesel, tedy u krátkých řetězců s omezenou znakovou sadou se nemůže stát, že by došlo ke kolizi a dvě různá hesla měla stejný hash. Jedna grafická karta dokáže vygenerovat třeba miliardy MD5 hashů za vteřinu, navíc lidé vytváří hesla předvídatelně, takže je možné efektivně vytvářet jen takové kandidáty, které odpovídají heslům vytvářeným v hlavách uživatelů.
V současnosti nejvýkonnější grafická karta na crackování hesel NVIDIA GeForce GTX 1080 Ti umí spočítat 31 miliard MD5 hashů za vteřinu (GTX 1080 je o pětinu pomalejší). Když chcete crackovat hesla, tak chcete tzv. Founders Edition, tedy referenční kartu navrženou přímo výrobcem grafického čipu, která zvládne pod plnou zátěží běžet 24 hodin denně, 7 dní v týdnu. „Herní“ (nebo OEM) edice to nezvládnou, hry se hrají spíš nárazově, pár hodin denně, takže „herní“ karty mohou používat levnější a méně kvalitní komponenty (netýká se vlastního čipu, ten je stejný), což se tedy bohužel na výsledné ceně moc neprojevuje.
GTX 1080 Ti Founders Edition se u nás už nedá sehnat, co takhle zkusit cloud? Amazon AWS nabízí Elastic GPUs (které na crackování hesel nejspíš použít nejdou) a servery řady p2, p3 a g3 s následujícími grafickými kartami (uvádím vždy maximální konfigurace, ceny jsou orientační, pro aktuální se podívejte do ceníku):
Pro porovnání, Microsoft Azure nabízí následující servery s kartami NVIDIA Tesla:
OVH má v nabídce pouze následující dedikovaný server:
Karty Tesla obecně nejsou na crackování hesel moc výkonné (neplatí pro novou V100), jak ukazují počty spočítaných MD5 hashů (kde MH = milion hashů) v porovnání s kartami GTX:
V tom souboru na Ulož.to bylo 381 908 unikátních hesel, všechna jsem je zahashoval pomocí algoritmu MD5 a zkusil zase cracknout. Chtěl jsem ověřit, jestli by to šlo a jak daleko se dostanu. Pokud by to šlo cracknout relativně rychle, tak to opravdu mohlo uniknout jako hashe a někdo to prostě cracknul. Tak jsem si od Amazonu pronajal p2.16xlarge s kartami Tesla K80 (P3 s Tesla V100 jsou dostupné až od října 2017, tento „příběh“ je ze začátku září), stáhl dva asi nejznámější seznamy uniklých hesel rockyou.txt
a phpbb.txt
a v podstatě bez přípravy jsem se do toho pustil. Profík by přípravu zcela jistě nepodcenil, hesla by nelámal na Amazonu, ale já to schválně ani jako profík dělat nechtěl. Používal jsem jen standardní pravidla pro další úpravu kandidátů dodávaná s hashcatem a seznam českých slov, jmen a příjmení jsem sestavoval až za běhu. Seznam českých ulic už se mi dělat nechtělo. Profík by si tohle všechno připravil a za stejný čas by měl cracknutých hesel přece jen více.
Kromě zmíněných seznamů jsem zkoušel hesla lámat následujícími způsoby:
jmena.txt
a prijmeni.txt
)Všechny tyto útoky se navíc dají upravit a rozšířit pomocí pravidel, která například nahrazují písmena za čísla (a
→ 4
, e
→ 3
, o
→ 0
a další, takže se zkusí heslo
i h3sl0
) nebo mění některá písmena za velká, přidávají do vygenerovaných hesel na různá místa čísla nebo speciální znaky, zdvojují slova apod. takže kandidátů je k dispozici habakuk.
Za 45 minut jsem měl vylámáno 165 tisíc hesel, tedy cca 43 %. Za 12 hodin jsem cracknul skoro všechna, zůstalo mi 935 nevylámaných hesel, a to jen proto, že jsem už chtěl jít spát. Nechat to běžet ještě pár hodin, tak jsem si celkem jistý, že bych dostal všechna.
Podařilo se cracknout i tato hesla, která v žádném použitém seznamu nebyla:
JK52jarka
lockap7gia
– anglické slovo („lock“) + hmm, něcosoyouitknow
– 4 anglická slova, „nesprávně“ seřazenástr3ela9133
– slovo strela upravené pravidly + čísloMarketa19..
– jméno s velkým na začátku + číslo + dvě tečkyRenik2510!!
– to samé, jen s vykřičníky, obojí je klasika15zdenek1973
to neuhodnes
– hele, spíš asi jo (tohle je výjimka, bylo to v seznamu rockyou.txt
)andalusan89T@
natoneprijdes
– no nekecejčokoládamilka
– v seznamu rockyou.txt
byla podobná varianta bez diakritiky cokoladamilka
lindisfarne793
kobylamamalybok
– 4 česká slova, program palindromy nezkoušífm9fytmf7qkckct
– prvních 15 znaků ze sériového čísla pro Microsoft Officeasdfghjkl0123456789
– „procházka po klávesnici“ asdfghjkl + číselná řada…a 380 961 dalších. Necracknutá zůstala třeba tato:
carolinepassword2680?
– jméno + password + číslo + otazníkpasswordusuniversalis
– dvě slova rozšířená o -us a -is3681913234731michal
– číslo (ve skutečnosti CD key ke hře) + jménoQawsedqawsed11+
– 2× „procházka po klávesnici“ qawsed + číslo + plusj4 n3v1m v073
– ja nevim vole s předvídatelně nahrazenými znakyPyQ7z4XwBf1o9
– tohle mi nejdřív přišlo jako asi nejsložitější heslo, ale už je v nějakém seznamu hashů, otázkou je jak dlouho (jiná hesla z Mallu tam nejsou)●●●●●●●●●●●
– moc nechápu, jak se to tam dostalo, nicméně o tři znaky delší varianta ●●●●●●●●●●●●●●
se cracknout podařilaV tom zbytku není ani jedno heslo generované správcem hesel a všechna jsou podobná těm, co se cracknout podařilo, takže si myslím, že by se podařilo relativně rychle cracknout i ten zbytek.
Myslím, že hesla mohla opravdu klidně uniknout nějak hashovaná. Lámání SHA-1 s kryptografickou solí (metoda, kterou Mall používal od 2012 do 2016) by zabralo o dost víc času a to nejen proto, že rychlost generování SHA-1 je zhruba třetinová, ale také proto, že nelze použít porovnávání kandidáta se všemi možnými hashi, protože každý má jinou sůl. Z hesel uložených pomocí bcryptu (od 2016) by šla cracknout jen opravdu jednoduchá hesla typu password (GTX 1080 Ti pro bcrypt umí 646 hashů/s s počtem opakování 210, Tesla V100 1707 hashů/s), ale sám Mall tvrdí, že většina prolomených hesel pochází právě z doby, kdy byla používána [metoda MD5].
Na závěr dvě rady:
Článek původně vyšel na Lupě, tohle je má aktualizovaná původní verze bez redakčních úprav.