it-swarm-eu.dev

Zabezpečení systému Windows 7 Password Hash

Nedávno jsem narazil na číslozzdroje , které naznačují, že praskání hesel uživatelských účtů systému Windows je snadné zkoumáním jejich hashů hesel.

Rozumím, že tyto hashe jsou uloženy v souboru SAM ve dvou formátech: LM a NTLM . LM je nezabezpečená (a protože Vista není smysluplný uložen, že?). NTLM je však také kryptograficky slabý a může být také rychle narušen.

V každém případě, i s tím, co bych považoval za „silná“ hesla, jsem je viděl prasknout během několika minut - jednoduše restartováním počítače do Linuxu z flash disku a poté spuštěním programu, který extrahuje hesla z hashe. Zdá se mi, že jde o obrovskou zranitelnost.

Jediné, co se mi podařilo najít online o tom, jak tomu zabránit, bylo použít delší heslo, abych zaručil, že slabší hash LM nemá smysl - ale NTLM je stále slabý.

Každý ví, jak se chránit před těmito útoky?

17
imallett

Je zde několik věcí, které je třeba zvážit. Společnost Microsoft použila dva algoritmy pro databázi účtů v systémech Windows:

LM (LAN Manager)

NTLM (NT LAN Manager)

Útočník s fyzickým přístupem k vašemu systému může docela snadno vypsat obsah databáze SAM (Security Accounts Manager) pro všechny místní účty a poté použít něco jako Ophcrack ( http://ophcrack.sourceforge.net ) ) ke spuštění útoků tabulky Rainbow proti hodnotám hash.

Musíte však určit, jaké je skutečné riziko: útočník je schopen crackovat heslo a/nebo má útočník přístup do systému. To je důležité, protože není nutné prolomit heslo (hádejte, že je to hodnota), aby došlo ke kompromitaci systému. Mnoho dalších nástrojů jednoduše nahradí hash v databázi SAM něčím, co si vybral útočník. Toto ohrožuje systém, ale ne nutně samotné heslo. Šifrování celého disku řeší oba problémy jako první linii obrany: váš útočník nedokáže připojit svazek do jakéhokoli nástroje, který používá k zasunutí do databáze SAM. Pokud se vydáte touto cestou, mnoho komerčních dodavatelů nabízí řešení. Truecrypt ( http://www.truecrypt.org/ ) nabízí skvělý bezplatný program. Bitlocker nebo jakékoli šifrovací řešení integrované s OS je do značné míry bezcenné, protože jsou snadno náchylné k útokům za studena.

Jedním z novějších řešení jsou jednotky s vlastním šifrováním, které vyžadují přístup do vlastního firmwaru.

4
Paul Horbal

Ve všech těchto odpovědích uvažuji o problému s obnovením hesla (nebo ekvivalentního hesla) z purloined hash, uloženého na serveru, na kterém by útočník mohl získat přístup ke čtení.

Hash NTLM je slabý, ale ne tak slabý jako starší hash LM.

Starší hash LM zahrnuje několik kapitálových slabin:

  • Ne rozlišují velká a malá písmena.
  • Omezeno na 14 znaků.
  • Rozdělí heslo na dvě poloviny se sedmi znaky, které jsou hashovány samostatně.

Tato poslední slabina umožňuje velmi efektivní praskání (bez ohledu na péči při výběru hesla); viz tato odpověď pro některé podrobnosti.

Méně starý NTLM je pouze MD4 vypočítán přes heslo. Tentokrát se v hesle rozlišují velká a malá písmena a může být poměrně dlouhá. Existuje nějaký spor, pokud jde o skutečná maximální délka hesla , která by mohla být zjevně až 127 znaků. Protože se MD4 počítá pomocí kódování hesla UTF-16, bylo by teoreticky možné použít celou škálu nicode , ale protože uživatel musí heslo pravidelně zadávat (a bez vizuální zpětné vazby), pomocí znaků za sada pro tisk ASCII sada hledá problémy).

Co je slabé v hash NTLM je to, že je nesolted a že MD4 je rychlý (MD4 je kryptograficky zlomen několika způsoby, ale ne pro hrubou odolnost předimage, jak se používá pro heslo hashing; MD4 je proto stejně robustní, jako kdy byl). MD4 je ve skutečnosti rychlejší než MD5. Nedávný GPU vypočítá několik miliard instancí MD4 za sekundu. To útočníkovi usnadní prozkoumání rozsáhlých sad potenciálních hesel (známých jako slovníkový útok ). Jedinou obranou je vybírat si hesla z ještě větší sady.

Pojďme na to hodit matematiku: , protože NTLM je nesolventní, specializovaná skupina útočníků by mohla považovat za užitečné postavit velký Duhový stůl . Existují různé možné optimalizace, ale zpravidla by to vypadalo takto:

  • Existuje bezpečnostní parametr nazvaný t ; to je průměrná délka řetězu v tabulce Rainbow.
  • Pokud má sada hesel, na něž se tabulka vztahuje, velikost [~ # ~] n [~ # ~] , pak požadavky na úložiště jsou asi 10 * N/t bajtů (rozumný odhad je 10 bajtů na konci seřazeného řetězce).
  • Sestavení tabulky znamená náklady na vyvolání hašovacích funkcí přibližně 1,7 * N .
  • Přiřazení jednoho hesla s tabulkou vyžaduje výpočet asi t2 krát hašovací funkce a provedení t vyhledávání v tabulce.

Pokud je tabulka rozdělena na sto mechanických pevných disků, lze za sekundu provést asi 10000 vyhledávání. Je-li útočník skutečně motivován, může si za heslo přát asi jednu hodinu, což znamená, že na vyhledávání bude maximálně t 3600000 (řekněme 2)22); odpovídající náklady na CPU jsou nižší než asi 232 hashe za sekundu, což je možné s několika nedávnými GPU. Stovky disků umožňují 300 TB úložiště (mluvím o 3 TB disk, které jsou dnes na trhu)), což přináší možné [~ # ~] n [~ # ~] na asi 267. To je dost obrovské, ale technologicky proveditelné. Naše skupina útočníků by si mohla koupit sto GPU (a velkou klimatizační jednotku) a mohla by být hotová s výpočtem této tabulky během několika měsíců.

Abychom mohli porazit naše motivované protivníky, musíme si vybrat náhodně hesla ze sady větší než jejich [~ # ~] n [~ # ~] . Pokud naše sada možných hesel má velikost větší než 277 a naše hesla jsou vybírána náhodně a jednotně v této sadě (tj. heslo entropie je 77 bitů nebo více), pak má útočník pouze 1/1000 šanci olomení daného hesla jeho stolem. To by mělo stačit, aby ho odradilo.

Jak získáme 77 kousků entropie? Pokud se omezíme na písmena (velká a malá písmena) a číslice, aby bylo možné zadat heslo na libovolných klávesnicích, můžeme mít na každý znak trochu méně než 6 bitů entropie. Proto postačuje 13 znaků . Není to bobtnání? Pouze 13! Není třeba chodit do velkých přístupových frází. Ale nevšímejte si malého typu: to je 13 zcela náhodných písmen nebo číslic . Není pochyb o tom, že si člověk vybere tyto postavy, nebo dokonce vygeneruje tucet hesel o 13 znacích a nechá si vybrat ten, který se mu nejvíce líbí. Berete generátor, vyrobíte jedno heslo a naučíte se ho. Mentální úsilí je cena za použití nesolventního rychlého hashovacího mechanismu jako NTLM.

(Samozřejmě výše popsaná skupina útočníků je realistická . Možná budete chtít trochu zvýšit složitost, takže vaše hesla budou také silná, pokud jde o zítřejší útočníky; 14 nebo 15 znaků, aby byly bezpečnější.)

18
Thomas Pornin

Obecně platí, že na většině systémů je delší heslo vždy lepší.

Existují samozřejmě tabulky Rainbow pro NTLM (např. http://www.freerainbowtables.com/en/tables2/ )

Z pohledu brutální síly byste však měli omezit počet neúspěšných pokusů o přihlášení dříve, než budete uzamčeni. To lze nastavit pomocí místních zásad. 3 neúspěšné pokusy, pak je zablokujete.

Fyzické zabezpečení převyšuje všechny. Blokujte BIOS z bootování CD nebo USB a vložte zámek do krabice. Samozřejmě, že opakuji výše uvedený komentář, používám plné šifrování disku, možná i multifaktor. Šifrovanou jednotku nelze v systému Linux magicky připojit, potřebujete znát heslo nebo klíč.

Chladná bota a zlá služka vyžadují, aby někdo opravdu investoval čas do rozbití vašeho stroje. Na místním domácím počítači musí být více pravděpodobně stačen ke stahování škodlivého softwaru nebo že máte neopravený software, a oni se prostě dostanou do kořenového adresáře (ehm, správce) a nestarají se o porušení vašeho hesla.

Pokud máte skutečný tajný materiál, proveďte úplné šifrování disku a důležitý materiál vložte do kontejneru šifrování druhé úrovně.

Jednou jsem slyšel, že jediný počítačový chlap říká, že jediný zabezpečený počítač je ten, který má trochu nasekanou sekerou a poté shořel. :-)

5
Eric G