Blog Archives

VrtuleTree v1.5: Vánoční vydání

Všichni asi víme, čím je počátek zimního ročního období speciální. Ano, jedná se o čas vánoční, což obvykle znamená dávání dárků těm, které známe. Z tohoto pravidla jsem se letos rozhodl udělat malou výjimku a obdarovat i ty z vás, které neznám. Nastal čas veřejně vydat novou verzi aplikace VrtuleTree. Novou verzi jsem se rozhodl […]

Skrývání věcí na platformě Windows 3: Síťová komunikace

I když se útočníkovi podaří usadit na cílovém stroji a do určité míry zamaskovat svoji přítomnost, nemusí mít ještě vyhráno. Obvykle potřebuje s daným strojem komunikovat, nebo z něho alespoň čas od času odesílat data. Vzhledem k tomu, že v dnešní době se mezi počítači komunikuje téměř výhradně po síti (zvláště na větší vzdálenosti než […]

Skrývání věcí na platformě Windows 2: Souborové systémy

V případě skrývání objektů v souborových systémech je situace oproti registru komplikovanější, zejména proto, že celá architektura se skládá z více vrstev a i způsob komunikace mezi jednotlivými aktéry probíhá odlišným způsobem. Než začneme diskutovat aspekty samotného skrývání, je třeba si o o těchto rozdílech trochu více rozepsat. Objekty ovladačů a zařízení Základní kameny v […]

Skrývání věcí na platformě Windows 1: Manipulace s registry

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 […]

Kontrola uživatelských účtů ve Windows: obcházení

V prvním díle minisérie věnované Kontrole uživatelských účtů jste se dozvěděli, jak tento mechanismus funguje a jaké má pro oprávnění běžících aplikací důsledky. Druhý, a současně poslední, díl pojednává o tom, jak tento mechanismus obejít. Na ukýzkový zdrojový kód rovněž nebylo zapomenuto. Implementaci Kontroly uživatelských účtů ve Windows Vista by mnohý uživatel jistě eufemisticky označil […]

Kontrola uživatelských účtů ve Windows: seznámení

Kontrola uživatelských účtů (User Account Control – UAC) je mechanismus představený ve Windows Vista za účelem snížení množství kódu běžícího s administrátorskými právy. V tomto textu se dozvíte, jak tento mechanismus běh s nižším oprávněním zajišťuje, a dostane se i na jeho slabiny. Aplikace překládané pro Windows Vista (pro novější verze to samozřejmě platí také) […]

Security Session 2014

Dnes jsem měl přednášku na konferenci Security Session s názvem Analýza hlavního zaváděcího sektoru a bootovacího procesu Windows 8.1. Podle dosavadních ohlasů se zdá, že se přednáška líbila, čemuž jsem velmi rád. Pokud jste ji navštívili a máte nějaké připomínky či nápady, co zlepšit pro příští ročník Session, nebo na mě máte otázky či poznámky […]

VrtuleTree: takové malé DeviceTree

Před cca půl rokem jsem potřeboval zjišťovat různé interní informace o běžících ovladačích jádra, jejich zařízeních a řetězech těchto zařízení. Jelikož již nějaký ten pátek znám utlitu DeviceTree, která tyto údaje zobrazuje, rozhodl jsem se využít jejích služeb i tentokrát. Ukázalo se však, že DeviceTree na novějších verzích Windows (Vista/7) často tuhne, alespoň v mém […]

Další oprava v projektech ObInit a ObjView

Poslední dobou představuje programování ovladačů a šťourání se v jádře Windows prakticky můj denní chleba. Přibližně před měsícem jsem se rozhodl použít rozhraní pro práci s datovými strukturami Správce objektů (Object Manager), dosud využívané pouze v projektech ObInit a ObjView, i v rámci dalšího projektu. Díky tomuto rozhodnutí došlo k testování některých částí rozhraní, což […]

Ukázka rozhraní OB Filtering Model

Rozhraní OB Filtering Model se objevilo ve Windows Vista Service Pack 1 a klade si za cíl poskytnout programátorům systémů HIPS pomoc při implementaci kontroly přístupů k objektům procesů a vláken. Rozhraní funguje podobně jako leckterá jiná – ovladač voláním rutiny CmObRegisterCallbacks předá jádro operačního systému adresu zpětně volané funkce, které jádro předá řízení, kdykoliv […]

Deskriptory virtuálních adres 4: Reálně se vyskytující deskriptory a závěr

V posledním dílu malého seriálu o deskriptorech virtuálních adres si ukážeme, jakými deskriptory operační systém popisuje paměť alokovanou či rezervovanou pro různé účely, jako je mapování souboru, mapování fyzické paměti pomocí rozšíření AWE či alokace privátních stránek provedená klasickým způsobem. Další části tohoto článku se již deskriptorům virtuálních adres nevěnují. Popisují nástroje, které jsem při […]

Další vylepšení programu Vad

Dnes jsem se rozhodl na těchto stránkách zveřejnit nejnovější verzi utility Vad. Tento krok můžete brát jako předzvěst posledního dílu malého seriálu o dsskriptorech virtuálních adres. Nová verze programu Vad přináší následující změny: Opraveny definice struktur MMVAD_XXX v ovladači vad.sys. Naštěstí chyby neměly vliv na fungování předchozích verzí programu. Ovladač nyní dokáže z deskriptorů zjistit […]

Deskriptory virtuálních adres 3: do nitra deskriptoru

Z minulých dílů seriálu jste se dozvěděli, jak deskriptory virtuálních adres vypadají. Dnešní díl navazuje informacemi o významu některých položek struktur MMVAD_XXX. Velmi zajímavou částí struktur deskriptorů virtuálních adres tvoří pole příznaků. Definují je struktury MMVAD_FLAGS, MMVAD_FLAGS2 a MMVAD_FLAGS3. Krátké deskriptory, reprezentující obvykle privátní paměť procesu, obsahují pouze první a třetí skupinu. Přitom právě příznaky […]

Deskriptory virtuálních adres 2: pod povrchem adresového prosotru

Druhá část seriálu o interní struktuře a reprezentaci privátní části virtuálních adresových prostorů ve Windows. Dozvíte se v ní mimo jiné, co to vlastně ten deskriptor virtálních adres je. Než se pomocí pomyslného vrtáku probouráme pod povrch virtuálního adresového prostoru, dovolím si upozornit, že se dostáváme do málo známých vod jádra operačního systému, které se […]

Deskriptory virtuálních adres 1: virtuální adresový prostor

Každá běžící aplikace disponuje vlastním virtuálním adresovým prostorem. Do jeho horní části operační systém mapuje paměť jádra. Horní poloviny všech virtuálních adresových prostorů jsou téměř identické. Zbývající část (2-3 GB na architektuře IA32, několik TB na 64bitových platformách) může proces využívat k ukládání vlastních dat, mapování souborů a knihoven a dalším účelům, které vás jen […]

Opravené verze projektů ObInit, ObjView a Vad

Nedávno jsem dokončil jednu malou utilitu, kterou bylo nutné otestovat na co nejvíce různých verzích Windows, včetně těch verzí, které se liší pouze číslem Service Packu. Z tohoto důvodu jsem byl nucen kompletně předělat své portfolio virtuálních strojů, které obsahovalo pouze instalace plně aktualizovaných systémů od každé verze (tedy byly například zastoupeny Windows Vista SP2, […]

Testování ovladačů na 64bitových Windows

Pokud si chcete zdrojové kódy nalezené na této stránce spustit na 64bitových verzích Windows, nestačí je pouze zkompilovat či vzít již hotové binárky a zmáčknout ENTER. Jádra 64bitových Windows totiž ve standardním nastavení nedovolují přítomnost ovladačů, které nejsou digitálně podepsané certifikátem od některé z důvěryhodných certifikačních autorit. Toto nastavení je (samozřejmě pouze pro testovací účely) […]