Jak omezit spouštění nebezpečného kódu

Transkript

Jak omezit spouštění nebezpečného kódu
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, AS­Pack, 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 Ad­aware, 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 e­mailové 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.