Jak omezit spouštění nebezpečného kódu V předchozím čísle DSM se článek s názvem „Spyware, adware a další“ věnoval problému nebezpečného kódu na počítači s operačním systémem MS Windows. Tento článek na něj navazuje a věnuje se způsobům, pomocí nichž lze ve spouštění takového kódu bránit. Klasický způsob představuje antivirový program; další variantou je povolit spouštění jen autorizovaných programů. Nejčastější způsob, kterým antivirové programy detekují nebezpečný či škodlivý kód, využívá jedinečné identifikační řetězce – signatury. Tvůrce antivirového programu sbírá všechny dostupné viry1 a vytváří pro ně signatury. Tisíce takových signatur tvoří databázi, která je pravidelně distribuována na počítače, které vyžadují antivirovou ochranu. Když pak antivirový skener prochází soubory na disku nebo když provádí online kontrolu, porovná soubor s každou ze signatur a určí, zda se jedná o virus nebo ne. Takovým způsobem lze ale detekovat jen známé viry. Dokonce i antiviry využívající heuristické algoritmy, které viry detekují podle jejich chování, dokážou zachytit jen variace známých virů nebo programy, které jako viry vypadají či se tak chovají. Celý systém signatur má ovšem několik slabin. Jednou z nich je možnost rychlého vytváření velkého počtu nových variant virů s odlišnými signaturami například prostřednictvím tzv. kompresorů2 (PECompact, ASPack, Cexe, Pklite apod.). Jedná se o programy schopné komprimovat spustitelné EXE soubory tak, že zůstanou spustitelné i po komprimaci, ale jejich signatura se tím samozřejmě změní a klasický antivirový program je již není schopen detekovat. Než zjistí tvůrce antivirového programu, že existuje nová varianta viru, a než dojde k distribuci potřebných signatur, vzniká nepříjemná několikadenní prodleva, kdy se může škodlivý kód bez problémů šířit. Viry mohou detekci unikat i jinými způsoby. Polymorfní viry jsou schopné modifikovat svůj vlastní kód a zachovat si stejnou funkci. Metamorfní viry nejen mění svůj kód, ale částečně i svou funkci. Viry mohou detekovat své antivirové protivníky a pokoušet se je vyřadit z provozu. Častá je i situace, kdy antivirový program spuštění nebezpečného programu vyhodnotí jako legitimní činnost oprávněného uživatele. To se týká zejména tzv. škodlivého mobilního kódu (mobile malware), jehož typickými zástupci jsou různé skripty (JavaScript, VBScript), ActiveX komponenty a Java applety. Typické řešení bezpečnosti PC využívá kombinaci firewall a antivirový program; pro boj se spywarem a adwarem pak nějaký další program jako je Adaware, Spybot Search & Destroy, PestPatrol, BPS Spyware Remover apod. Vzhledem k tomu, že různé kombinace uvedených programů jsou při detekci i odstraňování škodlivých programů různě úspěšné, může v běžném uživateli vzniknout představa, že potřebuje mít takových bezpečnostních programů co nejvíce. Naštěstí se zdá, že vytvářet a prodávat firewally i antiviry je dobrý obchod, takže se jejich tvůrci snaží nezaostat za konkurencí a přidávají do svých produktů stále další a další funkce. Sice tak vznikají komplexní softwarové balíky, které se poměrně obtížně konfigurují, ale na druhou stranu se objevují některá zajímavá řešení. Například Norman Virus Control a Tiny Personal Firewall obsahují tzv. sandbox, což je přesně ohraničené prostředí, ve kterém má malware možnost provádět své nekalé akce a odhalit se bez toho, aby to nějak ohrozilo celý počítačový systém.
1
Samozřejmě sbírá nejen viry, ale i jiné druhy malwaru. Toto zjednodušení má zlepšit čitelnost textu.
2
V angličtině se pro kompresor používají názvy „packer“ nebo „PE compressor“.
Firma Microsoft se v průběhu doby několikrát pokusila reagovat na explozi malwaru ve Windows prostřednictvím řady mechanismů, ale jen s částečným úspěchem. Tak se postupně objevil Authenticode, bezpečnostní zóny Internet Exploreru, kontrola příloh v Outlooku a objektový model OMG (Outlook Object Model Guard), který zabraňoval automatizovanému průchodu adresářem obsahujícím emailové adresy, dále podepisování maker MS Office a také se zvýšila bezpečnost skriptovacího jádra. Ve Windows XP se poprvé objevila možnost stanovit systematická pravidla, která by omezovala schopnost uživatele spouštět programy.
Politika omezující spouštění softwaru (Software Restriction Policy) Ve Windows XP a Windows 2003 je možné ovlivnit spouštění programů nejen vhodným nastavením přístupových práv, ale též dodatečnými pravidly zvanými Software Restriction Policy (dále jen SRP)3. Tato pravidla stanovuje administrátor buď na lokálním stroji prostřednictvím konzoly Local Security Settings (secpol.msc, viz. obr. 1) nebo centralizovaně v aktivním adresáři prostřednictvím GPO objektů. Existuje několik různých druhů pravidel, které se definují v části Security Levels a Additional Rules, a které různým způsobem přistupují k úloze identifikovat spouštěný software. Nejprve se musí administrátor rozhodnout jaká bude implicitní bezpečnostní úroveň a zbývající pravidla pak jsou chápána jako výjimky z této úrovně. Implicitní bezpečnostní úroveň může nabývat dvou hodnot: hodnota Disallowed zakazuje spouštět software bez ohledu na přístupová práva uživatele, hodnota Unrestricted znamená, že schopnost spouštět software závisí na přístupových právech uživatele. Pokud administrátor ví, že na počítači bude moci uživatel spouštět jen několik přesně definovaných aplikací, nastaví bezpečnostní úroveň na hodnotu Disallowed, tím zakáže spouštět jakýkoli software4 a pomocí dalších pravidel povolí spouštět jen požadované aplikace. Pokud administrátor dopředu neví jaký software bude třeba spouštět, nastaví bezpečnostní úroveň na Unrestricted a pomocí dalších pravidel začne software zakazovat.
3
http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/rstrplcy.mspx
4
Existují ale důležité výjimky. SRP se nevztahuje na ovladače a software pracující v režimu jádra, na programy spuštěné některým z účtů System, Local Service a Network Service, ani na makra MS Office, která by se měla chránit digitálním podpisem.
Obr. 1: Nastavení SRP pomocí konzoly Local Security Settings Kromě implicitní bezpečnostní úrovně existují čtyři další typy pravidel, které se liší způsobem identifikace softwaru. Jedná se o pravidlo obsahující hash hodnotu, certifikát, cestu a zónu Intenetu. Hash hodnota jedinečně identifikuje soubor bez ohledu na to, jak se jmenuje, nebo kde se právě na disku nachází. Podobně je tomu i v případě certifikátu. Ten lze ale použít jen u takového softwaru, který je možné digitálně podepsat. Typicky se jedná o ActiveX komponenty nebo skripty, které organizace využívá. Asi nejčastěji používaným pravidlem je pravidlo obsahující cestu (viz. obr. 2). Může jít o fyzickou adresářovou cestu, o UNC cestu5 nebo o cestu uloženou v registru. Pokud cesta určuje adresář, bude pravidlo platit pro veškerý software v tomto adresáři a v adresářích v něm vnořených. Cesta může obsahovat i systémové proměnné, takže ji lze přizpůsobit například právě přihlášenému uživateli. Jen je nutné si uvědomit, že systémová proměnná není chráněna přístupovými právy, takže uživatel, který je schopen spustit příkazový řádek, může její obsah dle libosti změnit. Cesta může obsahovat i zástupné znaky „?“ a „*“. Například pravidlo „*.vbs“ identifikuje všechny soubory obsahující VBScript.
Obr. 2: Ukázka SRP pravidel Některé aplikace si své instalační adresáře ukládají do registru Windows. V takovém případě je možné vytvořit cestu, která bude obsahovat odpovídající klíče registru. Na obrázku 2 jsou čtyři takové cesty, které se vytvoří automaticky, jakmile začne administrátor konfigurovat SRP na 5
UNC – Uniform Naming Convention označuje cestu k prostředku v MS síti. UNC cesta má tvar //jméno_počítače/jméno_sdíleného_prostředku
lokálním stroji. Je patrné, že cesta v registru musí být ohraničena znakem „%“. Pravidla uvedená na obrázku pak definují toto: lze spouštět programy v adresáři C:\Windows, dále všechny EXE soubory tamtéž, všechny EXE soubory v adresáři C:\Windows\System32 a všechny programy v adresáři C:\Program Files. Mezi několika pravidly obsahujícími cestu má přednost to pravidlo, které je nejvíce specifické, které software nejpřesněji určuje. Pravidlo obsahující zónu Internet Exploreru slouží k identifikaci softwaru přicházejícího z odpovídající zóny. Bohužel ho lze v současnosti použít jen pro jediný typ softwaru – pro instalační soubor s příponou *.MSI a nikoli pro libovolný software stažený prostřednictvím Internet Exploreru. Všechna pravidla jsou vyhodnocována v pevně stanoveném pořadí: 1. pravidlo s hash hodnotou, 2. pravidlo s certifikátem, 3. pravidlo obsahující cestu, 4. pravidlo obsahující zónu Internetu a nakonec 5. implicitní úroveň bezpečnosti. Uplatňování pravidel mohou modifikovat ještě další okolnosti. V části Enforcement lze nastavit, zda se mají pravidla uplatnit na veškerý software včetně spouštěných DLL knihoven, nebo zda se mají DLL knihovny vynechat, což umožní rychlejší vyhodnocení. Také je možné stanovit, že pravidla se týkají všech uživatelů bez výjimky nebo všech kromě administrátorů. Část Designated File Types definuje pomocí přípon souborů, co je vlastně považováno za software. Politika omezující spouštění softwaru není schopná zabránit například červům ve využití existujících bezpečnostních děr. Stále je tedy potřeba pravidelně systém záplatovat. Pokud ale chce červ existující slabinu využít ke spuštění dalšího kódu, tomu už vhodným pravidlem zabránit lze. Pomocí pravidla obsahujícího cestu „*.???.EXE“ lze jednoduše zakázat spouštění souborů s dvojitou příponou jako je CELEBRITA.JPG.EXE, které využívají faktu, že typický uživatel má skryté přípony známých typů souborů. Jednoduše lze zakázat i spouštění příloh elektronické pošty nebo softwaru staženého prostřednictvím Internet Exploreru. V takovém případě se totiž software nejprve uloží do některého z adresářů v uživatelském profilu a odtud se pokusí spustit. To však znemožní vhodné pravidlo obsahující systémovou proměnnou %USERPROFILE%.
Závěr Politika omezující spouštění softwaru je účinný nástroj, při jeho praktickém použití se ale narazí na několik nedostatků6. Především sestavení pravidel tak, aby pokrývala nejčastejší způsoby útoku, ale neznemožňovala na počítači pracovat, může být velmi obtížné. V jednom okamžiku začne být pravidel příliš mnoho a téměř se nedá vyhodnotit, jak se budou s ohledem na priority a specifičnost uplatňovat. K odstraňování problémů lze sice použít záznam událostí, při kterých k uplatnění SRP pravidel došlo, a také nástroj vyhodnocující výslednou politiku na počítači Resultant Set of Policy (rsop.msc), ale ještě lepší by bylo, kdyby Microsoft nějaké vhodné počáteční sady pravidel nabídl.
Biography Ing. Milan Jirsa Vystudoval Vojenskou akademii v Brně, kde od roku 1992 působí jako odborný asistent. V současnosti se věnuje www technologiím, použití jazyka XML a bezpečnosti serverové řady Windows. Získal certifikáty MCSE a MCT.
6
http://mcpmag.com/columns/article.asp?EditorialsID=690
Management summary Pravidla omezující spouštění softwaru (Software Restriction Policy) ve Windows XP a Windows 2003 představují poměrně málo využívanou možnost v boji proti škodlivému kódu. V článku je uvedeno několik typických způsobů, jak se tato pravidla dají využít.