Windows Vista internals – část první

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: https://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: https://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: https://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): https://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: https://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:
https://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ý