Messing with Boot-time Drivers

Quite recently, one of our customres (the term “our” means Safetica Technologies s.r.o here) reported a strange problem with our software. The problem seemed to be related to one of our kernel drivers and Such troubles tend to land on my virtual desk; this one was no exception. This article describes our investigation that revealed […]

Anglická verze a pár drobností

V poslední době došlo nejen na tomto webu k několika drobným změnám, tudíž by bylo slušné napsat krátký přípsěvek, který je shrnuje. Jedná se zejména o anglickou verzi webu a bezpečnější nastavení webserveru. Anglickou verzi webu jsem plánoval již od počátku (tedy od září 2011), ale nikdy jsem se ndostal k tomu na ní soustavně […]

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

Lehce aktualizovaná podoba webu

Po dlouhé době jsem se rozhodl provést menší změny na tomto webu. Krom lehké úpravy designu je pro vás, návštěvníky, podstatné objevení horního menu, které slouží zejména jako zkratka (není třeba projíždět menu po levé straně stránky). Rozhodl jsem se také přidat ucelené informace o konferencích, kde jsem vystupoval jako přednášející, takže už se nejedná […]

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

SOOM Hacking & Security konference 2013

Dne 15. března proběhl v Praze 2. ročník Hacking & Security konference pořádané serverem SOOM.cz. Musím uznat, že organizátoři zapracovali a co se týče prostředí mi celá akce přišla téměř na profesionální úrovni. Jediné, co mi přišlo trochu slabší oproti minulému ročníku, byla náplň přednášek. Možná je to ale tím, že se tentokrát aktivně nezúčastnil […]

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

Security Session

Z ohlasů na moji přednášku na konferenci Security Session zatím usuzuji, že byla přijata velmi kladně. Dostal jsem ale také konstruktivní kritiku, takže se příště pokusím vynechat pasáže, které na vás, posluchače, se zdály býti příliš technické, nebo vám nepřišly až tak zajímavé jako mně. Opět si můžete stáhnout mojí prezentaci a poznámky, které vznikly […]

Martin Dráb na konferencích

Na počátku února jsem se zúčastnil Hacking & Security konference pořádané serverem SOOM.cz. Z ohlasů na moji přednášku věnovanou implementaci systémů HIPS zatím usuzuji, že se vám líbila. Ohlasů jsem dostal ale relativně málo, takže tento výsledke nelze považovat za zcela objektivní. Pokud byste někdo ještě chtěl sdělit svůj názor na tuto přednášku, budu rád, […]

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

Jak jsem psal knihu

V této stati bych rád přiblížil své zážitky a pocity při psaní knihy. Celý proces od počátku až do vydání trval dva roky a jeden měsíc. Za tu dobu jsem zažil těžké časy, krásné chvíle a přišel o některé iluze. Cesta ke smlouvě: jak to všechno začalo Myšlenka uložení znalostí do delšího textu ve mně […]

Struktura zdrojových kódů

Zdrojové kódy jednotlivých ukázkových programů (a ovladačů) naleznete zabalené v archivech. Tyto archivy mají jednotnou strukturu. Kořenový adresář archivu obsahuje dva podadresáře: bin a src. První z nich uchovává binárky dané ukázkové aplikace (včetně ovladače). Druhý obsahuje všechny zdrojové kódy. Pozor, kompilace neprobíhá automaticky do adresáře bin. V budoucnosti však pravděpodobně všechny projekty nastavím tak, […]

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