Přidat článek mezi oblíbenéZasílat nové komentáře e-mailem Windows NT a užívateľské heslá

Pokus o poodhalenie mechanizmu uchovávania užívateľských hesiel v NT systémoch a jeho praktických dôsledkov.

Windows NT neukladá užívateľské heslá priamo, ale pomocou určitých transformácií vytvára tzv. heš (angl. hash).
V prípade Windows NT rozoznávame LM hash a NT hash.

LM hash

LM hash bol vyvinutý v 70. rokoch (vtedy mal iný názov) spoločnosťou IBM pre použitie s počítačmi IBM 360/370. V 80. rokoch túto technológiu adoptoval operačný systém LAN Manager a bola pomenovaná LM hash. Aj keď sa neskôr Microsoft s IBM rozišiel, LM hash sa z dôvodu kompatiblity stal súčasťou všetkých doterajších systémov Windows NT.

LM hash v skutočnosti nie je heš, ale rokmi sa tento termín stal bežne používaným. Všeobecne proces hešovania používa kryptografickú funkciu, ktorá produkuje deterministickú hodnotu s pevnou dĺžkou pre ľubovolný vstup. Výsledkom je heš, ktorý je úplne závislý na vstupe a bude vždy rovnaký pre rovnaký vstup.
LM hash však produkuje výstup len pre obmedzenú znakovú sadu a navyše pre niektoré znaky produkuje identický výstup, z tohoto dôvodu nemôže byť považovaný za heš v striktnom ponímaní. Presnejšie by sa dalo hovoriť o LM OWF (one-way function), t.j. z výstupu zistíme vstup len pomocou brute-force. Na kryptovanie je použitý DES, čo bola v čase vzniku LM hash-u nová technológia.

LM hash sa tvorí nasledovne:

  1. heslo je doplnené nulami na 14 znakov (každý znak zaberie 1 bajt),
  2. malé písmená sú konvertované na veľké,
  3. heslo je rozdelené na dve polovice po 7 bajtov a každá časť je použitá na generovanie 8 bajtového DES kľúča,
  4. každý kľúč je použitý na kryptovanie textového reťazca KGS!@#$%,
  5. výsledkom sú dva 64 bitové reťazce, ktoré sú spojené a uložené.

Dôvod použitia reťazca KGS!@#$%, niekedy známeho ako “magic word”, je neznámy.
Proces verifikácie je celkom jednoduchý: DES kľúč, ktorý je generovaný zo zadaného hesla, je použitý na zakryptovanie uloženého hešu a výsledok je porovnaný s reťazcom KGS!@#$%.

Znaková sada LM hash-u je silne limitovaná. Jednako, všetky malé písmená sú nahradené veľkými a celá znaková sada je obmedzená na 142 znakov, z ktorých 99 je tlačiteľných. Z týchto znakov anglická klávesnica obsahuje 68. Ďalej dochádza pred hešovaním ku konverzii niektorých znakov na iné, napr.: Ò (0210), Ó (0211), Ô (0212), Õ (0213), Ø (0216) sú konvertované na O (0079).

Najväčšou slabinou LM hash-u je delenie hesiel na dve polovice. Z hešu je okamžite zrejmé, či je heslo väčšie ako 7 znakov, pretože ak je druhá polovica hešu rovná 0xaad3b435b51404ee, tak heslo má 7 alebo menej znakov. Ďalej týmto delením dochádza k silnej redukcii "sily" hesla, pretože ak uvažujeme 14-miestne heslo s použitím N-miestnej znakovej sady, budeme pre brute-force hesla musieť uvažovať 2*N^7 možností namiesto N^14. V prípade alfanumerického hesla to pre dnes bežné PC predstavuje rádovo hodiny. V podstate to znamená, že zvyšovanie dĺžky hesla nad 7 znakov prakticky nijako nezvyšuje "silu" hesla.

Ďalšou vlastnosťu LM hash-u je, že nie je “salted“. Užívatelia s rovnakým heslom majú teda rovnaký heš, čo dáva možnosť využiť Rainbow tables. Tieto tabuľky sú praktickým výsledkom implementácie faster time-memory trade-off techniky. Zjednodušene povedané, sú to vypočítané heše s prislúchajúcimi heslami, pre určitú znakovú sadu a určitú dĺžku hesla, uložené na disku. Čas na zistenie hesla sa potom dramaticky znižuje, napríklad pre 14-znakové alfanumerické heslo sú to rádovo sekundy. Tieto tabuľky sú však náročné na úložný priestor, dobu výpočtu a RAM (z dôvodu minimalizovania čítania z disku). Typický set pre 14-znakové (2*7) alfanumerické heslá sa zmestí na 1 DVD a obsahuje 7 tabuliek, pričom pravdepodobnosť zistenia hesla je 99,86 %. Výpočet každej tabuľky mi na Bartone 2500+ trval cca. 17 hodín, ale výsledok stojí za to. Ďalšie rozširovanie znakovej sady dramaticky zvyšuje čas výpočtu a úložný priestor, napríklad pri použití všetkých znakov z anglickej klávesnice by celkový výpočet na rovnakej mašine trval asi 1,47 roka a výsledkom by bolo 64 tabuliek po 1 GB. Viac informácií nájdete na http://www.antsight.com/zsl/rainbowcrack, resp. http://www.oxid.it/projects.html.
Zaujímavé je aj Ophcrack Live CD: beží na Linuxe a už obsahuje vypočítané tabuľky, takže sa netreba trápiť s výpočtom, stačí stiahnuť.

Z tohoto vyplýva, že LM hash je veľmi zraniteľná metóda kryptovania hesiel. Preto ak nepotrebujeme spätnú kompatibilitu (napr. autentifikácia Windows 9x systémov), je možné docieliť, aby sa LM hash neukladal. Toto je možné viacerými spôsobmi. Jedným z nich je použiť heslo dlhšie ako 14 znakov. Ďalej sa to dá nastaviť v Group Policy: Do not store LAN Manager hash value on next password change – efekt sa však dostaví, až keď bude heslo zmenené. Je veľmi rozšírené, že použitie Unicode znaku v hesle zabráni uloženiu LM hash-u, to však nie je úplne pravda. V skutočnosti iba niektoré Unicode znaky zabránia uloženiu LM hash-u, ako napr. € (0128). Napríklad Unicode znak Æ (0128), patrí do LM znakovej sady a heš bude uložený.

NT hash

V čase navrhnutia systému Windows NT bol LM hash už považovaný za slabý, v dôsledku čoho bol potrebný nový mechanizmus pre ukladanie hesiel, ktorý bol nazvaný NT hash. Algoritmus výpočtu NT hash-u je oveľa jednoduchší. Je použité MD4 kryptovanie hesla, ktoré spracováva heslo zložené z Unicode znakov, t.j. 2 bajty na znak, a výsledkom je 128 bitový heš. Zistenie hesla z NT hash-u je podstatne obtiažnejšie, pretože heslo je spracovávané ako celok, jeho dĺžka môže byť do 128 znakov a znakovú sadu tvoria Unicode znaky, t.j. 65535 znakov. Treba však pamätať na to, že plná znaková sada a dĺžka hesla generuje oveľa viac hesiel ako môže MD4 reprezentovať a môžu vznikať kolízie, t.j. dve alebo viac hesiel môžu mať rovnaký heš. Prakticky to znamená, že v závislosti od použitej znakovej sady sa od určitej dĺžky hesla jeho "sila" nemení, aj keď sa dĺžka zvyšuje (uvažuje sa ideálna hešovacia funkcia). Ani NT hash nie je "salted", t.j. znovu je možné použiť Rainbow Tables. Avšak kvôli rozsiahlejšej znakovej sade a väčšej možnej dĺžke hesla to nie je pri praktickom použití zďaleka tak efektívne ako v prípade LM hash-u.

Syskey

S Windows NT 4 SP3 bol zavedený SYSKEY – System Startup Key. Syskey okrem iného chráni local security accounts manager (SAM) databázu, v ktorej sú uložené heše lokálnych hesiel, a používa symetrické kryptovanie RC4. Štandardne je kľúč na dekryptovanie uložený v registroch, čo je však možné zmeniť, ak spustíme syskey z príkazového riadka. Máme dve možnosti:

  1. Kľúč bude generovaný systémom a uložený na disketu, t.j. pri každom štarte počítača bude počas bootovania nutné vložiť disketu.
  2. Kľúč bude generovany zo zadaného hesla a pri každom štarte počítača bude nutné zadať heslo, ktoré môže byť dlhé maximálne 128 znakov.

Spôsob uloženia kľúča v registroch bol už odhalený, preto prakticky všetky dnešné password cracking utility dokážu dekryptovať zakryptovanú SAM databázu, pokiaľ je k dispozícii súbor registrov SYSTEM. To však nie je problém, pretože je umiestnený v rovnakom adresári ako SAM, t.j. %SystemRoot%\System32\Config. Z tohoto dôvodu je bezpečnejšie používať jednu z dvoch vyššie uvedených metód generovania kľúča, aj keď dnes už existuje minimálne jeden komerčne dostupný nástroj pre brute-force Syskey, čo však pri vhodne zvolenom hesle nemusí viesť k výsledku. Samozrejme existuje aj možnosť resetovať Syskey do predvoleného režimu, čo je však deštruktívna operácia, ktorá vedie k vymazaniu všetkých užívateľských účtov a privátnych dát.

Windows Vista s najväčšou pravdepodobnosťou neprinesie prakticky žiadnu významnú zmenu v mechanizme uchovávania hesiel. Jedinou viditeľnou zmenou by malo byť predvolené neukladanie LM hash-u.

Komentář k článku

1 Zadajte svou přezdívku:
2 Napište svůj komentář:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět na články