it-swarm-eu.dev

Jak mohou crackerové rekonstruovat 200k solené hashe hesla tak rychle?

Hledám malý rozhovor o webové bezpečnosti a našel jsem jeden článek o hackerovi, který mě přiměl zvědavým. Oni tvrdí, že použili SHA-256 + sůl

Okamžitě jsme dokázali opravit díru a vylepšili naše hashovací mechanismy z sha-256 náhodnými solemi na bcrypt pro posílení bezpečnosti (10. července 2012)

… Nicméně útočníci prohlašovali nalezli ~ 200 000 hesel v publikovaných datových sadách 400 000 (mají 11m uživatelů, je pravděpodobné, že většina z nich byla zkopírována).

Přibližně polovina ze 400 000 hashů již byla rekonstruována crackerem hesel. (11. července 2012)

To mi připadá podezřelé. Vím, že bez použití PKCS # 5 nebo podobných technik je bezpečnost SHA-256 omezená, ale kolik výpočetního výkonu by potřebovali k rychlému nalezení tolika hesel?

Domnívám se, že o hašování ležel formpring. Má někdo nějaké postřehy o tom?

33

Žádná ze stávajících odpovědí nepokrývá kritickou část této otázky k mé spokojenosti: co soli?

Pokud byly zaslány pouze hodnoty hash hesla, ostatní sušenky to možná nevědí:

  1. Skutečná hodnota hesla podle hesla (údajně náhodná, podle zdroje).

  2. Jak je sůl smíchána s heslem v kódu.

Jediné, co mají, je konečné, výsledné hash!

Existuje mnoho způsobů heslo a sůl mohou být kombinovány tak, aby vytvořily hash:

sha256(pass + salt)
sha256(salt + pass)
sha256(sha256(pass) + sha256(salt))
sha256(pass + sha256(salt))
sha256(sha256(...(salt + pass + salt)...))

Ale pokud je sůl doporučeno 8 znaků čistě náhodnosti ...

sha256("monkey1" + "w&[email protected]")
sha256("w&[email protected]" + "monkey1")

… To znamená, že „typické“ 7 nebo 8 znakové heslo je extrémně obtížně silové síly, protože má ve skutečnosti 15 nebo více znaků! Kromě toho, pokud chcete crackovat hesla hash, které jste znáte , jsou solené, pokud nemáte také sůl, nemáte jinou možnost kromě brutální síla!

Na základě výzkum, který jsem provedl pomocí praskání GP , jsem dosáhl 8213,6 Mc/s pomocí dvou špičkových ATI karet hrubou silou krakování MD5 hashe hesla. V mém benchmarkingu to znamenalo, že bych mohl vyzkoušet:

all 6 character password MD5s   47 seconds
all 7 character password MD5s   1 hour, 14 minutes
all 8 character password MD5s   ~465 days
all 9 character password MD5s   fuggedaboudit

Všimněte si, že SHA-256 je 13% rychlosti MD5 na GPU pomocí Hashcat . Takže vynásobte tato čísla asi 8, abyste viděli, jak dlouho to bude trvat.

Pokud soli nebyly neznámé , znamená to, že jste v podstatě hrubou silou, která vyžaduje ekvivalent 12+ znakových hesel. To je daleko za hranicí jakékoli známé výpočetní síly.

Teď, pokud to chcete argumentovat ...

  1. Soli původní sušenky také získaly soli, ale rozhodly se je nezveřejňovat.

  2. Původní sušenky mají také zdrojový kód (nebo je to otevřený zdroj), takže vědí, jak jsou solena hesla, ale rozhodli se tyto informace nezveřejnit.

  3. Formspring lže a jejich hesla nebyla solena nebo solena nesprávně, takže soli neměly žádný účinek.

… Pak ano, snadno lze popraskat 200 tisíc 400 000 hesel za několik dní.

34
Jeff Atwood

Edit: Všechny níže uvedené předpoklady předpokládají, že soli jsou známé, protože to je průmyslově standardní použití slovní soli (3. řádek)) .

Jako příklad toho, jak to v databázi často vypadá, se podívejte na tento výstup SHA-256 Unix Crypt výstup:

$5$rounds=80000$wnsT7Yr92oJoP28r$cKhJImk5mfuSKV9b3mumNzlbstFUplKtQXXMo4G6Ep5

.. kde wnsT7Yr92oJoP28r je sůl v prostém textu. Dokumentace Python Passlib) obsahuje dobré popisy mnoha běžné formáty hashed hesel a většina z těchto solí obsahuje prostý text zřetězený spolu s reprezentací hashed hesla.

', která útočníkovi sůl není známa a kterou @Jeff Atwood diskutuje, se často nazývá „pepř“. Viz Hashing hesla přidejte sůl + pepř nebo je dost soli?


V roce 2009 Daniel J. Bernstein napsal vysoce optimalizovanou implementaci SHA-1 pro rámec CUDA společnosti NVIDIA. Tehdy se jim podařilo 690 milionů hashů SHA-1 za sekundu na jednom server pomocí čtyř grafických karet.

Útoky hrubou silou proti heslům hash jsou pracovní zátěž „trapně paralelní“ . V roce 2010 Thomas Roth demonstroval brutální síla útočící na ~ 10 hashů za ~ 2 $ pomocí Amazonu EC2. To by se dalo snadno zvýšit, pokud sazba není dostatečně vysoká, pak stačí přidat další instance EC2.

V zásadě tedy nejde o to, , jak dlouho bude trvat, než budou hesla vynucena. Je to spíše otázka, kolik výpočetní síly je útočník ochoten nebo schopen zaplatit, aby dosáhl výsledků rychleji.

útočníci tvrdili, že našli ~ 200 000 hesel

Jedním rozumným vysvětlením je, že útočníci necílili na konkrétní reprezentace hashů, jen šli na „ovoce s nízkým visením“. Jinými slovy, hledali pouze hesla, která lze snadno uhodnout. Možná něco jako:

  • Seznam kandidátů nejběžnějších hesel v prostém textu, vytvořených z uveřejněných seznamů skutečných uživatelských hesel. (V průběhu let došlo k několika úniky skutečných uživatelských hesel .)
  • A možná také vyzkoušeli všechna významná malá hesla až do dolní horní hranice, například až 6 znaků. (V datové sadě MySpace 2006 výše bylo zjištěno, že 17% všech hesel koncových uživatelů mělo 6 nebo méně znaků.)

Domnívám se, že o hašování ležel formpring.

Pokud pochopím vaše odkazy správně, byly hash objeveny na fóru 7. července. Mohli však být ukradeni před Formspring týdny nebo měsíce předtím?

Vzhledem k tomu, co popisuji výše, se mi nezdá nepřiměřené, že bylo použito jediné kolo SHA256 s jedinečnou solí na heslo, jak řekl Formspring.

Vše záleží na tom, kolik času a úsilí útočníci vloží do praskání brutální síly. Zdá se však pravděpodobné, že v rámci zdrojů, které by mohla mít malá skupina jednotlivých hackerů, bylo nalezeno 200 000 slabých hesel z datové sady 11 milionů jednoduchých reprezentací hashů SHA-256.

16
Jesper M

Praskání nesolených hashů je celkem triviální: stačí si prohlédnout hash v předem vypočítané tabulce a najít odpověď. Nemá smysl, aby si ostatní vynutili brute, protože vaše tabulky Rainbow již pokrývají váš slovník brute-force.

Ale praskání solených hesel je stále jednoduché; pomalejší, ale stále jednoduchý. Při většině útoků hrubou silou jde útočník do hloubky, nikoli hloubky. Spíše než vyzkoušet 1 miliardu hesel proti jednomu účtu, zkusí desítky nebo stovky či tisíce běžných hesel proti VŠECH účtům. Stoly Rainbow jsou jistě rychlejší, ale sůl sama nebrání klasické metodologii brutální síly. Začněte v horní části slovníku a zkuste toto heslo proti všem účtům: zjevně to znamená připsání hashů pro každý účet, ale na druhou stranu jsou vaše šance na zásah dost vysoké (přesně to znamená „společné heslo“) , tak jako tak). Dále si vezměte své nejběžnější heslo, potom další atd.

Nakonec můžete získat pouze několik tisíc hesel, ale statisticky lze říci, že ve vašem seznamu jsou pravděpodobně stovky účtů s heslem „123456“ a poměrně velký počet uživatelů, kteří používají „password1“ a „111111“ a „test“. .

200K z 11M je uvěřitelné; pouze asi 2%. 200K ze 400K méně. Ne nemožné, ale ne tak pravděpodobné. Někde tam kopá zákon snižování výnosů; Nejsem si jistý, jak daleko je, ale je to asi opravdu jednoduchý poměr jako 1/e nebo tak něco. Kromě toho jsem skeptický.

8
tylerl

Stojí to za to, že neklamou.

  1. Jak @ Jeff poznamenal , že přístup k soli je nezbytný pro rychlé praskání, ale jak @Remus Rusanu poznamenal: „Pokud získali hashe, pak je pro mě těžké pochopit, jak by nemohli získat sůl jako dobře “, protože musí být uloženy takovým způsobem, aby mohly být vzájemně spojeny. Předpokládal bych, že: alespoň počáteční hackeři měli přístup k soli.1

  2. @Jeff také uvádí, že musí mít přístup ke zdrojovému kódu, aby věděli, jak se kombinuje sůl a heslo. Navrhuji jiný přístup, abych zjistil, jak se kombinuje sůl a heslo:

    1. předpokládejme, že mají před útokem účet s formulářem (docela rozumný předpoklad)
    2. vyhledejte konkrétní účet (sůl, hash) v získaném seznamu
    3. znát heslo, sůl a výsledný hash, mělo by být snadné vytvořit malý skript, který otestuje všechny rozumné (a některé nepřiměřené) způsoby, jak kombinovat heslo a sůl (ne více než několik tisíc způsobů?)
    4. ???
    5. zisk!
  3. oni prohlašují, že “desítky miliónů členů” který dělá @ Jesper nízko visící ovoce teorie zní velmi rozumně.

Ok, stále mohou lhát, ale alespoň to zní rozumně, že nejsou.

1. Pokud je tento předpoklad nesprávný - počáteční hackeři nezveřejnili sůl A nezkoušeli a nerozbili hesla sami - zbytek může ne být možné.

7
João Portela

hashcat dokáže na Radeon HD7970, což je jen polovina rychlosti SHA1 a čtvrtina rychlosti MD5, udělat něco přes 1 miliardu hashů SHA256 za sekundu. To však není ani úzký profil :

Ještě jedna věc, než půjdeme dál; Všimli jste si, že rychlost praskání byla „pouze“ 258,7 M za sekundu? Co se stalo s teoretickou propustností několika miliard hashů SHA1 za sekundu? Problém je v tom, že vyšší propustnosti lze dosáhnout pouze „mutacemi“ hodnot slovníku hesel nebo zpracováním různých možností hesla přímo v GPU. Jinými slovy, pokud necháte, aby GPU převzal hodnotu slovníku, transformujte ji na řadu různých možností, že bude fungovat mnohem rychleji. GPU nelze dostávat hesla dostatečně rychle, aby bylo dosaženo stejné úrovně propustnosti, takže účinným seznamem hesel je úzký profil.

Takže použití SHA256 (nebo dokonce SHA512) není bezpečnější než použití SHA1 nebo MD5 proti těmto druhům útoků.

4
mgorven

Žádný příspěvek nezmiňuje, zda pachatelé získali přístup ke zdrojovému kódu Formspring. Pokud by tomu tak bylo, útočník by měl k dispozici metodu konstrukce hashů a náhodného generování solí. To by výrazně usnadnilo úlohu krakování, zejména pokud by způsob generování "náhodných" solí omezil tyto hodnoty na poměrně malé nastavené hodnoty.

Vzhledem ke zjevné rychlosti, se kterou byl tento omezený soubor prasklý, bych nejlépe hádal, že tomu tak je.

3
mitchellrj

Pokud by používali hash s jedinečnou solí na heslo, pak by to normálně zabralo značnou dobu, než by někdo mohl tato hesla prolomit. Pokud nebyla hesla extrémně slabá nebo hesla nebyla slova ve slovníku. Čistá hrubá síla vypadá trochu nepravděpodobně, pokud byla silná.

Tomův hardware obsahuje článek o heslo GPGP praskání. Slabá hesla ( ne více než 10 znaků včetně velkých písmen, malých písmen, znaků, ...) lze popraskat během několika minut, dokonce i se solí pokud je sůl známa.

Jinak to bude trvat mnoho dní, měsíců, delší hesla i tisíce let. Ale to není bez soli. Se solí to bude trvat věčně.

1
Lucas Kauffman