Zranitelnosti ovladačů jádra v praxi Martin Dráb martin.drab@email.cz



Podobné dokumenty
Implementace systémů HIPS: historie a současnost. Martin Dráb

Implementace systémů HIPS: ve znamení 64bitových platforem. Martin Dráb

S ovladačem do jádra! Martin Dráb

Bootkity v teorii a praxi. Martin Dráb martin.drab@ .cz

Přednáška. Vstup/Výstup. Katedra počítačových systémů FIT, České vysoké učení technické v Praze Jan Trdlička, 2012

Systém adresace paměti

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Povinně Volitelné a Volitelné předměty INFORMACE & ZÁPIS SIS

Správa zařízení Scan Station Pro 550 a Servisní nástroje zařízení Scan Station

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

P D S - 5 P. Psychologický diagnostický systém. Instalační manuál. Popis instalace a odinstalace programu Popis instalace USB driverů

Řízení IO přenosů DMA řadičem

User Account Control. a jak jej obejít. Martin Dráb martin.drab@ .cz

Metody připojování periferií

MANUÁL K APLIKACI VYČÍTÁNÍ KARET ŘIDIČŮ PŘÍRUČKA PRO UŽIVATELE

Princip funkce počítače

Real Time programování v LabView. Ing. Martin Bušek, Ph.D.

Prostředí pro výuku vývoje PCI ovladačů do operačního systému GNU/Linux

Semestrální práce z předmětu Speciální číslicové systémy X31SCS

Vstupně - výstupní moduly

Archive Player Divar Series. Návod k obsluze

Paměti a jejich organizace

Návod k ovládání aplikace

Struktura programu v době běhu

Paměťový podsystém počítače

Pár odpovědí jsem nenašla nikde, a tak jsem je logicky odvodila, a nebo jsem ponechala odpověď z pefky, proto je možné, že někde bude chyba.

Security-portal konference

Operační systémy 2. Přednáška číslo 2. Přidělování paměti

Sada 2 - MS Office, Excel

Certifikační autorita EET Modelové postupy vytvoření souboru žádosti o certifikát

Instalace a konfigurace web serveru. WA1 Martin Klíma

Souborové systémy Mgr. Josef Horálek

Nápověda a postupy. Instalace a aktivace PDF-XChange Viewer Pro. Instalace a aktivace software. Nápověda a postupy. 1 z

Management procesu I Mgr. Josef Horálek

Middleware eop. Instalační příručka pro práci s eop v prostředí MS Windows

Uživatelská příručka

Struktura a architektura počítačů (BI-SAP) 11

Fingerprint Verification Control

Systém souborů (file system, FS)

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

SEMESTRÁLNÍ PROJEKT Y38PRO

09. Memory management. ZOS 2006, L.Pešička

KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC

Uživatelský manuál. Program OK MIFARE je program pro čtení a zápis dat na karty Mifare S50 (1k) na karty Mifare S70 (4k).

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Změny programu FAILURES PLUS.

Počítač jako elektronické, Číslicové zařízení

Kódování karet MIFARE --CARDFIVE ELITE v 7.6--

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

I.CA SecureStore Uživatelská příručka

Téma 7: Konfigurace počítačů se systémem Windows 7 III. Téma 7: Konfigurace počítačů se systémem Windows 7 III

Základní příkazy OS UNIX

Obslužný software. PAP ISO 9001

TG Motion verze 4 Skupina typu I/O návod k obsluze

Popis programu EnicomD

TÉMATICKÝ OKRUH Softwarové inženýrství

Postup pro vytvoření žádosti o digitální certifikát pro ověřovací a produkční prostředí Základních registrů

A4300BDL. Ref: JC

1 Filozofie knihy jízd

Operační systémy. Jednoduché stránkování. Virtuální paměť. Příklad: jednoduché stránkování. Virtuální paměť se stránkování. Memory Management Unit

EPLAN Electric P8 2.7 s databázemi na SQL serveru

Postup pro vytvoření žádosti o digitální certifikát pro produkční prostředí Základních registrů

Skupina oborů: Elektrotechnika, telekomunikační a výpočetní technika (kód: 26)

PK Design. Uživatelský manuál. Modul USB-FT245BM v2.2. Přídavný modul modulárního vývojového systému MVS. Verze dokumentu 1.0 (7. 11.

PCKIT LPT MODUL SBĚRNICE IOBUS PRO PC LPT. Příručka uživatele. Střešovická 49, Praha 6, s o f c o s o f c o n.

Zálohování v MS Windows 10

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Jednotlivé hovory lze ukládat nekomprimované ve formátu wav. Dále pak lze ukládat hovory ve formátu mp3 s libovolným bitrate a také jako text.

Principy operačních systémů. Lekce 8: Ovladače periferií

Systém souborů Mgr. Josef Horálek

Algoritmizace, základy programování, VY_32_INOVACE_PRG_ALGO_01

PHOTO-ON Profesionální on-line správa fotografií

Přidělování zdrojů (prostředků)

Artlingua Translation API

Uživatelská příručka k systému Jídelna inet

Činnost počítače po zapnutí

SIM Card Recovery Stick

Výpočet v módu jádro. - přerušení (od zařízení asynchronně) - výjimky - softvérové přerušení. v důsledku událostí

Principy operačních systémů. Lekce 1: Úvod

Návod k obsluze webové aplikace EJídelníček 1. Vstupní stránka

Certifikát o hodnocení

TG Motion verze 4 Modul Virtuální PLC návod k obsluze

Middleware eop. Instalační příručka pro práci s eop v prostředí MS Windows

Externí zařízení. Uživatelská příručka

MST - sběr dat pomocí mobilních terminálů on-line/off-line

Procesy a vlákna (Processes and Threads)

Certifikát o hodnocení

Podpora skriptování v Audacity

MIDAM Verze 1.1. Hlavní okno :

REMARK. Perfektně popsaný záznam. Uživatelský manuál

První kroky s aplikací ActivInspire

Komunikace programu WinShop s externími E-shopy

CUZAK. Instalační příručka. Verze

TÉMATICKÝ OKRUH Softwarové inženýrství

OPS Paralelní systémy, seznam pojmů, klasifikace

Aktualizace software tabletů GoClever TAB A73 / A101 / A103 (pomocí aplikace LiveSuit 1.05)

Operační systém. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Manuál pro práci s kontaktním čipem karty ČVUT

Provádí ochranu sítě před napadením (ochrana počítačů nestačí) Odděluje uživatele (prvek nespolehlivosti) od prvků ochrany

Transkript:

Zranitelnosti ovladačů jádra v praxi Martin Dráb martin.drab@email.cz

Obsah Ovladače a zařízení Virtuální paměť Komunikace s ovladači Útoky na chybné ošetřování vstupů Systémová volání Útok záměnou argumentů

Ovladače Soubory formátu PE Vykonávány v režimu jádra Plná kontrola nad daným strojem Speciální způsob spuštění Reprezentovány objektem Driver 64bitové verze Windows přidávají jistá omezení Soubor ovladače musí být digitálně podepsán důvěryhodnou autoritou Patchguard (ochrana proti modifikaci důležitých součástí jádra)

Zařízení Reprezentovány objektey Device Každé zařízení musí mít svůj ovladač Aplikace vidí zařízení jako soubory se speciálními jmény a mohou s nimi provádět různé operace (souborové) Veškeré požadavky na určité zařízení se zasílají k jemu příslušnému ovladači (metoda zpětně volané funkce callback)

Virtuální paměť

Adresový prostor procesu

Komunikace s ovladači Aplikace posílá na zařízení požadavky různých typů (čtení, zápis, obecná zpráva...) Obecná zpráva: kód požadavku, vstupní buffer, výstupní buffer U čtení/zápisu se udává pouze výstupní/vstupní buffer Vstupní i výstupní buffer musí aplikace specifikovat v rámci jí přístupné oblasti adresového prostoru Aplikace tedy může s touto pamětí manipulovat (uvolnit, změnit oprávnění, přepsat obsah)

Automatické řešení problému V rámci kódu obecné zprávy lze systému sdělit, aby vstupní a výstupní buffer automaticky překopíroval do paměti jádra. Aplikace nemůže ovladači pod rukama paměť vstupního/výstupního bufferu uvolnit, změnit oprávnění či přepsat obsah. Systém buffery kopíruje do nestránkované paměti. Velké buffery = pomalé a paměťově náročné Neporadí si s neplacatými buffery

Manuální řešení #1 Kopírovat si potřebná data sám Ověřit, že: Buffery neleží v paměti jádra Lze z nich číst/do nich zapisovat Kopírovat v try/except bloku Aplikace udává adresy bufferů Aplikace má plnou kontrolu nad jejich virtuálními stránkami

Manuální řešení #2 Přemapovat buffery do paměti jádra Aplikace stále může obsah bufferů přepsat, nemůže ale paměť uvolnit pod rukama či změnit oprávnění virtuálních stránek Granularita: velikost stránky Pro menší data pomalé

Důsledky špatného ošetření Modrá obrazovka smrti Možnost zapsat libovolná data na libovolné místo v paměti jádra Lze využít k vykonání libovolného kódu v režimu jádra

Praktická ukázka Ovladač dcr.sys (DriverCrypt) Při obsluze požadavku nekontroluje ukazatel předaný v rámci vstupního bufferu. Na adresu udanou v tomto ukazateli zapisuje data Aplikace tedy může zajistit vykonání svého kódu Přepis položky hal!haldispatchtable NtQueryInformationProfile zajistí vykonání funkce uložené v dané položce v HalDispatchTable

Systémová volání Speciální typ volání podprogramu, který dovoluje aplikaci vykonat některou ze systémem definovaných rutin v režimu jádra. Místo adresy se používá číslo volání Jádro systému disponuje tabulkou, která čísla volání překládá na adresy rutin Hodnoty argumentů volání jsou překopírovány do paměti jádra Celé buffeery ne, jádro pro každé sys. volání zná počet argumentů, ale ne jejich význam Stejné problémy s buffery jako v minulém případě

Systémová volání II

Filtrování systémových volání Postup Zkontrolovat argumenty Dochází ke kopírování bufferů do paměti jádra Dojít k rozhodnutí Zavolat originální rutinu Originální argumenty, použijí se buffery přístupné z aplikace Obsah bufferů se od kontroly v prvním kroku mohl změnit!

Útok záměnou argumentů Zvolit cíl útoku (konkrétní systémové volání) Naplnit buffery tak, aby nedošlo k zablokování volání bezpečnostní aplikací Provést systémové volán Ve vhodný okamžik (bezpečnostní software volání povolil, originální rutina ještě nebyla volána) změnit obsah bufferů daty, která instruují originální rutinu k provedení nepovolené operace Důsledek: ukončení chráněných procesů, zápis do chráněných klíčů registru...

Praktická ukázka Norman Security Suite filtruje NtTerminateProcess NtTerminateProcess vyžaduje specifikovat přístupovou kartu /handle) k cílovému procesu Průběh útoku: Získat handle ke svému procesu (OpenProcess) Použít jej při volání NtTerminateProcess Ve vhodný okamžik handle zrušit (CloseHandle) a získat handle na cílvoý proces (OpenProcess) S trochou štěstí budou mít obě handle stejnou hodnotu

Další zajímavosti Obecná chyba Nezávislá na platformě Často tam, kde se modifikuje kód Teoreticky známa jíž 17 let 1996 popsána na Unixu a velmi teoreticky 2003/4, 2008, 2010 Relativně zastaralá 64bitové verze Windows stále používanější Patchguard výrazně omezují modifikace kódu v jádře

Obrana Používat dokumentovaná rozhraní Modifikovat kód pouze tam, kde už nedochází k přenosu bufferů (a handle) do paměti jádra Nemodifikovat kód, ale datové struktury Donutit originální obsluhy systémových volání brát argumenty z paměti jádra Dochází k drobné změně sémantiky Neprobíhá verifikace proti bezpečnostnímu modelu

Další čtení KHOBE 8.0 Earthquake for Windows Desktop Security Software (http://www.matousec.com/info/articles/khobe- 8.0-earthquake-for-windows-desktop-securitysoftware.php) Plague in Security Software Drivers (http://www.matousec.com/info/articles/plaguein-security-software-drivers.php)

??? Martin Dráb Email: martin.drab@email.cz

Závěr