Skrývání věcí na platformě Windows: Registr Windows

Windows Pokročilé Skrývání věcí na platformě Windows: Registr Windows

V tomto miniseriálu se převtělíme do role útočníka. Nebude nás ale zajímat, jak se do cílového počítače nabourat nebo jak v rámci jeho operačního systému získat dostatečná oprávnění. Předpokládáme, že v tomto ohledu útočník již dosáhl úspěchu a jeho další starostí je se na daném stroji udržet. Popíšeme si několik způsobů, jak skrýt různé aspekty své přítomnosti před uživatelem a přidáme ještě pár ošklivých triků. Tento článek pokrývá první třetinu mojí přednášky na konferenci Hakcerfest 2015.

Jako útočníka nás budou zajímat tři oblasti, kde skrývání dává nějaký smysl: registry, souborový systém a síťová komunikace. Pochopení textu by nemělo vyžadovat žádné speciální znalosti; vše potřebné se pokusím v rámci možností vysvětlit, i když třeba v zjednodušené (a ne úplně pravdivé) podobě.

Registry

Registr Windows lze chápat jako úložiště specializované na uchovávání nastavení všeho druhu. Z logického pohledu se jedná o strukturu podobnou souborovému systému; registr tvoří strom sestávající ze dvou druhů objektů:

  • Hodnot (registry values) sloužících pro vlastní uchovávání dat. Od souboru se hodnota odlišuje zejména tím, že má pevně definovaný typ dat, která v ní lze ukládat (např. celé číslo či řetězec).
  • Klíčů (registry key) plnících roli adresářů. Každý klíč může obsahovat klíče a hodnoty, stejně jako obsah adresáře tvoří další složky a soubory. Klíče tak staví stromovou strukturu registru stejným způsobem jako adresáře u souborového systému.

Na rozdíl od souborového systému je registr specializován na ukládání pouze malých objemů dat. Nedisponuje prostředky, jak například přečíst či změnit pouze část dat určité registrové hodnoty. Vždy pracuje s danou hodnotou jako s celkem. Do jedné hodnoty sice lze uložit i velké množství dat (maximální velikost je omezena na 2 GB), ale práce s nimi bude pomalá a paměťově náročná.

Strom registru je fyzicky uložen v několika souborech na disku a některé jeho části se nacházejí pouze v paměti a při každém startu systému se vytvářejí znovu. Uživatelé registru se o jeho fyzickou strukturu zajímat příliš nemusí, jelikož jej od ní jádro úspěšně odstiňuje.

Pro útočníka patří registr mezi zajímavé oblasti, protože obsahuje velké množství systémových nastavení, případně i nastavení různých nainstalovaných programů. Vhodnou změnou obsahu určitých registrových hodnot lze dosáhnout automatického spuštění programů, donucení aplikací k používání určitých DLL knihoven či načtení ovladače do jádra. Z tohoto důvodu může být pro útočníka zajímavé nejen takové oblasti registru znát, ale i je kontrolovat (například vědět, kdo s nimi právě pracuje). A Windows mu v tomto ohledu vycházejí vstříc.

Data registru jsou ukládána v binární podobě, takže není rozumné je číst či měnit přímo. Pro takové situace existuje program Editor registru (regedit.exe), který dovoluje prohlížet obsah registrového stromu a měnit ho. Informace o významu jednotlivých klíčů a hodnot ale neposkytuje; ty si musí uživatel obstarat sám. Ukázku programu vidíte na obrázku 1. Klíče tvořící stromovou strukturu jsou zobrazeny v levé části okna, pravá slouží k zobrazení seznamu hodnot aktuálně vybraného klíče, jehož celé jméno lze přečíst ve stavovém řádku. O hodnotách se z pravé části dozvíte jméno, typ uložených dat a lidsky čitelné zobrazení těchto dat (konkrétní podoba závisí na typu).

obrazok

Obrázek 1: Editor registru – základní nástroj pro prohlížení a manipulaci

Filtrování operací

Ovladače mohou požádat systém, aby je upozorňoval, kdykoliv nějaká entita s registrem pracuje. Konkrétně takové upozornění dostávají v následujících situacích:

  • těsně před tím, než je daná operace vykonána,
  • těsně poté, co je vykonána (nebo pokus o její vykonání skončí nezdarem).

Z tabulky 1 shrnující možnosti, které ovladačům jádro v oblasti sledování registrových aktivit poskytuje, vidíte, že od Windows Vista má útočník nad registrem téměř plnou kontrolu. Nejenže může operace, které se mu nelíbí, blokovat (entita požadující takovou operaci obdrží chybový kód specifikovaný útočníkem) či měnit jejich parametry a výsledky, ale dokonce je možné dosáhnout emulace – ovladač útočníka se o celou operaci postará sám a na samotný registr nepřijde řada.

Tabulka 1: Možnosti ovladačů ohledně manipulace s registrovými operacemi v různých verzích Windows

Verze OS Monitorování Blokování Změna Emulace
XP SP2/3 Jen před operací ANO NE NE
W2k3 ANO ANO NE NE
Vista a novější ANO ANO ANO ANO

Možnost emulace registrových operací dovoluje útočníkovi nejen efektivně skrývat obsah libovolných klíčů a hodnot před zraky běžících aplikací a ostatních komponent jádra, ale i zpřístupnit obsah, který v registru vůbec neexistuje. Tato schopnost, spolu s faktem, že útočník u každé detekované registrové operace ví, která aplikace se o ni pokouší, dovoluje provádění ošklivostí různého druhu.

Pokud váš překvapuje, že jsme nikde nevedl, jak se výše popisované rozhraní pro filtrování operací nad registrem nazývá, vězte, že bych vám jeho jméno rád prozradil. Bohužel jsem v dokumentaci na nic takového nenarazil. Proto je nejlepší se na něj odkazovat buď přes název funkce sloužící k registraci za účelem filtrování operací (CmRegisterCallback či CmRegisterCallbackEx), nebo označovat ovladače toto rozhraní používající slovním spojením registry filter driver.


 

  Aktivity (1)

Článek pro vás napsal Martin Dráb
Avatar
Autor se věnuje studiu obecné teorie operačních systémů, vnitřnímu uspořádání jádra OS Windows, trochu také matematice a šifrování

Jak se ti líbí článek?
Celkem (10 hlasů) :
4.94.94.94.94.9


 



 

 

Komentáře

Avatar
Člen
Člen
Avatar
Člen:

Vynikajúci článok :) (ako všetky od teba ;) )

Odpovědět  +1 26.10.2015 10:30
...
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.