Windows Vista internals – část první

Windows Vista internals – část první

  • Comments 14
  • Likes

Operační systém Windows Vista byl již téměř před rokem dokončen a předán do výroby, od té doby bylo napsáno mnoho článků věnujících se této nejnovější verzi Windows z mnoha pohledů, a přesto je stále o čem psát.

Záměr článků

V této, dnes začínající sérii článků, bych se chtěl věnovat technologiím na pozadí Windows Vista, tedy UAC, WRP apod., jejich dopadům, přínosům a nejběžnějším problémům. Věnovat se budeme shrnutí informací o dostupných nástrojích pro analýzu prostředí, kompatibilitu aplikací a také instalace. Začneme tedy teorií, nutnou pro pochopení dalšího obsahu, hlavně nástrojů na zjišťování kompatibility aplikací.
Pro úplnost je třeba dodat, že popisované změny se týkají i chystaného Windows Serveru 2008.

Přehled změn
Obecně se dá říct, že vývojáři se zaměřili hlavně na zabezpečení a ochranu operačního systému (OS) se striktním oddělením uživatelské práce od služeb operačního systému. Důraz byl kladen na zmírnění možnosti poškození OS ať již záměrně, či nechtěným zásahem. Důkazem úspěšnosti budiž nedávno zvěřejněná analýza společnosti Secunia, psali jsme o ní v tomto článku: http://blogs.technet.com/technetczsk/archive/2007/06/22/windows-vista-analyza-bezpecnosti-po-6-mesicich.aspx .

Session 0 izolace. V předchozích verzích Windows jste se při přihlášení na lokální konzolu počítače ocitli v prostředí, ve kterém běžely vaše aplikace ve stejné session jako systémové služby, tedy v tzv. session 0. Při vzdáleném připojení se následně vytvářejí další session, číslované vzestupně, již oddělené od služeb OS. Tato vlastnost se dala pomocí určitých technik zneužít a použít oprávnění služby OS pro spuštění vlastního kódu a získat tak přístup ke zdrojům, které obecně přístup uživateli neumožňují.
Windows Vista tento princip mění a spouští veškeré vaše služby a procesy v oddělené session od služeb OS, které dále běží v rámci session 0.
Nicméně, služby, které se chovají vůči uživateli interaktivně a zobrazují dialogové okno s konfigurací, či hláškou pro uživatele často počítají se zobrazením na desktopu lokální konzole. Windows Vista proto obsahuje detekční mechanizmus a při takové aktivitě nějaké služby nabídne uživateli dialog s možností přepnout se na izolovaný desktop v rámci session 0 a tam potvrdit danou akci. Jde o způsob jak automaticky eliminovat problémy, vývojáři by měli změnit metody komunikace s uživatelem. Myslím, programátorské metody :).

image001

Service isolation
Služby operačního systému běží v kontextu systémových účtů, ať již v kontextu LocalService, NetworkService či Localsystem a mají tedy poměrně neomezený přístup ke zdrojům OS, tedy tam kam mají oprávnění zmíněné systémové účty. Při potenciálním zneužití služby (a nemusí jít o službu standardně ve Windows) může být dopad činnosti škodlivého SW veliký.
Metodika na zmírnění těchto rizik se nazývá Service Hardening a Windows Vista přichází nově s možností přidělit každé službě zvláštní SID, tzv. per-service SID a tuto identitu služby použít pro udělení oprávnění nutných pro práci této služby ať již na úrovni file systému, registry, či síťových objektů.

ukázka výstupu z utility sc.exe a zobrazení SID služeb


Postup jak na to a více informací obsahuje tento dokument: http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Vista_Services.doc

Řízení uživatelských změn (UAC)

Anglicky User Account Control, čili UAC. Zkratka, kterou budu dále v této sekci používat. UAC je způsob jakým lze docílit práce s počítačem s oprávněním běžného uživatele. Již před několika lety Microsoft vývíjel aktivity a poměrně obsáhlé materiály (např. zde: http://www.microsoft.com/downloads/details.aspx?FamilyID=6A1291E7-9ECD-4D5D-9EEB-308C5D522E14&displaylang=en) pro docílení záměru práce s počítačem bez oprávnění správce. Klobouk dolů před společnostmi, které toho docílili a i přesto si dovoluji tvrdit, že to nebylo jednoduché. Vývojáři aplikací, ale i některé operace v rámci práce s OS vyžadují použití vyšších oprávnění a je snažší používat počítač při zalogování s účtem správce. Že jde o problém v případě zneužití takového počítače, ať již v rámci lokálního počítače či počítače v síti netřeba zmiňovat.

Microsoft ve Windows Vista upravil oprávění a v rámci práce běžného uživatele lze nyní provádět i tyto operace:

  • Konfigurace bezdrátové sítě
  • Instalace tiskárny
  • Instalace aktualizací Windows
  • Nastavení a konfigurace VPN spojení
  • Změna časového pásma
  • a další..

Akce, které mění nastavení OS, nadále vyžadují oprávnění správce a tuto potřebu poznáte podle ikony štítu zobrazeného na tlačítku, či ikoně. Při provádění takové operace se zobrazí tzv. výzva pro souhlas (anglicky consent) v případě správce, v případě provádění takové operace běžným uživatelem se zobrazí okno požadující účet správce. Systémové operace ví o nutnosti použití vyšších práv, existuje i možnost spustit aplikaci pomocí kontextového menu vyvolaného pravým tlačítkem a zvolením možnosti Spustit jako správce.
Nicméně dialog o potvrzení akce pro použití vyšších práv, tzv.elevace, má několik různých podob a liší se podle nastavení Group Policy, ale hlavně důvěryhodnosti zdroje spouštěného obsahu. Každá taková výzva si ale vyžádá uživatelovu pozornost ztmavnutím obrazovky a zobrazením výzvy o potvrzení.

Jiná podoba dialogu o potvrzení, neznámý zdroj obsahu, aplikace není podepsaná certifikátem.

Uživatel tedy ví co se v danou chvíli děje, a má možnost ovlivnit spouštění nechtěného kódu. Podotknu ještě, že dialog jako takový je také zobrazen v rámci odděleného desktopu (tzv.secure desktop) od desktopu uživatele což je pro znemožnění automatického ovládání okna škodlivým SW. Navíc, standardní akce při nedbalém odkplepnutí je Zrušit.

Každý uživatel je při přihlášení k Windows Vista standardní uživatel, tedy i uživatel, který je členem skupiny Správců má při standardní práci s počítačem běžná oprávnění. Vyšší oprávnění, vycházející ze členství ve zmíněné skupině se použije až v případě potvrzení použití vyšších oprávění. Pokud tedy jste členem zmíněné skupiny, po přilogování do Windows Vista se vám přidělí 2 tokeny, tzv. split token. Lze to poměrně jednoduše zjistit použitím příkazu whoami /all, který kromě členství ve skupinách zobrazí i detailní výčet oprávnění daného uživatele. Všimněte si popisku okna a porovnejte výstup této utility spuštěného jednou v příkazové řádce spuštěné běžně:

a v příkazové řádce spuštěné pomocí volby Spustit jako správce:

Jde o použití členství ve skupině Administrators. V prvním případě se členství použije jen pro případ zamítnutí přístupu pro skupinu Administrators, ve druhém případě jde již o možnost využití oprávnění skupiny. Na druhém obrázku je konec tohoto výpisu obsahujícíi výčet oprávnění, zajímavé porovnat.

Možné problémy
I přesto, že byla tato technologie důkladně testována již v raném stádiu vývoje a bylo odladěno mnoho problémů, může tato změna mít negativní dopad na běh vašich aplikací. Jde především o nutnost použít vyšší oprávnění, tedy token s právy správce. Pokud Vista neví, že je token nutné použít, aplikace vyžadující zápis do zabezpečených lokací může zhavarovat.

Automatická eliminace problémů
Napsal jsem, aplikace může, ale nemusí skončit s chybou. Windows Vista hlídá události a při zjištění pokusu o zápis do zabezpečených lokací, ať již adresář program files, windows, či registry přesměruje takový požadavek do tzv. virtual store. Aplikace, stále běžící v rámci běžných oprávnění tedy zapíše kam potřebuje a běží dále bez problemů. Virtual Store jsou složky v rámci uživatelského profilu, v této lokaci C:\Users\%username%\AppData\Local\VirtualStore a zápis aplikace je přesměrován práve sem, i když je aplikace přesvědčena, že požadovanou operaci provedla zápisem do adresáře program files. Požadavky na zápis do registrů je přesměrován do klíče HKCU\Software\Classes\VirtualStore\MACHINE. Metoda virtualizace je poměrně úspěšnou metodou jak eliminovat zápisy aplikačních konfiguračních souborů a podobných operací, které by aplikace běžně provádět neměli, nicméně není lékem na všechno a je prezentována jako přechodná možnost pro přechod na aplikaci Ready for Windows Vista. Problémem tady zůstává zápis do složky dostupné jen aktualně přihlášenému uživateli, například konfigurační změna aplikace se nepromítne všem uživatelům.
Virtualizace se nepoužije v případě, že aplikace běží v rámci vyšších oprávnění, tedy elevated. V tomto případě se použije pro běh aplikace token správce s vyššími oprávněními a ten již má možnost zápisu do zabezpečených lokací OS, tedy program files, program data a windows.

Pro zjištění, které aplikace na vašem počítači vyžadují zápis do zmíněných lokací a jsou automaticky virtualizovány, stačí otevřít průzkumník a přejít do %virtual store%, či spustit správce ůloh (task manager) a přidat sloupec Virtualizace. Jde o poměrně zajímavé zjištění :)

Zde je ke stažení videoukázka virtualizace (10MB): http://oprfiq.bay.livefilestore.com/y1pUSE5sJ18lrtKSjwqFdAHO_GqStdxWGdQNBLE6s4giOC-juA09Gydxg-TH_dtjyIChZtIZY8GAwW2twK0UYwC9U6ZPJj63aPu/Vista%20UAC%20-virtualizace.wmv?download 

Windows Vista pro zjištění potřeby spuštění aplikace s vyššími oprávnění používá i heuristickou detekci spouštěných programů. Automaticky jsou spuštěny jako elevated msi installery, aplikace obsahující klíčové slovo setup a již zmíněné systémové operace. Pro spuštění aplikace s vyššími oprávněními lze použít pravé tlačítko, či jak si ukážeme později i nástroje pro přidání příznaku „spustit jako správce“ pro danou aplikaci a tuto konfiguraci distribuovat na počítače v síti. Zmíním také nástroje pro detekci takové potřeby stávajících aplikací.

Group Policy a UAC
Skupinová politika obsahuje několik různých nastavení řízení uživatelských účtů, čili UAC. Měnit lze například nutnost zadávání uživatelského účtu a hesla i pro uživatele s oprávněním správce a další chování, lze také funkcionalitu vypnout.
Dobrý zdroj informací i se vzorovými scénáři obsahuje tento článek na Technetu: http://technet2.microsoft.com/WindowsVista/en/library/00d04415-2b2f-422c-b70e-b18ff918c2811033.mspx?mfr=true

Technet virtual LAB pro UAC
Pokud nemáte prostředí pro testování, nabízíme možnost použití připraveného testovacího prostředí i s demo příručkou v rámci Technet Virtual LAB:
http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032305607&EventCategory=3

Závěr
O technologiích a změnách v architektuře OS umožňující tuto funkcionalitu, a tom co se děje na pozadí bude pokračování této serie.

Hezký den
Roman Černovský

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment
  • No hezké čtení, přesto je UAC natolik nedokončená věc že zcela znemožňuje profi práci s osobním počítačem. Je to neuvěřitelně otravné a frustrující a velice to snižuje produktivitu práce když se systém dotazuje na každou maličkost kterou hodláte spustit. Proto má zásadně UAC vypnuto a riziko poškození systému mám vyřešeno zazálohováním systému i s nainstalovanými aplikacemi pomocí centra zálohování a obnovení - zálohování Complet PC, návrat trvá cca 30 min a je to rozhodně menší stráta času než do nekonečna odklikávat s prominutím debilní dotazy UAC ve Vistách. UAC je velmi nedotažená věc vysoce snižující produktivitu práce, a jak je v článku správně napsáno znemožňující normální spuštění některých aplikací. Přináší to mnohem více škody nežli užitku podobně jako jiné "novinky" (např. naprosto otravné a zpomalující běh počítače tzv. indexování) ve Vistách. Mnohé firewally mají obdobu UAC vyřešeno mnohem méně otravným způsobem.

  • článek je pěkný a sem tam kse, se něco i dozvěděl, ale musím souhlasit s tím, co psal Leoš, že pro administratora nebo člověka, který má PC s Vistou, je to otravné donekonečna odklikávat potvrzení vyšších práv. Dělám v Delphi a když něco tvořím, tak bych se z toho asi zbláznil. Zase nadruhou stranu pro uživatele, kteří kliknou v systému, na internetu a v mailu na cokoli, tam bych UAC nechal NAVŽDY.

  • UAC je otravná a nedotiahnutá vec. Navyše (aspoň v home verzii)

    pokiaľ mám nainštalovanú aplikáciu, ktorú mi UAC nedovolí pustiť bez zadania hesla admina, som nenašiel spôsob, akým by som mohol ako admin nastaviť niekde v systéme, aby sa mohla spustiť bez zadania hesla. Jediná možnosť je UAC vypnúť. Tak som ho vypol a je kľud.

  • UAC je opravdu skvela vec, bohuzel nejsou na to pripraveni programatori

    porad pisi prasacke programy jako v casech windows 3.11, proste jejich program potrebuje delat vsechno

    bohuzel to jinak neumi a nedokazou si udelat vicevrstvou architekturu, kdy aplikace predava pozadavky treba driveru atd. proto si nastavuji prava admina a proto jejich aplikace nefunguji v bezpecnem prostredi a co se udela ?

    vypne se bezpecnost

    vina je i na strane MS, protoze se nesnazil vytvorit bezpecne prostredi z zvyky pri programovani drive

  • Dobré ráno,

    jsem rád, že UAC, a nejen to, si zasluhuje vaši pozornost.

    UAC není nepochybně všelék, ale dovolím si tvrdit, že pro většinu uživatelů a použití postačuje.

    Není možné tvrdit, že je odpovědí pro všechny a vyřeší všechny problémy s bezpečností. Snaží se ale automaticky a tak trochu za uživatele omezit rizika dnešního propojeného světa.

    hezký den

    Roman Černovský

  • V tomto druhém dílu článků o technickém pozadí Windows Vista se zaměříme na technologie spojené s UAC,

  • chytraci ... ked uz tak nadavate na UAC tak urcite viete ze sa da vypnut potvrdzovanie akcii ak je uzivatel administrator, ze? ... RTFM

  • "chytraci ... ked uz tak nadavate na UAC tak urcite viete ze sa da vypnut potvrdzovanie akcii ak je uzivatel administrator, ze? ... RTFM"

    - 1. Ak si pozorne čítal manuál, tak určite vieš, že táto funkcia nie je oficiálne povolená v home edition.

     2. To mám dať užívateľovi práva admina len preto aby mohol používať nejakú aplikáciu ? Zaujímavé že v linuxe takéto problémy nemám, tam behá všetko tak ako máaj pod účtami bežných userov. Bohužiaľ som nútený používať aj také aplikácie, ktoré buď pod nuxom nechodia (pod wine), či niesú portované, alebo nemajú vhodný ekvivalent spľňajúci všetky užívateľské požiadavky.

     3. S tou "displínou" programátorov, na tom určite niečo bude, ale nebude časť tohot úroblému aj na strane MS ? Možno by pomohli nejaké propagačné, prípadne školiace akcie. Veď tie programi, ktoré mi tako divne fungujú píšu profesionálny porgramátori. :(

    4. Keď UAC je taká super vec, prečo sa dotazuje iba na plikácie, ktoré sú nejakým spôsobom podpísané. Prečo admin nemá možnosť povoliť spúšťanie aj nepodpísanej aplikácie pre bežného užívateľa ? Veď admin by mal vedieť čo povoľuje a čo zakazuje. Zase jeden príklad, kedy sa systém snaží byť múdrejší ako jeho správca.

  • Na webe sa čoraz castejšie ozvývajú negatívne hlasy na "visťácky"

  • Hurhaj +1

    Tiez by som bol za nejake multimedialne prezentacie od MS, ktore by teoreticky vysvetlili a prakticky ukazali ako tvorit aplikacie Ready to Vista. Prezentacie k ASP, WCF,WPF,WSS,WWF, SQL2005, VS2005 a rozne brozury pre office su na ceskom (slovenskom?) MSDN k dizpozicii na stiahnutie. Bolo by fajn keby im to niekto, kto ma kontakty navrhol.

  • V předchozích dílech této série ( díl první a díl druhý ) článků jsem se zaměřil na pozadí změn ve Widows

  • Mozna jsem ze stare skoly... ale vite co ja povazuju za vrchol?   Kdyz jste administrator, nebo root (ubuntu) a vlastne jim vubec nejste!

    Jde mi ted pouze o spravnou definici pojmu....   vim ze i ve Vistach jde dodatecne doladit ze se zobrazi  ucet administrator a po prihlaseni do nej muzete byt konecne panem bohem ve svem pocitaci, blablabla a tak dale. Ale proboha PROC, kdyz uz nekdo chytry nazve group Administrators, tak ji nadefinuje jen jakesi polovicate prava?

    Absolutne nechapu a neprenesu to pres sve skromne srdce...

    Prominte mi mou uprimnost ale nemohli tu defaultni UAC Admin grupu pojmenovat spise half-cripple agroup??

  • Vsetko sa zacalo ked do MS zacali brat samich akademikov s x titulmy... Tragedia kriza . Volajte si to ako chcete. Chyba zdravi rozum . Po pade komunizmu akademicka mafia ma absolutnu moc. Dokonca predefinovava pojmy . Admin grupa nie je admin grupa ale len nieco  na pol. Kedysi sa sme sa smiali skrachovanym akademickym projekto , dnes si ich musime kupovat ...

  • Viete ze ko pouziva toto je looser a=a+1;

    Kto pouziva toto ten je genius a++;

    Ste si mysleli ze nas vas niekto vacsiu koninu nevymysli. A zase pojdu miliardy kominom . Ako aplikovat UAC ..... Uz vidim tie inzeraty, pohovory. mate skusenosti s UAC. Uplne najlepsie v case krizy. Inak kriza vyrazne suvisi s krizou zdraveho rozumu nie len v  MS