Sociálne siete

SecIT.sk na Facebooku SecIT.sk na Google+ SecIT.sk na Twitteri

Podporte nás


V prípade, že Vám obsah nášho portálu niekedy nejakým spôsobom pomohol, či bol pre Vás prínosom prosím podporte jeho chod ľubovoľnou čiastkou. Ďakujeme!

Štítky

Vyhľadávanie

You are here

Domov
Upozornenie: Obsah je licenčne chránený a bez písomných súhlasov autora článku a vlastníka webovej stránky nesmie byť v žiadnej forme ďalej kopírovaný a šírený v pôvodnom, či v akokoľvek upravenom stave.

Rootkit - co, jak a proč

Tento článek je určen těm z vás, kteří se v operačním systému příliš nevyznaji, chtějí mít dobré povědomí o bezpečnostních hrozbách, ale nechtějí rozumět jeho mechanismům "až na plech". Protože vím, že ne každý má čas na prozkoumávání hlubin svého systému, rozhodl jsem se napsat tento článek, jehož cílem je přiblížit každému uživateli pojem rootkitu - populární hrozby dnešních dní.

Co je to rootkit?

Pod pojmem "virus" si každý z nás představí program, který se nám pokouší uškodit - zpomaluje počítač, snaží se nám ukrást různé citlivé údaje, jako jsou přihlašovací údaje do nejrůznějších služeb (mj. i bank) nebo umožňuje náš počítač využít pro útoky na hackerům nepohodlné servery. Jistě vás napadnou i další možnosti, jak by mohl být váš počítač zneužit.

Rootkit (tak, jak tento pojem chápeme dnes) není v základu škodlivý, ale protože jej mnoho virů jako jednu ze svých komponent obsahuje, škodlivým se stává. Jeho cílem je skrýt svoji přítomnost v sytému před uživatelem a dalšími aplikacemi, což uživateli nepůsobí žádnou škodu (pokud je rootkit dobře napsaný). Nádavkem se snaží také zamést stopy po programech (většinou virech), jak si jeho autor přeje. Stává se tedy jakýmsi pláštěm neviditelnosti pro běžný virus.

Proč je rootkit takovým problémem?

Pokud útočník přibalí ke svému viru i rootkit, virus může být velmi těžké odhalit běžnými postupy, antivirové programy nevyjímaje. Tento fakt je dán tím, jak antivirové programy (a většina dalších aplikací) fungují. Podívejme se na zjednodušené schéma architektury operačního systému:

Vidíme, že obyčejné aplikace s operačním systémem komunikují přes vrstvu DLL knihoven. Až z této vrstvy je voláno jádro systému, aby vyřídilo požadavek specifikovaný aplikací. Mezi běžné aplikace můžeme zařadit i antivirové programy, pokud na věc budeme nahlížet velmi zjednodušeně. Úkolem jádra je komunikovat přímo s hardwarem a zajišťovat různé služby aplikacím. Všimněte si nejspodnější verstvy - HAL. Tato vrstva vytváří abstrahující obal, který v sobě ukrývá závislost na hardwaru. Díky tomu je většina kódu jádra přenositelná i na jiný hardware (například jiný procesor než oblíbený Intel Pentium). Vyšší vrstvy se vůbec nemusí zajímat, na jakém "železe" běží. Ale to byla odbočka, vraťme se k tématu.

Jak bude diagram vypadat u systému, který je napadený rootkitem? Na libovolnou z čar si můžeme domyslet obdélníček s nápisem "rootkit" - čímž se dostáváme k tomu, jak tyto pláště neviditelnosti fungují. Princip je velmi jednoduchý - prostě se filtruje (naruší, pozmění) komunikace mezi komponentami operačního systému.

Chce-li například rootkit skrýt daný proces ze správce úloh, nabourá se do komunikace mezi vrstvou DLL knihoven a jádrem a čeká. Když jádro na dotaz nějakého programu pošle jako odpověď seznam běžících procesů, rootkit jej hbitě upraví tak, aby v něm daný proces nebyl. A nikdo se nic nedozví...

Víme tedy, jak rootkit funguje a také si snadno domyslíme, proč s ním mívají antivirové programy takové problémy. Antivirové programy jsou vcelku běžné aplikace, využívají rozhraní systémových knihoven jako skoro každý jiný program. Protože však rootkit (většinou) operuje na nižší vrstvě, než je systém DLL knihoven, nemohou jej v principu najít. Praxe bývá trošku odlišná, protože skrýt dobře nějaký objekt v systému vyžaduje značné úsilí (rootkit musí nebezpečí odhalení čelit doslova na všech frontách a občas autor na nějakou z nich zapomene, nebo se postupně objeví fronty nové).

Jaké techniky často používají

Nyní si zběžně ukážeme několik postupů, kterých většina rootkitů využívá k implementaci své neviditelnosti.

Modifikace kódu je velmi častým úkazem. Rootkit modifikuje kód operačního systému (většinou se jedná o knihovny DLL či jádro operačního systému) tak, aby mohl úspěšně narušovat komunikaci jednotlivých součástí. Scénář volání postižené DLL knihovny vypadá většinou tak, že modifikovaný kód předá řízení (neviditelným) modulům rootkitu, který většinou zavolá originální kód modifikované DLL knihovny, analyzuje a modifikuje výsledky a vrátí opět řízení programu, který danou knihovnu zavolal. Tomuto mechanismu se někdy také říká hákování (hooking). Modifikovat kód lze téměř všude - v DLL knihovnách, v jádře, v ovladačích zařízení... Většina pokročilejších rootkitů preferuje modifikace kódu jádra, protože je to v jistém smyslu jednodušší než hákovat vrstvu DLL knihoven, kterou je třeba modifikovat v každém procesu. Hákování je technika velmi efektivní, ale má i své mínusy. Obtížnost detekce silně závisí na tom, kolik úsilí vloží autor rootkitu do její implementace. "Zahákovat" nějakou rutinu je otázka několika málo minut, avšak taková modifikace bude velmi snadno odhalena.

Modifikace dat operačního systému je druhým postupem, který se využívá. Systém uchovává mnoho cenných a citlivých informací (seznam běžících aplikací, seznam otevřených souborů, seznam bloků volné paměti...) ve svých interních datových strukturách. Rootkit tyto datové struktury modifikuje a tím se některé informace "ztratí". Většinou tato modifikace datových struktur není úplně triviální. Například pokud by rootkit před operačním systémem dokonale skryl určitý proces, proces by nedostával čas na procesoru, a tudíž by nevykonával žádný kód. A mrtvý skrytý proces se k mnoha věcem použít nedá. Na(ne)štěstí informace bývají uloženy redundantně (každá kopie informace je využita jinou částí operačního systému) v různých podobách, aby k nim mohl systém rychle přistupovat. Implementace některých takových struktur přitom dovoluje jejich modifikaci, aniž by bylo možné nějakým způsobem zjistit, že k ní došlo. A to je právě velká výhoda této techniky - pokud se provede opravdu dobře, změny nejsou viditelné. Nevýhodou je značná složitost na implementaci (až na výjimky nelze použít jinde než na úrovni jádra operačního systému). Krom toho je většina struktur operačního systému nedokumentovaná. Autor rootkitu tedy musí nejdříve posbírat dostatek informací, coz často má netriviální časové nároky.

Jak se bránit

Na obranu proti rootkitům byl vyvinut speciální druh aplikací, pro které se překvapivě ujal termín antirootkity. Jejich cílem je objevit (a případně zničit) aktivní rootkit. A jak to dělají? Myšlenka je opět velmi jednoduchá - snaží se býti nezávislé na rozhraní, která jim operační systém poskytuje. Například nevyužívají služeb vrstvy DLL knihoven, ale volají přímo jádro operačního systému. Drtivá většina z nich instaluje do jádra vlastní ovladače, které zkoumají konzistenci jeho datových struktur, případně umožňují antirootkitu obejít další (potenciálně narušená) rozhraní jádra operačního systému. Čtou přímo sektory z disku, místo toho, aby využili pohodlných rozhraní ovladačů souborového systému. Přítomnost rootkitu zjišťují většinou tak, že se pokusí určitou informaci (například seznam běžících procesů) získat více (pokud možno nezávislými) způsoby. Pokud se získaná informace v závislosti na zdroji liší, je pravděpodobně v systému aktivní rootkit.

Závěr

Je to začarovaný kruh. Autoři rootkitů přicházejí s novými postupy, jak schovat svůj kód a svoje data před očima uživatele. Antirootkity se neustále vyvíjejí, aby byly schopny nové postupy odhalit. Ani Microsoft v tomto ohledu nezahálí a nové verze jeho operačního systému autorům rootkitů (a jiného škodlivého softwaru) značně komplikují život. Narážím teď zvláště na bezpečnostní opatření zavedená na 64bitových operačních systémech. Nesmíme však usnout na vavřínech, ti na druhé straně se budou pořád snažit najít cestičku, jak překonat všechny překážky... a je bláhové předpokládat, že se jim to nepodaří.

Komentáre

pěkný článek. díky.

Podporte nás


Páčil sa Vám tento článok? Ak áno, prosím podporte nás ľubovoľnou čiastkou. Ďakujeme!


ITC manažer Security-portal.cz Soom.cz
Hoax.cz Crypto-world.info