Hlídejte si svá data - jak na bezpečnost Windows 2000

1. 6. 2003

Sdílet

Windows se stala rozšířeným systémem nejen pro pracovní stanice uživatelů, alev poslední době i v oblasti serverů. To s sebou samozřejmě přináší rizika i co se týče bezpečnosti. ...

Windows se stala rozšířeným systémem nejen pro pracovní stanice uživatelů, ale
v poslední době i v oblasti serverů. To s sebou samozřejmě přináší rizika i co

se týče bezpečnosti. A právě na to, jak je to s (ne)bezpečností systému Windows

nasazeného jako serveru, se podíváme v dnešním článku. Článek je určen zejména

pro začínající správce a má jim poskytnout úvod do bezpečnosti Windows jako

serveru.





Windows jako server



Jak již bylo řečeno v úvodu, začínají se systémy Windows prosazovat i v oblasti

serverů. To má několik příčin, ale tou hlavní je samozřejmě uživatelská

přítulnost. Server Windows dokáže nakonfigurovat prakticky každý pokročilý

uživatel systému Windows, který má alespoň základní znalosti o službách a

sítích. Stačí několik kliknutí, a vše funguje. To s sebou však nese i značná

bezpečnostní rizika. Stejně jako i u jakéhokoliv jiného systému platí, že

bezpečnost nedělá systém, ale člověk a většina bezpečnostních incidentů je

způsobena právě lidskými chybami.





Identifikace a analýza



Pro útočníka je životně důležité zjistit, na co vlastně útočí. Proto musí mít

detailní informace o svém potenciálním cíli. Naneštěstí jsou systémy Windows

poměrně sdílné, co se týká poskytování informací. Chce-li útočník napadnout

nějaký firemní server, jeho první kroky nejspíše povedou na webové stránky

příslušné firmy, pokud existují. Z nich lze vyčíst mnoho informací. Pokud jsou

například stránky psány v asp, je jasné, že firemní web běží pod systémem

Windows a pravděpodobně i pod http serverem o společnosti Microsoft. Dále,

pokud stránky poskytují nějakou službu, u níž se předpokládá ukládání údajů, je

pravděpodobné, že na serveru poběží i nějaký databázový server. Ze stránek lze

získat rovněž mnoho užitečných informací, jako například kontakty na správce

sítě, webu atd. Další krok povede téměř jistě na některý vyhledávač.

Vyhledávač, ač se to zdá na první pohled nepravděpodobné, je skvělým

prostředkem v rukou zkušeného útočníka. Lze hledat na stránkách různých firem,

prohledávat diskusní fóra a jinak zjišťovat informace o potenciálním cíli.

Pokud útočník ze zjištěných informací usoudí, že mu cíl stojí za námahu, bude

pokračovat ve sbírání dalších informací. Jeho kroky velmi pravděpodobně povedou

do databáze whois, aby zjistil, jaké IP adresy, doménové servery a jací lidé

mají něco společného s vybraným cílem. Po získání těchto informací přijdou na

řadu aktivní kroky, a těmi jsou skenování systému a identifikace služeb. Je

však třeba upozornit, že všechny tyto kroky útočník dělat vůbec nemusí, pokud

se snaží útočit zevnitř sítě. Všechny tyto informace mu budou zajisté známy a

navíc bude vědět, jak systém pracuje, jaké služby se používají. Útočníci z

vlastních řad jsou tudíž daleko nebezpečnější než ti zvenku a mohou způsobit

mnohem víc škod. Cílem útočníka zvenku je právě přístup do vnitřní sítě, a tak

se zaměříme na kroky, které k tomu musí udělat.



Nyní tedy k aktivním krokům průzkumu, jimiž jsou skenování a identifikace

služeb. Pro tento účel existuje spousta nástrojů. Jelikož se pohybujeme na

platformě Windows, ukážeme si nástroje určené právě pro tyto systémy. Zřejmě

jedničkou v oboru je nástroj NetScanTools Pro (zkušební verze je k dispozici na

stránkách http://www.netscantools.com). Možnosti, které nám tento nástroj dává

k dispozici, jsou opravdu široké, jak vidíte na obrázku. Nevýhodou tohoto

produktu však je, že není k dispozici zdarma.



Pokud se vám nechce platit, můžete sáhnout po jiném nástroji, jímž je SuperScan

od společnosti Foundstone, Inc. (http://www.foundstone.com). Tento program nemá

tak široké možnosti jako NetScanTools, je však rychlejší a je zdarma. Ideální

kombinací obou dvou je nástroj CyberKit

(http://www.networkingfiles­.com/PingFinger/Cyber-Kit.htm), který je rovněž k

dispozici zdarma a obsahuje základní nástroje pro diagnostiku sítě.



Nyní tedy již k samotnému skenování. Pro útočníka je důležité vědět, jaké

služby na serveru běží. Proto bude pravděpodobně začínat skenováním portů. K

tomu může použít jeden z výše uvedených nástrojů. Systémy Windows standardně

poslouchají na několika portech, a podle toho jsou také snadno

identifikovatelné. Pokud tedy budou otevřené porty 135 až 139 nebo 445, jde

téměř jistě o systém Windows. Tyto porty používá protokol NetBIOS, který je v

systémech Windows využíván nejčastěji. Systémy Windows lze podle těchto portů

identifikovat i podle jejich verze. Např. Windows 9× nenaslouchají na portu

135, naopak Windows 2000 jako jediná naslouchají na portu 445. Dále existuje

několik standardně využívaných služeb, které běží na známých portech. Mezi tyto

služby patří např. http server na portu 80, SMTP server na portu 25, DNS server

na portu 53, FTP server na portu 21, MSSQL na portu 1433 až 1434 a Windows

terminal server na portu 3389. Pokud se podaří útočníkovi zjistit služby, které

na serveru běží, dost možná bude chtít zjistit i jejich verzi a další

informace, jež o sobě tyto služby poskytují. Ideálním nástrojem pro tuto

činnost je Netcat

(http://www.atstake.com/re­search/tools/index.html#net­work_utilities).



Tento nástroj je k dispozici pro systémy Windows i pro UNIX. Nástroj je řádkově

orientovaný a dá se přirovnat k švýcarskému noži, který by měl patřit do výbavy

každého, kdo se zajímá o bezpečnost IS. Řada služeb, jako například IIS server,

o sobě poskytuje mnoho informací, které mohou útočníkovi velmi pomoci. Obrana

proti poskytování těchto informací není vůbec snadná, jako je tomu např. u

systému UNIX, kde můžeme tyto informace libovolně modifikovat. Nyní se tedy

podíváme na protokol, který je v systémech Windows využíván nejčastěji, a tím

je SMB/CIFS.





Protokol SMB/CIFS



Jak již bylo řečeno, je protokol SMB/CIFS nejčastěji využívaným protokolem v

sítích Windows. Tento protokol je relativně starý, ale prošel řadou inovací a

změn. Přesto je zmíněný protokol stále velmi nebezpečný a při špatném nastavení

poskytuje o systému velmi mnoho informací. Cílem útočníka bude zjistit, jak

jsou počítače logicky uspořádány a pojmenovány. Máme tím na mysli zejména

pracovní skupiny, domény, doménové stromy a doménové lesy. K tomuto průzkumu

útočník nebude potřebovat žádné speciální nástroje, vystačí si s nástroji

dodávanými standardně se systémem Windows. Mezi tyto nástroje patří například

program NetView. Tento nástroj je velmi jednoduchý, znakově orientovaný, avšak

velmi účinný. Pomocí příkazu netview /domain lze zjistit všechny domény v síti.

Pokud bude chtít útočník získat výpis z počítačů náležejících do jedné z domén,

použije příkaz netview /domain:název_domény. Stejnou práci vykoná i nástroj

Okolní počítače, avšak není tak rychlý a jeho výstup nelze dále zpracovávat

(skripty atd.). Cílem každého útočníka bude pravděpodobně řadič primární

domény. Tento počítač shromažďuje informace o všech počítačích v doméně, může

řídit jejich činnost a většinou obsahuje údaje, které se snaží útočník získat.



Dalším krokem útočníka bude inventarizace sdílených prostředků. Systémy Windows

standardně nabízejí několik položek, na které může směřovat útok. Těmito

položkami jsou IPC$, Netlogon, Admin$, C$. Ideálním nástrojem pro průzkum

sdílených prostředků je DumpSec od firmy Somarsoft (http://www.somarsoft. com).

Tento nástroj využívá k průzkumu tzv. prázdnou relaci. Jistě si říkáte, že tyto

informace by neměly být volně k dispozici. Nyní si tedy řekneme, jak tomuto

úniku informací zabránit. Nejsnazší je vypnutí protokolu SMB/ CIFS. Tento

protokol lze blokovat na hraničním firewallu, pokud chcete omezit přístup k

těmto službám zvenčí. Nechcete-li tyto služby používat ve vnitřní síti, budete

je muset vypnout na všech strojích. Pokud se těchto služeb nechcete vzdát, ale

zároveň chcete zabránit inventarizaci, pozměňte v registrech klíč HKLM\SYSTÉM

\CurrentControlset\Control\LSA\Res­trictanonymous a jeho hodnotu změňte na dva.

Pokud používáte Windows 2000, můžete pomocí modulu Bezpečnostní zásady

aplikovat toto nastavení na všechny podřízené objekty Active Directory.



Poté, co útočník zjistí všechny údaje, které jsou mu k dispozici, má na výběr

několik věcí. Pravděpodobně se však bude snažit získat uživatelský účet na

některém systému. Může k tomu použít více nástrojů, lze ovšem předpokládat, že

nejdříve vyzkouší známé účty a známá hesla. Mezi tyto účty patří účty vestavěné

do systému Windows, jako například účet Guest, Administrator atd. Známá hesla

jsou taková, která se například shodují s názvem účtu, s něčím jménem, nebo

heslo není vyžadováno vůbec. Situace častější, než se může zdát. Kolik z vás se

přihlašuje do systému Windows bez hesla a má práva administrátora? Kolik lidí

má na svém systému vypnut účet Guest nebo má jiné heslo u toho účtu, než je

prázdné heslo nebo heslo guest? To zkušenému útočníkovi může stačit na to, aby

do systému vstrčil pomyslné dva prstíky a později jej celý zdiskreditoval.

Pokud však na žádná taková hesla nepřijde, bude zřejmě následovat slovníkový

nebo podobný útok. Databázi často používaných hesel lze na internetu celkem

snadno získat. Následná aplikace je velmi prostá. Lze k tomu použít spoustu

speciálních nástrojů, jako např. NAT nebo SMBGRind. Zkušenější útočník si

vystačí i s příkazovou řádkou a jejími vestavěnými funkcemi. Útočník má však

ještě další možnost, a tou je sledování síťového provozu. Síťový provoz v rámci

protokolu SMB/CIFS může být velice účinným zdrojem informací, zejména pro

útočníka. Nejzajímavější budou pro útočníka jistě ověřovací údaje. K tomu lze

použít nástroje L0phtcrack (http://www.atstake.com/research/lc/). Nástroj by

měl mít, stejně jako netcat, ve výbavě každý, kdo se zabývá bezpečností systémů

Windows. Tento nástroj sloužil primárně ke crackování systémových hesel systému

Windows, umí však crackovat i hashe, které slouží k ověřování v sítích Windows.

Tyto hashe lze zachytávat pomocí libovolného snifferu, lze však použít i

vestavěný modul L0phtcracku, jímž je SMBCapture. Tento modul sleduje síťový

provoz a zachycené údaje předává přímo crackovacímu nástroji, takže máte tzv.

vše v jednom. Crackování hashů je pak podle složitosti hesla otázkou času.

Nejlepší obrana je tedy protokol SMB/CIFS nepoužívat, což není vždy možné,

proto se podíváme, jak se takovým útokům bránit.



První zásada je používat složitá hesla. Jak však to však vynutit i u ostatních

uživatelů? S pomocí systému Windows celkem lehce. Otevřete si v Ovládacích

panelech položku Místní nastavení zabezpečení a zde přejděte na položku Zásady

účtu. Zde pak povolte, aby heslo splňovalo požadavky na složitost. Rovněž se

můžete bránit tak, že nastavíte, aby se heslo po zvoleném počtu špatných pokusů

o přihlášení automaticky zamknulo. U této direktivy však buďte opatrní, neboť

může velice snadno dojít k uzamčení všech účtů a vlastně tak dojít k útoku typu

DoS (odmítnutí služby), protože útočník, jenž zná jména uživatelských účtů,

může všechny účty snadno zamknout a rovněž uživatel, který si splete heslo,

může svůj účet zamknout. Vy pak budete mít plné ruce práce s opětovným

odemknutím všech účtů. Lze rovněž nastavit, po jaké době se heslo odemkne, což

ale není příliš šťastné řešení, protože to útočníka nezastaví, nanejvýše

zpomalí. Proto je lépe vynutit používání silných hesel, která nebudou snadno

uhodnutelná. To docílíte již zmiňovaným způsobem, ale můžete rovněž udělat

osvětu mezi uživateli a vysvětlit jim, jak vypadá správné heslo. Stejně tak je

dobré chybné pokusy o přihlášení logovat a logy pravidelně kontrolovat a

analyzovat. Pokusy o průlom odhalíte snadno a lehce je rozeznáte od špatných

přihlášení legitimních uživatelů. Je rovněž dobré vypnout účty, které nejsou

používané.





Účet administrátora



Pokud se i přesto podaří útočníkovi nějakým způsobem proniknout do vašeho

systému nebo sítě, lze předpokládat, že se nesmíří jen s uživatelským účtem.

Určitě bude chtít svá privilegia rozšířit, nejlépe rovnou na úroveň

administrátora. V sítích, kde jsou k dispozici domény Windows, jsou doufám tato

rizika všem jasná. Jak se ovšem může útočník stát administrátorem? Má k

dispozici několik nástrojů. Mezi oblíbené patří například PipeUpAdmin

(http://content.443.ch/pub/se­curity/blackhat/WinNT%20an­d%202K/pipeup/). Ten po

spuštění přidá zvolený účet do skupiny Administrators. Naštěstí tuto chybu řeší

záplata od Microsof-tu, ale ne každý má systém aktualizovaný. Podobné chyby se

však objevují poměrně často, a tudíž si nemůžete být nikdy jisti tím, že se

někomu nepodaří eskalovat svá privilegia. Proto bedlivě sledujte bezpečnostní

věstníky Microsoftu a včas aplikujte příslušné záplaty. Nejlepší obranou je

samozřejmě útočníka do systému vůbec nepouštět.





Vzdálená správa



Pokud se útočníkovi podaří do systému proniknout a zvýšit svá práva na úroveň

administrátora, pravděpodobně si bude chtít nad systémem udržet kontrolu a

vzdálený přístup. Ten může realizovat pomocí různých programů a služeb.

Jednoduchou možnost, jak přistupovat do systému, nabízí například služba

Telnet. Ta je součástí systému Windows a na mnoha systémech je zapnutá, čímž si

správci zjednodušují život. Bohužel ho zjednodušují i útočníkovi, protože

Telnet je služba, která by již v dnešní době neměla mít na systému co dělat.

Bohužel Windows nenabízejí standardně šifrovaný nástroj, jako například ve

světě UNIXu běžně používaný SSH. Proto Telnet vypněte a sledujte, zda není

aktivní. To by mohlo znamenat, že si někdo udělal zadní vrátka do vašeho

systému. Dalším nástrojem je remote.exe, který je součástí Ressource kitu.

Jiným ideálním nástrojem pro správu z příkazového řádku je například i nástroj

netcat. Ideálním a jistě pohodlnějším je však pro útočníka ovládání systému z

grafického uživatelského rozhraní (GUI). K tomuto účelu se ideálně hodí

například VNC nebo nástroj podobného typu. Ten umožňuje útočníkovi pracovat v

grafickém rozhraní přesně tak, jako kdyby seděl přímo před monitorem počítače.

Může tak systém s Windows ovládat z grafického prostředí UNIXu, neboť VNC je k

dispozici i pro tuto platformu.



Jaká je tedy nejlepší obrana proti vzdálené správě a vzdálenému ovládání

systému? Stejně jako v předchozích případech, i zde platí, že nejlepší obranou

je útočníka do systému vůbec nepouštět. Pokud si chcete ověřit, zda na vašem

systému neběží nějaká služba, která by umožňovala vzdálený přístup, proskenujte

svůj počítač a všechny nestandardní porty, o kterých víte, že by se ve výpisu

objevovat neměly, důkladně analyzujte a později zakažte.







IIS5



Http server společnosti Microsoft je jednou z nejvíce napadaných aplikací na

platformě Windows. Přesto jej používá stále víc lidí. Existují stovky možností,

jak využít konkrétních chyb daného produktu. Nemá cenu zde všechny chyby a

útoky podrobně vysvětlovat. Povíme si čeho se mohou chyby týkat, jaké mohou mít

důsledky, jak se proti nim bránit. První skupina útoků může směřovat na

vyřazení serveru z provozu. To lze učinit například špatným požadavkem URL.

Takových chyb již bylo objeveno mnoho a jistě není příjemné, když vám každých

pět minut někdo shodí váš systém. Druhá skupina útoků směřuje k odhalení

zdrojového kódu aplikací napsaných například v asp.net nebo asp. Tyto zdrojové

kódy mohou obsahovat spoustu důležitých informací, jako například hesla k

databázovému serveru, uživatelská jména a hesla nebo poznámky programátorů, jež

mohou být pro útočníka velice cenné. Třetí skupina útoků se zaměřuje na

souborový systém, který je na systému, kde server IIS běží. Bylo rovněž

odhaleno několik chyb, jež umožňovaly procházet souborovým systémem. Nyní si

tedy povíme, jak se v obecné rovině bránit útokům na IIS. Tyto rady jsou

univerzální a měly by velmi výrazně přispět k bezpečnosti systému. Velmi dobrým

nápadem je umístit složku, kde jsou vaše skripty, na jednotku jinou, než na

jaké se nachází váš systém. Většina známých chyb, které umožňovaly procházet

souborovým systémem nebo spouštět systémové příkazy, neumožňovala přeskakovat z

jedné jednotky na druhou. Nikdo vám sice nezaručí, že příští chyba toto umožní,

nicméně je to lepší opatření než žádné. Na jednotce, kde budou umístěny vaše

skripty, nepoužívejte systémový soubor FAT a práva nastavte velmi restriktivně,

což znamená, že by nikdo krom uživatele, pod kterým běží IIS, neměl mít právo

na spuštění nebo zápis. Všechny události pečlivě protokolujte a analyzujte.

Rovněž sledujte všechny bezpečnostní opravy, a záplaty neprodleně aplikujte.

Známý červ CodeRed se šířil v době, kdy se již měsíc vědělo o chybě v IIS. Jeho

šíření tedy v podstatě umožnili neschopní a nezodpovědní administrátoři.





SQL server



Přestože existují i jiné databázové produkty, je SQL server od společnosti

Microsoft stále velmi využívaným nástrojem pro ukládání dat. Oblíbený je

zejména ve spolupráci s IIS v prostředí HTTP://WWW. Bohužel i SQL server s

sebou nese bezpečnostní rizika, která je třeba mít na zřeteli a dávat si na ně

pozor. Jeden okruh problémů tvoří uživatelská jména a konta. Na ty si je třeba

dávat pozor zejména. Většina vývojářů se totiž nějakou autentizací neobtěžuje a

používá prázdná hesla. Tato prázdná hesla používá zpravidla i pro účet správce

serveru SQL (sa). Tato hesla zůstanou bohužel často zachována i při přechodu

aplikace do ostrého provozu. Útočníkovi pak stačí napsat libovolný skript v

jeho oblíbeném jazyce ASP, VB, PHP, Perl… a může se pustit do pátrání po

serverech, které mají prázdné heslo. Takových serverů je v sítí víc, než by se

dalo čekat. Proto vždy dobře zabezpečte uživatelské účty a pravidelně je

kontrolujte. Dalším rovněž hluboce rozšířeným zlozvykem je poskytnout plný

přístup k databázi všem uživatelům a neobtěžovat se zřízením uživatelských účtů

s jasně vymezeným přístupem k jednotlivým datům. To může být v prostředí WWW

velmi nebezpečné. Posuďte sami, co způsobí více škod, pokud se útočníkovi

podaří získat zdrojový kód stránky a bude zde uvedeno jméno a heslo uživatele s

plným přístupem k databázi, nebo pokud zjistí jméno a heslo uživatele, který má

přístup pouze k datům, jež jsou zobrazena na stránce WWW, a má přístup jen pod

heslem. Dobrým nápadem je rovněž nespouštět SQL server pod účtem

administrátora. Sice je to docela pracné, ale určitě se vám to vyplatí.

Důležité je rovněž to, jak SQL server po síti komunikuje. Standardně používá

šifrovací mechanismus XOR, který, jak jistě sami uznáte, není pro prostředí

sítě tím ideálním. Proto uvažujte o zavedení SSL modulu, jenž bude veškerou

komunikaci šifrovat, nebo o nasazení IPSecu. Oboje není snadné, ale pokud to s

bezpečností myslíte vážně, nic jiného vám nezbude. Důležitá je rovněž

pravidelná aplikace záplat, stejně jako u jakéhokoliv jiného produktu.





Obecné rady pro zabezpečení



Neexistuje žádná obecná rada, jak zabezpečit systém Windows. To vždy záleží na

podmínkách, možnostech a požadavcích. Existuje však několik obecných kroků,

které k bezpečnosti systému výrazně přispějí. V úvodu bylo řečeno, že

bezpečnost systému dělají lidé. Proto jsou nejúčinnější zbraní v boji proti

útočníkům znalosti. Sledujte proto konference o bezpečnosti a čtěte literaturu

na toto téma. Pokud máte například kapesní počítač, navštivte stránku

http://www.memoware.com a stáhněte si příručky o bezpečnosti. Nelze však

studovat pouze bezpečnost. Abyste zabezpečili svůj systém, musíte mu dobře

rozumět a chápat všechny jeho vlastnosti a schopnosti. Je-li počítač v síti, je

rozumět i síťové komunikaci a chápat její principy.



Dalším krokem je sledovat současné dění v oblasti a být včas informován o všech

incidentech a chybách, které se objeví. Poté logicky vyvstává nutnost včas a

správně aplikovat všechny bezpečnostní záplaty a opravy.





Nápady, dotazy, návrhy témat, jež vás zajímají zasílejte na adresu

igm@centrum.cz. Na vaše dotazy k této problematice se pokusíme najít odpovědi.