Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Riziko nakešovaných doménových účtů a formát jejich uložení na Windows XP a Windows 7 a novějších
listopad 05
Riziko nakešovaných doménových účtů a formát jejich uložení na Windows XP a Windows 7 a novějších

Nedávno tu probíhala malá diskuze ohledně (ne)bezpečnosti keší hesel, které se uchovávají na stanicích po interaktivním příhlášení. Tvrdím, že tahle logon cache (cached credentials) je v dnešní době bezpečná.

Co to je logon cache

Na úvod si vysvětleme, co to je vlastně logon cache, neboli cached credentials. Když se na počítači přihlašujete na doménový účet vůbec poprvé, musí se vaše heslo (nebo digitální podpis provedený privátním klíčem z čipové karty - smart card) ověřit online (online logon) na nějakém blízkém řadiči domény (domain controller, DC). To je předpokládám jasné.

Jenže pokud byste si později notebook od sítě odpojili a odnesli domů, už byste se na svůj doménový účet nepřihlásili. Proto si počítač uloží do registrového klíče HKLM\Security\Cache nějaké informace o vašem účtu. Když se pak přihlašujete offline (offline logon), stačí přihlašovací informaci zkontrolovat v lokálních registrech a systém vás může pustit na počítač.

Kdy se keš ukládá a kdy se používá

Překvapivě, to není stejné. Heslo se nakešuje pokud se přihlásíte lokálně (interactive), jako služba (service), nebo jako naplánovaná úloha a IIS app pool (job). Logicky, i služby musí být schopny startovat, když je počítač mimo doménovou síť.

Je zajímavé, že i při přihlášení na vzdálenou plochu (terminal services, remote desktop) se váš login nakešuje. Zajímavé je to proto, že přihlásit se offline na vzdálenou plochu (RDP) nejde.

Offline se přihlásite pouze lokálně, jako služba, nebo jako naplánovaná úloha. Howgh.

Co se ukládá v logon cache?

Co se tam vlastně ukládá? Mimo tzv. password verifier (viz. dále), se tam ukládá celý obsah vašeho doménového access tokenu, tedy seznam SIDů doménových skupin a uživatelská práva a od Windows 8 také Kerberos claims, pokud nějaké máte.

NEukládá se tam přímo vaše heslo, ani PIN čipové karty. Neukládá se tam dokonce ani přímo NT hash vašeho hesla. NT hash je normální MD4 z hesla. Jak Kerberos, tak i NTLM při online ověřování tuto NT hash (MD4 hash) používají. Kdyby se tam ukládala přímo NT hash vašeho hesla, tak by si ji mohl kdokoliv z registrů vyndat a rovnou použít k přihlašování do sítě (útok typu pass the hash). To by bylo podobně špatné, jako vykrádání hesel služeb, naplánovaných úloh a IIS fondů aplikací.

Druhý problém by byl, že NT hashe jsou stejné, pokud mají dva uživatelé stejné heslo. Takže byste se například rovnou taky dozvěděli, že kolega, nebo nějaký admin, má stejné heslo jako vy a tradá.

Dále by to bylo strašně citlivé na rainbow tables útok. Tzn. krekování heší za pomoci předpočítaných tabulek heší-hesel. Nějaké takové tabulky se dají stáhnout pro osmi znaková komplexní hesla ve velikosti cca 15 GB a krek je potom bleskový v řádu několika minut. Sice s každým dalším znakem je taková tabulku plus/mínus 80x větší, takže pro desetiznaková hesla by byla 6400krát větší, ale kdo má dnes heslo delší než povinných 8 znaků, že? :-)

A co se tam tedy ukládá ohledně hesla? Jenom tak zvaný password verifier. Přečíst si o jeho formátu pro Windows 2000, Windows XP a Windows 2003 můžete tu. V těchto starších operačních systémech se jednalo o znovu MD4 přehešnutou zasolenou původní NT hash. Tzn. vezme se původní NT hash, přidá se k tomu váš login a znovu se to celé přehešne MD4.

Zaprvé to tedy nelze použít pro pass the hash útoky, zadruhé je to imunní proti rainbow tables, protože je to zasolené vaším loginem.

No dobře. Jenže MD4 je slabý algoritmus, na jehož brute-force krekování je dnes už poměrně rychlý hardware, speciálně při heslech o délce do 10 znaků.

Jaký formát mají cached credentials v novějších Windows?

Přečíst si o tom můžete na Technetu a algoritmické detaily najdete například zde (obvykle se to nazývá MS-CACHE v2).

Soudruzi v Redmondu se poučili a trošku to vytunili. Takže Windows Vista, Windows 2008, Windows 7 a novější ukládají opět zasolenou NT hash rovnou přejetou navíc 10240krát SHA-1 heší. Tudíž to je vééélmi imunní i proti brute-force.

Tohle nekreknete. Tedy pokud se nejmenujete NSA :-) Nebo pokud se nejmenujete Mosad. Protože pokud se totiž jmenujete Mosad, tak jste už dávno kreknuli NSA a necháte si to přejet na jejich mašinách :-) Samozřejmě, pokud se jmenujete Gukga anjeon bowibu, tak to heslo z lidí vymlátíte v pracovním táboře a nic ani krekovat nemusíte.

Jak je to s čipovými kartami?

Čipové karty (smart card) se dají používat také k přihlašování do Windows. Ukládá se v podstatě váš login podepsaný privátním klíčem karty. Tohle taky nekreknete. Krom předchozího případu GAB, ti kreknou kohokoliv.

Je ovšem zajímavé, že když se přihlásíte online kartou, tak se později můžete i offline přihlásit heslem (pokud ho tedy znáte). To je taková finta.

Kerberosu sice stačí k přihlášení čipová karta. Jenže v mnoha síťových komunikacích, i v doménovém prostředí, stejně používáte NTLM. NTLM je ale bez hesla (přesněji řečeno jeho NT hashe) úplně bezbranné. Takže i při normálním online Kerberos PKINIT čipovkovém přihlášení (smart card logon) vám řadič domény (DC) sám pošle v TGT tiketu vaši NT hash vašeho hesla. DC přece vaši NT hash zná vždycky, i když vy sami heslo možná neznáte.

No a tohle se prostě nakešuje, opět v té MS-CACHE nebo MS-CACHE v2 formě, podle předchozích odstavců. Takže i když se hlásíte normálně kartou, pokud znáte heslo, i offline se jím přihlásíte.

Jak jsou tedy přihlašovací keše nebezpečné?

Jsou v podstatě bezpečné. Rozhodně proti rainbow tables kvůli soli. Proti brute-force při kratším hesle jsou bezpečné jen MS-CACHE v2. Pokud máte Windows XP, nebo Windows 2003, vaše keš je MS-CACHE v1, a tam bych se trošku obával, pokud bych neměl heslo alespoň 12 znaků.

Comments

Dakujeme

Vdaka za pekny clanok ;)
Ondrej Zilinec on 7.11.2013 19:40

*

+1
- on 8.11.2013 9:15

Add Comment

Sorry comments are disable due to the constant load of spam *


Omlouvám se, ale příval spamu nelze kontrolovat, takže mi prosím pošlete email, pokud máte nějaký dotaz, nebo připomínku.

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments