Bezpečnost webových aplikací Web Inkognito VŠE 05/2013Michal Špaček
Ad
Lámání a ukládání hesel
1. Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
O bezpečnosti aplikací, krádežích uživatelských účtů a ukládání hesel. A taky o tom,
jak to všechno ovlivňuje lidské životy. Tyto poznámky v původní prezentaci nejsou.
Lámání a ukládání heselLámání a ukládání hesel
Word cloud by Mark Burnett, @m8urnett
2. O tom všem ví své i firma Yahoo. V roce 2014 někdo získal data o 500 milionech
uživatelů Yahoo, včetně telefonních čísel a otisků hesel. Problém se týká
například i Flickru, jehož uživatelé používají účty Yahoo. Firma incident zjistila v
červenci 2016, ale veřejně se přiznala o pár měsíců později.
3. Jen o tři měsíce později, v prosinci 2016, vydalo Yahoo zprávu o dalším
úspěšném útoku. V roce 2013 si z Yahoo někdo odnesl celkem miliardu účtů.
4. Na akcie firmy měly obě zprávy o úniku dat minimální vliv, cena od března 2016
do března 2017 vzrostla o třetinu. Mírný pokles koncem roku rychle nahradil růst.
5. V červnu 2016, tedy před potvrzením obou útoků, firma Verizon oznámila, že
plánuje koupit část Yahoo za 4,8 miliard amerických dolarů. 21. února 2017 pak
Verizon prohlásil, že nabídku za Yahoo o 350 milionů dolarů snížil a bude se
finančně podílet na vyšetřování úniků dat. Tak trochu zbytečně vyhozené peníze.
6. Američani v březnu 2017 tvrdili, že za útoky na Yahoo stojí ruští agenti. Nechci se
tu pouštět do žádných politických her, ale důležitý je ten drobný text dole →
7. Jo, to vypadá docela blbě. Za peníze si štěstí nekoupíte, ale všechno ostatní prý jo.
8. Za nezveřejnění dat požaduje bitcoiny.
Hodně bitcoinů.
Útočník se v tomhle případě však dostal na
nešifrovaná hesla uživatelů.
Podobné úniky se dějí i u nás, ačkoliv pochopitelně v menším měřítku. Ale kvalitu
života (a spánku) ovlivňují úplně stejně. Jednoho krásného podvečera zjistil Petr
Svoboda, že e-shop, který jeho firma ShopSys kdysi vytvořila, někdo napadl, získal
databázi a za její nezveřejnění požaduje bitcoiny. Firmu někdo začal vydírat. Petr
své poznámky „z akce“ zveřejnil a už jen z jejich čtení běhá mráz po zádech.
9. …cíleně napaden hackerem, kterému se podařilo získat
přístup do databáze klientů.
Stejné pocity jistě zažíval i Rostislav Peníška, jednatel společnosti Adrop, když psal
příspěvek na firemní web, ve kterém podobný incident nejen zákazníkům
společnosti oznamuje. Oba dva pánové udělali správnou věc, co nejrychlejší
zveřejnění problému je to nejlepší, co se dá v tu chvíli udělat. Fatální chyby na webu
jsou jedna věc, neměly by tam být, jasně, ale vydírání, vydírání je úplně jinej sport.
10. V létě 2015 skupina nebo jednotlivec se jménem The Impact Team zveřejnil 25 GB
firemních a uživatelských dat ukradených ze seznamky Ashley Madison. Ta sama
sebe nazývá seznamkou pro zadané, její obsah je tedy pro většinu uživatelů velmi
citlivý. Ne všichni ovšem nějakou aférku měli nebo chtěli mít, ale nejen bulvární
média to tak prezentovala. V zápětí po zveřejnění dat se tak uživatelé dočkali
vydírání ve smyslu „pošli mi bitcoinz a tvá partnerka se o ničem nedozví“. Většina
uživatelů seznamky Ashley Madison byli totiž muži, ale podle následné analýzy
uniklého kódu se ukázalo, že si povídali spíš s roboty, než s reálnými protějšky.
11. Údajně dva uživatelé seznamky tento tlak nevydrželi a své trápení se rozhodli
ukončit. Jedním z nich byl americký pastor, druhým známý mého kamaráda. Případů
nakonec mohlo být více, u některých se ale nepodařilo prokázat, že s kauzou
souvisí, jako například v případě policejního kapitána v San Antoniu.
12. V roce 2012 z LinkedInu uniklo 6,5 milionů přihlašovacích jmen a hesel uživatelů,
ale až v květnu 2016 vyšlo najevo, že únik byl mnohem větší, než se původně
předpokládalo. Ukázalo se totiž, že tehdy uniklo celkem 167 milionů záznamů.
Společnost LinkedIn to zjistila až když se někdo celou databázi pokoušel prodat.
13. Tohle je Mark. Mark šéfuje Facebooku. Mark používal jedno stejné heslo pro
LinkedIn, Pinterest i Twitter. Nebuďte jako Mark a nepoužívejte jedno heslo na více
místech. Mějte hesla silná a unikátní a pro jejich zapamatování nepoužívejte hlavu,
ale raději nějakého správce hesel a zálohu master password. (Více se dozvíte v mojí
přednášce věnované právě hlavě, heslům a password managerům.)
14. V červnu 2016 skupinka mizerů napsala Markovo heslo na jeho Twitter. Tahle parta
jménem OurMine to tak udělala i jiným známým osobnostem, najít heslo v uniklých
datech a zkusit se s ním přihlásit do dalších služeb je jejich modus operandi.
15. 0f158e648228a19cab5f23acfd6c36f716a702a9
SHA-1 hash
Takto bylo heslo Marka Zuckerberga uložné v databázi LinkedInu, která unikla na
veřejnost. Ten rozsypaný čaj (0f158…) je otisk jeho hesla, tzv. hash, vyrobený
pomocí funkce SHA-1. Z otisku se zpátky heslo nedá získat, ale je možné brutální
rychlostí vymýšlet nová hesla a porovnávat jejich otisk s otiskem z databáze.
16. Někdy ani není třeba žádná nová hesla vymýšlet a porovnávat jejich otisk. Otisk
slabých hesel stačí zadat do Google a velmi často hned na první straně s výsledky
původní heslo naleznete. Existují seznamy předpočítaných hashů milionů
vymyšlených hesel a Google je samozřejmě prohledává. A ano, Mark Zuckerberg
používal na Twitter, LinkedIn i Pinterest stejné heslo – dadada.
17. Da v ruštině znamená Ano. Po zatčení Jevgenije Nikulina v centru Prahy 5. 10. 2016
by konspirační teoretici začali jistě jásat. Byl totiž obviněn z útoku nejen na LinkedIn.
18. 323 loginů
+
SHA-1 hashů hesel
crackstation.net
Proč je vůbec ukládání hesel tak důležité? Na konferenci WebTop100 2012 jsem
zmiňoval jeden menší český e-shop, z něj se dala volně stáhnout záloha databáze,
ve které bylo přes 300 uživatelských jmen a hesel zahashovaných pomocí SHA-1.
19. crackstation.net
111 cracknutých hesel
Hashovaná hesla jsem předhodil online nástroji, který ve svém obrovském slovníku
našel 111 shod, během chvíle jsem tak získal 111 uživatelských účtů i s hesly. Útok
hrubou silou nebo hybridní útok by počet získaných hesel jistě zvýšil.
20. exoddus
Tbvfs1
9plams
P1ll3d
Neznašov
Zde jsou některá zajímavá hesla, která CrackStation ve svém slovníku našel. Kromě
českých slov jsou to i hesla, která splní podmínky pro hesla velké části služeb
a aplikací, jako například heslo P1ll3d: má 6 znaků, malá i velká písmena a čísla.
21. 111 cracknutých hesel
52 k loginu
…@seznam.cz
Z těch 111 hesel jich 52 patřilo k účtům, které měly e-mailovou schránku na doméně
seznam.cz. Celkem takových uživatelů daného e-shopu s e-mailem na seznam.cz
bylo 165, ale jen k 52 takovým účtům jsem znal heslo. Chtěl jsem zjistit, jestli vůbec
a jak moc se recyklují hesla. Je třeba vzít v potaz, že vzorek dat byl malý, byl půl
roku starý a také to, že firmě provozující e-shop jsem doporučil uživatele informovat
a nabídnout jim změnu hesla. Výsledné číslo tedy ve skutečnosti může být vyšší.
Vše bylo pro výzkumné účely, rozhodně vás nenabádám k žádné trestné činnosti.
22. I přesto je výsledek zarážející. Z 52 hesel, která jsem měl k dispozici, jich 9
fungovalo pro přihlášení k e-mailové schránce na seznam.cz. 9 uživatelů tedy
mělo stejné heslo pro přístup ke své e-mailové schránce, jako heslo pro přihlášení
k onomu e-shopíku. Přístup ke schránce je průser, už třeba jenom proto, že v ní
lze nalézt registrační údaje k dalším službám (které si nikdo nikdy nezmění,
pokud mu je vygenerujete a při registraci pošlete) a také třeba proto, že weby
běžně e-mailem posílají zapomenutá hesla a instrukce k nastavení hesla nového.
Masaaki Miyara https://www.flickr.com/photos/argyle-street/5721058729/
23. …@email.cz 2 z 8
…@centrum.cz 3 z 9
…@gmail.com 1 z 15
Přístup k 9 schránkám na seznam.cz není všechno. Z celkem 8 účtů s adresou
na email.cz používalo stejné heslo jen pár uživatelů. Získat přístup k tomu
jednomu účtu na Gmailu byl trochu oříšek, Gmail totiž detekoval, že se hlásím z
divného umístění (přes anonymizér) a tak chtěl po mě potvrdit, že jsem to
opravdu já, kdo se k účtu snaží přihlásit. No, kdo jiný než já by to asi tak byl, že.
Chtěl po mě tedy telefonní číslo toho uživatele Gmailu, ale to nebylo problém
najít, jak jinak než zadáním té e-mailové adresy do … wait for it … do Google.
24. Když nestačí Google a předpočítané tabulky (nebo pokud chcete hesla lámat
jako profíci), tak se použijí počítače nacpané výkonnými grafickými kartami, které
lámání hesel (tedy vymýšlení hesel a porovnávání jejich otisků, hashů) provádějí
rychlostí až desítky miliard pokusů za vteřinu pro funkce jako MD5 a SHA-1.
25. A když nestačí jeden počítač, tak jich společnost Sagitta HPC pár (desítek) propojí.
26. Ve firmě Sagitta HPC pracují šílenci. Takhle si kupují nové grafické karty a počítají je
na kila, ne na kusy. Takhle prý vypadá 300 kg grafických karet NVIDIA GeForce.
28. Jak ukládáte hesla?
v čitelné podobě, MD5, SHA-1, bcrypt?
Na Twitteru (ale i jinde) se často ptám na to, jak firmy ukládají hesla do databáze.
Jako jejich zákazníka nebo uživatele mě zajímá, jak se k mým datům chovají. Heslo
je totiž má soukromá záležitost. S odpovědí „bezpečně“ se nespokojím, chci znát
detaily. Firmy na tuhle otázku nejčastěji odpovídají stylem mrtvého brouka.
29. A když už odpoví, tak vlastně neodpoví. Z důvodu bezpečnosti to prý nemohou
prozradit. Nejčastěji to tak dělají banky. Chápu, že mi to nechtějí z nějakých
důvodů říct, to je v pohodě, ale výmluva na bezpečnost je dost chabá. Většina
způsobů ukládání hesel se totiž dá poznat pouhým pohledem na uložená data.
30. Není nad to, když vám odpoví někdo, kdo tomu rozumí. Sice se dozvíte, že to mají
udělané trochu na prd, ale aspoň se to dozvíte se vším všudy. Hesla by neměla být
uložená zašifrovaná, protože je dokáže dešifrovat kdokoliv, kdo má klíč. Třeba
mizera. Nebo bývalý kolega. Hesla by měl znát pouze uživatel, ne někdo, kdo je
dokáže rozšifrovat. A vlastní algoritmy? Uff, kdepak, to není správný přístup.
31. A tak jsem začal sbírat informace o tom, jak různé služby hesla ukládají, částečně
ze zajímavosti, částečně jako motivaci, aby to firmy začaly dělat správně. V
současnosti mám informace o cca 60 firmách. Přidat se můžete i vy, rád přidám
každou službu, která nějak zveřejnila informace o ukládání hesel svých uživatelů.
32. O službách uvádím všechny známé údaje, jako např. parametry hashování hesel,
historii a odkaz na zdroj, kde informace o způsobu ukládání hesel byla zveřejněna.
33. Slow password hashes + docs
Slow pw hashes + blog, FB, Twitter
Bezpečné ukládání
Způsob ukládání hesel má své hodnocení. Nejlepší známku „A“ dostanou služby,
které hesla uživatelů ukládají správně, a zároveň způsob ukládání „viditelně“
zveřejní. „B“ dostanou aplikace, které sice hesla ukládají dobře, ale jejich tvůrci se
k tomu moc nehlásí. Když způsob ukládání uvedou jen na blogu, na sociálních
sítích nebo v nějaké přednášce, tak taková informace je pro uživatele skrytá.
34. Argon2i
bcrypt
scrypt
PBKDF2
Pro bezpečné ukládání hesel použijte tyto funkce. Argon2i je nejvhodnější, ale i ty
ostatní jsou stále bezpečné. Pokud máte hesla ukládána pomocí algoritmu bcrypt,
tak není důvod to měnit. Tyto funkce podporují salt a jsou relativně pomalé, což je
přesně ta obrana, která je proti lámání hesel účinná. Pamatujete na stroje, které
počítají MD5 hashe rychlostí desítky miliard pokusů za vteřinu? Ty samé mašiny
umí spočítat jen doslova pár tisíc bcrypt hashů/sec. Hesla typu password půjdou
cracknout i když budou uložená správně, cokoliv složitějšího v rozumné době ne.
35. Other hashes + salted + iterations
Other hashes + salted
Other hashes, or encrypted
Slabé ukládání
Pak jsou tu aplikace používající hashovací funkce, které se nehodí pro ukládání
hesel, jako např. MD5, SHA-1, SHA-256 a další. Pokud alespoň používají unikátní
salt pro každé heslo a snaží se hashování zpomalit, tak dostanou známku „C“,
když nezpomalují, tak „D“. Známku „E“ si zaslouží když použijí jen obyčejnou
funkci MD5 a další, bez saltu a zpomalován, nebo když aplikace hesla šifruje.
37. Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
Michal ŠpačekMichal Špaček www.michalspacek.czwww.michalspacek.cz @spazef0rze@spazef0rze
Někdy může být bezpečnější mít unikátní hesla napsaná na lístku v peněžence, než
mít jedno heslo pro víc aplikací. Správce hesel je ale jistější a bezpečnější volba.
#32:So I've built a site which looks like this. For now I have around 30 sites, but I hope the collection will grow and if you know about a site which is missing please let me know.. So here we see a company called Castle storing users passwords using bcrypt and that's rated as B, we'll get to that.
#33:Where I have more details, like hash params, I also share it. I always link to a disclosure, it must be publicly stated somewhere by someone, so it's actually a collection of links to who said what. If I have a historical data, I also share it as you see here.
#34:So about my scoring system, it's inspired by SSL Labs and it works like this. The better hashing algorithm you use and the better is your disclosure, the better score you get. So if a site uses bcrypt or any other slow hash, like PBKDF2, and they tell us in their docs, they score A. If they tell us only in a blog post or a talk, they score B, because a talk or a blog post is not that visible and you can't easily find it if you don't know what you're looking for. These are safe storages.
#36:A site scores C if they use say SHA-1 or SHA-2 and they salt it and use multiple iterations. They score D, if they use fast hashes but at least salt them, E if they use plain fast hash or encrypt passwords. Encrypting passwords is also bad, because it can be decrypted by a drunk developer or something.
#37:And F is for total failure, that's plaintext.